LuizTools 2.0

Desde 2010 codificando minhas ideias!

Tudo sobre o arquivo build.settings do Corona SDK

Saiba tudo sobre Corona SDK com o único livro em Português sobre este incrível framework, com quase

Saiba tudo sobre Corona SDK com o único livro em Português sobre este incrível framework, com quase 500 páginas. Saiba mais!

Alguns desenvolvedores, especialmente aqueles novos com Corona ou com desenvolvimento de apps em geral, têm problemas com as configurações e parâmetros que são necessários para compilar com sucesso um app para testar e eventualmente, lançar no mercado. Em Corona, estas configurações são ditadas através do arquivo build.settings, mas inspecionar um build.settings complexo pode ser intimidador. Entretanto, se você entende tables Lua e mentalmente separar este arquivo em seções, você irá entender melhor este elemento crucial do projeto.

Overview

Essencialmente, o arquivo build.settings contém informações que determinam quais recursos devem ocorrer em tempo de compilação. Estes são divididos em 5 áreas primárias:

  • Orientation - controla as orientações de tela suportadas;
  • iOS Settings - características especiais do iOS
  • Android Settings - características para Android
  • Plugins - carrega vários plugins que um app pode precisar acessar
  • Excluded Files - Exclui certos arquivos das suas compilações de app.

Isto tudo começa com uma simples table Lua chamada settings:


Desta forma, esta table pode conter vários pares de chave-valor para cada uma das cinco seções, e cada uma destas tables pode ter vários pares chave-valor aninhados, muitos dos quais exploraremos neste tutorial.

Declaração Chave-Valor

Estas seções chave-valor podem ser definidas de uma de três maneiras, ou uma combinação de todas três, dependendo da sua preferência ou, e alguns casos, o nome da chave sendo definida.

1. Propriedades da Table


2. Array Associativo


Note que este método é exigido quando sua chave contém caracteres especiais como um traço. Por exemplo, se você precisa definir uma chave como hokey-pokey, você precisará especificar ela como settings["hokey-pokey"] e não como settings.hokey-pokey que é considerado inválido em Lua. Isto será muito importante quando definirmos os plugins.

3. Estrutura de Tables Aninhadas


Observações Adicionais

Todos os três formatos são perfeitamente válidos, mas o formato padrão mostrado em nossos exemplos e documentação é o formato table aninhada.

Cada uma destas seções chave-valor é opcional. Se você está compilando somente para iOS, você não precisa incluir a table android. Da mesma forme, se estiver compilando para Android, você não precisa incluir a table iphone. Se você não usa quaisquer plugins, você pode omitir a table plugins. E, embora você não precise de uma table orientation, você deve fornecer uma em praticamente todo app para definir as orientações permitidas ao app.

A ordem destas seções não é importante, desde que inclua-as corretamente como pares de chave-valor.

A table Orientation

A seção orientation é a mais fácil das cinco - ela meramente define qual orientação é a padrão para o app, e quais outras orientações são permitidas se o usuário girar o telefone.


Existem duas chaves para esta table: default e supported. O valor default é uma string que determina a orientação na qual o app irá começar. Strings válidas incluem:

  • "portrait"
  • "portraitUpsideDown"
  • "landscapeLeft"
  • "landscapeRight"

O valor supported é uma table indexada (sem chaves) que pode conter quaisquer das quatro opções listadas acima, separada por vírgulas. Note que esta table deve incluir o mesmo valor que você definiu como default, em adição a quaisquer outras orientações que você deseja suportar. No exemplo acima, o app irá carregar em "landscapeRight", mas também permite trocar para a orientação "landscapeLeft", visando fornecer uma melhor experiência aos usuários.

A table iphone

A table iphone contém todas as configurações necessárias para compilar para dispositivos iOS. Note o seguinte:

Esta table deve ser digitada como iphone (tudo em minúscula) mesmo que o dispositivo seja normalmente chamado de "iPhone" - este é um problema comum para novos usuários, então certifique-se de digitar corretamente.

A table iphone cobre todos os dispositivos iOS incluindo iPhone, iPad e iPod Touch, então você só precisa desta seção para compilar para todos eles.

A sub-table plist

A table iphone sempre contém outra table aninhada chamada plist. Esta é uma table cujos valores são copiados dentro do dicionários plist do projeto XCode. Logo, se você precisa incluir itens nessa lista, adicione-os aqui.

