google+

Anfang 2011 habe ich einen Jobwechsel vollzogen und bisher hat der Elan und die Zeit gefehlt, hier intensiv weiter zu schreiben. Allerdings bin ich nun auch bei google+ und dort auch recht aktiv.

Wer mich einkreisen möchte: gplus.to/snooze

Man sieht sich dort :)

Marc

Es war einmal..

Es war einmal ..

ein cleverer Bursch’, der erkannte, dass HTML5 das Potential hat, um Flash gänzlich zu ersetzen.
Es fehlte nur der Wille und der Ehrgeiz aus der Industrie, entsprechende Tools zu entwickeln. Viele Lobbyisten rund um Flash haben schon den Scheiterhaufen vorbereitet, um den Burschen öffentlich zu verbrennen.
Doch der Bursche hatte einfach zuviele Anhänger aus dem Volk, als dass man ihn ignorieren könnte.

Ende vom Lied:  Sogar die Mädels, die hinter Flash stehen, bauen nun Tools um mit HTML5 umzugehen. Und wieder einmal hat das Volk gesiegt — oder so ähnlich ;)

Und nun bitte ‘Flash‘ durch ‘Atomkram‘ und ‘HTML5‘ durch ‘Erneuerbare Energien‘ ersetzen. Aber wie das so mit Geschichten ist…

Follow up zu dem Thema: http://visitmix.com/labs/ai2canvas/introduction.html

Entwicklertagebuch – Tag 1, Physiksimulation

Eines meiner iOS Projekte privater Natur ist schon so ideenträchtig, dass es ein größeres Unterfangen wird. Es ist viel Neues für mich dabei und da hab ich gerade spontan beschlossen, ein kleines Diary zu dem Thema anzufangen. Ich versuche aus strategischer Sicht nicht zu spoilern, aber in einem gewissen Maße wird jeder Leser erfahren, was eigentlich umgesetzt wird.

Ersteinmal: Es wird ein (2d) Spiel. Da ich schon seit Ewigkeiten kein Spiel mehr entwickelt habe, befass ich mich auch mit der Auswahl von Frameworks, versuche Vor- und Nachteile abzuwägen. Später im Verlauf kommt die User Experience hinzu, und zum Schluss auch das Thema Marketing. Aber bis dahin gehen noch einige Monate ins Land.

Nachdem die Grundidee stand haben wir Themen eingegrenzt, die Showstopper werden könnten.

Mit einem dieser Themen hab ich mich heute beschäftigt: Physiksimulation.

Weil ich eine Seil- oder Kettensimulation für ein anderes Projekt benötige, habe ich mich vor ein paar Wochen schon mit box2d angefreundet und mir kurz Cocos2D angeschaut (dann aber nach Kosten-Nutzen-Rechnung mich gegen Cocos2D entschieden — allerdings wird das bei dem neuen Spiel ganz ganz sicher wieder auf der Bildfläche erscheinen).

Nun bietet box2d tolle Simulationen für Festkörper im Vakuum. Leider ist das für unser neues Projekt nicht ausreichend. Wir brauchen Luft, wir brauchen Aerodynamik, wir brauchen den cw-Wert für dynamisch vom Spieler erstellte Körper.

Die letzten Tage Recherche haben mich dazu gebracht, schon bei Amazon nach Physikbüchern aus Schulzeiten zu suchen. Es gibt zwar genügend CFD-Simulatoren, und auch Bibliotheken dazu, aber für unser Spiel sind das Flugzeugträger, obwohl wir nur ein kleines Boot brauchen.

Zum Glück hab ich einen Freund, der seit kurzem Doktor der Physik ist. Er hat sich bereiterklärt, uns hier tatkräftig zu unterstützen. Und wenn ich glaube, dass das jemand kann, dann er! :)

Einer der Show-Stopper scheint zu verschwinden. Im nächsten Schritt geht’s um die weiteren Möglichkeiten von box2d – wir brauchen da wieder etwas spezielles. Und direkt im Anschluss dreht sich’s um die Suche nach dem richtigen Framework für das Spiel.

iOS App Store und die Musiklandschaft

Bei einer Plagiat-Recherche vor ein paar Tagen ist mir aufgefallen, wie ähnlich sich eigentlich die Musiklandschaft und die Applandschaft sind.

Zu jedem Lied und jedem Album findet man die weltweiten Platzierungen, wie lang sie ihre Positionen behielten und auch Charts ähnlich Aktienkursen. Es gibt Album/Liedkritiken, Webseiten, die bestimmte Genres pushen, und Wikipedia-Seiten von Künstlern, Alben und Liedern. Unabhängig von Radio und TV und unabhängig von Konzerten der Bands gibt’s vieles auch in der App-Landschaft. Da gibt es AppAnnie mit Charts und Listen, fast jede App hat eine eigene Website, es gibt Reviewportale, und wie auch im Musikbusiness werden von den Vermarktern Zeitschriften, Portale, etc. angeschrieben, die Apps testen oder vorstellen sollen.

