Detrás del devs

El 5 de octubre de 2010, en Anuncios, por Steffen Itterheim by Steffen Itterheim

¡Estoy de vuelta de Macoun, y era la reunión agradable todos ustedes! Bien, realmente ya que aquella conferencia estaba sólo un paseo de 90 minutos lejos, entonces realmente no fui ido, excepto mentalmente. Pasé mucho tiempo la semana pasada para preparar mi presentación (en alemán), y enfrentamientos contra un frío. El sujeto era un sistema componente animoso que escribí encima de cocos2d, para encapsular la mayor parte de los cocos2d CCNode materia y permiso de mí para concentrarme en escribir componentes gameplay reutilizables. El sistema trabaja pero no es la producción probada. De todos modos es probado muy prometedor de mi inicial prueba y abre algunas oportunidades interesantes, por ejemplo la reutilización de componentes es timesaver enorme, y usted puede deshacerse totalmente de cualquier jerarquía de clase y permanecer flexible durante el desarrollo. Debido a la escritura del libro y otras cosas yo no había tenido el tiempo para desarrollarlo tanto como quise a. Lo soltaré finalmente, pero para el momento, tengo un foco diferente. I spent a lot of time last week to prepare my presentation (in german), and fighting a cold. The subject was a game component system that I wrote on top of cocos2d, to encapsulate most of the cocos2d CCNode stuff and allowing me to focus on writing re-usable gameplay components. The system works but it’s not production tested. Still it’s proven very promising from my initial tests and opens some interesting opportunities, for example the re-use of components is a huge timesaver, and you can totally get rid of any class hierarchy and remain flexible throughout development. Due to writing the book and other things I hadn’t had the time to develop it as much as I wanted to. I’ll release it eventually but for the moment, I have a different focus.

Por su parte llego tarde con el capítulo de Centro Animoso debido a las preparaciones de conferencia de Macoun, una boda próxima y una renovación de piso del soon-to-be-wed como su regalo de boda. Entonces trataré de meter la escritura tanto el capítulo de Centro Animoso como el último capítulo en esta semana, antes de concentrar mi atención en la actualización del proyecto de Xcode y Line-Drawing Starterkit. No tuve la intención de apoyar no versiones beta de cocos2d, pero dado cuanto las betas recientes duran y cuantos reveladores realmente usan la última beta (probablemente debido al apoyo de HD) y que significativo los cambios que se rompen son esta vez, voy a actualizar el starterkit y proyecto de Xcode con el apoyo de HD guardando el viejo proyecto para aquellos que prefieren usar la 0.99.4 versión estable de cocos2d. Una vez que esto es hecho, será el mediados de octubre y otro proyecto, sólo en parte acerca de cocos2d, puntapiées en la velocidad llena. Ningún tiempo para perder. I did not intend to support non-beta versions of cocos2d, but given how long the recent betas last and how many developers actually use the latest beta (probably due to HD support) and how significant the breaking changes are this time, I’m going to update the starterkit and Xcode project with HD support while keeping the old project for those who would rather use the stable 0.99.4 version of cocos2d. Once that’s done, it’ll be mid of October and another project, only partly concerning cocos2d, kicks in full speed. No time to lose.

Hablando de Starterkit, septiembre fue por e hice 10 ventas, sin anunciarlo o algo, entonces aquellos números están en la parte inferior del “” espectro de ventas potencial. Esto es una suma (más de 1.500$) con los cuales puedo vivir. Bien, realmente, esto es una suma de la cual puedo vivir. Sobre un asunto relacionado, recientemente encontré una página detailling el tráfico stats del sitio web cocos2d-iphone.org. Si aquellos stats son correctos, las visitas únicas son más de diez veces más que el de mi sitio web. Ahora, francamente hablando, cada vez consigo aquellos pequeños hechos y stats de aquí y allí durante los meses de pareja pasados, y luego sumé los números, los comparó con mío, valoraciones razonablemente pesimistas aplicadas y precaución, me pregunto: ¿por qué diablos no es cocos2d dirigido como un negocio? Well, actually, that’s a sum that I can live off of. On a related matter, I recently found a page detailling the traffic stats of the cocos2d-iphone.org website. If those stats are correct, the unique visits are over ten times that of my site. Now, frankly speaking, every time I get those little facts and stats from here and there over the past couple months, and then added up the numbers, compared them with mine, applied reasonably pessimistic estimations and caution, I do wonder: why the hell isn’t cocos2d run like a business?