As chaves dentro da table plist são as mesmas do XCode, mas os valores são orientados ao Lua. Por exemplo, em XCode existe um par chave-valor chamado UIApplicationExitsOnSuspend que aceita valores booleanos do XCode como YES e NO. Entretanto, Lua usa true ou false, logo, para definir esta preferência para um app Corona, sua table iphone deve incluir isto:


A maioria das tables iphone incluirão mais do que isto, e alguns desenvolvedores comumente copiam esta table de build.settings existentes sem entender seu conteúdo. Considere o seguinte exemplo:


Esta table pode parecer complexa, mas vamos dar uma olhada e explorar os vários elementos:

  • CFBundleIconFile - esta String declara o nome base do seu ícone do app. Este valor pode ser geralmente "Icon.png" (note que é case-sensitive com I maiúsculo).
  • CFBundleIconFiles - esta é uma table indexada (sem chaves) que diz ao iOS quais arquivos de ícone devem ser usados nos vários dispositivos. Para uma experiência de usuário melhor, você deve incluir todas estas opções, e deve criar todos os arquivos de ícones associados nos tamanhos apropriados.
  • UIApplicationExitsOnSuspend - este valor boolean instrui o IOS que o app não deve terminar quando é suspenso. Este valor deve ser false na maioria das vezes.
  • FacebookAppID - para implementar a funcionalidade do Facebook, você precisará incluir este par chave-valor. Seu valor único pode ser obtido no painel de desenvolvedor do Facebook.
  • CFBundleURLTypes - este é um array indexado de chaves-valores que descrevem os esquemas de URL suportados pelo app (consulte a documentação da Apple para maiores detalhes). Por causa desta estrutura, esta table começa com uma sub-table sem chaves adicional. No exemplo acima, relacionamos um esquema de URL para o Facebok.

Outros Elementos

Este tutorial não pode discutir cada elementos que possa existir na table iphone, então consulte a documentação oficial do Corona e da Apple para maiores informações.

A table android

O Android é razoavelmente simples na maioria dos casos - tipicamente é somente uma lista de permissões e características. Note que você deve incluir uma table usesPermission dentro da table Android que é uma lista de permissões que você quer conceder ao app. No exemplo seguinte, permitimos ao app Corona acesso à Internet.


Uma versão um pouco mais complexa pode incluir uma table usesFeatures que diz ao Android Marketplace quais capacidades de hardware o app precisa ou não precisa.


Outros Elementos

Este tutorial não pode discutir cada elemento que pode existir na table android, para isso consulte a documentação oficial do Corona e a documentação do Google, na parte de permissions e features.

A table plugins

A seção final a ser discutida é a table que suporta os plugins do Corona SDK. Um exemplo básico que habilita o plugin AdMob se pareceria com isso:


Note que o nome da chave para est plugin (CoronaProvider.ads.admob) inclui pontuação. Devido a isto, você deve usar colchetes e aspas ao definir esta chave. Mesmo que o nome do plugin não inclua pontuação, este método fornece um nível de consistência:


Neste exemplo mostramos um aspecto importante de incluri plugins: a sub-table supportedPlatforms. Se você usar um plugin que é específico de uma plataforma, você pode usar a chave supportedPlatforms para instruir os servidores de build do Corona a somente incluírem o plugin na plataforma específica.

Porque Facebook é considerado "platform specific" no contexto de plugins? A funcionalidade do Facebook é, na verdade, disponível para iOS e Android, mas desde algum tempo que o Facebook para iOS foi removido do core do Corona e agora é implementado via plugin. Se você está usando uma versão mais recente do Corona e está compilando para iOS, você deve incluir a chave acima ["facebook"] na sua table plugins, juntamente com a sub-table supportedPlatforms.

Precauções Importantes

1. Copiando e Colando Blocos de Código

Comumente, desenvolvedores copiam e colam exemplo de código a documentação do Corona. Tudo bem, mas você deve estar atento a manter a organização de todas tables dentro do build.settings. Não copie simplesmente os exemplos mostrados acima e se copiar tome cuidado em não colar as sub-tables nas seções errradas, como colar um bloco plugin dentro de uma table iphone.

2. Indentação Apropriada

Realmente ajuda indentar seu código. A maioria dos editores de código modernos manipulam a indentação do código automaticamente, e é ainda mais importante indentar o código do build.settings porque ele será normalmente uma miríade de tables e sub-tables. Com a indentação apropriada, será mais fácil de manter seus elementos organizados e legíveis.

Conclusão

O build.settings pode ser bem complexo, mas no fundo, nada mais é do que tables Lua aninhadas com seus pares de chave-valor, e quanto mais confortável você estiver com esses aspectos, mais fácil será construir um build sem falhas para todas plataformas.

