Dans cet épisode du Cocos2D Podcast c'est moi qui suis interviewé. Je parle de Kobold2D, qui est mon pris lors de la garde de la roue Cocos2D tournante. Au cours des 2.5 ans passés j'ai appris beaucoup de Cocos2D et j'ai trouvé l'abondance par hasard de choses que je sens devrait vraiment être corrigé. Kobold2D est que la correction de cours vers un meilleur utilisateur total connaît. Over the past 2.5 years I learned a lot about Cocos2D, and I came across plenty of things that I feel should really be corrected. Kobold2D is that course correction towards a better overall user experience.
Dans ce podcast vous apprendrez plus des buts du projet, son histoire et l'avenir. Je distribue aussi le lien de téléchargement pour l'Avant-première Kobold2D construit.
Cocos2D Podcast : Kobold2D
Kobold2D : le fait de Moderniser vos Projets est facile!
La paire il y a quelques mois j'ai écrit une classe de travaux dirigés expliquant comment moderniser Cocos2D dans un projet existant.
J'étais capable de réduire la description à seulement cinq pas concrets, mais il y a encore beaucoup de texte pour suivre et les mises en garde de réfléchir. J'ai conçu Kobold2D exactement pour rendre facile de résoudre l'édition de moderniser des projets à de plus nouvelles versions du moteur de jeu.
La présentation du Projet de Kobold2D Upgrader!
Comment du choix des projets vous voudriez moderniser, claquez ensuite un bouton pour le faire faire pour vous ?
C'est pour quoi le Projet de Kobold2D justement appelé l'outil d'Upgrader est :
Vous dirigez simplement l'outil de la dernière version Kobold2D. L'outil cueille alors une liste de projets d'upgradeable de versions Kobold2D précédentes qu'il trouve automatiquement. Vous devez choisir seulement alors les projets que vous voudriez moderniser et l'outil fait le reste pour vous. You then only have to select the projects you’d like to upgrade, and the tool does the rest for you.
“Upgradeable” signifie ici tous les projets qui n'ont pas été modernisés et ne remplaceront pas de projet déjà existant avec le même nom. Donc vous verrez seulement quels outils ont besoin en fait du fait de moderniser. Et par “le reste” j'ai l'intention de copier le Xcode workspace, le projet de Xcode et les dossiers de projet et correctement émigrer le projet dans workspace peut-être existant et les choses semblables qui avaient l'habitude d'être un processus manuel. And by “the rest” I mean copying the Xcode workspace, Xcode project and project files, and correctly migrating the project into a possibly existing workspace, and similar things that used to be a manual process.
L'avantage, rencontrez la simplicité!
Note de Côté drôle
Dans le cas où vous vous demandez ce qu'un Upgrader est et ce que le processus du fait de moderniser implique, Wikipedia a la réponse :
Le fait de moderniser peut impliquer des processus multiples :
- La distillation à vide pour séparer des fractions plus claires, en distançant un résidu avec les poids moléculaires plus de 400.
- De-asphalting le résidu de distillation à vide pour enlever le plus haut poids moléculaire alicyclic les composés, qui précipitent comme asphaltenes noir/marron quand le mélange est dissous dans C3–C7 alkanes, en partant “de-asphalted l'huile” (DAO) dans la solution.
- Se fendre pour casser de longues molécules de chaîne dans le DAO dans les plus courts.
- L'hydrotraitement peut aussi être employé pour enlever le soufre et réduire le niveau d'azote.
Je crois que décrit tout à fait le processus de mise à niveau pour les projets de Cocos2D.
PS : Depuis que Cocos2D n'a été jamais conçu pour faire ses projets upgradeable, je devrai décevoir ceux qui espèrent que le Projet de Kobold2D l'outil d'Upgrader pourrait être adapté pour les projets de Cocos2D.
Cet article FAQ Kobold2D explique la différence entre la Couronne SDK et la bibliothèque de Cire d'I-Phone et évalue les options existantes et futures pour Lua scripting dans Kobold2D.
De la Couronne SDK
La Couronne SDK expose une API bien conçue dans Lua pour le développement de jeu et app. Cette API se distingue naturellement d'IOS SDK comme la Couronne est aussi un moteur de jeu de trans-plate-forme, en exposant la même API pour toutes les plates-formes.
Par exemple, quand vous recevez un événement d'accéléromètre dans la Couronne vous recevez un objet d'événement avec ces propriétés. Les paramètres d'accélération sont déjà fendus dans "l'accélération immédiate” et “l'accélération de gravité”, quelque chose que les promoteurs d'IOS doivent faire manuellement. En même temps, l'événement annonce aussi si c'était un événement de secousse. Sur IOS c'est une entièrement différente API des événements d'accéléromètre. At the same time, the event also reports whether it was a shake event. On iOS this is an entirely different API from the accelerometer events.
Dans une phrase, la Couronne expose la fonctionnalité que les appareils offrent d'une façon uniforme, simplifiée. La couronne condense aussi des renseignements dans moins de propriétés et méthodes. Vous vous occupez de moins de fonctions qui le rend grand pour le prototypage rapide. Mais quelquefois vous aurez moins de fonctionnalité et en particulier vous ne pouvez pas étendre la Couronne avec votre propre Objectif-C, C ou C ++ le code comme le moteur backend est de propriétaire. En général, cela rend la Couronne SDK très facile à apprendre, mais parce que ce n'est pas extensible et peut imposer des restrictions, ce n'est pas pour chacun. You deal with fewer functions which makes it great for rapid prototyping. But sometimes you’ll have fewer functionality, and in particular you can’t extend Corona with your own Objective-C, C or C++ code since the backend engine is proprietary. Overall, this makes Corona SDK very easy to learn but because it’s not extensible and can impose restrictions, it’s not for everyone.
De la Cire
La bibliothèque de Cire d'I-Phone est le fait de lier dynamique, automatique de la langue Lua à l'Objectif-C. La cire fournit une couche de traduction qui expose le code Objectif-C régulier à Lua via les fonctions d'exécution Objectives-C.
Comme le fait de se lier arrive à la durée d'exécution, c'est le fait de lier dynamique — en d'autres termes il n'y a aucun code qui dit que fonctionnent X devrait être exposé à Lua d'une façon particulière. Au lieu de cela il y a le code qui crée les méthodes Lua et les propriétés en analysant le code Objectif-C existant à la durée d'exécution et en appliquant des mécanismes de conversion génériques pour traduire entre les deux langues. Le fait de se lier est automatique parce que cette traduction est transparente à l'utilisateur. The binding is automatic because that translation is transparent to the user.
La cire vous permet essentiellement d'écrire le code Objectif-C dans la langue scripting Lua. C'est agréable, dans la direction de mémoire automatique particulière devrait être mentionné comme une caractéristique positive de Cire. Mais autre que cela il est vraiment difficile de justifier l'utilisation de Cire si vous pouvez écrire le même code dans l'Objectif-C. Voici les désavantages importants d'écrire (scripting) apps avec la Cire : But other than that it’s really hard to justify the use of Wax if you can write the same code in Objective-C. Here are the major drawbacks of writing (scripting) apps with Wax:
- Vous finissez par écrire presque exactement même code que dans l'Objectif-C. Cela peut être un peu moins de code mais il utilise une syntaxe bizarre et rare.
- La nature dynamique de Cire’ Lua les causes se liant un significatif au-dessus. Tellement en fait que gameplay réel scripting pour en temps réel (60 fps) les jeux auront pour résultat la performance décevante — à moins que le jeu ne soit assez simple et/ou vous visez seulement plus nouveaux appareils (la 4ème génération en avant et iPads).
- Vous ne pouvez pas déboguer correctement des scripts Lua. Vous ne pouvez pas mettre des points d'arrêt, vous ne pouvez pas le pas simple par le code de script, vous ne pouvez pas inspecter des variables.
- Lua est une langue dynamiquement tapée. Cela signifie que le compilateur ne vérifiera pas de scripts Lua pour les erreurs. N'importe quelles erreurs de syntaxe dans votre script vont seulement la surface pendant que votre app court déjà. Any syntax errors in your script will only surface while your app is already running.
- Le soutien de Lua dans Xcode est non-existant. Il n'y a aucun marquage de syntaxe, aucun auto-achèvement, le fait de réagir en tant qu'agent à la commission non, aucune aide rapide pour les dossiers de script Lua.
- Vous perdez des paramètres appelés dans le code de Lua. Les fonctions de Lua sont indéfinissables comme les fonctions de C :
Dans l'incapacité particulière de déboguer vos scripts de Cire (#3) et le fait de ne pas avoir compile des vérifications de syntaxe fois (#4) compensera complètement n'importe quel gain de temps que vous pourriez recevoir d'écrire votre app entièrement dans la Cire.
La cire ne joue pas dans les forces de Lua, qui est qu'elle est d'habitude utilisée pour exposer une API simplifiée, spécifique du domaine. Une telle API serait moins faillible, est plus facile à comprendre et déboguer. Au lieu de cela la Cire expose la pleine complexité d'Objectif-C et applique une syntaxe bizarre, enlève le fait de déboguer, rend le contrôle de syntaxe infirme et réduit le code en révisant le confort. Pas exprès, remarque mais dans le fond c'est ce que vous recevez. Instead, Wax exposes the full complexity of Objective-C and applies a weird syntax, removes debugging, disables syntax checking and reduces code editing comfort. Not on purpose, mind you, but in effect that’s what you get.
Pendant que la Couronne partage les éditions #4 à #6 avec la Cire, c'est la performance et le design codé est bien au-dessus de cela ce que la Cire est capable de fournir. La couronne vient aussi avec un débogueur Lua, bien qu'un conduit de la commande un (eg. comme le Terminus).
Le Terrain d'entente :
Une API de Script spécifique du Domaine dans LuaLua n'est pas sans ses avantages. C'est une langue excellente aux jeux de script dans. Mais c'est vrai seulement si le but de la langue a été déterminé et une API appropriée a été conçue et exécutée, exposée à Lua via Lua régulier, non-dynamique bindings pour la performance optimale. Cela exige beaucoup de travail. But this is only true if the purpose of the language has been determined and an appropriate API has been designed and implemented, exposed to Lua via regular, non-dynamic Lua bindings for optimal performance. That requires a lot of work.
Vous pouvez attacher l'API exposée à Lua en écrivant manuellement C les fonctions qui manipulent la meule de Lua, ou via les bibliothèques se liant telles que tolua. Une telle approche peut avoir un de ces buts :
- Une API de moteur de jeu de but générale pour écrire apps dans Lua. (La couronne SDK)
- Une API scripting spécifique du domaine pour manipuler des objets de jeu existants à la durée d'exécution pour un but précis. C'est souvent adapté pour travailler seulement avec un détail (le type de) le jeu. (Le monde de Warcraft UI Scripting) (World of Warcraft UI Scripting)
- Une API "de temps du téléchargement" pour configurer l'app et ses objets. Réduit la quantité de code de paragraphe passe-partout nécessaire pour monter une scène. Peut être utilisé par ajoutent-ons et les outils puisque des données d'utilisateur-editable formatent pour les scènes, les niveaux, etc. (Kobold2D) Can be used by add-ons and tools as a user-editable data format for scenes, levels, etc. (Kobold2D)
- Utilisez le Numéro 3 pour configurer une machine publique spécifique du domaine, d'exécution. Le statemachine est exécuté dans un langage de haut niveau (l'Objectif-C, C, C ++) pour la meilleure performance. L'API de haut niveau est exposée par Lua pour fournir une API facile à utiliser aux créateurs. Les scripts Lua sont dirigés une fois initialiser le statemachine. (Battleforge, Spellforce) The high-level API is exposed through Lua to provide a user-friendly API to designers. The Lua scripts are run once to initialize the statemachine. (Battleforge, Spellforce)
Le numéro 3 est déjà exécuté par Kobold2D. Le numéro 2 et/ou 4 pourrait être exécuté dans l'avenir, à condition qu'il y ait un module commun que les scripts sont censés contrôler. Par exemple, cela pourrait être un système de menu scriptable pour que les écrans de menu puissent être conçus et programmés entièrement dans Lua. Ce n'est pas une promesse pour un trait, juste quelque chose qui pourrait être faite. For example, this could be a scriptable menu system so that menu screens can be designed and programmed entirely in Lua. This is not a promise for a feature, just something that could be done.
Le numéro 4 est des promoteurs tout à fait vigoureux, mais nouveaux constatent à plusieurs reprises que cela confondant écrit des scripts qui sont exécutés exactement une fois (eg chaque fois que le niveau est recommencé) parce que l'API scripting implique une nature d'exécution qu'il n'a pas — c'est seulement un script setup/init c'est traduit à la machine publique d'exécution.
Le numéro 1 n'est pas fascinant — pour utilisateurs peut utiliser simplement la Couronne SDK s'ils veulent écrire tout dans Lua et deuxièmement certains des désavantages pour la Cire s'appliquent encore : le fait de déboguer non, ne compilez non l'erreur fois en vérifiant, aucun soutien de Xcode.
En plus, le fait d'exécuter le Numéro 1 sur le haut de Cocos2D signifie qu'il devra y avoir une quantité de coups, compromis et code d'extension pour garder l'API Lua propre et simple en le faisant travailler avec l'API Cocos2D déjà existante. Il aurait plus de sens écrire un entièrement nouveau moteur de jeu avec une interface Lua et aussi faire cette trans-plate-forme. Mais attendez, c'est quel la Couronne SDK est! Vous recevez aussi une interface si Lua avec Cocos2D-X. But wait, that’s what the Corona SDK is! You also get such a Lua interface with Cocos2D-X.
Cocos2D Podcast : Cadre de Moineau
Un nouvel épisode du Cocos2D Podcast est vivant maintenant. Cette fois nous sommes rejoints par Daniel Sperl, l'auteur du moteur de jeu d'Objectif-C de Cadre de Moineau pour IOS qui est basé sur l'ActionScript (l'Éclat) le design d'API.
Notez : le site Internet de Moineau est actuellement annoncé comme “peut-être malware” par le Safari et Google. Le coupable a été enlevé et le site est sûr de visiter. Lisez ce poste de blog pour plus d'informations de ce qui est arrivé. The culprit has been removed and the site is safe to visit. Read this blog post for more info about what happened.
Daniel a un secret qu'il a partagé avec nous même s'il ne pouvait pas dire vraiment de détails jusqu'à l'annonce officielle dans quelques semaines. Cocos2D reçoit aussi la paire honorable (ou déshonorant) les mentions puisque nous le comparons avec le Cadre de Moineau et arrivons à une conclusion que sage de la documentation ce sont des sauts et des limites devant Cocos2D.
Cocos2D Podcast : Daniel Sperl (le Promoteur de Cadre de Moineau)
Cocos2D Précédent Podcast :
Marketing de votre AppJ'ai oublié au blog de Cocos2D précédent Podcast dans lequel Azam et moi parlons du marketing de votre I-Phone app.
Cocos2D Podcast : Marketing de votre I-Phone App
Sans rapport mais important :
Steve Jobs démissionneDans le cas où vous n'avez pas entendu, Steve Jobs a démissionné comme le président-directeur général de Pomme le 24 août 2011. Voici Steve (court et au point) la lettre au Conseil d'administration. Tim Cook était désigné comme son successeur. Lisez le communiqué de presse. Tim Cook was named as his successor. Read the press release.
J'ai aimé jamais vraiment qui est le patron d'une grande compagnie, juste assez pour recevoir le ridicule. Mais Steve Jobs partant.. Je ne peux pas m'empêcher d'être triste. I can’t help but feel sad.
Je crois que c'est pour une raison en particulier : très, très peu de présidents-directeurs généraux ont en fait une vision et le mènent à terme. Ou ayez le pouvoir de volonté de le mener à terme sans être tournés ou influencés par les défis et les oppositions par d'entreprise et à l'extérieur de la politique. Steve était capable de retenir tout le tour, le dévouement et la volonté que vous avez quand vous partez juste comme une compagnie ou un individu essayant de faire un vraiment grand produit dans lequel vous croyez et voulez être fiers de. Or have the (will)power to follow it through without being bent or influenced through challenges and oppositions by corporate and outside politics. Steve was able to retain all of the drive, dedication and willpower that you have when you just start out as a company or individual trying to make a really great product that you believe in and want to be proud of.
Les plus grandes compagnies sont incapables simplement de créer de tels produits parce que trop de travail des gens sur chaque produit et il y a beaucoup d'argent et de risque impliqué dans le processus qui, plus souvent que pas, transforme de potentiellement grandes compagnies en compagnies conservatrices, ennuyeuses faisant des produits ternes, suite aux tendances de consommateur. La pomme sous Steve Jobs a été l'exception. Steve prévoyait à plusieurs reprises des tendances de consommateur, les a même créés par le pouvoir qui est la marque de Pomme. Steve has repeatedly anticipated consumer trends, even created them through the power that is the Apple brand.
Vraiment, la partie vraiment triste est cependant ce que l'on n'a pas dit. Steve étant incapable de rencontrer ses devoirs peint une attitude menaçante à l'égard de sa santé. En ne mentionnant pas sa santé dans sa lettre et le communiqué de presse de Pomme même plus ainsi. Je veux juste pour lui qu'il ne soit pas aussi mauvais que l'on peut l'imaginer en train d'être s'il force quelqu'un du calibre de Steve à démissionner de sa position. La bonne chance et tout le meilleur, Steve! Not mentioning his health in his letter and Apple’s press release even more so. I just wish for him that it’s not as bad as one can imagine it to be if it forces someone of Steve’s caliber to resign from his position. Good luck and all the best, Steve!
Le But
Les utilisateurs de Kobold2D ne devraient devoir jamais diriger un script de coup, jamais. N'importe quel projet ou tâche de gestion d'actifs que la plupart des utilisateurs voudront exécuter devraient être faits avec un outil visuel.
Le problème
J'ai mentionné auparavant que j'avais des problèmes en transformant les gabarits de projet de Kobold2D en Xcode 4 format de Gabarit de Projet. En fait, il s'est révélé être impossible en raison de la nature de Kobold2D’s workspace l'organisation.
Comme je veux avoir une large variété de gabarits de projet dans Kobold2D et sans aucun doute plus que les trois gabarits rudimentaires que le cocos2d-I-Phone offre, j'avais besoin d'une façon de permettre aux utilisateurs de commencer de nouveaux projets basés sur un gabarit.
La Solution
Ce que j'ai trouvé est l'Outil de Démarreur de Projet de Kobold2D :
Simple et élégant. Cet outil lit rapidement les projets dans la chemise de gabarits Kobold2D, qui sont des projets de Xcode réguliers avec un plan d'appellation commun (eg. _Hello-Kobold2D-Template _) et les présente à l'utilisateur en incluant une description._Hello-Kobold2D-Template_), and presents them to the user including a description.
Choisissez un gabarit de projet, donnez-lui un nom et claquez le Create. L'outil copiera le projet de gabarit à la chemise Kobold2D à côté de tous les autres projets. Toutes les occurrences de _XXXX-Template_ sont rebaptisées au nom du projet fourni de l'utilisateur (qui est nettoyé pour enlever des caractères illégaux). Alors le projet est ajouté au Kobold2D.xcworkspace que l'outil ouvrira tout de suite. All occurrences of _XXXX-Template_ are renamed to the user supplied project name (which is cleaned to remove illegal characters). Then the project is added to the Kobold2D.xcworkspace which the tool will open right away.
Les Avantages
Je crois que le plus grand avantage est de loin que quelqu'un peut transformer son projet de Xcode en gabarit, simplement par suivant du plan d'appellation. Quelqu'un peut créer et distribuer leurs propres gabarits de projet de Kobold2D.
Notez : dans le screenshot il y a seulement 7 gabarits énumérés. J'ajouterai sans aucun doute plus pour le Kobold2D v1.0 la libération, la plupart sera basée sur les projets discutés dans mon Apprise le livre de Cocos2D. La première version (v0.9x) d'avant-première de Kobold2D sera disponible dans environ deux semaines. I’ll definitely add more for the Kobold2D v1.0 release, most will be based on projects discussed in my Learn Cocos2D book. The first preview version (v0.9x) of Kobold2D will be available in about two weeks.
Dessin au trait Starterkit : la Goutte Des prix, la Mise à jour et une Mise à jour de Statut générale rapide
Mon Jeu de Dessin au trait Starterkit est moderne maintenant avec les dernières versions de cocos2d (v1.0.1), IOS (compatible avec IOS 3.1 et plus haut, en incluant IOS 5.0), Xcode (compatible avec Xcode 3.2 et au-dessus, en incluant Xcode 4.0 sur le Léopard de Neige et Xcode 4.2 sur Mac OS X Lion).
Les clients existants recevront un courrier électronique avec les instructions sur comment télécharger la version actualisée du Jeu de Dessin au trait Starterkit.
Les bacs HD ont été rendus avec le Dessin au trait Starterkit
J'ai ajouté un autre jeu frais fait au Dessin au trait la page de produit de Starterkit – les Bacs HD par Thomas Busse :
Notez : le jeu n'est pas inclus dans le Starterkit. C'est un jeu qui a été fait avec le Starterkit et sert d'un grand exemple de ce que vous pouvez accomplir avec le Jeu de Dessin au trait Starterkit. It’s a game that was made with the Starterkit and serves as a great example of what you can achieve with the Line-Drawing Game Starterkit.
Le prix est tombé à 99$ (de 119$)
J'ai laissé tomber le prix du Jeu de Dessin au trait Starterkit à 99$ anticipativement aux produits de code source commerciaux prochains sur lesquels je travaille. Plus sur cela en temps voulu, les premières choses d'abord (Apprennent la 2ème Édition Cocos2D et Kobold2D).
Et Kobold2D ?
Je sais, je sais. Kobold2D est sorti non trop loin. Je prévois la première avant-première (le béta) la libération en août. Restez alertes. I anticipate the first preview (beta) release in August. Stay alert.
Ce qui est quitté pour faire doit écrire au minimum l'outil de Démarreur de Projet (pour vous donner l'avantage de Xcode 4 Gabarits de Projet, mais avec plus de flexibilité), l'organisation le site Internet avec la documentation "commencée" plus les références d'API et exécuter un nettoyage de projet général.
Et quand est le fait d'Apprendre Cocos2D la 2ème Édition partant ?
Il semble que la nouvelle édition du livre soit sortie en octobre, grossièrement deux mois plus tard que prévu.
Sur le côté positif je travaille avec un nouveau rédacteur qui a introduit une perspective fraîche dont le livre profite beaucoup. Le retard m'a permis aussi de faire des améliorations plus substantielles qu'initialement planifié.
Dans le Chapitre 3 particulier (l'Essentiel) a été complètement révisé pour mieux expliquer les concepts fondamentaux de Cocos2D et vous constaterez que le livre est plus visuellement riche en général. Par exemple ce dessin de vue fait exploser est utilisé pour expliquer le rapport de Scènes, Couches et Noeuds :
Le code source du livre utilise déjà Cocos2D récemment libéré v1.0.1 et je continuerai à actualiser le code source du livre pour la ligne v1.x de Cocos2D. Plusieurs des projets de jeu discutés dans le livre seront aussi transportés pour devenir des gabarits de projet de Kobold2D.












