Kobold2D (Alpha) Démonstration

Le 26 juin 2011, dans cocos2d, Kobold2D, par Steffen Itterheim by Steffen Itterheim

J'ai enregistré un screencast pour vous donner une première impression de la version alpha actuelle de Kobold2D. Je vous montrerai ce qui est est, ce qu'il inclut (jusqu'ici) et comment il améliore le processus de développement cocos2d.

Depuis l'enregistrement du screencast j'ai ajouté le projet de Goutte de Griffonnage du livre comme un projet de gabarit de jeu d'IOS. J'ai ajouté aussi les projets de physique de Tamia rayé & de Box2D du livre et les ai améliorés pour travailler tant sur IOS que sur Mac OS X.

Mise à jour

Voici un screenshot l'exposition de la liste actuelle de projets de gabarit (Bonjour Kobold2D, Bonjour Cocos3D, Bonjour Cocos2D-X, la Physique Box2D, Tamia rayé de Physique, Tamia rayé de Physique SpaceManager, Goutte de Griffonnage) et la course à pied de gabarit de Goutte de Griffonnage :

Actualiser Cocos2D dans un Projet Existant

Le 20 mai 2011, dans cocos2d, soutien, Xcode, par Steffen Itterheim by Steffen Itterheim

Le fait de moderniser le cocos2d-I-Phone est une édition se reproduisant pour beaucoup de promoteurs, mais comme cela arrive si rarement pendant le lifecycle d'un projet, il n'y a juste aucune routine pour suivre. Finalement vous pourriez vouloir moderniser le cocos2d-I-Phone, donc la question survient : comment allez-vous cela avec la moindre partie de quantité de problème ? how do you do that with the least amount of trouble?

Comme je passe par le processus d'actualiser plus de 70 (!) projets de Xcode pour la deuxième révision de mon Appris le livre de Cocos2D, je croyais que je devrais exposer les pas pour moderniser Xcode existant 3 projet qui utilise le cocos2d-I-Phone v0.99.x pour un Xcode 4 projet qui utilise le cocos2d-I-Phone v1.0.x.

Préalables : mise à jour de logiciel

Évidemment, vous voulez télécharger la dernière version de cocos2d-I-Phone et la défaire à n'importe quel annuaire. Souvenez-vous juste où vous l'avez défait parce que c'est d'où vous copierez les nouvelles chemises de bibliothèque.

Vous voulez aussi vous assurer que vous avez modernisé à Xcode 4 à ce moment-là, en installant IOS 4.3 (ou plus tard) SDK, si vous n'avez pas fait si déjà.

Prudence : Assurez-vous que Xcode est fermé pendant les premiers pas.

Pas #1 : effacez des contenus de chemise libs

Dans la chemise de votre projet, dans ce cas-là DoodleDrop03, choisissent toutes les chemises dans la chemise libs et les effacent sans clémence :

Vous finirez par devenir avec une chemise libs vide. En d'autres termes, n'effacez pas la chemise libs lui-même ou dans le cas où vous avez fait, assurez-vous que vous recréez la chemise libs.

Prudence : La raison pourquoi j'efface toutes les bibliothèques dans la chemise libs au lieu de simplement remplacer les bibliothèques avec de nouveaux est simple : vous pouvez vous attendre à ce que la version de cocos2d-I-Phone actualisée ait enlevé ou ait rebaptisé quelques dossiers. En effaçant d'abord toutes les bibliothèques vous pouvez être sûrs qu'aucun “dossier de zombi” n'existe qui ne sont plus utilisés, mais pourraient encore être compilés quand vous réajoutez plus tard les bibliothèques. De tels dossiers de zombi visseraient en haut le processus construire et produiraient des erreurs comme les symboles définis de "Double” et d'autres tels incidents. you can expect the updated cocos2d-iphone version to have removed or renamed some files. By first deleting all libraries you can be sure that no “zombie files” exist which are no longer used but might still be compiled when you later re-add the libraries. Such zombie files would screw up the build process and generate errors like “Duplicate defined symbols” and other such mishaps.

Pas #2 : copiez les chemises de bibliothèque

La première chose que vous remarquerez quand vous voulez moderniser le libs (Box2D, Tamia rayé, cocos2d, CocosDenshion, cocoslive, FontLabel et TouchJSON) consiste en ce qu'ils sont dans de différentes chemises dans le projet du cocos2d-I-Phone que vous avez téléchargé et avez défait.

Assurez-vous que vous choisissez exactement e mêmes chemises qui sont choisies dans le screenshot ci-dessous :

Cette différence dans la disposition de chemise peut être déconcertante un peu. De quoi vous avez besoin d'être conscients est que le Box2D, le Tamia rayé, FontLabel et les chemises TouchJSON sont dans la chemise externe dans le projet de cocos2d-I-Phone. En outre, la chemise Box2D que vous devriez copier est une sous-chemise de Box2d. Notez la différence dans la capitalisation de la lettre D. Vous voulez copier la chemise avec l'uppercase D : Box2D. Le même va pour la chemise CocosDenshion, vous devriez choisir la chemise CocosDenshion à l'intérieur de la chemise CocosDenshion. Furthermore, the Box2D folder that you should copy is a subfolder of Box2d. Note the difference in capitalization of the letter D. You want to copy the folder with the uppercase D: Box2D. The same goes for the CocosDenshion folder, you should select the CocosDenshion folder inside the CocosDenshion folder.

Prudence : Assurez-vous que vous ne choisissez pas la chemise de Banc d'essai Box2D – si vous faites et la copie qu'aussi, Xcode 4 pourrait mettre sous clé la construction du projet, le fait de consommer le pouvoir d'unité centrale de 100 % et le fait d'exiger une force quittée pour le fermer.

Notez : Si vous utilisez seulement le Tamia rayé ou la physique Box2D, ou aucun d'entre eux, vous pouvez sauter la duplication de ces chemises évidemment.

Pour accomplir la copie opertation, allez à la chemise libs et collez les chemises de bibliothèque copiées pour que vous finissiez par devenir avec une chemise libs qui ressemble exactement à l'image dans le Pas #1.

Bout : Si vous préférez la traînée et la goutte vous pouvez traîner juste les chemises choisies d'une fenêtre Finder à un autre sur la chemise libs de votre projet. Cela peut être plus facile à faire mais vous devriez vous souvenir de maintenir la clé d'Option en place en tombant pour que vous copiiez en fait les chemises au lieu de les déplacer. L'opération de copie est indiquée par le vert + l'icône au-dessous du curseur comme vous traînez & la goutte en tenant la clé d'Option. This may be easier to do but you should remember to hold down the Option key while dropping so that you actually copy the folders instead of moving them. The copy operation is indicated by the green + icon underneath the cursor as you drag & drop while holding the Option key.

Pas #3 : Enlevez des Références de Bibliothèque

Ouvrez votre projet dans Xcode 4 maintenant.

Choisissez tous les groupes sous le groupe Source cocos2d et frappez le Retour arrière pour effacer ces groupes (ou le claquement droit et choisir Effacent). Vous serez incités avec un dialogue comme dans le screenshot ci-dessous.

Assurez-vous que vous choisissez l'option implicite Enlèvent des Références Seulement pour éviter d'effacer les nouvelles chemises de bibliothèque que vous avez copiées juste :

Dès que vous avez enlevé les groupes de bibliothèques, le groupe Source cocos2d devrait être complètement vide. Vous vous êtes débarrassés juste de toutes les vieilles références, en vous sauvant de n'importe quelles erreurs de compilation potentielles provoquées par les références aux dossiers qui peuvent ne pas exister plus.

Pas #4 : Ajoutez des Chemises de Bibliothèque

Ensuite vous voulez réajouter vos chemises de bibliothèque. L'élection et le droit claquent le groupe Source cocos2d et l'élection Ajoutent des Dossiers à “NameOfYourProject” :

Regardez sans acheter dans la chemise libs du projet et choisissez toutes les chemises de bibliothèque dont vous avez besoin dans votre projet.

Vous pouvez avoir remarqué que mon projet n'utilise pas de moteur de physique, donc j'ai décidé de pas les ajouter ici. Si vous utilisez vraiment Box2D dans votre projet vous voudriez aussi choisir Box2D évidemment. Aussi si vous utilisez le Tamia rayé. Likewise if you use Chipmunk.

Notez : Pendant que ce n'est pas un problème d'ajouter que les deux chemises de moteur de physique, en faisant ainsi pourraient augmenter la grandeur de votre App.

Maintenant, voici où vous avez besoin de faire attention aux options! Vous voulez vous assurer qu'ils sont mis exactement comme dans le screenshot ci-dessous. De la manière la plus importante, en ajoutant des dossiers Xcode sera viable pour ajouter les dossiers à la cible principale du projet (dans ce cas-là DoodleDrop) au lieu de la cible de bibliothèques cocos2d. Most importantly, when adding files Xcode will default to add the files to the project’s main target (in this case DoodleDrop) instead of the cocos2d libraries target.

Assurez-vous que seulement la cible de bibliothèques cocos2d est choisie pour éviter que n'importe qui construit des erreurs :

Pas #5 : Construisez-le!

Vous devriez essayer maintenant et construire le projet. Si vous avez de la chance, il n'y aura pas d'erreurs et vous pouvez continuer avec votre travail.

Mais probablement, selon la complexité de votre projet et les changements faits au cocos2d-I-Phone, vous pourriez devoir fixer n'importe qui construit des erreurs qui se produisent. La plupart d'entre eux seront probablement provoqués par les classes qui ont été rebaptisées ou les fonctions qui ont été désapprouvées. Dans ce cas-là vous devrez découvrir par la Référence d'API et libérer des notes ce que les changements sont et comment les fixer. In this case you’ll have to find out through the API Reference and release notes what the changes are and how to fix them.

Fixer le “SDK basé manquant” le message

Une édition commune qui se produit spécifiquement avec les projets plus vieux est le “SDK basé manquant” l'erreur. Je crois que c'était la version Xcode introduite par Mac OS X Léopard de Neige (libéré le 28 août 2010) qui a fixé finalement cette édition redoutée en ajoutant que le “dernier IOS” l'option pour le SDK Basé Construit le Cadre.

Si vous voyez un message comme cela (surtout s'il vous donne un avertissement compiler ou une erreur) :

Vous devriez changer les SDK Basés Construisent le Cadre de votre projet d'utiliser le “Dernier IOS” le cadre :

Notez : Dans certains cas il peut être nécessaire de fermer Xcode 4 et le rouvrir pour faire le “SDK basé manquant” le message part.

Le fait d'Hériter correctement Construit des Cadres

Normalement, toutes les cibles dans Xcode héritent les Cadres Construire du projet par défaut.

Cependant, dès que vous avez fait n'importe quel changement dans n'importe qui Construire le Cadre au niveau prévu cela Construit le Cadre n'héritera plus les changements faits au même Construisent le Cadre sur le niveau de projet. La réaction implicite par beaucoup de promoteurs est souvent de mordre la balle et la vérification et la revérification les Cadres Construire du projet aussi bien que toutes les cibles et faire le même changement aussi plusieurs fois que vous avez des cibles dans votre projet.

Ne le faites pas, il y a une voie meilleure et plus facile!

Vous pouvez avoir un Cadre Construire au niveau prévu au défaut en arrière pour hériter le Cadre Construire défini au niveau de projet. Aussi on peut charger qu'un Cadre Construire au niveau de projet hérite du cadre implicite OS. Dans le screenshot ci-dessous j'ai changé délibérément le Cadre Construire au niveau prévu : In the screenshot below I have purposefully changed the Build Setting at the target level:

Pour l'avoir le défaut en arrière au cadre de projet, qui est le Dernier IOS (IOS 4.3) tout que vous avez besoin de faire doit choisir qui Construisent le Cadre et frappent la touche d'effacement :

Bout : le fait d'Échanger du Combiné à la vue de Niveaux en reconsidérant les Cadres Construire rend facile de voir qui Construisent des Cadres sont hérités et qui ne sont pas. Vous remarquerez aussi que n'importe qui Construit le Cadre qui a été changé au niveau actuel et n'hérite pas sa valeur n'est plus imprimée dans les lettres audacieuses. You’ll also notice that any Build Setting that has been changed at the current level and doesn’t inherit its value anymore is printed in bold letters.

C'est tout!

Codage heureux avec votre projet de cocos2d-I-Phone nouvellement actualisé! Cette classe de travaux dirigés de mise à niveau sera aussi imprimée dans la deuxième révision du fait d'Apprendre le livre de Cocos2D.

Bout : Avec Kobold2D il sera encore plus facile de moderniser votre projet parce qu'une copie simple & une colle des dossiers dans la chemise kobold2d suffiront. S'il y a jamais des pas supplémentaires pour suivre nous les décrirons en détail évidemment. If there are ever any additional steps to follow we’ll describe them in detail of course.

Livre de cocos2d, le Chapitre 5 : le fait de Devenir plus grand et mieux

Le 23 juillet 2010, dans les Annonces, le livre, par Steffen Itterheim by Steffen Itterheim

Le chapitre 5 – le fait de Devenir plus grand et meilleur

Le point essentiel de ce chapitre devra discuter le projet de jeu simple du chapitre précédent. J'ai lancé tout dans une classe, clairement pas ce que vous voulez faire pour de plus grands jeux. Mais arriver d'une classe au design codé réel est un grand pas que certains hésitent à prendre. Je le rendrai plus facile et discuterai des questions communes et leurs solutions, tel que qu'à seperate, que sousclasser de et comment vous pouvez avoir tous les objets de seperated communiquent l'un avec l'autre et échangent des renseignements des façons différentes. But getting from one-class to real code design is a big step which some hesitate to take. I’ll make that easier and discuss common issues and their solutions, such as what to seperate, what to subclass from and how you can have all the seperated objects communicate with each other and exchange information in various ways.

Un grand thème sera évidemment comment profiter de la hiérarchie de scène cocos2d’s et quels écueils il peut avoir en bougeant d'un jeu de la couche simple à celui qui a des couches multiples et des scènes même multiples.

Quant au titre de chapitre je ne suis pas si sûr si ce sera il. Peut-être le long de la voie pendant que j'écris que je le changerai. Salut de suggestions! Suggestions welcome!

Le chapitre sera soumis vendredi, le 30 juillet.

Qu'est-ce qui est votre pris sur la bonne structure codée de cocos2d ?

Vous battiez-vous jamais avec les concepts de design de cocos2d ? Ou la hiérarchie de scène cocos2d ? Ou comment à la disposition une scène et divisent votre jeu en parties logiques ? Dites-moi de cela. Or how to layout a scene and divide your game into logical parts? Tell me about it.

Je sais que les questions de thèses sont un peu génériques pour demander. C'est des choses qui ne se sentent pas justes, mais ne semblent pas là être une voie meilleure, plus évidente. Je crois que nous tous connaissons certains d'entre ceux, si vous faites, être sûrs de me dire! Quittez un commentaire ou écrivez-moi un courrier électronique. I think we all know some of those, if you do, be sure to tell me! Leave a comment or write me an email.

Le résumé du fait de travailler sur le Chapitre 4 – le jeu D'abord simple

On appelle le jeu que j'ai voulu faire la Goutte de Griffonnage et les traits laissant tomber des araignées et un accéléromètre a contrôlé l'étranger essayant d'éviter les araignées. Somme toute il a été divisé en 8 pas concrets. Les lots et beaucoup de commentaires codés, aussi. Lots and lots of code comments, too.

Il commence des ressources assez simples, ajoutantes à Xcode et des lutins ajoutants. Cela reçoit plus de gameplay-esque quand les commandes de joueur conduites de l'accéléromètre ont été tordues pour fournir l'accélération et la décélération de l'objet de joueur. Par contre, les mouvements d'araignées sont conduits seulement par les actions. In contrast, the spiders movements are driven only by actions.

Je vous présente à deux traits non documentés de cocos2d, à savoir CCArray qui est depuis v0.99.4 avait l'habitude de conserver tous les enfants d'un noeud. L'autre sont la classe CGPointExtension qui a toutes les fonctions normalement fournies par un moteur de physique, cependant pas chaque jeu devrait relier un moteur de physique juste parce que l'on a besoin de ces fonctions de maths. C'est pour cela que CGPointExtension entre commode. That’s why CGPointExtension comes in handy.

Avec la méthode ccpDistance les vérifications de collision sont faites. Les collisions radiales simples et dans le mode de débogage les rayons de collision sont tirées aussi.

Entre le CCLabel pour le score a été remplacé avec un CCBitmapFontAtlas, parce qu'il a tué le framerate. J'ai mentionné bientôt Hiero et comment l'utiliser en principe mais pour tous les détails il n'y avait aucune pièce. Mais pendant que j'étais à cela j'ai créé la Classe de travaux dirigés de Hiero. But while I was at it I created the Hiero Tutorial.

À la fin du projet j'ai ajouté que certains polissent qui n'est pas décrit dans le livre (trop de détails), mais ajoute vraiment au regard du jeu et au sens. La goutte d'araignées, soyez suspendus dans là, chargez ensuite avant de descendre, toutes les actions d'utilisation faites. J'ai ajouté aussi le fil qu'ils accrochent à utiliser ccDrawLine. Et ensuite il y a un jeu sur l'étiquette qui montre même plus d'utilisation d'action. I’ve also added the thread they’re hanging from using ccDrawLine. And then there’s a game over label which shows even more action use.

Un des principes que j'ai suivis doit s'absenter de l'ensemble fixé autant que possible. Donc le projet, une fois fini, a vraiment couru juste parfait sur un iPad. Bien que l'expérience soit une différente, il y a plus de chute d'araignées et ils tombent plus vite mais il y a l'espace aussi plus sûr pour manoeuvrer à. Although the experience is a different one, there’s more spiders dropping and they drop faster but there’s also more safe space to maneuver to.

Oh et, l'art de jeu est toute la mine. Oui, je sais … mais les araignées de l'Homme ont vraiment juste six jambes! :)