Aber soweit nich genug. Lieder werden geschrieben, arrangiert, interpretiert, gemixt, gemastert, produziert, publiziert und vermarktet. Und jeder Akteur bekommt seinen (größeren oder kleineren) Teil davon ab. Es gibt Lieder, die in 2 Tagen pressfertig sind und die Charts stürmen, und es gibt aufwendige Arrangements und jahrelange Arbeit, aber die Platte will sich nicht verkaufen.

Für Apps gibt es auch schon Agenturen, die Designer und Entwickler anheuern und prozentual die Einnahmen verteilen. Der Marktplatz selbst (sprich: Apple) verdient hier auch genug. Auch hier schaffen es Indie-Entwickler mit Freizeitentwicklungen Millionär zu werden und genauso gibt es Apps, die ein halbes Jahr Entwicklungszeit mit mehreren Personen benötigten und dann doch nur einen Nischenmarkt bedienen können.

Aufgrund dieser simplen Erkenntnis stell ich einfach mal ein paar Prognosen in den Raum:

  • es wird zukünftig konsolidierte Publisher/ ‘App Label’  geben, die die ganze Vermarktung übernehmen (und ggf. in der Produktion unterstützen)
  • Indie-Entwickler werden von Labels unter Vertrag genommen
  • Rankings werden noch stärker in den Vordergrund rücken
  • die Szene wird sich selbst feiern und Preise/ Auszeichnungen werden noch konsolidierter vergeben
  • es wird noch mehr Massentaugliches produziert

Was sagt ihr dazu, wie ist eure Meinung? Gibt’s schon ähnliche Prognosen?

schonwieder mockabilly

Ja, ja, die letzten Posts waren sehr Mockabilly related. Und jetzt kommt – versprochen – der letzte Mockabilly-Beitrag in Folge :)

Apple promotet seit heute Mockabilly bei den ‘Tipps der Redaktion’ in Deutschland und Österreich.

Darauf darf man doch stolz sein, oder? :D

Mockabilly im App Store

Gänzlich unproblematisch hat Mockabilly endlich seinen Weg in den App Store gefunden :)

Lite Version: http://bit.ly/czVHve
Full Version: http://bit.ly/biPxqi

Ich freue mich über reges Feedback ( auf Mockabilly.com gibt’s ein Feedback Formular ) :)

Der Pfad zum App Store

Nun ist es endlich soweit:
Mockabilly wurde auf den Weg in den App Store geschickt.

Jetzt heißt es warten und bangen :)

Wir haben sehr viel UI Customizing von bestehenden Elementen durchgeführt, außerdem ist noch ein kleiner FTP-Server dabei – beides Punkte, die Apple kritisch betrachten könnte.

Insgesamt sind wir aber bester Dinge :)

new stretchableImage iPhone4

Vor kurzem habe ich eine stretchableImage Alternative vorgestellt, die ich nun für’s iPhone4 und iOS4 erneuert habe.

NSLog Alternative

In meinem aktuellen Projekt sammeln sich viele Loglines an. Da ich immer Klassenname und Methodenaufruf wissen möchte, hab ich ein kleines Makro geschrieben, was ich nicht vorenthalten möchte:

#define log(msg,...) NSLog(@"[%@::%@](%d): %@", NSStringFromClass([self class]), NSStringFromSelector(_cmd), __LINE__, [NSString stringWithFormat:msg, ## __VA_ARGS__])

Die Zeile kann einfach in Prefix PCH gesteckt werden. Benutzt wird das ganze so:

log(@"some answers: %i", 42);

Ergebnis wäre in meinem Beispiel:

2010-08-20 12:09:58.931 LogApp[2158:207] [RootViewController::viewDidLoad](38): some answers: 42

Möchte man den Timestamp und den App-Namen nicht, kann man noch CFShow anstatt NSLog verwenden:

#define log(msg,...) CFShow([NSString stringWithFormat:@"[%@::%@](%d): %@", NSStringFromClass([self class]), NSStringFromSelector(_cmd), __LINE__, [NSString stringWithFormat:msg, ## __VA_ARGS__]])

eigene IP Adresse?!

Zitiert von http://zachwaugh.com/2009/03/programmatically-retrieving-ip-address-of-iphone/

#include
#include

- (NSString *)getIPAddress
{
NSString *address = @"error";
struct ifaddrs *interfaces = NULL;
struct ifaddrs *temp_addr = NULL;
int success = 0;

// retrieve the current interfaces - returns 0 on success
success = getifaddrs(&interfaces);
if (success == 0)
{
// Loop through linked list of interfaces
temp_addr = interfaces;
while(temp_addr != NULL)
{
if(temp_addr->ifa_addr->sa_family == AF_INET)
{
// Check if interface is en0 which is the wifi connection on the iPhone
if([[NSString stringWithUTF8String:temp_addr->ifa_name] isEqualToString:@"en0"])
{
// Get NSString from C String
address = [NSString stringWithUTF8String:inet_ntoa(((struct sockaddr_in *)temp_addr->ifa_addr)->sin_addr)];
}
}

temp_addr = temp_addr->ifa_next;
}
}

// Free memory
freeifaddrs(interfaces);

 return address;
}