Corona SDK - Seis meses criando Jogos e Apps para iOS e Android.

Talvez você também goste destes posts:

Cerca de seis meses atrás recebi um convite para me associar a um estúdio de produção de jogos e apps para dispositivos móveis. Analisei cuidadosamente o momento que eu estava vivendo e concluí que o meu momento era muito bom para entrar de cabeça nesse tipo de empreitada. Foi assim que eu conheci a Corona SDK.


Corona SDK é um kit de desenvolvimento para sistemas móveis multi-multi-plataforma. Com ele é possível criar jogos e aplicativos para smartphones ou tablets que rodem os sistemas Android do Google ou iOS da Apple.

Logo da Corona SDK
Então, reparou no multi-multi-plataforma (dois multi)? Chamei o SDK desse jeito porque é possível utilizá-lo tanto em  Windows quanto OSx e além disso o mesmo código que gera o game para iOS é capaz de gerar o game para Android com pouca ou nenhuma adaptação.

Com o Corona SDK você não precisa de um Mac para desenvolver e testar seu app/game desenvolvido para iOS. Todo o processo pode ser realizado em um simulador que roda perfeitamente no Windows. Se o seu alvo for só Android você realmente nunca vai precisar de um Mac.  Mas se o seu alvo é iOS você ainda vai precisar de um Mac para compilar e empacotar o resultado final, que deve ser enviado para App Store.

Por que eu escolhi trabalhar com Corona SDK? 

A verdade é que eu nunca escolhi trabalhar com essa ferramenta. Fui escolhido por ela pois estúdio em que eu estava entrando tinha know-how e projetos iniciados nessa ferramenta. Puxa em vez de aprender Objective-C eu aprenderia Lua, uma linguagem tupniquim. Em vez de utilizar o Xcode eu iria utilizar um editor de texto de minha preferência.

No passado eu torceria o nariz. Muita gente, que eu conheço, torceria o nariz. Aliás, até hoje quando eu digo que faço games e apps para iPhone e utilizo Lua e Corona SDK tem gente que torce o nariz!  Entretanto eu não ligo mais para as ferramentas da moda. Me importava com isso no inicio da carreira, porque ter experiência em currículo na ferramenta X ou Y era o fator que determinava se eu conseguiria esse ou aquele emprego. Hoje acredito em e desejo as: ferramentas que apresentem resultados. Sendo assim, com uma breve conversa com o meu sócio e uma passada de olho nos cases e APIs da Ansca Mobile pude pré-avaliar a SDK da Ansca como adequada para o nosso fim.

Corona SDK serve aos seus objetivos?

Hoje utilizamos o Corona para criar jogos casuais, mas também já criamos um aplicativo e o resultado final foi muito bom. A boa notícia é que grande parte das funcionalidades, coisas como integração com Facebook e Twitter, Ad-Mob, biblioteca de simulação de física (physics engine), suporte a tamanho dinâmico de tela, suporte a spritesheets, etc.. já faz parte do API do SDK. A má notícia é que se você precisa de funcionalidades nativas do iOS ou Android que ainda não estejam encapsuladas na API disponibilizada a única coisa que você pode fazer com a licença normal é pedir a Ansca para que ela seja implementada e rezar para que seu pedido entre na lista de prioridades. Mas não encare isso como um ponto extremamente negativo pois acredito que noventa porcentos dos casos o SDK terá tudo que você precisa. Se você estiver na dúvida é só consultar API do Corona para saná-la.

A linguagem Lua

Lua uma linguagem brasileira.
A linguagem Lua é um grande facilitador e incentivo para você começar a utilizar essa SDK imediatamente. Esse é um dos pontos em que eu sinto orgulho em comentar. Lua é uma linguagem que nasceu no seio da PUC no Brasil. Vou falar mais sobre isso em outro post. O importante é que se você já programou em alguma outra linguagem fracamente tipada na sua vida, poderá começar a  programar imediatamente bastando ter uma referência do lado para consulta. Em uma semana ou quase é possível dominar a sintaxe e biblioteca padrão da linguagem.

Lua é uma linguagem simples, flexível e poderosa. É classificada como uma linguagem funcional, mas é possível simular OO (orientação a objetos) se você assim preferir. Pessoalmente quando eu programo em Lua sinto todo o poder do Javascript numa linguagem semelhante as diversas variações de Basic.

Flash para Corona, verdade ou mito?

Flash x Corona
Se você fizer uma pesquisa no Google com as seguintes palavras: "flash corona" vai encontrar muitos resultados dizendo como é fácil portar um jogo escrito em Flash para Corona e até lhe orientando como realizar essa migração. A Ansca Mobile destaca a semelhança das APIs como forma de atrair desenvolvedores flash/actionscript para sua plataforma, inclusive nessa página http://goo.gl/IQdAL ela coloca api/código flash/actionscript e corona/lua lado a lado para comparação.

