Cair morto: OpenGL ES v1.x

No dia 15 de julho de 2011, em cocos2d, Negócio Móvel, Tecnologia, por Steffen Itterheim by Steffen Itterheim

Atualmente Cocos2D está sendo revisado para um lançamento de v2.0. Ele só apoiará OpenGL ES 2.x e assim os jogos feitos com Cocos2D v2.x não correrão em 1os & 2os dispositivos de geração (I-Phone, I-Phone 3G, iPod Toque 1 & 2).

Os dois fios de desenvolvimento no fórum Cocos2D aqui e aqui são cheios de usuários que exprimem a sua decepção (entre outras emoções/crítica) para não apoiar um núcleo de interpretação que apoia tanto GL ES 1.x como 2.x. Embora se dissesse que se você ainda tiver de apoiar todos os dispositivos, você simplesmente pode continuar usando o Cocos2D v1.x ramo.

Dirigi alguns números e vim à seguinte conclusão: se o seu jogo só apoiar OpenGL ES 2.x e sair em 2012 Q1, você perderá menos de 10 % de clientes!

Aqui está porque penso que OpenGL ES v1.x está atualmente no processo de cair morto, e perto do golpe na terra dentro da chegada ~6 meses.

Estatística de Vendas de I-Phone Q1 2011

Wikipedia tem uma lista bonita da estatística de vendas de I-Phone (totais) como eles foram informados pela Maçã cada quarto. Estas estatísticas variam desde 2007 Q3 até 2011 Q1. Infelizmente, vendas pela Maçã não são informados pelo dispositivo, portanto algumas vendas trimestrais são combinadas vendas do I-Phone 3G + I-Phone 3GS respectivamente I-Phone 3GS + I-Phone 4. Unfortunately, sales by Apple are not reported by device, so some quarterly sales are combined sales of iPhone 3G + iPhone 3GS respectively iPhone 3GS + iPhone 4.

Tentei extrapolar vendas de dispositivo individuais fazendo a suposição que dentro de algum tempo os períodos onde dois dispositivos de I-Phone diferentes eram vendidos, o mais novo provavelmente venderiam mais. Desde que estamos falando sobre o Apple I escolhem uma divisão de 70/30, significando que supus que 70 % das vendas fossem para o mais novo dispositivo. Isto parece sobre diretamente desde que os mais novos dispositivos sempre vendiam melhor do que a geração prévia, mas também segundo um pouco de estatística de revelador. This seems about right since newer devices have always sold better than the previous generation, but also according to some developer statistics.

Por exemplo os reveladores de Impacto que informam um iOS 4 tarifa de adoção de 90 % em janeiro de 2011 através de todos os dispositivos iOS (os 1os dispositivos de geração não podem instalar iOS 4). Ou o Surgeworks iOS 4 relatório de Adoção que contém a estatística de uso de 1os usuários de dispositivo de geração de só 2.5 % de um app, e o I-Phone de 5 % 3G usuários de outro app.

O lado abandonado dos seguintes diagramas de torta mostra o número total de dispositivos de I-Phone vendidos àquela data, com períodos comerciais de dois dispositivos combinados. Os diagramas de torta no direito mostram a estatística comercial extrapolada de gerações de dispositivo de I-Phone individuais, e que OpenGL ES versão eles apoiam.

Carregue da folha de Excel costumei criar estes diagramas:

Note como em 2010 Q1 aproximadamente dois terço de todos os dispositivos de I-Phone apoiou só OpenGL ES 1.x, mas dentro de um ano o quadro virou somente outro caminho. Em 2011 Q1 dois terços de dispositivos de I-Phone vendidos foram capazes de dirigir OpenGL ES 2.x código!

Isto tem muito para fazer com dois fatores: o I-Phone 4 vendido como louco, ao passo que o OpenGL último ES 1.1 I-Phone que é vendido (I-Phone 3G) foi descontinuado em junho de 2010. Significando desde que a Maçã de 2010 de Q3 não vende mais OpenGL ES 1.1 dispositivos de I-Phone. E o OpenGL ES 1.1 Toques de iPod deixou de vender em 2010 Q4 também. Meaning since Q3 2010 Apple does no longer sell OpenGL ES 1.1 iPhone devices. And OpenGL ES 1.1 iPod Touches stopped selling in Q4 2010 as well.

Toda a Estatística de Vendas de Dispositivo iOS Q2 2011

Segundo Não reforçado com arame, a Maçã informou para ter vendido 200 milhões de Dispositivos iOS durante o iOS 5 anúncio. 25 milhões daqueles foram iPads. Estes estão à altura da maior parte de vendas de data stats, que assumo para ser o Q2 2011 estatísticas. These are the most up to date sales stats, which I assume to be the Q2 2011 statistics.