Saiba tudo sobre Corona SDK com o único livro em Português sobre este incrível framework, com quase 500 páginas. Saiba mais!

Nova versão do livro que ensina a criar aplicativos com Corona SDK

Se você não sabe o que é Corona SDK, leia este post!Comprem o livro neste link para que o

Se você não sabe o que é Corona SDK, leia este post!

Comprem o livro neste link para que o tradutor ganhe sua comissão! O site de compras é o PagSeguro do UOL e tenho 100% de qualificações positivas.

Foi em 2012 que conheci Corona SDK e que começou minha paixão pelo desenvolvimento amador de games mobile como hobby. Nesse mesmo ano conheci o livro Beginning Mobile App Development with Corona e decidi que ia ajudar o autor, o Dr. Brian Burton, a fazer a versão nacional chamada Criando Aplicações Móveis com Corona, sendo o primeiro livro em Português sobre o assunto, e até hoje um dos únicos materiais em nosso idioma. 2 anos e dezenas de compradores depois...


Corona, mais forte do que nunca!

Quando conheci o Corona em uma revista da Info, era um framework indie de desenvolvimento mobile que suportava Android e iOS com programação em Lua. Tinha alguns milhares de desenvolvedores ao redor do mundo e era desenvolvido por uma empresa chamada Ansca Mobile, fundada por dois ex-engenheiros da Adobe, do time de games do Flash.

Hoje, a empresa se chama Corona Labs e seu framework é utilizado por mais de 300 mil desenvolvedores ao redor do mundo, com uma imensa comunidade online, muito material e exemplos disponíveis e diversos aplicativos em seu portfólio. Com atualizações praticamente mensais, Corona se tornou gratuito para todos desenvolvedores, e seduz a cada dia novos estúdios digitais que encontram no seu poder e simplicidade a amálgama perfeita para desenvolver aplicativos, games e e-books para Android, iOS, Nook, Ouyia, Kindle e em breve Windows Phone.

Some a isso um tempo livre que entrou em minha agenda e a vontade de voltar a programar jogos e temos a combinação perfeita para lançar uma nova versão do livro que já faz 2 anos que foi lançado em Português, e que nunca havia tido atualizações.


O que há de novo no livro?