Sem querer desmerecer o Corona a minha opinião como desenvolvedor Flash é que apesar das semelhanças, o Flash por possuir feedback visual durante o desenvolvimento no palco é muito mais prático que o Corona. O ponto é: o Corona até possui uma API chamada movieclip que corresponderia ao movieclip do flash (só que capado), entretanto enquanto no Flash você constrói seus movieclips manipulando visualmente a linha do tempo e arrastando e posicionando seus objetos no palco, no Corona todo esse trabalho tem que ser realizado via código.

Preços e licenciamento


Você pode baixar, instalar e começar a utilizar a versão de testes do Corona imediatamente sem custo algum. Você realmente só precisará gastar algum quando precisar empacotar seu app para distribuição/venda na App Store e no Google Play.

Se seu objetivo é só uma das lojas você vai precisar desembolsar pagar uma assinatura Indie para a plataforma desejada e desembolsaria hoje $199. Agora, se você pretende distribuir seu aplicativo em na loja da ambas as plataformas você vai precisar fazer uma a assinatura Pró e vai desembolsar $349. Em ambos os casos a assinatura é valida por um ano e te dá direito a outras vantagens que os não assinantes não possuem como por exemplo acesso aos Daily Builds. Confira o gráfico de comparação das funcionalidades que uma assinatura lhe confere.

Os Daily Builds são versões disponibilizadas quase que diariamente contendo correção de bugs e novas funcionalidades em estado beta.

Uma outra opção de assinatura anual quase secreta é a Enterprise e o seu preço só está disponível sob consulta. A principal vantagem dessa versão é que ela possui a capacidade de se integrar APIs nativas do iOS e Android, ou seja, você não precisa esperar que a Ansca cria a interface Lua para determinada API nativa que você queira utilizar pois você mesmo, tendo o conhecimento, pode fazê-lo. Está curioso para saber o preço da assinatura enterprise?

Estávamos precisando das funcionalidades de uma famosa biblioteca livre de visão Computacional chamada OpenCV. Então sócio entrou em contato com a Ansca, através do formulário de contato mesmo, para saber o valor dessa assinatura. Lá vai: custa $2500 por ano e a quantidade mínima são 3 assinaturas. Nesse caso específico consideramos esse valor um grande incentivo para começar a estudar Unity-3D.

Alguns destaques

Além da API simples, da linguagem de programação poderosa e do fato de ser multi-multi-plataforma podemos destacar outros pontos que fazem valer a pena trabalhar com essa SDK.

A documentação está disponível no site da Ansca para consulta online ou descarga em PDF. Ela é bastante completa e ricamente conectado a diversos artigos com dicas e tutoriais que são periodicamente publicados no blog hospedado no mesmo site. O site também conta com um fórum, que apesar de disponível só para assinantes, é bastante ativo. No fórum inclusive a galera colabora compartilhando código e exemplos.

Outro destaque são os exemplos distribuídos juntamente com a SDK, pois com eles é possível ver e aprender como determinadas tarefas podem ser realizadas. Além disso no site da Ansca estão disponíveis para descarga modelos completos de jogos que você pode utilizar para aprender ou até mesmo como base para não ter que começar seu jogo do zero.

Além disso, os assinantes da SDK possuem o benefício de divulgar seus games no próprio site da Ansca na seção de ShowCase. Além disso os assinantes contam com a assistência de uma grande gama de parceiros da Ansca dispostos a ajudar alavancar as vendas do seu app/game.


Pequenos incomodos


[Atualização de 28/092012]

Atualmente o que mais me incomoda nessa SDK é o fato de só compilar para os processadores ARMv7 em diante. Quando escrevi esse post originalmente isso já era um fato conhecido, entretanto não me incomodava tanto porque o nosso alvo imediato era IOS. Agora passado alguns meses que lançamos o Greedy Monster para IOS resolvemos portar para Android. Durante o desenvolvimento do jogo, em conversas com colegas que usam Android, fui bastante pressionado para lançar uma versão para Android. Prometi para eles que viria e agora que a versão para Andorid é uma realidade  rolou essa frustração em relação a incapacidade da SDK lidar com ARMv6 pois muitas dessas pessoas que me cobravam possuem e aparelhos Android com esse processador então e simplesmente eu continua em falta em relação as expectativas deles. Como está ficando grande essa  atualização confira o resto de desabafo aqui.

[Fim da atualização de 28/092012]

