Para trás do devs

No dia 5 de outubro de 2010, em Anúncios, por Steffen Itterheim by Steffen Itterheim

Estou de volta de Macoun, e foi a reunião bonita todos vocês! Bem, de fato desde que aquela conferência foi somente um passeio de 90 minutos longe, portanto realmente não fui ido, exceto mentalmente. Passei muito tempo na semana passada para preparar a minha apresentação (em alemão), e luta com um frio. O sujeito foi um sistema de componente de jogo que escrevi em cima de cocos2d, encapsular a maior parte dos cocos2d CCNode material e permissão de mim para concentrar-me em escrever componentes gameplay reutilizáveis. O sistema trabalha mas não é produção testada. Em todo o caso é provado muito prometedor dos meus testes iniciais e abre algumas oportunidades interessantes, por exemplo a reutilização de componentes é um enorme timesaver, e você pode livrar-se totalmente de qualquer hierarquia de classe e permanecer flexível durante o desenvolvimento. Devido a escrever o livro e outras coisas eu não tinha tido o tempo para desenvolvê-lo tanto como eu quis a. O lançarei conseqüentemente mas por enquanto, tenho um 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.

Para um, estou atrasado com o capítulo de Centro de Jogo devido às preparações de conferência Macoun, um casamento vindoiro e uma renovação de apartamento do soon-to-be-wed como o seu presente de casamento. Portanto tentarei abarrotar a escrita tanto o capítulo de Centro de Jogo como o capítulo final nesta semana, antes de chamar a minha atenção à atualização do projeto de Xcode e Starterkit que desenha a Linha. Não pretendi apoiar não-versões beta de cocos2d, mas dado quanto tempo as betas recentes duram e quantos reveladores de fato usam a última beta (provavelmente devido ao suporte de HD) e que significante as modificações estalam são esta vez, estou indo atualizar o starterkit e projeto de Xcode com o suporte de HD guardando o velho projeto para aqueles que usariam 0.99.4 versão estável de cocos2d. Uma vez que isto é feito, serão os meados do outubro e outro projeto, só em parte acerca de cocos2d, pontapés na velocidade cheia. Nenhum tempo 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.

Falando do Starterkit, o setembro foi por e fiz 10 vendas, sem anunciá-lo ou algo, portanto aqueles números são na parte inferior do “” espectro comercial potencial. Isto é uma soma (mais de US$ 1,500) com que posso viver. Bem, de fato, isto é uma soma de que posso viver. Em uma matéria relacionada, recentemente achei uma página detailling o tráfego stats do site web cocos2d-iphone.org. Se aqueles stats forem corretos, as visitas únicas são mais de dez vezes mais do que aquele do meu sítio. Agora, francamente falando, cada vez adquiro aqueles pequenos fatos e stats daqui e lá por cima dos meses de par passados, e logo somei os números, comparou-os com meu, estimativas razoavelmente pessimistas aplicadas e prudência, admiro-me: por que é que não é cocos2d dirigido como um negócio? 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?

Se você me perguntar, com aqueles tráfego stats e uma tarifa de conversão razoável de 0.1 % por visitante único (meu é mais de 0.2 %), cada um pode pagar facilmente a 3 pessoas para desenvolver cocos2d, testá-lo, escrever a documentação, moderar o fórum, e na soma geral de mais valor de negócios. Que à sua vez cultiva o negócio, acelera o desenvolvimento do motor, instrumentos e subprodutos e fará todo o mundo beneficiar-se disto. Não o adquiro. Como neste ponto, ele está indo ser que, ou um declínio lento a um produto de nicho por cima dos próximos anos de par devido à competição cada vez mais forte de outros motores iOS. Especialmente aqueles que oferecem o suporte de transversal plataforma, desde que isto é o que os contratantes estão perguntando sobre, ou até exigindo, cada vez mais. 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 qualquer maneira, de minha parte, decidi que agora seria um bom tempo para começar a fazer a coisa Indie tempo integral, ainda aceitando trabalho de contrato mas sou capaz de ser muito mais exigente sobre ele. Mando estabelecer uma meta para mim, e não é um simples. Eu sempre gostava o mais para ajudar os meus colegas, fixar os seus problemas, apoiá-los e em geral, ajudá-los a realizar a excelência. Sei, isto parece com algo que você encontraria na matriz de emprego de EA – e de fato, você faz. Os outros ajudam realizam a excelência, durante a minha carreira profissional, isto é o que tenho feito e tenho gostado o mais. Agora encontro-me que faz isto para reveladores cocos2d, gostando dele e ser capaz de apoiar-me no processo. Bem, penso que terei de agradecer-lhe, os meus caros leitores, para isto. :) 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 obrigado atrás, comecei a influir em um mais grande projeto há aproximadamente 3 meses que será útil e útil para muitos reveladores de jogo indie, apesar do motor que você pode estar usando. Daqui ele merece o seu próprio site web e um nome fresco (remendo, que é difícil!). Estou estando à espera realmente de entrar na alta engrenagem com ele depois que submeti os capítulos de livro restantes. Fique sintonizado.). I’m looking forward to really getting into high gear with it after I’ve submitted the remaining book chapters. Stay tuned.

Livro de cocos2d, Capítulo 9: Efeitos de Partícula

No dia 21 de agosto de 2010, em Anúncios, livro, cocos2d, por Steffen Itterheim by Steffen Itterheim

O capítulo 9 – Efeitos de Partícula

Aquelas manchas pequenas muito pequenas que você pode ver no seu touchscreen depois de um espirro.

