Registrei um screencast para dar-lhe uma primeira impressão da versão alfabética atual de Kobold2D. Lhe mostrarei o que é é, o que ele inclui (por enquanto) e como ele melhora o processo de desenvolvimento cocos2d.
Desde o registro do screencast acrescentei o projeto de Baixa de Rabiscos do livro como um projeto de padrão de jogo iOS. Também acrescentei os projetos de física de Tâmia & Box2D do livro e os melhorei para influir tanto em iOS como em Mac OS X.
Atualização
Aqui está um screenshot exposição da lista atual de projetos de padrão (Olá Kobold2D, Olá Cocos3D, Olá Cocos2D-X, Física Box2D, Tâmia de Física, Tâmia de Física SpaceManager, Baixa de Rabiscos) e a gerência de padrão de Baixa de Rabiscos:
O upgrade de cocos2d-I-Phone é uma questão que ocorre de muitos reveladores mas desde que ele acontece tão infreqüentemente durante o lifecycle de um projeto, não há somente nenhuma rotina para seguir. Conseqüentemente você poderia querer fazer um upgrade do cocos2d-I-Phone, portanto a pergunta surge: como vai isto com a menor parte de montante de preocupação? how do you do that with the least amount of trouble?
Como estou atravessando o processo de atualizar mais de 70(!) projetos de Xcode da segunda revisão do meu Aprender o livro de Cocos2D, pensei que devo delinear os passos para fazer um upgrade de um Xcode existente 3 projeto que usa o cocos2d-I-Phone v0.99.x a um Xcode 4 projeto que usa o cocos2d-I-Phone v1.0.x.
Pré-requisitos:
atualização de softwareObviamente, você quer carregar da última versão de cocos2d-I-Phone e abri-la o zíper a qualquer diretório. Somente lembre-se onde você o abriu o zíper porque isto é onde você copiará o novo arquivo de biblioteca de.
Você também quer assegurar-se que você fez um upgrade a Xcode 4 por agora, instalando o iOS 4.3 (ou depois) SDK, se você não tenha feito tão já.
Prudência: Assegure-se que Xcode é fechado durante os primeiros passos.
O passo #1:
elimine conteúdos de pasta libsNa pasta do seu projeto, neste caso DoodleDrop03, selecionam todo o arquivo na pasta libs e eliminam-nos sem clemência:
Você terminará com uma pasta libs vazia. Em outras palavras, não elimine a própria pasta libs ou em caso de que você fez, assegure-se que você recria a pasta libs.
Prudência: A razão porque elimino todas as bibliotecas na pasta libs em vez de sobregravar simplesmente das bibliotecas com novos é simples: você pode esperar que a versão de cocos2d-I-Phone atualizada tenha retirado ou tenha renomeado alguns arquivos. Pela primeira eliminação de todas as bibliotecas você pode estar seguro que nenhum “arquivo de zumbi” existe que não são mais usados mas ainda poderiam ser compilados quando você depois re-acrescenta as bibliotecas. Tais arquivos de zumbi amassariam o processo de montagem e gerariam erros como os símbolos definidos de "Duplicado” e outros tais infortúnios. 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.
O passo #2:
copie o arquivo de bibliotecaA primeira coisa que você notará quando você quer fazer um upgrade do libs (Box2D, Tâmia, cocos2d, CocosDenshion, cocoslive, FontLabel e TouchJSON) consiste em que eles estão no arquivo diferente no projeto de cocos2d-I-Phone que você carregou e abriu o zíper.
Assegure-se que você seleciona o exato o mesmo arquivo que é selecionado no screenshot abaixo:
Esta diferença no leiaute de pasta pode ser um bocado confusa. O que você tem de estar sabendo é que o Box2D, a Tâmia, FontLabel e o arquivo TouchJSON estão na pasta externa no projeto de cocos2d-I-Phone. Além disso, a pasta Box2D que você deve copiar é uma subpasta de Box2d. Observe a diferença na capitalização da carta D. Você quer copiar a pasta com a letra maiúscula D: Box2D. O mesmo vai para a pasta CocosDenshion, você deve selecionar a pasta CocosDenshion dentro da pasta 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.
Prudência: Assegure-se que você não seleciona a pasta de Aparelho testador Box2D – se você fizer e cópia que também, Xcode 4 poderia fechar a criação do projeto, a consumação de poder de CPU de 100 % e o requerimento de uma força deixam de fechá-lo.
Observe: Se você usar só a Tâmia ou a física Box2D, ou nenhum deles, você pode omitir a cópia deste arquivo naturalmente.
Para concluir a cópia opertation, vá à pasta libs e cole o arquivo de biblioteca copiado para que você termine com uma pasta libs que parece exatamente à imagem no Passo #1.
Ponta: Se você preferir o arrasto e a baixa você somente pode arrastar o arquivo selecionado de uma janela Finder ao outro para a pasta libs do seu projeto. Isto pode ser mais fácil fazer mas você deve lembrar-se de segurar a chave de Opção caindo para que você de fato copie o arquivo em vez de movê-los. A operação de cópia é indicada pelo verde + ícone embaixo do cursor como você se arrasta & baixa mantendo a chave de Opção. 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.
O passo #3:
Retire Referências a BibliotecaAbra o seu projeto em Xcode 4 agora.
Selecione todos os grupos abaixo do grupo de Fontes cocos2d e bata na Tecla de retrocesso para eliminar estes grupos (ou o clique direito e selecionar Eliminam). Você será incitado com um diálogo como no screenshot abaixo.
Assegure-se que você seleciona a opção à revelia Retiram Referências Só para evitar eliminar o novo arquivo de biblioteca que você somente copiou:
Uma vez que você retirou os grupos de bibliotecas, o grupo de Fontes cocos2d deve ser completamente vazio. Você somente livrou-se de todas as velhas referências, salvando-se de qualquer erro de compilação potencial causado por referências para arquivos que podem não existir mais.
O passo #4:
Acrescente Arquivo de BibliotecaDepois você quer re-acrescentar o seu arquivo de biblioteca. O clique escolhido e certo o grupo de Fontes cocos2d e escolhido Acrescenta Arquivos a “NameOfYourProject” …:
Pesquise na pasta libs do projeto e selecione todo o arquivo de biblioteca de que você precisa no seu projeto.
Você pode ter notado que o meu projeto não usa nenhum motor de física, portanto decidi não os acrescentar aqui. Se você realmente usa Box2D no seu projeto você quereria selecionar também Box2D naturalmente. De mesmo modo se você usa a Tâmia. Likewise if you use Chipmunk.
Observe: Enquanto não é um problema de acrescentar que ambo o arquivo de motor de física, fazendo assim poderia aumentar o tamanho do seu App.
Agora, aqui está onde você tem de ter cuidado com as opções! Você quer assegurar-se que eles são estabelecidos exatamente como no screenshot abaixo. O mais importantemente, acrescentando arquivos Xcode faltará para acrescentar os arquivos ao objetivo principal do projeto (neste caso DoodleDrop) em vez do objetivo de bibliotecas 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.
Assegure-se que só o objetivo de bibliotecas cocos2d é selecionado para evitar que algum construa erros:
O passo #5:
Construa-o!Você deve tentar agora e construir o projeto. Se você tiver sorte, não haverá nenhum erro e você pode continuar com o seu trabalho.
Mas mais provavelmente, dependendo da complexidade do seu projeto e as modificações feitas ao cocos2d-I-Phone, você deveria fixar algum constrói erros que ocorrem. A maior parte deles serão provavelmente causados por classes que foram renomeadas ou funções que foram deprecadas. Neste caso você terá de descobrir pela Referência API e lançar notas o que as modificações são e como fixá-los. 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.
Fixar o “SDK baseado ausente” mensagem
Uma questão comum que ocorre especificamente a mais velhos projetos é o “SDK baseado ausente” erro. Penso que foi a versão Xcode introduzida com Mac OS X Leopardo de Neve (lançado 28 de agosto de 2010) que conseqüentemente fixou esta questão temida acrescentando que um “o último iOS” opção do SDK Baseado Constrói a Colocação.
Se você vir uma mensagem como isto (especialmente se ele lhe der um aviso compilar ou erro):
![]()
Você deve modificar-se os SDK Baseados Constroem a Colocação do seu projeto de usar a colocação de "Latest iOS":