Baseado em números de Wikipedia que afirma 83 dispositivos de I-Phone Mio. vendidos contra mais de 60 Mio. iPod dispositivos de Toque vendidos, o resto 175 Mio. devem ser 42 % iPod Toque (74 Mio) e I-Phone de 58 % (102 Mio).

A percentagem de OpenGL ES 2.x os dispositivos de I-Phone capazes aos que só apoiam OpenGL ES 1.1 foram 31 % em 2010 Q1 e pularam para 64 % em 2011 Q1. Assumindo os 1.1 a 2.x a proporção é o mesmo do Toque de iPod, que nos dá 137 Mio iOS dispositivos (I-Phone, iPod Toque, iPad) com OpenGL ES 2.x capacidade contra 63 dispositivos Mio (1o & 2o I-Phone de geração / iPod Toque) que não apoia 2.x.

Este diagrama de torta inclui todos os Dispositivos iOS e que OpenGL ES versão eles apoiam:

Isto significa que 70 % de todos os dispositivos iOS vendidos a data apoiam OpenGL ES 2.x. Isto deixa-nos com só 30 % de dispositivos iOS não capazes de dirigir OpenGL ES 2.x código.

Não quero perder 30 % dos meus clientes!

Você não vai!

Tenha em mente que estas estatísticas são só sobre dispositivos vendidos. Eles não refletem o que aconteceu a estes dispositivos desde então, ou como eles estão sendo usados hoje.

Também posso afirmar que os mais velhos dispositivos estão desaparecendo rápido do mercado. Embora 30 % dos dispositivos vendessem o suporte só OpenGL ES 1.1, a sua base de cliente potencial será significativamente menos do que o número de dispositivos vendidos. Isto é por várias razões: This is for a variety of reasons:

  • o dispositivo foi perdido ou foi roubado
  • dispositivo quebrado além de uso/reparo
  • dispositivo simplesmente mais em uso
  • o dispositivo possuído por uma pessoa que improvavelmente comprará novo apps

Em particular o item último deve considerar-se: o usuário de dispositivo. Novamente, o usuário é o seu cliente potencial, não o dispositivo. E em geral todos destes itens com maior probabilidade acontecerão o mais velho que o dispositivo é. Again, the user is your potential customer, not the device. And in general all of these items are more likely to happen the older the device is.

Um commenter em um dos dois GL ES 2.0 fios no fórum Cocos2D informou como os usuários felizes deveram ver um jogo correr lisamente nos seus 1os dispositivos de geração. Para mim que não sou prova que o suporte de mais velhos dispositivos é benéfico. Ao contrário, penso que claramente nos mostra que os velhos usuários de dispositivo de geração são muito mais seletivos sobre as suas compras, já estão abandonando o seu amor pelos seus dispositivos, e podem estar considerando um upgrade porque eles podem ter deixado de gostar dos seus dispositivos. Isto contribui o "menos provavelmente para comprar novo apps” fator. To the contrary, I think it clearly shows us that old generation device users are much more selective about their purchases, are already giving up their love for their devices, and may be considering an upgrade because they may have stopped enjoying their devices. This contributes to the “less likely to buy new apps” factor.

Você também pode supor que os usuários de mais velhos dispositivos tenham menos rendimento consumível, ou sejam satisfeitos com o dispositivo como é. Se um usuário estiver de fato feliz com um velho dispositivo iOS, é provável que a pessoa prefira usar apps e jogue poucos (er) jogos ou somente continue usando o apps & jogos já possuídos.

O número de clientes potenciais que você perderia – se você lançasse um OpenGL ES 2.0 jogo agora mesmo – é talvez aproximadamente 10 % a 20 % no máximo. Muito menos se o seu jogo é complexo e visualmente rico, e sofreria um pouco de realização ou degradação visual em mais velhos dispositivos de qualquer maneira.

Que tal o perto do futuro? (Q1 2012)

Considerando que 6 meses de agora, em 2012 Q1, teremos visto o lançamento de novos dispositivos de I-Phone (I-Phone 5, possivelmente iPod 5) e assim outro boom em vendas, é um melhor acordo de começar a fazer alguns efeitos visuais frescos com shaders que parecem grandes no I-Phone 4 e 5 em vez de tentar apoiar ainda 1os e 2os dispositivos de geração.

Especialmente se você tem de instalar em alguns (ou muito de) esforço de apoiar os mais velhos dispositivos, por exemplo se você tiver de otimizar a realização, reduzir o conjunto de características (eg nenhum suporte de Centro de Jogo ou limitado) ou (deus proíbem) você tem de assegurar a compatibilidade com iOS 3.0.1 ou mais baixo (CADisplayLink indisponível!). Aquele tempo e o esforço são melhor passados na criação de um melhor OpenGL ES 2.x jogo! That time and effort are better spent on making a better OpenGL ES 2.x game!