Alguns pontos podem incomodar o desenvolvedor acostumado a ambientes de desenvolvimento mais robustos e estabelecidos. Em geral podemos resumir que o todo que é oferecido no pacote desenvolvido pela Ansca é muito simples. O pacote Corna SDK baixado no site da Ansca contém simulador, compilador, debugger, códigos de exemplos e a versão trial de uma ferramenta fraca chamada Corona Project Manager que serve para organizar seus projetos Corona.

O Corona Project Manager é trial e você poderá experimentá-lo por 30 dias, depois disso ele para de funcionar e se você quiser continuar utilizando-o terá que adquirí-lo e isso iria te custar hoje $49. Conselho: evite adquirí-lo até ler o próximo post onde apresentaremos outras duas alternativas para você testar e avaliar o custo benefício.

O debugger nativo do Corona não é visual, ou seja toda a rotina de adicionar breakpoints, inspecionar variáveis, observar a pilha de chamadas, etc... deve ser realizada através de linha de comando. Se você é acostumado em outra ferramenta em que só exista esse modo de debug não vai se incomodar. Mas se você, como eu, está (mal?) acostumado em ambientes de desenvolvimento integrado que possuem a funcionalidade de debug visual, vai achar essa rotina de debug nativa do Corona muito pouco produtiva e provavelmente somente irá utilizá-la em último caso ficando na maior parte do tempo no debug com prints no STDOUT. Felizmente existem IDEs de terceiros que possuem essa funcionalidade para ser integrada ao Corona.

Você está livre para escolher o editor de código de sua preferência e começar a criar e editar seus arquivos Lua. É fácil encontrar por aí editores grátis que reconhecem a sintaxe de Lua e a sua biblioteca padrão. Eles irão colorir as palavras chave da linguagem, oferecer code collapse  e completamento  (é estranho em português :-\ ) automático de código para a biblioteca padrão. Eu uso o BBEdit que é pago mas a versão grátis, desse mesmo editor, seu irmão mais novo, chamado TextWrangler, possui as mesmas funcionalidades. Apesar disso como esses editores só conhecem a sintaxe e a biblioteca padrão de Lua eles não oferecem completamento automático para as APIs do Corona. Mais uma vez: existem IDEs de terceiros que possuem essa funcionalidade para ser integrada ao Corona.


Conclusão

Corona SDK é uma fantástica ferramenta de desenvolvimento para jogos casuais e aplicações mobile. Entre os prós e os contras acredito que os prós pesem mais na balança pois a maior parte das deficiências aqui apontados podem ser sanadas combinando-o com ferramentas de terceiros. Mas isso é o tema do nosso próximo post:

Uma IDE e duas tentativas para completar o seu ambiente Corona SDK. (em construção)

Artigos pesquisados durante a confecção deste post.