Não exatamente. Naturalmente quero dizer o sistema de partícula cocos2d e os seus efeitos de partícula construídos que serão o foco deste capítulo. E nenhuma discussão de partículas seria completa sem descrever o processo tecnológico que gira em volta do instrumento de Desenhista de Partícula. And no discussion of particles would be complete without describing the workflow revolving around the Particle Designer tool.

Sumário de trabalho no Capítulo 8 – Fuzila-os

Isto certamente não foi o capítulo mais fácil para mim para escrever. Eu tinha metas muito ambiciosas, talvez demasiado ambiciosas com 27 páginas. Realmente consegui andar furtivamente em quase tudo embora, aqui esteja uma lista parcial: I did manage to sneak in quite a lot though, here’s a partial list:

  • como ao refator código existente para fazê-lo trabalhar melhor com as novas características
  • como juntar balas e inimigos em conjunto de acesso mais fácil e melhor realização
  • não como usar demasiadas subclasses, em vez disso confiando em comutadores de tipo
  • como usar a hierarquia de nó cocos2d’s como um sistema componente simples para escrever componentes de lógica de jogo reutilizáveis
  • como implementar o movimento básico, o tiroteio e um healthbar como componentes
  • como descobrir choques entre balas e inimigos

O não portanto a parte fácil batia o equilíbrio certo. Não indo demasiado técnico. Não realização demasiado ao mesmo tempo. Não dividindo coisas em demasiadas partes muito pequenas. Mas o mais de tudo eu freqüentemente encontrava vários defeitos no código, ou comportamento somente inesperado de cocos2d que me forçou a passar mais tempo depurando e modificações às vezes regressam do que estive 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.

Depois de uma semana de trabalho duro e longo, juntada com o esvaziamento físico e uma alergia última e de Verão estouram, a minha concentração não me permitiu trabalhar na capacidade de 100 %. No fim realmente arranjei-me mas tomou mais longo do que eu tinha planejado, sou mais de um dia tarde para submeter este capítulo. O seguinte será mais fácil embora, e tenha de ser como me estou preparando para uma viagem curta perto do fim da próxima semana. Certamente estou ansiando por uns dias de folga de par agora. :) 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. :)

Prefira Composição por cima de Herança

No dia 11 de junho de 2010, em Programação, que Fala de Experiência, por Steffen Itterheim by Steffen Itterheim

Quando a pergunta subiu se à subclasse CCSprite ou usam alguma classe modelar para construir a sua hierarquia de entidade de jogo no fórum cocos2d, realcei que deve tentar não usar a herança e guardar a hierarquia de herança a como poucos níveis enquanto possível. Trabalhei com codebases com centenas de milhares de linhas do código, e centenas de tipos diferentes de atores no mundo. Ainda a hierarquia de herança foi 2 classes super (de pais) de quase todos os objetos, só muito poucos objetos de jogo tinham 3 ou 4 classes super. Como você pode fazer jogos complexos este caminho? 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?

A resposta está em composição, Componentes de Jogo muitas vezes tratados como por motores como TorqueX e o Motor de Botão elétrico (um motor de jogo de Relâmpago dos reveladores de Torque originais). Este vídeo do Botão elétrico conduz o revelador Ben Garney explica-o muito bem e também ilustra o problema com o uso excessivo de herança em motores de jogo. Algo de que a maior parte de reveladores novos para orientado ao objeto e/ou programação de jogo realmente tendem de fato a usar excessivamente – culpo disto livros pobremente escritos e outras fontes OOP introdutórias que acentuam a herança sem discutir as suas desvantagens. 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.

Você pode ler mais sobre o sistema de Componentes de Botão elétrico na sua documentação. Como eles implementaram Componentes em TorqueX e o que as diferenças são a Componentes de Jogo XNA além disso realça a compreensão do conceito.

Para nova leitura e argumentos lêem o artigo Wikipedia do componente baseou a engenharia de software. Em verdade, a língua Objetiva-C foi inventada para ser capaz de criar componentes de software reutilizáveis!

A conversação de 2002 GDC de Scott Bila sobre Um Sistema de Objeto de Jogo dirigido pelos Dados (PDF) como usado pelo Cerco de Calabouço contém mais ponteiros em porque a herança falha para reveladores de jogo e o que as vantagens (mas também algumas admoestações) são com motores de jogo baseados no componente. A conversação pode ser velha mas é ainda tão válido hoje como ele esteve de volta então. De fato, em 2002 comecei a influir em SpellForce que já mandou incorporar um sistema componente no seu núcleo, chamado Aspectos, Capacidades e Períodos. Ele permitiu-nos entrar em todos os dados de jogo no banco de dados e os programadores só tinham de escrever o código genérico que tratou com os dados, bem como definir certos limites e provas de validade (eg. você não pode usar um período prejudicial em você mas se você lhe quis pode visar inimigos com o seu curar o período, ou ter edifícios de caça de arqueiros … 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 o 2009 GDC uma apresentação semelhante foi mantida por Marcin Chady de Entretenimento Radical. A conversação foi chamada Teoria e Prática da Arquitetura de Componente de Objeto de Jogo (PPT).

Mick West escreveu umas Entidades de Jogo de artigo Refactoring com Componentes que descreve os desafios e benefícios de modificar Tony Hawk codebase de um modelo de herança a um sistema de componente de jogo.

Um tanto mais promovido lido no uso componente é um papel colaborativo chamado Sistema de Componente de Objeto de Jogo Dinâmico de Carateres de Comportamento Mutáveis que fala sobre componentes no contexto de máquinas de Estado finitas e comportamentos NPC com um sistema de ativação baseado na regra.

O Arquiteto de Jogo blog chama-o uma Anatomia do Desespero e sumaria muito bem o que trapacear do desenho de classe baseado na herança é e como a composição os resolve.