Obviamente a decisão também depende de como visualmente rico o seu jogo está indo ser e se você pode esperar bater na realização e outras questões de mais velhos dispositivos de qualquer maneira.

Sumário

Totalmente espero a ação de mercado de OpenGL ES 1.1 dispositivos vendidos para cair até aproximadamente 20 % antes de 2012 Q1. Isto põe o número de clientes potenciais (para reveladores de jogo) ainda usando aqueles dispositivos e comprando jogos certamente a muito menos de 10 %. Então considere que o I-Phone 5 já pode até prestar contas de até 5 % (~10 Mio) de todos os dispositivos iOS vendidos antes de 2012 Q1. Then consider that the iPhone 5 may even already account for up to 5% (~10 Mio) of all iOS devices sold by Q1 2012.

Até ao fim de 2012 a base de cliente potencial (para reveladores de jogo) ainda a utilização de 1os e 2os dispositivos de geração terá ficado inteiramente insignificante.

Isto significa, se você começar a desenvolver um OpenGL ES 2.x jogo dentro de 3 próximos meses, e o seu jogo toma 3 + meses para concluir, você perderá muito poucos clientes apoiando só 3a geração e mais novos dispositivos. E você pode ser de fato capaz de ganhar mais clientes apoiando inteligentemente os novos dispositivos!

Penso que é sábio começar a usar Cocos2D v2.0 logo que esteja pronto para a produção, que pode estar durante aproximadamente 3-6 meses segundo os comentários e o progresso atual.

Jogo em, Cocos2D 2.x!

Kobold2D: Padrão de Projeto de Cocos3D

No dia 25 de junho de 2011, em cocos2d, cocos3d, Kobold2D, por Steffen Itterheim by Steffen Itterheim

Hoje concluí o primeiro esboço do capítulo Kobold2D que estará na segunda edição de Aprender livro de Cocos2D. Naquele capítulo também lhe estou dando uma introdução para cocos3d, o funcionário 3o acrescenta - na biblioteca de cocos2d. Transportei cocos3d's em diagonal Xcode padrão de projeto a Kobold2D e condimentado ele um pouco com alguns nós cocos2d nas costas - e primeiro plano: I ported cocos3d’s Xcode project template to Kobold2D and spiced it up a little with some cocos2d nodes in the back- and foreground:

Note o “aviso” de conexão de rede de entrada. Isto é causado pela biblioteca iSimulate que é distribuída com Kobold2D e ativada à revelia para o Simulador constrói. Você ainda tem de comprar o iSimulate App para beneficiar-se dele entretanto. Se você não fizer você também pode decidir ignorar o diálogo ou simplesmente inutilizar iSimulate comentando fora uma linha no arquivo BuildSettings-iOS.xcconfig do projeto. You still need to buy the iSimulate App to benefit from it though. If you don’t you can also choose to ignore the dialog or simply disable iSimulate by commenting out a line in the project’s BuildSettings-iOS.xcconfig file.

Também tive grande divertimento com a opção de realidade aumentada que o cocos3d CCNodeController classe fornece. E a fundação dele é uma linha do código. Aqui está a “câmera como” demonstração de fundo viva na ação: Here’s the “camera as live background” demo in action:

Desde que um quadro realmente não lhe faz justiça, aqui está um vídeo:

Admitidamente ele pode correr um pouco mais rápido no meu I-Phone 3G. É bastante taxado e médias aproximadamente 20 fps com a visão de contexto de câmera e interpretação de um 3o modelo. O meu Toque de iPod 4 médias em volta de 40 fps e sente-se muito mais liso. My iPod Touch 4 averages at around 40 fps and it feels a lot smoother.

Kobold2D Todo Lista

Um dos itens mais grandes na minha lista de todo de Kobold2D deve projetar o site web e livrar-se da “chegada logo” a página. Isto inclui fundar o wiki e enchê-lo com o conteúdo, documentação em sua maioria. E, pois, pagando US$ 150 cada mês porque não vejo nenhuma alternativa para a utilização de Confluência. Quero gostar de influir na documentação, e quero que você goste de pesquisar e a leia. And, well, paying $150 each month because I don’t see any alternative to using Confluence. I want to enjoy working on documentation, and I want you to enjoy browsing and reading it.

Também quero criar mais projetos de padrão. Atualmente, como você pode ver no primeiro screenshot, há Olá Kobold2D (iOS & Mac), Olá Cocos3D (iOS) e Olá Cocos2D-X (iOS). Quero acrescentar mais dois padrões, um para a Tâmia com SpaceManager (iOS & Mac) e um para Box2D (iOS & Mac). Também quero acrescentar os projetos do meu livro como padrões de projeto, a saber Baixa de Rabiscos, a Caça eles jogo, o Ortogonal e os projetos de Tilemap Isométricos, e o Cocos2D com o projeto de UIKit (todo o iOS). I want to add two more templates, one for Chipmunk with SpaceManager (iOS & Mac) and one for Box2D (iOS & Mac). I also want to add the projects from my book as project templates, namely Doodle Drop, the Shoot ‘em Up game, the Orthogonal and the Isometric Tilemap projects, and the Cocos2D With UIKit project (all iOS).