Si usted me pregunta, con aquellos tráfico stats y una tasa de cambio razonable del 0.1 % por invitado único (mío es más del 0.2 %), uno podría pagar fácilmente a 3 personas para desarrollar cocos2d, probarlo, escribir la documentación, moderar el foro, y en la adición general de más valor comercial. Que por su parte cultiva el negocio, acelera el desarrollo del motor, instrumentos y subproductos y hará a cada uno beneficiarse de esto. No lo consigo. Como a este punto, esto va o a ser que, o una decadencia lenta a un producto de lugar durante los próximos años de pareja debido a la competencia cada vez más fuerte de otros motores iOS. Sobre todo aquellos que ofrecen el apoyo de plataforma enfadada, ya que esto es lo que los contratistas preguntan para, o hasta exigen, cada vez más. I don’t get it. Because at this point, it’s either going to be that, or a slow decline to a niche product over the next couple years due to the increasingly strong competition from other iOS engines. Especially those that offer cross-platform support, since that’s what contractors are asking for, or even demanding, more and more.

De todos modos, por mi parte, decidí que ahora sería un tiempo bueno para comenzar a hacer la cosa de Indie de jornada completa, trabajo de contrato todavía aceptador pero soy capaz de ser mucho más criticón de ello. Hago disponer un objetivo para mí, y no es uno simple. Siempre he disfrutado el más para ayudar a mis colegas, fijar sus problemas, apoyarlos y en general, ayudarles a conseguir la excelencia. Sé, esto suena a algo que usted encontraría en la matriz de trabajo del EA – y de hecho, usted hace. Los otros que ayudan consiguen la excelencia, durante mi carrera profesional, esto es lo que yo he estado haciendo y disfrutando el más. Ahora me encuentro haciendo esto para reveladores cocos2d, disfrutando de ello y ser capaz de apoyarme en el proceso. Bien, creo que tendré que agradecerle, mis queridos lectores, para esto. :) I’ve always enjoyed most to help my colleagues, to fix their problems, to support them and in general, to help them achieve excellence. I know, that sounds like something you’d find in EA’s job matrix – and in fact, you do. Helping others achieve excellence, throughout my professional career, that’s what I’ve been doing and enjoying the most. Now I find myself doing that for cocos2d developers, enjoying it and being able to support myself in the process. Well, I think I’ll have to thank you, my dear readers, for that. :)

Como gracias atrás, he comenzado a trabajar en un proyecto más grande hace aproximadamente 3 meses que será útil y provechoso para muchos reveladores animosos indie, sin tener en cuenta el motor que usted puede usar. De ahí esto merece su propio sitio web y un nombre chulo (¡zurcido, que es difícil!). Tengo ganas realmente de entrar en la cuarta velocidad con ello después de que he presentado los capítulos de libro restantes. Quédese templado.). I’m looking forward to really getting into high gear with it after I’ve submitted the remaining book chapters. Stay tuned.

Libro de cocos2d, el Capítulo 9: Efectos de Partícula

El 21 de agosto de 2010, en Anuncios, libro, cocos2d, por Steffen Itterheim by Steffen Itterheim

El capítulo 9 – Efectos de Partícula

Aquellas motas diminutas que usted puede ver en su pantalla táctil después de un estornudo.

No exactamente. Por supuesto quiero decir el sistema de partícula cocos2d y sus efectos de partícula incorporados que serán el foco de este capítulo. Y ninguna discusión de partículas sería completa sin describir el volumen de trabajo que gira alrededor del instrumento de Diseñador de Partícula. And no discussion of particles would be complete without describing the workflow revolving around the Particle Designer tool.

Resumen de trabajo en el Capítulo 8 – Fusila les

Esto seguramente no era el capítulo más fácil para mí para escribir. Yo tenía objetivos muy ambiciosos, tal vez demasiado ambiciosos de 27 páginas. Realmente logré moverme sigilosamente en bastante aunque, aquí esté una lista parcial: I did manage to sneak in quite a lot though, here’s a partial list:

  • como al nuevo factor existencia cifran para hacerlo trabajar mejor con los nuevos rasgos
  • como reunir balas y enemigos juntos para acceso más fácil y mejor rendimiento
  • como no usar demasiadas subclases, que en cambio confían en interruptores de tipo
  • como usar la jerarquía de nodo cocos2d’s como un sistema componente simple para escribir componentes lógicos animosos reutilizables
  • como poner en práctica movimiento básico, disparos y un healthbar como componentes
  • como descubrir colisiones entre balas y enemigos

El no entonces la parte fácil golpeaba el equilibrio correcto. No yendo demasiado técnico. No hacer demasiado inmediatamente. No dividiendo cosas en demasiadas piezas diminutas. Pero sobre todo yo con frecuencia encontraba varios errores de programación en el código, o el comportamiento sólo inesperado de cocos2d que me obligó a pasar más tiempo eliminando fallos y cambios que desandan a veces que estuve preparado para. Not doing too much at once. Not dividing things into too many tiny pieces. But most of all I frequently encountered various bugs in the code, or just unexpected behavior of cocos2d which forced me to spend more time debugging and sometimes backtracking changes than I was prepared for.

