Ich habe gestern eine nette E-Mail von Jean-Pierre erhalten, in der er mir fast alle Fragen, die mir in letzter Zeit zu dem Buch und der Webseite gestellt wurden, gestellt hat inkl ein paar bislang ungestellten. Und weil der E-Mail-Verkehr so nett war und die Fragen fast wie FAQs sind, habe ich mir gedacht, die Mails mit seiner Erlaubnis als Blogpost zu erstellen, damit sich auch andere Leser, die sich überlegen, das Buch zu kaufen, ein Bild davon machen können. Vor allem deswegen, weil das Buch eben doch ein wenig anders als bisherige Objective C- und Spieleprogrammierbücher ist.
Voilà.
als erstes möchte ich zu dem sehr guten Buch gratulieren. Nach ca. 1 Jahr Wartezeit hat Amazon es geschafft das Buch eine Woche nach VÖ zuzustellen (Soviel zu:“Damit Sie es pünktlich zur Veröffentlichung haben“).
Besonders gut gefällt mir, dass für die meisten Spiele UIKit genutzt wird. Was mich gleich zu zwei Fragen bringt.
1. Ist UIKit wirklich das richtige für die Spieleprogrammierung (Ich glaube rauszulesen, dass du eher zu Cocos tendierst)?
Dem Anschein nach scheint es für vieles zu genügen. Was es auch sollte, wenn man bedenkt welche Rechenleistung ein C64 hatte. Eine Frage die ich mir leider immer wieder stelle (wahrscheinlich, um mich unbewusst davon abzuhalten einfach anzufangen und wenn es Performanceprobleme gibt zu Cocos2D oder OpenGL zu wechseln).
2. Warum wurde ein eigenes Partikel System entwickelt und nicht einfach CAEmitterLayer/Cell genutzt?
Im Grunde sind das auch die zwei Fragen die ich mir stelle: UIKit, Cocos2D oder OpenGL was ist sinniger für Spiele wie „Kaiser“ oder auch „RType“ und „Turrican“ (wenn auch Partikel genutzt werden sollen)?
Ein besonderes Lob auch dafür, dass Grafiken und Musik behandelt werden, was ich bisher in allen Büchern vermisst habe (mit der Grund, warum ich das Buch gekauft habe). Evtl. schaffe ich es ja auch ein paar ansprechende Grafiken und Sounds zu erstellen.
Zum Schluss noch zwei Anmerkungen und eine Frage. Ich finde die Art der Bereitstellung der Quellcodes nicht gerade optimal. Fertige Projekte fände ich besser. Gerade Anfänger werden Probleme haben entsprechende Projekte zu erstellen und es ist nervig die Codes zu kopieren und dann noch an die eigenen Coding-Guidelines anzupassen (meine sind doch ziemlich anders).
Gibt es einen Grund warum die Möglichkeiten (verzicht auf iVars, „private“ Klassenerweiterungen) von Objective-C und LLVM nicht genutzt werden?
Warum dauert es solange bis die Codes und Grafiken zum Download bereit stehen?
Zuletzt die Frage: Wie ich gesehen habe, hältst du einen Vortrag auf der Macoun. Wird er weiter als das Kapitel in Gestenerkennung einführen? Ich frage, weil es zum selben Zeitpunkt zwei andere interessante Vorträge gibt und ich nicht schon wieder in dem Falschen sitzen möchte.
Viele Grüße,
Jean-Pierre Distler
Und hier ist, was ich ihm antwortete:
erst einmal vielen Dank für Dein Interesse an meinem Buch und auch für Dein Kompliment. Das hört man echt gerne, wenn man so lange an einem Buch gesessen ist, wie ich (seit 2009). ich freue mich, dass es Dir so gut gefällt.
Nun zu Deinen Fragen:
1.) Ist UIKit wirklich das richtige für die Spieleprgrammierung?
Ja und Nein! Je nach technischem Anspruch und Performancebedarf des Spiels, aber bei Casual Games kann man es – denke ich – bedenkenlos so highlevel um- und einsetzen. Ich wollte mit dem Buch den Hauptaugenmerk hauptsächlich auf die Umsetzung von Spielen setzen, also Gameplay, Game-Engine etc. Die meisten Programmierer, die schon mit Objective C gearbeitet haben, kennen Views von Drag’n’Drop ihrer eigenen App (oder der aus anderen Büchern). Daran wollte ich anknüpfen und zeigen, wie einfach mit denselben Prinzipien Spiele entwickelt werden können.
Dass es auch andere Techniken gibt, darauf weise ich ja dann in den späteren Kapiteln hin: CALayer, Cocos2D, OpenGL ES, etc. Dadurch bleiben meiner Meinung nach die Leser nicht auf ein Framework beschränkt. Stell Dir vor, ich hätte OpenGL ES von Anfang an gemacht und dann parallel noch Game-Programmierung? Die Leser hätten sicherlich keine schnellen Erfolge erzielt.
So hingegen war es mir möglich, Spielentwicklung Schritt für Schritt zu erläutern und in jedem Kapitel was Neues beizubringen. Hätte ich von Beginn an Cocos2D gemacht, wären alle anderen Leser vom Kopf gestoßen worden, die keine Lust auf dieses Framework haben.
2.) Warum wurde ein eigenes Partikel System entwickelt und nicht einfach CAEmitterLayer/Cell genutzt?
Du hast Recht! CAEmitterLayer/Cell wären sicherlich interessant gewesen. Andererseits wollte ich die generelle Funktionsweise erklären und zeigen, wie ähnlich Partikel zu Sprites und damit auch in jedes Framework einfach zu transportieren sind. Vielleicht hätte ich, gerade der Aktualität wegen, tatsächlich noch ein paar Zeilen zu CAEmitterLayer/Cell verlieren sollen. Aber dafür ist, sobald alles richtig eingerichtet ist, die Webseite dann da: Um solche Themen aufzugreifen und etwas weiter zu schreiben.
3.) Verfügbarkeit der Quellcodes:
Die überarbeite ich zur Zeit auf der Webseite, so dass ich wenigen Tagen alle Leser die Projektdateien statt nur der Quellcodes herunterladen können. Ich habe in einem gestrigen Post mal meine Gedanken dazu nieder geschrieben, warum ich erst den anderen Weg gewählt habe, aber nachdem nun so viele Zuschriften kamen, habe ich mich überreden lassen, die Projekte in den nächsten Tagen nach einer ordentlichen Überarbeitung online zum Download zur Verfügung zu stellen.
4.) Warum Verzicht auf iVars, „private“ Klassenerweiterungen von Objective-C und LLVM?
Sehr gute Frage! Ich schreibe ja gleich zu Beginn, dass es hauptsächlich ein Buch über Spiele entwickeln statt über Objective C ist. Objective C ist nur ein Mittel zum Zweck. Ich habe lange überlegt (und auch schon die ersten 60 Seiten dazu geschrieben gehabt), eine Einführung in Objective C zu machen und auch auf solche Details und Unterschiede einzugehen. Andererseits wollte ich so viel Gaming-Know How wie möglich ins Buch pressen und auch die anderen Kapitel über 3D, Grafik und Musik nicht vernachlässigen. Von den ursprünglich festgelegten 500 Seiten als Gesamtumfang bin ich eh schon stark abgewichen (mein Manuskript war insgesamt fast 1000 Seiten lang!), insofern musste ich zwischendrin und auch gegen Ende starke Kürzungen am Text vornehmen. Mit dem Dpunkt-Verlag hatte ich dann auch die Diskussion über die Zielgruppe: Die Codes sollten so einfach wie möglich sein (sprich: wenig Varianten und Detailgenauigkeit), damit eben auch Fast-Anfänger mitkommen, die schonmal ersten Kontakt mit Objective C hatten, aber eben die Details noch nicht kennen. Profis werden meinen Quellcodes sowieso ihren eigenen Duktus aufsetzen, das ist auch so gewollt. Aber gleichzeitig hätten pure Anfänger auch Kapitel über Provisioning, Installation von Xcode, Portieren der App aufs iPhone etc benötigt, um nicht frustriert zu werden. Also einigten wir uns auf den Fokus „Spiele programmieren“ für Leser mit rudimentären Kenntnissen und Objective C als Mittel zum Zweck. Dieses sollte dann nicht in all seinen Facetten eingesetzt werden, sondern eben leicht verständlich und dafür intelligent zum Einsatz kommen, damit die Leser auch die Tricks hinter der Fassade kennen lernen (und um auch für Einsteiger aus anderen Programmiersprachen interessant und verständlich zu sein). „Spiele entwickeln für iPhone und iPad“ ist insofern kein Objective C-Lehrwerk geworden, sondern ein Buch für Algorithmen.
5.) Wie ich gesehen haben hältst du einen Vortrag auf der Macoun. Wird er weiter als das Kapitel in Gestenerkennung einführen?
So halb-halb. Natürlich werde ich (eine Stunde Sprechzeit ist ja nicht lang) erst einmal den zu Grunde liegenden Algorithmus erklären, um zu zeigen, wie einfach sich eine solch vermeintlich schwierig umzusetzende Steuerung programmieren lässt. Ich kann ja nicht erwarten, dass sich alle Zuhörer im Saal zuvor mein Buch gekauft haben. Gegen Ende werde ich den Code noch so umsetzen, dass man – wie in den letzten Zeilen des Kapitels nur angedeutet – den Code auch in Echtzeit abfragt, also nicht erst, wenn das Zeichen gemalt wurde, sondern schon zwischendrin (z. B. für reaktionsschnelle Kampfspiele). Insofern würde ich fast tippen, dass Du als Buchbesitzer vermutlich in einer der anderen Vorlesung besser aufgehoben bist, weil ich Dir mit Deinem Wissen zutraue, die paar Ergänzungen, die ich erklären werde, auch selbst umsetzen zu können.
So, jetzt hoffe ich, habe ich Deine Fragen zu Deiner Zufriedenheit beantwortet und konnte ein wenig Verständnis wecken, warum ich nicht auf alle Themen im Buch bis ins Detail eingehen konnte. Wenn nicht oder falls Du doch noch Fragen hast, komm einfach nochmal auf mich zurück. :–)
Jetzt habe ich noch eine Bitte: Deine Fragen sind so gut, die würden sicherlich auch noch andere Leser interessieren. Mit Deiner Erlaubnis würde ich unsere beiden E-Mails gerne (zur besseren Lesbarkeit etwas umsortiert) auf meiner Webseite veröffentlichen. Bist Du damit einverstanden?
Viele Grüße und weiterhin viel Spaß mit meinem Buch,
Patrick