Corona evoluiu muito desde o seu lançamento, e o livro não apenas vem para corrigir erros antigos mas para expandir as possibilidades com o framework com capítulos inteiramente novos, novos exemplos e muitas páginas adicionais, sem mudar em nada o preço final! Veja as principais novidades da nova versão do livro:

  • nova biblioteca Graphics 2.0;
  • integração com Apple Game Center e Google Play;
  • suporte à JSON;
  • monetização com anúncios;
  • novas ferramentas para look & feel nativo;
  • mockups;
  • nova biblioteca Widgets 2.0;
  • Eventos do sistema e Ferramentas (acelerômetro, giroscópio, GPS, mapas e notificações)
  • Gráficos Avançados com filtros, geradores, efeitos compostos e LiquidFun

  • São quase 500 páginas de dicas, tutoriais, exemplos de games e apps completos e muito mais! Sério, tudo que você precisa saber sobre como criar games e apps com Corona SDK está neste livro.

    Confira nesta resenha tudo o que há no livro!

    Mas e quem comprou a versão antiga?

    Obviamente não esquecemos dos antigos compradores e todos podem baixar a nova versão do livro gratuitamente. Para isto, basta acessar o link abaixo do site do autor e informar o e-mail que usaram para compra do livro. Pronto! Você receberá por e-mail uma cópia novíssima e atualizada do livro para aproveitar ainda mais o nosso framework mobile favorito!

    http://www.burtonsmediagroup.com/books/book-update/

    Pra encerrar, abaixo vai uma amostra do que estou criando atualmente com Corona SDK:


    Isometric Rules!

    Comprem o livro neste link para que o tradutor ganhe sua comissão! O site de compras é o PagSeguro do UOL e tenho 100% de qualificações positivas.

    Supercell: Zero a U$3 bilhões em 3 anos

    Tem algum tempo que venho acompanhando a empresa finlandesa Supercell. Talvez você não a conheça pel


    Tem algum tempo que venho acompanhando a empresa finlandesa Supercell. Talvez você não a conheça pelo nome, mas se tem um smartphone, certamente conhece seu trabalho com os games Hay Day e Clash of Clans. Ambos jogos se tornaram febres tão grandes que possuem até mesmo comerciais de TV. Eu jogo Clash of Clans tem três meses e minha esposa joga Hay Day tem uns 6. Saiba mais sobre essa grande empresa de games para celular neste compilado de informações retirados de jornais americanos.

    Helsinki

    Petteri Koponen visitou um escritório sujo na periferia da capital da Finlândia em 2010 para conhecer um grupo de desenvolvedores lançando uma companhia de games mobile chamada Supercell.

    "Basicamente era somente uma sala com janelas muito pequenas," lembra-se Sr. Koponen, um investidor anjo de startups. "Naquele momento, eles não tinham cadeiras para todo mundo." O co-fundador da empresa, Ilkka Paananen, estava debruçado sobre uma caixa de papelão que ele usava como mesa enquanto discutíamos os planos da empresa.

    Em 15 de outubro de 2013, o banco japonês SoftBank Corp. concordou em comprar 51% da empresa finlandesa, que tinha somente dois jogos (hoje são 3) e 130 empregados, por U$1.5 bilhões de dólares. Este é o maior investimento de todos os tempos em uma empresa de apps mobile, de acordo com Rutberg & Co. Os dois co-fundadores da Supercell levantaram mais de U$200 milhões de dólares cada um com suas ações.

    O investimento na Supercell é outra engrenagem no império que se alastra do CEO do SoftBank, Masayoshi Son, que também inclui a Sprint Corp. É um negócio arriscado: a Zynga Inc., criadora de jogos sociais americanos que veio ao público em 2011, tem um valor de mercado de U$2.8 bilhões, uma queda de 60% desde o seu IPO. Suas projeções falharam ao não conseguir criar um sucessor convincente à sua franquia Farmville.

    Supercell está no meio de um exército de novas empresas que querem gerar valor significativo rapidamente e quebrar indústrias maduras baseando-se nos sistemas de distribuição como a app store da Apple e apps no Facebook. Mas ao contrário de muitos dos seus concorrentes, Supercell é lucrativa.

    A companhia serve como um ícone para a estratégia de distribuição freemium. Esta estratégia permite que os jogadores possam baixar e jogar os jogos de graça, mas requer que eles paguem pelos extras, como armas especiais ou melhorias no jogo que aceleram a jogabilidade.

    Cerca de 10% dos usuários da Supercell compram extras in-game, o que é muito maior que o normal da indústria (Chris Anderson fala em Free: o Futuro dos Preços, sobre uma média de 6% de pagantes no modo freemium). Em 2012, a empresa lucrou mais de 40 centavos de dólar para cada U$1 de itens vendidos, ou U$40.3 milhões de lucro sobre os U$105 milhões de faturamento.


    O sucesso da Supercell vem com somente dois jogos: "Hay Day", um app que simula uma fazenda, e "Clash of Clans", que simula combates. Ambos estreiaram em 2012 para iOS e "Clash of Clans" foi disponibilizado para Android em 2013 planejando atingir melhor o mercado asiático.

    Supercell se capitalizou na ascendência dos tablets. Criando jogos para uso primário em produtos como iPad, a Supercell nunca experimentou a dor de ter de mexer na sua plataforma para suportar dispositivos mais novos, como consoles e computadores. Inicialmente, Supercell tinha interesse em usar o Facebook como plataforma, mas a estratégia foi alterada uma vez que os executivos entenderam que os tablets iriam superar os computadores e consoles como a ferramenta primária de jogos nos próximos 5 anos.

    Sr. Paananen conheceu o co-fundador em 2011, em um café na estação Paddington, em Londres, e começaram a discutir a decisão de desplugar um jogo de Facebook chamado "Gunshine" e tirar esta dependência da rede social. Esta decisão também significaria matar outro jogo da Supercell, codinome "Magic", que estava em desenvolvimento havia 5 meses.

    Supercell tinha pouco dinheiro para gastar com marketing, então a parceria com a Apple, que dá alta visibilidade aos jogos que eles vêem que possuem alto potencial, era um ingrediente crítico. Desenvolvedores cruzam seus dedos esperando que seus apps apareçam em destaque, pois a Apple, que cobra 30% das vendas, não cobra pela exposição.

    Sr. Paananen já disse mais uma vez que a companhia é "incrivelmente sortuda". Ele também nota que "Clash of Clans" e "Hay Day" são jogos sociais, permitindo que os jogadores convidem outros jogadores, criando um efeito avalanche. Usuários que competem com amigos online tem a gastar mais com compras in-app do que jogadores sozinhos.