Después de una semana de trabajo duro y larga, emparejada con el agotamiento físico y una alergia tardía y de verano se revienta, mi concentración no permitió que yo trabajara en la capacidad del 100 %. Al final realmente pude pero tomó más largo que yo había planeado, soy más de un día tarde para presentar este capítulo. El próximo será más fácil aunque, y tenga que ser ya que me preparo para un viaje corto cerca del final de la próxima semana. Seguramente penso con mucha ilusión en unos días de pareja lejos ahora. :) The next one will be easier though, and it has to be as I’m preparing for a short trip near the end of next week. I certainly am looking forward to a couple days off now. :)

Prefiera Composición sobre Herencia

El 11 de junio de 2010, en Programación, que Habla De Experiencia, por Steffen Itterheim by Steffen Itterheim

Cuando la pregunta subió si a la subclase CCSprite o usan alguna clase modela para construir su jerarquía de entidad animosa en el foro cocos2d, subrayé que habría que tratar de no usar la herencia y guardar la jerarquía de herencia a como pocos niveles como sea posible. He trabajado con codebases con cientos de miles de líneas del código, y cientos de tipos diferentes de actores en el mundo. Aún la jerarquía de herencia era 2 clases (paternales) súper para casi todos los objetos, sólo muy pocos objetos animosos tenían 3 o 4 clases súper. ¿Cómo puede usted hacer juegos complejos este camino? Yet the inheritance hierarchy was 2 super (parent) classes for almost all objects, only very few game objects had 3 or 4 super classes. How can you make complex games this way?

La respuesta está en la composición, a menudo referida Componentes como Animosos por motores como TorqueX y el Motor de PushButton (un motor de juego de Destello de los reveladores de Torsión originales). Este vídeo de PushButton conduce el revelador Ben Garney lo explica muy bien y también ilustra el problema con el uso excesivo de herencia en motores animosos. Algo del cual la mayor parte de reveladores nuevos a la programación orientada al objeto y/o animosa realmente tienden de hecho a abusar – culpo esto de libros mal escritos y otras fuentes OOP introductorias que enfatizan la herencia sin hablar de sus desventajas. Something that most developers new to object-oriented and/or game programming do in fact tend to over-use – i blame that on poorly written books and other introductory OOP sources which emphasize inheritance without discussing its disadvantages.

Usted puede leer más sobre el sistema de Componentes de PushButton en su documentación. Como ellos pusieron en práctica Componentes en TorqueX y lo que las diferencias son a Componentes Animosos XNA adelante realza el entendimiento del concepto.

Ya que la lectura adicional y los argumentos leen el artículo Wikipedia sobre la ingeniería de software basada componente. ¡De hecho, la lengua Objetiva-C fue inventada para ser capaz de crear componentes de software reutilizables!

La conversación de 2002 GDC de Scott Bilas sobre Un Sistema de Objeto Animoso conducido por los Datos (PDF) como usado por el Sitio de Calabozo contiene más agujas en por qué la herencia falla para reveladores animosos y lo que las ventajas (sino también algunas advertencias) son con motores animosos basados en el componente. La conversación puede ser vieja pero todavía es tan válido hoy como esto estuvo de vuelta entonces. De hecho, en 2002 comencé a trabajar en SpellForce que ya hizo incorporar un sistema componente en su corazón, llamado Aspectos, Capacidades y Ortografía. Esto permitió que nosotros entráramos en todos los datos animosos en la base de datos y los programadores sólo tenían que escribir el código genérico que trató con los datos, así como poner ciertos límites y verificaciones de validez (eg. usted no podía usar una ortografía perjudicial en usted, pero si usted quisiera a usted podría apuntar a enemigos con su curar la ortografía, o tener edificios de brote de arqueros … errm). In fact, in 2002 i started working on SpellForce which already had a component system built into its core, called Aspects, Abilities and Spells. It allowed us to enter all the game data in the database and programmers only needed to write the generic code that dealt with the data, as well as setting certain limits and validity checks (eg. you couldn’t use a damaging spell on yourself but if you wanted to you could target enemies with your heal spell, or have archers shoot buildings … errm).

Durante 2009 GDC una presentación similar fue sostenida por Marcin Chady del Entretenimiento Radical. La conversación fue llamada Teoría y Práctica de la Arquitectura de Componente de Objeto Animosa (PPT).

Mick West escribió un artículo Refactoring Game Entities with Components que describe los desafíos y ventajas de cambiar a Tony Hawk codebase de un modelo de herencia a un sistema componente animoso.

Algo más avanzado leído en el uso componente es un papel de colaboración llamado el Sistema de Componente de Objeto Animoso Dinámico para Caracteres de Comportamiento Mudables que habla de componentes en el contexto de máquinas estatales finitas y comportamientos NPC con un sistema de activación basado en la regla.

El blog de Arquitecto Animoso lo llama una Anatomía de Desesperación y resume muy bien lo que las estafas del diseño de clase basado en la herencia es y como la composición los soluciona.