Kobold2D: Cocos3D Projektschablone
Heute vollendete ich den ersten Entwurf des Kobold2D Kapitels, das in der zweiten Ausgabe des Erfahrens des Cocos2D Buches sein wird. In diesem Kapitel gebe ich Ihnen auch eine Einführung in cocos3d, die offizielle 3. Erweiterungsbibliothek für cocos2d. Ich trug cocos3d's Xcode Projektschablone zu Kobold2D und gewürzt es ein wenig mit einigen cocos2d Knoten im Rücken - und Vordergrund: I ported cocos3d’s Xcode project template to Kobold2D and spiced it up a little with some cocos2d nodes in the back- and foreground:
Bemerken Sie die "eingehende" Verbindungsnetzwarnung. Das wird von der iSimulate Bibliothek verursacht, die mit Kobold2D verteilt und standardmäßig für den Simulator aktiviert wird, baut. Sie müssen noch den iSimulate App kaufen, um daraus einen Nutzen zu ziehen dennoch. Wenn Sie nicht tun, können Sie auch beschließen, den Dialog zu ignorieren oder einfach iSimulate unbrauchbar zu machen, indem Sie eine Linie in der BuildSettings-iOS.xcconfig Datei des Projektes kommentieren. You still need to buy the iSimulate App to benefit from it though. If you don’t you can also choose to ignore the dialog or simply disable iSimulate by commenting out a line in the project’s BuildSettings-iOS.xcconfig file.
Ich habe auch großen Spaß mit der vermehrten Wirklichkeitsauswahl gehabt, die der cocos3d CCNodeController Klasse zur Verfügung stellt. Und es aufstellend, ist eine Linie des Codes. Hier ist die "Kamera als lebende" Hintergrunddemo in der Handlung: Here’s the “camera as live background” demo in action:
Da ein Bild es Justiz nicht wirklich tut, ist hier ein Video:
Zugegebenermaßen konnte es ein wenig schneller auf meinem I-Phone 3G laufen. Es wird ziemlich besteuert und Durchschnitte ungefähr 20 fps mit der Kamerahintergrundansicht und Übergabe eines 3. Modells. Meine IPod-Berührung 4 Durchschnitte um 40 fps und fühlt es sich viel glatter. My iPod Touch 4 averages at around 40 fps and it feels a lot smoother.
Kobold2D Todo Liste
Einer der größten Sachen auf meiner Todo-Liste für Kobold2D soll die Website entwerfen und die "Ankunft bald" Seite loswerden. Das schließt Aufstellung des wiki und Füllung davon mit dem Inhalt, Dokumentation größtenteils ein. Und so, 150 $ jeden Monat bezahlend, weil ich keine Alternative zum Verwenden des Zusammenflusses sehe. Ich will daran Freude haben, an der Dokumentation zu arbeiten, und ich will, dass Sie daran Freude haben, sie zu durchsuchen und zu lesen. And, well, paying $150 each month because I don’t see any alternative to using Confluence. I want to enjoy working on documentation, and I want you to enjoy browsing and reading it.
Ich will auch mehr Schablone-Projekte schaffen. Zurzeit, wie Sie im ersten Screenshot sehen können, gibt es Hallo Kobold2D (iOS & Mac), Hallo Cocos3D (EIN/AUSGABE-STEUERSYSTEM) und Hallo Cocos2D-X (EIN/AUSGABE-STEUERSYSTEM). Ich will noch zwei Schablonen, ein für das Backenhörnchen mit SpaceManager (iOS & Mac) und ein für Box2D (iOS & Mac) hinzufügen. Ich will auch die Projekte aus meinem Buch als Projektschablonen, nämlich Kritzelei-Fall, der Schuss Spiel, das Orthogonale und die Isometrischen Tilemap-Projekte, und der Cocos2D Mit dem UIKit-Projekt (das ganze EIN/AUSGABE-STEUERSYSTEM) hinzufügen. I want to add two more templates, one for Chipmunk with SpaceManager (iOS & Mac) and one for Box2D (iOS & Mac). I also want to add the projects from my book as project templates, namely Doodle Drop, the Shoot ‘em Up game, the Orthogonal and the Isometric Tilemap projects, and the Cocos2D With UIKit project (all iOS).
Wenn auch Kobold2D Xcode 4 Projektschablonen nicht haben wird, will ich Ihnen noch einen schnellen und leichten Weg Anfang ein neues auf eines der Schablone-Projekte basiertes Projekt geben. Bemerken Sie die Unterscheidung zwischen der "Projektschablone" (diejenigen im Neuen Projektdialog von Xcode) und "dem Schablone-Projekt" (ein Stammkunde, bereits vorhandenes Projekt). Ich fing an, ein Werkzeug zu schreiben, das erlaubt, planen Sie, um eine Kopie einer vorhandenen Kobold2D Schablone zu schaffen, und benennen es um, so dass der Arbeitsablauf ebenso günstig ist wie das Tun davon innerhalb von Xcode. Es arbeitet für die spezifische Schablone, mit der ich es prüfte, aber ich muss noch die Benutzerschnittstelle entwerfen und den Code ausfallsicher machen. I started writing a tool that allows you to create a copy of an existing Kobold2D template project and rename it, so that the workflow is just as convenient as doing it within Xcode. It works for the specific template I tested it with, but I still have to design the user interface and make the code fail-safe.
Im Falle dass Sie sich fragen, warum Kobold2D Xcode-Projektschablonen nicht haben wird: Sie sind nicht fast ebenso stark, wie sie würden sein müssen. Und sie sind ein Schmerz in der Hinterseite, um zu schaffen und ohne etwas Werkzeug-Unterstützung aufrechtzuerhalten. Aber schlechtest unter allen haben Sie keine Weise, Dateien in einen Xcode 4 Projektschablone einzuschließen, die zum Projektnavigator nicht hinzugefügt werden muss. Wie, zum Beispiel.xcodeproj Dateien. And they’re a pain in the rear to create and maintain without some tool support. But worst of all, you have no way of including files in an Xcode 4 project template that must not be added to the Project Navigator. Like, for example, .xcodeproj files.
Werfen Sie auf den folgenden Code einen Blick, und dann antworten Sie auf diese Fragen vor dem Lesen auf:
- Welche Funktion wird schneller laufen?
- Wie wird der framerate für jede Funktion, wenn führen, 100mal pro Rahmen auf einem I-Phone 3G sein?
- Wird Verpackung der 100 Anrufe function1 in einer NSAutoreleasePool-Show irgendein Unterschied?
{
CGPoint pos = [selbst Position];;
id x = [NSNumber numberWithFloat:pos.x];NSNumber numberWithFloat:pos.x];
id y = [NSNumber numberWithFloat:pos.y];NSNumber numberWithFloat:pos.y];
id protestiert = [NSArray arrayWithObjects:x, y, Null];NSArray arrayWithObjects:x, y, nil];
Id-Schlüssel = [NSArray arrayWithObjects: "x", "y", Null];NSArray arrayWithObjects:@"x", @"y", nil];
id dict = [NSDictionary dictionaryWithObjects:objects forKeys:keys];NSDictionary dictionaryWithObjects:objects forKeys:keys];
dict;//vermeiden Bearbeiter-Warnung, ist ein noop
}
- (Leere) function2) function2
{
CGPoint pos = [selbst Position];;
id x = [[NSNumber alloc] initWithFloat:pos.x];[NSNumber alloc] initWithFloat:pos.x];
id y = [[NSNumber alloc] initWithFloat:pos.y];[NSNumber alloc] initWithFloat:pos.y];
id protestiert = [[NSArray alloc] initWithObjects:x, y, Null];[NSArray alloc] initWithObjects:x, y, nil];
Id-Schlüssel = [[NSArray alloc] initWithObjects: "x", "y", Null];[NSArray alloc] initWithObjects:@"x", @"y", nil];
id dict = [[NSDictionary alloc] initWithObjects:objects forKeys:keys];[NSDictionary alloc] initWithObjects:objects forKeys:keys];
[x Ausgabe];
[y Ausgabe];
[Gegenstand-Ausgabe];
[Schlüsselausgabe];
[Dict-Ausgabe];
}
Die Antworten
- Welche Funktion wird schneller laufen? Antwort: function1 function1
- Wie wird der framerate für jede Funktion, wenn führen, 100mal pro Rahmen auf einem I-Phone 3G sein? Antwort: 27 fps für function1 und 24 fps für function2. 27 fps for function1 and 24 fps for function2.
- Wird Verpackung der 100 Anrufe function1 in einer NSAutoreleasePool-Show irgendein Unterschied? Antwort: Nein, aber das Gedächtnis von vorläufigen Gegenständen wird sofort veröffentlicht. no, but memory of temporary objects is released immediately.
Selbstverständlich auf einem iPod (4. Generation) und ein iPad diese Tests gibt der ganze Lauf an 60 fps und keine Anzeige überhaupt, dass die Leistung auf einem I-Phone 3G das viel ertragen würde (und keiner den Simulator, natürlich tut). Ganzer mehr Grund, früh und häufig auf älteren Geräten zu prüfen.
Zu autoveröffentlichen oder nicht?
Allgemeinwissen kann Ihnen sagen, dass alloc/release schneller ist als Autoausgabe. Sogar Apfel empfiehlt, Autoausgabe richtig zu vermeiden?
Nicht ganz, weil das häufig missverstanden wird: Apfel empfiehlt, Autoausgabe, aber nur für Funktionen zu vermeiden, die viele vorläufige Gegenstände und wegen des gezwungenen Gedächtnisses schaffen - nicht weil es langsam oder sogar gefährlich ist - ist Autoausgabe nicht gefährlich.
Da Gedächtnis auf 1. und 2. Generations-EIN/AUSGABE-STEUERSYSTEM-Geräten so beschränkt wird, ist es am besten, dieses Gedächtnis so bald wie möglich zu veröffentlichen, und verlässt es zugeteilt für länger nicht als notwendig. Um das zu erreichen, können Sie beschließen, zwei Sachen in diesem Fall zu machen: Verwenden Sie alloc/release oder schließen Sie die Schleife in einem NSAutoreleasePool ein. Die letzte Auswahl wird bevorzugt, da sie das Gedächtnis sofort, und nicht nach einer Weile veröffentlichen wird. Und Autoausgabe ist allgemein vorzuziehend, weil Sie jemals nie, vergessen werden, eine Ausgabe-Nachricht an einen Gegenstand zu senden - was bedeutet, dass sie durchgelassen und für immer Gedächtnis verbrauchen wird. use alloc/release or enclose the loop in an NSAutoreleasePool. The latter option is preferred since it will release the memory right away, and not some time later. And autorelease is generally preferable because you will never, ever forget to send a release message to an object – which means it’ll be leaked and forever use up memory.
Sie können gut leistenden, sogar besser leistenden Code schreiben, indem Sie Autoausgabe verwenden und NSAutoreleasePool um dichte Schleifen verwenden, die viele vorläufige Autoausgabe-Gegenstände schaffen.
Unschuldig aussehender Code tötet framerate
Erwarteten Sie, dass, 100 ziemlich einfache NSDictionary Beispiele schaffend, jeder Rahmen den framerate zu ungefähr 24-27 fps herunterziehen würde? Ich keiner. Ich wusste, dass der Code nicht dabei war, schnell aufzuflammen, aber ich nahm nie an, dass es solch einen Einfluss hatte. Jedoch kann es etwas optimiert werden, da ich zwei NSArray Beispiele unnötigerweise schaffe, um die Schlüssel und Werte beziehungsweise vor dem Verwenden von ihnen zu halten, den NSDictionary zu schaffen. Tatsächlich können wir sie loswerden, indem wir dictionaryWithObjectsAndKeys verwenden und das in einem Einzelschritt tun: I knew the code wasn’t going to be blazing fast, but I never expected it to have such an impact. However, it can be optimized somewhat since I’m unnecessarily creating two NSArray instances to hold the keys and values respectively before using them to create the NSDictionary. In fact we can get rid of them by using dictionaryWithObjectsAndKeys and doing this in a single step:
{
CGPoint pos = [selbst Position];;
id x = [NSNumber numberWithFloat:pos.x];NSNumber numberWithFloat:pos.x];
id y = [NSNumber numberWithFloat:pos.y];NSNumber numberWithFloat:pos.y];
id dict = [NSDictionary dictionaryWithObjectsAndKeys:x, "x", y, "y", Null];NSDictionary dictionaryWithObjectsAndKeys:x, @"x", y, @"y", nil];
dict;//vermeiden Bearbeiter-Warnung, ist ein noop
}
Manchmal hilft es, sich was andere Wege umzusehen, dort sind, denselben Code zu führen. In Bezug auf die Leistung ist das eine Ordnung eines Umfangs schneller und stempelt jetzt an 42 fps ein. Noch immer nicht gut genug für die Echtzeitübergabe offensichtlich, aber eine Verbesserung von mehr als 50 %, zwei NSArray Zuteilungen schneidend, ist eine sehr einfache und wirksame Optimierung. Still not good enough for realtime rendering obviously but an improvement of over 50% by cutting two NSArray allocations is a very simple and effective optimization.
Ebenso eine allgemeine Richtlinie, wenn ich die zwei NSNumber Beispiele loswerde und einfach leere Schnuren für x und y passiere, ging der framerate bis zu 60 fps zurück. Natürlich überoptimiert es zum Punkt, wo der Code mehr nicht arbeitet. Es geht gerade, um zu zeigen, wie teuer die Entwicklung von NSDictionary und NSArray ist, wie einfache Typen in NSNumber oder NSValue-Gegenständen wickelt. It just goes to show how expensive the creation of NSDictionary and NSArray are, as is wrapping simple types in NSNumber or NSValue objects.
Wenn Sie Zuteilung und vorläufige Gegenstände vermeiden können, vermeiden Sie es. Wenn Sie nicht können, mindestens vermeiden, vorläufige Gegenstände jeder Rahmen zu schaffen. Wiedergebrauch protestiert so viel wie möglich. Leider ist es nicht eine Auswahl für NSNumber-Gegenstände, da Sie den Wert eines NSNumber Beispiels nicht ändern können. Re-use objects as much as possible. Unfortunately, that’s not an option for NSNumber objects since you can’t change the value of a NSNumber instance.
Wie zusammengefasst, durch DaringFireball hat Apfel ihre Beschränkungen des Abschnitts 3.3.1 seiner EIN/AUSGABE-STEUERSYSTEM-Entwickler-Abmachung gelöst:
Insbesondere wir entspannen uns alle Beschränkungen der Entwicklungswerkzeuge pflegten, EIN/AUSGABE-STEUERSYSTEM apps zu schaffen, so lange der resultierende apps keinen Code herunterlädt. Das sollte Entwicklern die Flexibilität geben, die sie wollen, indem sie die Sicherheit bewahren, die wir brauchen.
Vorher erlaubten die einzigen Programmiersprachen, EIN/AUSGABE-STEUERSYSTEM zu schreiben, Apps waren C, C ++, Ziel-C und Javascript. Das ist jetzt entfernt worden. Für cocos2d Entwickler ändert sich nichts, außer vielleicht, dass Sie sich bequemer fühlen können, eine scripting Sprache wie Lua in Ihre Spiele einbettend. So lange Sie den Lua Schriften nicht erlauben, von Benutzern geändert zu werden, oder herunterladen oder sonst gestopfte Lua Schriften/ersetzen modifizieren. Das war vorher jedoch noch nach der Änderung im Abschnitt 3.3.1 nicht ungesetzlich es stellte viele Zweifel und Sorge in Entwickler, die blicken, Lua verwendend. So können Sie sich jetzt viel bequemer fühlen, Lua in EIN/AUSGABE-STEUERSYSTEM-Spielen zum Beispiel verwendend, indem Sie I-Phone-Wachs verwenden. For cocos2d developers nothing changes, except maybe that you can feel more comfortable embedding a scripting language like Lua into your games. As long as you don’t allow the Lua scripts to be changed by users, or download or otherwise modify/replace bundled Lua scripts. That wasn’t illegal before, however, yet after the change in section 3.3.1 it put a lot of doubt and worry into developers looking into using Lua. So you can now feel much more comfortable using Lua in iOS games, for example by using iPhone Wax.
Die Eliminierung dieser Sprachbeschränkungen ist im Wesentlichen gute Nachrichten für Einheitsentwickler (lesen Sie ihre Behauptung), und diejenigen, die EIN/AUSGABE-STEUERSYSTEM Apps das Verwenden eines Blitz-Quer-Plattform-Bearbeiters und auch derjenigen entwickeln möchten, die Korona-Spielausgabe verwenden, die völlig Lua-basiert ist. Und sprechend, von denen sich Korona Entwicklern bietet, um Korona SDK und Spielausgabe an gerade 99 $ bis nur am 15. September zu kaufen, nach denen Sie für jedes Produkt seperately und den Preis werden zahlen müssen, steigt zu 249 $. Nur für den Fall starrten Sie es an. Just in case you were eye-ing it.
Starterkit: Linienzeichnung
Linienziehendes Spiel Starterkit
Bekommen Sie einen Vorsprung für Ihr linienziehendes Spiel und sparen Sie Tage wenn nicht Wochen Ihrer Zeit! Sie werden nach dem äußerst populären Flugkontrollspiel modellierten Gameplay-Code bekommen. Sie werden erfahren, wie man Linien zieht, entdeckt, berührt Gegenstände, haben Sie Gegenstände folgen einem Pfad - und viel viel mehr! Geschrieben von einem Berufsspielentwickler und Spielindustrieveteran (ich) wird der Quellcode mit vielen Anmerkungen kommentiert, die mein Grundprinzip und mit der Lesbarkeit im Sinn erklären, geschrieben. You’ll learn how to draw lines, detect touches on objects, have objects follow a path – and much, much more! Written by a professional game developer and game industry veteran (me) the source code is annotated with lots of comments explaining my rationale and written with readability in mind.
Enthält beides I-Phone & iPad Versionen!
Der Starterkit kompiliert sowohl zum I-Phone als auch zu den iPad Geräten, heimisch denselben Code verwendend. Wenn das IPad-Ziel ausgewählt wird, werden Miete-Images verwendet. Bildauswahl wird automatisch getan, jene Images ladend, deren Dateinamen die "-ipad" Nachsilbe haben. Spielrahmen können individuell pro Gerät-Verwenden gezwickt werden Image selection is done automatically by loading those images whose filenames have the “-ipad” suffix. Game parameters can be tweaked individually per device using
Vorübersetzer-Direktiven.
Die ganze Gestaltungsarbeit von Arezou Ipakchi Design zur Verfügung gestellt.
Was andere sagen:
"Code wird ganz klar geschrieben und anständig [...] bestimmt eine feine Investition dokumentiert."
Von: Kommerzieller Cocos2d-Code prüft von Alex Curylo nach.
"Es war ein schrecklicher Moment, als ich fand, dass die Quelle für eine Linie Spiel dieses Kalibers zieht."
-Franklin Lyons, SpinFall
"Besonders rettet Pfad- und Bewegungssystem mich viel Kopfweh."
-Martin Hoffmann
Gemacht mit dem Starterkit:
![]() |
![]() |
![]() |
Eigenschaft-Liste:
- klar codieren seperated und gut strukturierter GameScene Design mit einem Minimum von Abhängigkeiten
- leicht, neue Gegenstände hinzuzufügen und Gegenstand-Rahmen zu erweitern
- positiver Codierstil zu helfen, Codierfehler bald zu fangen
- berühren Sie sich wenden ein & ziehen einen Pfad dafür (ob es bereits einem Pfad oder folgt nicht)
- Pfad-Zeichnung endet, wenn Pfad über die passende Zielposition (eg Landestreifen für Flugzeuge gezogen wird, Winkel der Annäherung respektierend)
- Pfad-Zeichnung endet, wenn willkürliche Punkt-Grenze überschritten wird (um Verlangsamungen zu vermeiden)
- Pfad, wird wenn geschleppt, mit dem dicken durchsichtigen Linienstil wie Hafen-Master ohne Störschübe gezogen
- Pfad wird in gleiche Länge-Stücke gespalten, egal wie schnell Benutzer Finger bewegt
- Gegenstand-Laich außerhalb des Schirms, Positionen können wiederdefiniert und erweitert werden
- Gegenstände zeigen eingehenden Warnanschreiber an der Schirm-Grenze
- Gegenstände zeigen Kollision, die warnt, wenn irgendwelche zwei von ihnen zu nahe kommen
- Gegenstände folgen Pfad, um zu enden - verwelken dann, und Zunahme kerben ein oder setzen fort sich zu bewegen
- Gegenstände rotieren immer in der Bewegungsrichtung
- Gegenstände springen zurück an Schirm-Grenzen
- motivationale Etiketten für erfolgreiche Landungen, vorversteckt
- Kerbe und HighScore-Etiketten
- HighScore sparte zur Platte zwischen Spiel-Sitzungen
- Unterstützungen beide Landschaft-Orientierungen mit dem Autoflip
- Lasten korrigieren Quellendateien abhängig vom Ziel (I-Phone oder iPad)
- richtige Pause, die für eingehende Anrufe, SMS behandelt
- Vieler allgemein nützlicher Mathehelfer fungiert eingeschlossen
- Viele Anmerkungen, die Grundprinzip erklären und Tipps für die Verbesserung geben
- Völlig dokumentiert
- Verwendet das Projekt des Fachmannes Xcode von meinem Tutorenkurs (Eigenschaft-Liste)
- schließt sowohl iPhone/IPod-Berührung als auch iPad Versionen ein, seperate Ziele, derselbe codebase verwendend
- vereinbar mit cocos2d v0.99.5 (stabil) und EIN/AUSGABE-STEUERSYSTEM SDK 4.2
- leichte Einstellung, gehen Sie gerade auf, und Gebrauch - schließt Cocos2D für Ihre Bequemlichkeit ein
Fragen?
Bedürfnis-Hilfe?Gehen Sie zum Unterstützungsforum für das linienziehende Spiel Starterkit auf Cocos2D Zentral.
Bemerken Sie: Das Starterkit linienziehende Unterstützungsforum ist ein öffentliches Forum. Im Falle dass Sie Abteilungen des Codes vom starterkit anschlagen müssen, würde ich es schätzen, wenn Sie sie kurz und zum Punkt halten würden. In case you need to post sections of code from the starterkit I’d appreciate it if you kept them short and to the point.
Gesetzliche Verzichterklärung
Cocos2D ist ein eingetragenes Warenzeichen von Ricardo Quesada. Steffen Itterheim, die Website des Erfahrens & Masters Cocos2D und das linienziehende Spiel Starterkit werden weder angeschlossen noch von Ricardo Quesada gutgeheißen.
Versuchen Sie Vorher Kaufen!
Seite-Lizenz!Unbegrenzter Apps!Freies Königtum!30-tägige Geldzurückgarantie!Jetzt nur die Vereinigten Staaten 119 $! (*)(*) schlitzte Preis um 33 % unten von den Vereinigten Staaten 179 $ auf.Eine Download-Verbindung wird durch die E-Mail nach dem Kauf gesandt, der seit 48 Stunden gültig ist. Setzen Sie sich mit mir in Verbindung, wenn die Download-Verbindung abgelaufen ist. |
Lizenzvertrag
Copyright
Der in diesem Starterkit angebotene Quellcode ist im Besitz und verkauft durch Steffen Itterheim, wo Quellcodedateien diesen Urheberrechtsvermerk einschließen: "Copyright 2009 Steffen Itterheim. Alle Rechte vorbehalten.". Der zur Verfügung gestellte urheberrechtlich geschützte Quellcode bleibt Eigentum und Copyright von Steffen Itterheim. Kauf gewährt Ihnen die Lizenz, um den Quellcode und das Vermögen unter den folgenden Begriffen und Bedingungen zu verwenden und zu modifizieren: All rights reserved.”. The provided copyrighted source code remain property and copyright of Steffen Itterheim. Purchase grants you the License to use and modify the source code and assets under the following Terms and Conditions:
Ihnen wird nicht erlaubt, den Quellcode öffentlich verfügbar zu machen. Ihnen wird nicht erlaubt, den Quellcode an andere zu geben oder zu verkaufen, modifiziert oder nicht. Lizenzen sind nicht übertragbar. Licenses are not transferable.
Alle Lizenzen sind freies Königtum. Sie können so viele freie oder kommerzielle Apps das Verwenden des Quellcodes machen, wie Sie wollen. Sie können jedes vorhandene Vermögen in Ihrem App wiederverwenden. You may re-use any existing assets in your App.
Wenn Sie wirklich Arbeit schließen und haben oder den Starterkit Quellcode Ihrem Kunden geben wollen, muss Ihr Kunde eine Seite-Lizenz ebenso kaufen.
Seite-Lizenz
Jeder Kauf gewährt Ihnen eine Seite-Lizenz. Die Seite-Lizenz gewährt Ihnen den Gebrauch des Starterkit ohne Beschränkungen an einer Seite.
Eine Seite ist ein Büro, das Bauen oder der Wohnraum, der vermietet oder durch die Gesellschaft oder Person gehörig ist, die den Kauf macht. Es erlaubt irgendjemandem, vor Ort arbeitend, den Starterkit Quellcode zu verwenden und zu modifizieren.
Große Gesellschaften, die an mehreren Seiten funktionieren, müssen eine Seite-Lizenz für jede individuelle Position kaufen, wenn der Starterkit an vielfachen Positionen verwendet werden soll. Setzen Sie sich mit mir in Verbindung, wenn Sie solch eine Vereinigung sind und Sie eine Pauschalgebühr-Lizenz mit Ihrem eigenen Lizenztext es vorziehen, zusammen damit zu gehen.
Unterstützung
Nach dem Kauf, schaffen Sie bitte eine Rechnung auf Cocos2D Zentral und senden Sie mir eine private Nachricht von Ihrer Cocos2D Hauptrechnung, dann kann ich Ihnen vollen Zugang zum privaten Starterkit-Unterstützungsforum geben. Bemerken Sie, dass ich Ihre Forum-Rechnung brauche, um das zu tun, so ist der leichteste Weg, mich eine private Nachricht von Ihrer Rechnung einzuschreiben und mich zu senden.
Aktualisierungen zum Starterkit werden auf als erforderliche Basis getan. Ich werde es auch aktuell und laufend mit den letzten stabilen Ausgaben von cocos2d halten. Aktualisierungen werden über eine Download-Verbindung verteilt, die an die E-Mail-Adresse gesandt ist, die Sie für Ihre Ordnung verwendeten. Wenn sich Ihre E-Mail-Adresse jemals ändert, setzen Sie sich mit mir bitte in Verbindung, ideal sollten Sie mich Ihre Ordnungsbestätigung in diesem Fall nachschicken, um die Änderung zu beschleunigen. Updates are distributed via a download link sent to the email address you used for your order. If your email address ever changes please contact me, ideally you should forward me your order confirmation in that case to speed up the change.
Rückzahlungen
Wenn aus beliebigem Grund Sie mit dem Starterkit nicht zufrieden sind, können Sie um eine Rückzahlung durch die E-Mail innerhalb von 30 Tagen nach Ihrem Kauf bitten. Fügen Sie bitte eine Kopie der Kauf-BestätigungsE-Mails bei. Der Reihe nach wird Ihr Recht, den Starterkit Quellcode zu verwenden und zu modifizieren und damit gebaute Spiele zu veröffentlichen, widerrufen. In turn your right to use and modify the Starterkit Source Code and publish games built with it will be revoked.
Eine Rückzahlung kann nicht ausgegeben werden, wenn Sie bereits ein Spiel auf dem iTunes App Laden veröffentlicht haben, der gebaut ist mit oder einigen des Starterkit Quellcodes oder Vermögens verwendend.
Durch diese Lizenz nicht bedeckter Quellcode
Das lizenzierte Quellcodeprojekt enthält Dateien, die umsonst verfügbar sind und durch verschiedene Lizenzen geregelt werden. Die Begriffe & Bedingungen entworfen hier gelten für Quellcodedateien nicht, die den Urheberrechtsvermerk "Copyright 2009 Steffen Itterheim nicht enthalten. Alle Rechte vorbehalten." oder der ein Teil der Freien Quellcodesammlung ist. All rights reserved.” or which is part of the Free Source Code Collection.
Verzichterklärung
DIESE SOFTWARE WIRD ZUR VERFÜGUNG GESTELLT, "WIE" UND IRGENDWELCHE AUSGEDRÜCKTEN ODER IMPLIZIERTEN GARANTIEN, EINSCHLIEßLICH, ABER NICHT BESCHRÄNKT DARAUF IST, WERDEN DIE IMPLIZIERTEN GARANTIEN DER MARKTFÄHIGKEIT UND FITNESS ZU EINEM BESONDEREN ZWECK ABGESTRITTEN. IN KEINEM FALL WERDEN DIE REGENTEN ODER MITWIRKENDEN FÜR IRGENDWELCHEN DIREKTE, INDIREKTE, BEILÄUFIGE, SPEZIELLE, VORBILDLICHE ODER FOLGESCHÄDEN VERANTWORTLICH SEIN (EINSCHLIEßLICH, ABER NICHT BESCHRÄNKT AUF, BESCHAFFUNG VON ERSATZ-WAREN ODER DIENSTLEISTUNGEN; VERLUST DES GEBRAUCHES, DER DATEN, ODER DER GEWINNE; ODER GESCHÄFTSUNTERBRECHUNG) JEDOCH VERURSACHT UND AUF JEDER THEORIE DER VERBINDLICHKEIT, OB IM VERTRAG, DER STRENGEN VERBINDLICHKEIT, ODER DEM KLAGBAREN DELIKT (EINSCHLIEßLICH DER NACHLÄSSIGKEIT ODER SONST), IN JEDEM FALL AUS DEM GEBRAUCH DIESER SOFTWARE, SELBST WENN EMPFOHLEN DER MÖGLICHKEIT SOLCHEN SCHADENS ENTSTEHEND. LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
Fragen?
Setzen Sie sich mit mir in Verbindung!Wenn Sie irgendwelche Fragen haben, oder wenn Sie spezifische Lizenztexte vor dem Bilden eines Kaufs verlangen, setzen Sie sich mit mir bitte in Verbindung.
Wenn Sie denken, dass Ihr Spiel tremendeously unter der Illegalen App-Lager-Vervielfältigung erträgt, irren Sie sich. Es stumpf zu stellen: Ihr Spiel hat einfach auf dem Markt gescheitert! your game has simply failed on the market!
Berichte, die die App-Lager-Raten der illegalen Vervielfältigung an "mindestens 60 %" und Entwickler stellen, die Raten der illegalen Vervielfältigung von 80 % und sogar bis zu 95 % melden, sind mathematisch richtig, aber was sie häufig vergessen zu sagen, dass Sie wirkliche Verkaufszahlen sind. In den seltenen Fällen, wo Indie Entwickler auch erwähnen, wie viele Verkäufe sie, Piraten gemacht haben oder nicht, sind diese Zahlen immer äußerst niedrig. Für einen kommerziellen Entwickler, der eine 80-%-Rate der illegalen Vervielfältigung auf einem seiner Spiele meldet, ist es einfach ein Versuch, schreckliche Verkäufe in eine PR-Geschichte zu verwandeln, die ihrem Spiel ein kleines bisschen mehr Aufmerksamkeit lenken könnte. Tatsächlich erwarte ich die Spiele, die Raten der illegalen Vervielfältigung von mehr als 30 % melden, nicht mehr als 5.000 Kopien verkauft zu haben. An.99 $ schafft das Einnahmen von $ 3,500 - vielleicht eine große Anzahl für eine Zwei-Männer-Mannschaft, aber eine Katastrophe für einen kommerziellen Entwickler. Das ist kaum ein Problem, das durch die illegale Vervielfältigung, aber einen einfachen Misserfolg des Produktes auf dem Markt verursacht ist. For a commercial developer who reports an 80% piracy rate on one of his games it’s simply an attempt to turn terrible sales into a PR story which might give their game a little bit more attention. In fact, i expect the games who report piracy rates of over 30% to have sold no more than 5,000 copies. At $.99 this creates a revenue of $3,500 – maybe a good number for a two-man team but a catastrophe for a commercial developer. This is hardly a problem caused by piracy but a simple failure of the product on the market.
Was Sie über Softwarepiraten im Allgemeinen verstehen müssen: Sie verwenden viel Software. Tatsächlich ist das ihr Hobby und bevorzugter passtime, zur Probevorführung soviel Software, wie sie ihre Hände bekommen können. So werden Sie immer einen minimalen Betrag von Raubkopien jedes Stückes der Software haben, egal wie erfolgreich diese Software (oder nicht) ist. Natürlich mit dem höheren Erfolg und mehr Verkäufen der Software werden mehr Piraten es auch wahrscheinlich verwenden, weil sie auch Qualitätssoftware schätzen. Aber in Anbetracht des Betrags vom jailbroken I-Phone bereiteten sich Geräte vor, ausgeplünderte Software zu führen, es gibt eine harte Kappe des maximalen Betrags der illegalen Vervielfältigung, die Sie jemals auf jedem Titel sehen werden. Genauso viel, da es eine minimale Zahl von Piraten geben wird, die jedes Spiel spielen, sobald es verfügbar und unabhängig davon wird, wie erfolgreich es auf dem App-Laden ist. Wenn Ihre Verkäufe nah sind oder unter dieser minimalen Zahl von Piraten, bekommen Sie natürlich Raten der illegalen Vervielfältigung von mehr als 50 %. Diese Piraten schneiden in Ihre Einnahmen jedoch nicht. Ignorieren Sie sie. Sie hätten nie Ihren App an erster Stelle gekauft! In fact, this is their hobby and favorite passtime, to try out as much software as they can get their hands on. So you will always have a minimum amount of pirated copies of each piece of software, no matter how successful this software is (or not). Of course, with higher success and more sales of the software more pirates are also likely to use it because they, too, value quality software. But given the amount of jailbroken iPhone devices prepared to run pirated software there’s a hard cap of the maximum amount of piracy you will ever see on any title. Just as much as there will be a minimum number of pirates playing every game as soon as it becomes available and regardless of how successful it is on the App Store. If your sales are close or below that minimum number of pirates, you naturally get piracy rates of over 50%. These pirates don’t cut into your revenue however. Ignore them. They never would have bought your App in the first place!