Embora Kobold2D não tenha Xcode 4 Padrões de Projeto ainda quero dar-lhe um caminho rápido e fácil partida um novo projeto baseado em um dos projetos de padrão. Note a distinção entre “padrão de projeto” (aqueles no Novo diálogo de Projeto de Xcode) e “projeto de padrão” (um habitual, projeto já existente). Comecei a escrever um instrumento que permite você para criar uma cópia de um padrão Kobold2D existente projeta-o e renomeia-o, para que o processo tecnológico seja tão conveniente como realização dele dentro de Xcode. Ele trabalha para o padrão específico com o qual o testei, mas ainda tenho de projetar a interface de usuário e fazer o código à prova de falhas. I started writing a tool that allows you to create a copy of an existing Kobold2D template project and rename it, so that the workflow is just as convenient as doing it within Xcode. It works for the specific template I tested it with, but I still have to design the user interface and make the code fail-safe.

Em caso de que você se admira porque Kobold2D não terá Padrões de Projeto de Xcode: eles não são quase tão potentes como eles teriam de ser. E eles são uma dor na parte de trás para criar e manter sem um pouco de suporte de instrumento. Mas o pior de todos, você não tem nenhum modo de incluir arquivos em um Xcode 4 padrão de projeto que não deve ser acrescentado ao Navegador de Projeto. Como, por exemplo.xcodeproj arquivos. And they’re a pain in the rear to create and maintain without some tool support. But worst of all, you have no way of including files in an Xcode 4 project template that must not be added to the Project Navigator. Like, for example, .xcodeproj files.

Kobold2D Encontra Cocos2D-X

No dia 17 de junho de 2011, em cocos2d, Kobold2D, por Steffen Itterheim by Steffen Itterheim

Kobold2D está bem e vivo. De fato tanto para que eu pensasse: “Eh, é louco, mas talvez não … lhe darei um tiro e verei a que distância venho. “Hey, it’s crazy, but maybe not … I’ll give it a shot and see how far I get.

O pensamento deveu tentar e acrescentar o motor cocos2d-x (cocos2d em C ++) em conjunto com o projeto de exemplo Olá Mundial à área de trabalho Kobold2D. O resultado: precisou-se de aproximadamente 90 minutos, a maior parte daquela compreensão do correto constrói colocações e caminhos de pesquisa de cabeçada. E ele somente trabalhou. it took about 90 minutes, most of that figuring out the correct build settings and header search paths. And it just worked.

Surpresa! :D

Agora mesmo isto é somente a versão iOS. Um cocos2d-x Mac projeto será acrescentado logo que a plataforma Mac seja oficialmente apoiada por cocos2d-x (ou ele já e faltei a isto?). Então os reveladores teriam a escolha entre a utilização Objetivo-C ou C ++ como a língua primária para desenvolver o seu iOS & Mac OS X jogos. ). Then developers would have the choice between using either Objective-C or C++ as the primary language for developing their iOS & Mac OS X games.

Ele também me fez pensar: “Eh, há esta outra fonte aberta o 2o motor de jogohmmm.:) :)

Calendário de Linkvent, Dia 18: Comparação de Realização de iDevice

No dia 18 de dezembro de 2010, em Cocos2D Linkvent Calendário, por Steffen Itterheim by Steffen Itterheim

Este é para o “techies” entre você que gostaria de saber sobre óculos de realização de baixo nível dos dispositivos iOS. Talvez você ouviu de Mike Ash antes? Ele é um programador Mac que escreve sobre a sua profissão segundo uma base semanal e o desenvolvimento de Mike o blog vale a pena bem pesquisar para o material altamente interessante. Para trás em março de 2008 ele publicou uma da primeira comparação de realização de I-Phone de operações comuns. He’s a Mac programmer who writes about his profession on a weekly basis and Mike’s development blog is well worth browsing for highly interesting material. Back in March 2008 he published one of the first iPhone performance comparison for common operations.

Stuart Carnie então tomou esta comparação de realização e atualizou-a com resultados do I-Phone 4 e iPad, e publicou-os no seu post do blog de Microteste de desempenho de um sistema junto com o texto fonte. Se você for interessado para aprender quanto tempo ele toma para executar uma divisão de ponto flutuante ou 1 MB memcopy através de vários dispositivos iOS, estes são os testes que você procurava.