Observe: Em alguns casos pode ser necessário fechar Xcode 4 e reabri-lo para fazer o “SDK baseado ausente” a mensagem vai-se.
Corretamente Herança Constrói Colocações
Normalmente, todos os objetivos em Xcode herdam as Colocações Construir do projeto à revelia.
Contudo, uma vez que você fez qualquer modificação a algum Construir a Colocação ao nível de objetivo isto Constrói a Colocação não herdará mais as modificações feitas ao mesmo Constroem a Colocação ao nível de projeto. A reação à revelia por muitos reveladores muitas vezes é morder a bala e cheque e re-cheque as Colocações Construir do projeto bem como todos os objetivos, e fazer a mesma modificação tão muitas vezes como você tem objetivos no seu projeto.
Não faça isto, há um caminho melhor e mais fácil!
Você pode ter uma Colocação Construir ao nível de objetivo ao default atrás para herdar a Colocação Construir definida ao nível de projeto. De mesmo modo pode fazer-se que uma Colocação Construir ao nível de projeto herde da colocação à revelia OS. No screenshot abaixo modifiquei propositadamente a Colocação Construir ao nível de objetivo: In the screenshot below I have purposefully changed the Build Setting at the target level:
![]()
Para tê-lo o default atrás à colocação de projeto, que é o Último iOS (iOS 4.3) tudo que você tem de fazer deve selecionar o que Constrói a Colocação e bate na chave Eliminar:
![]()
Ponta: a Comutação do Combinado à visão de Níveis revendo as Colocações Construir faz fácil ver que Constroem Colocações são herdados e que não são. Você também notará que algum Constrói a Colocação que foi modificada ao nível atual e não herda o seu valor mais é impresso em cartas corajosas. 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.
É isso!
Codificação feliz com o seu projeto de cocos2d-I-Phone recentemente atualizado! Este seminário de upgrade também será impresso na segunda revisão de Aprender livro de Cocos2D.
Ponta: Com Kobold2D será mesmo mais fácil fazer um upgrade do seu projeto porque uma cópia simples & a pasta dos arquivos na pasta kobold2d serão suficientes. Se houver alguma vez algum passo adicional para seguir os descreveremos detalhadamente naturalmente. If there are ever any additional steps to follow we’ll describe them in detail of course.
Livro de cocos2d, Capítulo 5: Obtenção mais grande e melhor
O capítulo 5 – Obtenção de mais grande e melhor
A essência deste capítulo deverá discutir o projeto de jogo simples do capítulo anterior. Lancei tudo em uma classe, claramente não o que você quer fazer para mais grandes jogos. Mas vir de da mesma classe ao verdadeiro desenho de código é um grande passo que alguns hesitam em tomar. Farei isto mais fácil e discutirei questões comuns e as suas soluções, tal como que a seperate, que subclassificar de e como você pode ter todos os objetos de seperated se comunicam um com outro e trocam a informação de vários modos. 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.
Um grande tópico será naturalmente como aproveitar-se da hierarquia de cena cocos2d’s e que alçapões ele pode ter movendo-se de um jogo de camada única para aquele que tem múltiplas camadas e cenas até múltiplas.
Quanto ao título de capítulo não estou tão seguro se isto será ele. Talvez ao longo do caminho enquanto estou escrevendo que o modificarei. Boas-vindas de sugestões! Suggestions welcome!
O capítulo será submetido na sexta-feira, 30 de julho.
O que é o seu tomar na boa estrutura de código de cocos2d?
Você lutou alguma vez com conceitos de design cocos2d? Ou a hierarquia de cena cocos2d? Ou como ao leiaute uma cena e dividem o seu jogo em partes lógicas? Diga-me dele. Or how to layout a scene and divide your game into logical parts? Tell me about it.
Sei que as perguntas de teses são um tanto genéricas para perguntar. É sobre as coisas que não se sentem certas mas lá não parecem ser um caminho melhor, mais óbvio. Penso que todos nós sabemos alguns daqueles, se você fizer, estar seguro de dizer-me! Deixe um comentário ou escreva-me um e-mail. I think we all know some of those, if you do, be sure to tell me! Leave a comment or write me an email.
Sumário de trabalho no Capítulo 4 – jogo Primeiro simples
O jogo que decidi fazer é chamado Baixa de Rabiscos e características que deixam aranhas e um acelerômetro controlou o estrangeiro que tenta evitar as aranhas. Ao todo foi dividido em 8 passos concretos. Lotes e muitos comentários de código, também. Lots and lots of code comments, too.
Ele começa recursos bastante simples, acrescentam a Xcode e duendes acrescentam. Adquire mais gameplay-esque quando os controles de jogador dirigidos pelo acelerômetro foram torcidos para fornecer a aceleração e a desaceleração do objeto de jogador. Ao contrário os movimentos de aranhas são dirigidos só por ações. In contrast, the spiders movements are driven only by actions.
Apresento-o a duas características não documentadas de cocos2d, a saber CCArray que é desde então v0.99.4 costumou guardar todas as crianças de um nó. O outro são a classe CGPointExtension que tem todas as funções normalmente fornecidas por um motor de física, contudo não cada jogo deve ligar um motor de física somente porque cada um precisa daquelas funções matemáticas. Por isso CGPointExtension entra prático. That’s why CGPointExtension comes in handy.
Com o método ccpDistance os cheques de choque são feitos. Os choques radiais simples, e no modo de edição os raios de choque são desenhados também.
Entre o CCLabel da conta foi substituído com um CCBitmapFontAtlas, porque ele matou o framerate. Logo mencionei Hiero e como usá-lo em princípio mas por todos os detalhes não houve nenhum quarto. Mas enquanto estive nele criei o Seminário de Hiero. But while I was at it I created the Hiero Tutorial.
No fim do projeto acrescentei que alguns pulem que não é descrito no livro (demasiados detalhes) mas realmente acrescenta à olhada do jogo e sensação. A baixa de aranhas, suspenda em lá, logo cobre antes de cair, todas ações de utilização feitas. Também acrescentei o fio que eles estão suspendendo de usar ccDrawLine. E logo há um jogo por cima da etiqueta que mostra até mais uso de ação. 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.
Um dos princípios que segui é ficar afastado de coordenadas fixas tanto como possível. Portanto o projeto, uma vez terminado, realmente correu somente perfeito em um iPad. Embora a experiência seja um diferente, há mais caída de aranhas e eles caem mais rápido mas há também o espaço mais seguro para manobrar a. 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 e, a arte de jogo é tudo minha. Sim, sei … mas as aranhas do Homem realmente têm somente seis pernas!