David Rosen von Wolfire berichtet in seiner Anderen Ansicht auf dem Artikel Piracy, dass, wie man sagt, die höchste Zahl von Jailbroken I-Phones weltweit 10 %, und in den USA ist - wessen Benutzer ungefähr zwei Drittel des iPhone/iPod Marktes einsetzen - ist die Zahl von jailbroken Geräten gerade 5 %. Eine installierte Gesamtbasis von 75 Millionen I-Phones (50 Mio. bezüglich des Aprils 2010) und IPod-Berührungen (20 Mio. bezüglich des Septembers 2009) annehmend, bekommen wir höchstens 7.5 Mio jailbroken Geräte weltweit, oder etwa 2.5 Mio jailbroken Geräte in den USA. Sie sind nicht alle Piraten jedoch. PinchMedia berichtet, dass 38 % von jailbroken Geräten gelaufen sind, plünderten mindestens ein App aus. Sie stellen auch fest, dass diese Zahl niedrig ist. So wollen gerade wir Hälfte nehmen, und wir werden mit 3.75 Mio. jailbroken Geräte weltweit enden, die gelaufen sind, plünderten mindestens ein App aus. Noch eine ziemlich hohe Zahl - aber sagt es uns nur, dass sie angefangen haben, plünderte derjenige App, aber nicht aus, wie viel oder wie viel eines Piraten diese Benutzer wirklich sind. Wenn ich glauben musste, dass ich sagen würde, dass 10 % oder so etwa 400.000 dieser Benutzer energische Piraten wer Probevorführung viele Apps auf einer fast täglichen Basis sind. Diese sind die Piraten, die den größten Einfluss in Bezug auf pro - App Zahlen der illegalen Vervielfältigung machen. Sie sind auch die Benutzer, die mit geringster Wahrscheinlichkeit ihre Raubkopie zu einem gesetzlichen befördern werden, wenn sie es jemals überhaupt tun. Und das Versuchen, mit diesen Piraten zu kämpfen, ist alles andere als sinnlos - sie werden Ihre Kunden nie sein! They are not all pirates, however. PinchMedia reports that 38% of jailbroken devices have run at least one pirated App. They also state this number is low. So let’s just take half and we’ll end up with 3.75 Mio. jailbroken devices worldwide which have run at least one pirated App. Still a pretty high number – but it only tells us that they have started one pirated App but not how many or how much of a pirate these users really are. If i had to guess i would say that 10% or just about 400,000 of these users are active pirates who try out a lot of Apps on an almost daily basis. These are the pirates who make the biggest impact in terms of per-App piracy numbers. They are also the users who are least likely to upgrade their pirated copy to a legal one, if they ever do it at all. And trying to fight these pirates is anything but futile – they will never be your customers!
PinchMedia unterstützt auch meine Theorie, dass der grösste Teil der Piratenprobevorführung soviel Software, wie sie können, welcher natürlich weniger Zeit verlässt, um jeden App höchst zu verwenden: "Raubanwendungen werden weniger oft, weniger höchst, und seit einer kürzeren gesamten Zeitdauer verwendet als gekaufte Anwendungen."”
Gehen wir zurück zum Hauptinhalt davon: Entwickler, die ein Problem mit der Illegalen App-Lager-Vervielfältigung haben, haben nach meiner Meinung, entweder ein Problem der Wahrnehmung, oder sie geben eine einfache PR-Erklärung ab, die auf das Bekommen von ihnen mehr Aufmerksamkeit gerichtet ist, hoffend, bessere Verkäufe zu erreichen. Die Entwickler, die am meisten unter der Illegalen App-Lager-Vervielfältigung leiden, sind diejenigen, die einfach nicht erfolgreich sind. Ihr echtes Problem ist nicht Illegale Vervielfältigung, es ist viel wahrscheinlicher, dass sie entweder an Marketing, Timing, Qualität oder an Entdeckung ihres Zielpublikums scheiterten. The developers who suffer most from App Store Piracy are those who simply are not successful. Their real problem isn’t Piracy, it’s much more likely that they failed either at Marketing, Timing, Quality or finding their Target Audience.
Lassen Sie mich das mit einer einfachen Karte summieren, die ich denke, erklärt, warum App-Lager-Entwickler erstaunlich hohe Raten der illegalen Vervielfältigung melden, wenn tatsächlich sie den kommerziellen Misserfolg ihres App melden:
Cocos2d-Hinzufügung der häufig gestellten Fragen: Elfe-Springen-Rechteck
Ich habe zwei kurze Lehren zum cocos2d für häufig gestellte I-Phone-Fragen über das Bekommen eines springenden Kastens einer Elfe (mit dem Code) und Prüfung von rotieren gelassenen Rechtecken für die Kreuzung (Kollision) hinzugefügt.
cocos2d hat eine Methode nicht, den begrenzenden Kasten, und das Verwenden [zu bekommen, Elfe contentSize], um ein Rechteck zu schaffen, wird rissig gemacht, weil es aufhören wird zu arbeiten, sobald die Elfe entweder erklettert wird oder sein anchorPoint, ist nicht am Zentrum (0.5f, 0.5f). Es ist leicht, das zu befestigen, und es ist noch leichter, eine Objektive-C Kategorie zu schreiben, so dass Sie [Elfe getBoundingRect] nennen können, als ob es eine regelmäßige CCSprite durch cocos2d zur Verfügung gestellte Methode war. Natürlich weiß ich, dass, sobald cocos2d Entwickler das lesen, die Frage über die Prüfung für die rotieren gelassene Rechteck-Kreuzung heraufkommen wird. Ich verband mich zur "richtigen" Lösung, aber ehrlich, ich glaube die pragmatischeren Annäherungen, dass ich beigetragen habe, wird wirklich besser in den meisten Fällen arbeiten. Of course i know that as soon as cocos2d developers read this the question about testing for rotated rectangle intersection will come up. I linked to the “proper” solution but honestly, i believe the more pragmatic approaches that i’ve added will actually work better in most cases.
Ich setze fort, in Posten zu geraten, wo Benutzer fragen, wie schnell cocos2d ist, oder warum ihr besonderer Code langsam ist.
Ich kompilierte eine Verfahren-Checkliste, die Sie vor dem Melden von Leistungsproblemen durchgehen sollten.
Ich versuchte auch zu erklären, warum die Frage dessen, wie schnell cocos2d ist, keine wirkliche Relevanz hat.
Dann fügte ich eine Verbindung zum Vollsehen der cocos2d Leistungstipps von Interactive hinzu, weil das solch ein großer Posten ist! Es behandelt viele Themen:
- Kopierfräs-mit Instrumenten
- Prüfung in verschiedenen Geräten
- Texturen und Textur-Atlasse
- Ladende Zeiten beschleunigend
- Das Reduzieren des Speichergebrauchs
- Das Schnipsen von Texturen
- Pixel-Formate
- PVRTC (Textur-Kompression)
- CCSpriteSheet
- Machen Sie erzeugte Texturen von programatically vor
- Vermeiden Sie, Atomzugriffsberechtigte zu verwenden
- Lesen Sie die beste Methoden-Dokumentation
Da immer ich hoffe, dass Sie diese Hinzufügungen Hilfe - und nützlich finden.



