Comentários

  1. Grande post! Obrigado pelas informações. Estava em busca de algum testemunho sensato a respeito do Corona e acabo de encontrá-lo. Um abraço.

    ResponderExcluir
    Respostas
    1. Obrigado! Estamos aqui pra isso! Pena que é Anônimo esse foi o primeiro comentário do blog e eu estou aqui a estourar champagne!

      Excluir
  2. Estava procurando mais informações sobre solucoes alternativas, e achei muito bom o Artigo!
    Parabéns!

    ResponderExcluir
    Respostas
    1. Obrigado Vinícius! Fico feliz por poder compartilhar!

      Excluir
  3. Olá Glauco,

    muito bom esse seu post, mas eu estou com uma dúvida e queria saber se você pode me ajudar. A licença do Corona serve para todos os programadores da minha empresa ou eu tenho que comprar uma licença para cada programador?

    ResponderExcluir
  4. Olá então na verdade no Corona o sistema é de inscrição, que é válida por um ano e é o que vai te permitir compilar seu aplicativo para a app-store. A inscrição também te dará acesso aos daily builds que são atualizações com melhorias e correções de bugs lançadas quase que diariamente. Deste modo em um cenário mais econômico seria ter uma única inscrição para ter acesso a esses recursos avançados. Os demais programadores poderiam trabalhar utilizando a versão trial e na hora de compilar para as lojas entraria em cena a sua versão subscriber. O único contratempo nessa manobra seria que só um desenvolvedor poderia trabalhar com o último daily-build os outros teriam que trabalhar com o último public release mas eu não vejo isso como um grande problema se você tiver trabalhando paralelamente em poucos projetos e conforme a demanda aumentar você pode realizar mais uma ou duas inscrições.

    ResponderExcluir
  5. Boa tarde Glauco, o Corona gera o .apk para mim distribuir na loja ou forma que eu quizer(não sendo obrigado usar a playstore - google), ou sou obrigado a usar a play store ?
    Obrigado.

    ResponderExcluir
    Respostas
    1. Na versão mais recente, em termos de android, temos opção para KindleFire, Nook Color e Android. O que lhe permitiria distribuir no Google Play na "Amazon Appstore for Android". Em relação ao Nook COlor eu não sei te dizer como funciona. Mas você sempre vai ter a opção de não distribuir em loja nenhuma e criar um .apk para debug e mandar o arquivo diretamente para quem você quiser e a pessoa faz a instalação pelo próprio Android se estiver com aparelho configurado para permitir instalação de app de fontes desconhecidas. Entendeu +-? É que build pra Android devo estar fazendo o meu primeiro daqui a mais ou menos duas semanas até o momento todo o meu foco foi no iOS. Nosso jogo roda lindo no Android mas a implementação de inApp-purchase tem que ser feita de maneira diferenciada para Android isso aí não tem muito pra onde correr.

      Excluir
  6. Olá, é possível desenvolver e testar no próprio aparelho ao invés de testar somente no simulador?

    Obrigado.

    ResponderExcluir
  7. Muito boa pergunta esse é um ponto que não está totalmente claro no post.
    Sim é possível. O teste no aparelho requer que você construa o pacote (buid) para o tipo de aparelho que você deseja. Infelizmente utilizando Windows não é possível fazer o a construção de pacotes para IOS somente para Android. Isso está esclarecido aqui: http://www.coronalabs.com/blog/2011/01/31/just-to-make-it-clear/. De uma forma geral a experiência do fluxo "build for debug and test on device" é bem mais simples para a plataforma Android pois não requer absolutamente nada além do Corona SDK instalado. O mesmo processo para IOS requer que o desenvolvedor possua o XCode instalado e também um developer profile ativo em sua conta de IOS developer com a Apple. A conta de IOS Developer requer aquela anuidade marota. Uma forma de escapar a anuidade é conhecer alguém generoso que já possua uma conta de developer e pedir para adicioná-lo ao time. Dessa forma você consegue gerar um developer profile para testar no dispositivo sem pagar anuidade. Já deixo claro que eu não sou generoso! Bons games e apps para você Anônimo!

    ResponderExcluir
  8. É possível desenvolver qualquer aplicativo? Tipo um cardápio eletrônico que comunica com um webservice? ou somente jogos e aplicativos simples...

    att

    ResponderExcluir
    Respostas
    1. WebService é basicamente XML + HTTP então sim! É possível! Boa sorte com seu cardápio.

      Excluir
  9. E como essas empresas desenvolvem esses jogos? Que tipo de programas elas usam para por exemplo, modelar os personagens? Seria interessante ter um post que explicasse como elas fazem, como programas que elas usam, seria muito útil para que não tem muita noção.

    vlw

    ResponderExcluir
  10. Boa tarde Glauco, primeiramente parabéns pelo post, que ficou muito bem escrito.

    Gostaria de recomendar o livro digital que eu traduzi para o Português chamado "Criando Aplicações Móveis com Corona" que pode ser adquirido em meu blog: http://luiztools.com/post/Criando-Aplicacoes-Moveis-com-Corona-O-Livro.aspx

    Obrigado!

    ResponderExcluir
  11. Se alguém passar por aqui e quiser saber de uma IDE com Debug Visual pro Corona.
    Recomendo sem medo o Glider, custa uma mixaria e é excelente.
    http://www.mydevelopersgames.com/Glider/

    Usei o trial gostei, comprei e recomendo!

    ResponderExcluir
  12. Ótimo post Glauco, agora fiquei interessado no Lua e no Corona.

    ResponderExcluir
  13. Olha só... procurando informações do Corona e veja o que eu encontro! Um blog escrito pelo Glauco! Mundo pequeno! Tudo bem meu velho, é o Cadu (Running). Estou fazendo Facu de Jogos Digitais e pesquisando algumas ferramentas. Seu post tá muito legal! Parabéns meu velho! Abs!

    ResponderExcluir
  14. investi tempo para aprender a programar com o corona e criei um aplicativo e instalei em alguns celulares, mas a surpresa é que o jogo rodava apenas nos celulares mais novos, entao desisti de trabalhar com o corona. Minha duvida é a seguinte será que é porque eu estava usando a versao de teste do corona?

    ResponderExcluir
    Respostas
    1. Isso é a pura verdade, comentei no post que o fato de rodar apenas em ARMv7 me incomodava. Os androids de entrada geralmente são ARMv6, ou pelo menos eram na época em que eu trabalhei com isso.

      Excluir

Postar um comentário

Obrigado pelo seu comentário!

Postagens mais visitadas deste blog

Curtir publicações automaticamente no Facebook. Por que isso não é uma boa idéia?

BlueStacks - Agora é mais fácil rodar Android no seu PC ou Mac