Páginas

segunda-feira, 24 de setembro de 2012

Testflight : teste sua app em um dispositivo remotamente

Muitas vezes é necessário que beta testers tenha acesso a sua app rapidamente, mas quando se trata de desenvolver para iOS esse trabalho é realmente muito tedioso e demorado. É necessário cadastrar todos os devices no portal do desenvolvedor, além de ter que fazer um build e enviar para os testers, frequentemente não dá muito certo, por vários motivos, incluindo conhecimento do usário ou do cliente.

O que é o Testflight?

É um portal que oferece um serviço de distribuição da sua app para os usuários que irão testá-la. É possível ainda que você implemente o SDK do testflight na sua aplicação para que você tenha acesso aos dados estatísticos da sessão de cada usuário que testou. Através da API você pode fazer uploads automáticos para o portal, automatizando todo o processo.

Como funciona?

Ao criar sua conta você pode convidar os usuários testadores ou desenvolvedores, criar times. Para que os usuários cadastrem os dispositivos basta que eles acessem o portal usando o device, que passa a ser vinculado a conta. Depois dessa vinculação o desenvolvedor que convidou recebe um arquivo contendo as informações necessárias para cadastrar no centro de desenvolvimento da Apple, bastanto apenas importar o arquivo.

Após fazer um upload de um build adhoc e seu profile adhoc, os usuários autorizados podem instalá-los no device acessando o portal através do dispositivo.

conclusão

Conheci o testflight no macincloud, pois era a única forma de testar uma app no device. E realmente foi uma excelente experiência que utilizo até hoje!

Links

[1] Testflight

domingo, 23 de setembro de 2012

Macincloud: uma boa alternativa?

Desenvolver aplicativo para iOS é no mínimo um pouco caro para um desenvolvedor indie, é necessário ter um Mac e o mais barato, o mini MAC é no mínimo R$ 2000,00. Depois do Mac você vai precisar de um device, um iPod que agora está custando um pouco mais que R$ 1000,00. Com certeza você deve imaginar que pagar tudo isso não compensa, já que você só quer um Mac para testar e publicar sua app.

O que é?

Macincloud oferece um Mac nas nuvens, com preços que variam entre $12,00 a $49,00. Muito compensador! Várias ferramentas já vêm instaladas e caso você utilize a Unity, como eu, é só pedir para eles instalarem.

Experiência própria.

Utilizei o Macincloud por 1 semana para publicar minha primeira app (The Shuffle Puzzle) na App Store. Uma aplicação feita na Unity3D. Tudo que eu precisava era gerar o projeto no XCode e integrar o Admob, no entanto foi uma péssima experiência, pois:
  1. Testar é muito trabalhoso, a Unity não é suportada pelo simulador e sempre era necessário fazer um Build e enviar para um Device remotamente, levava uns 30min para tudo isso. Meu plano só oferecia 4horas por dia.
  2. Lentidão, embora com uma internet de 15mb a latência de 200ms me faziam sentir trabalhar em câmera lenta.

Conclusão

Se você não vai produzir jogos, com certeza me parece uma solução viável! Pois o ponto que mais pesa é a fase de teste durante o desenvolvimento.

Links

terça-feira, 18 de setembro de 2012

Ferramenta Analítica: AppAnnie

Problema

Como desenvolvedor para iOS frequentemente preciso saber como estão indo meus downloads, mas infelizmente o itunesconnect é uma porcaria para isso, os dados ali apresentados são muito simplificados e não dá uma possibilidade de uma análise estatística mais apurada.

Solução

AppAnnie é uma ótima solução para você visualizar todos os dados sobre sua aplicação no mercado, desde de número de downloads, até mesmo raking, downloads por países e etc. Não só para iOS, mas também para Android.

Link: AppAnnie

quinta-feira, 13 de setembro de 2012

sábado, 8 de setembro de 2012

Unity3D : Carregar, Ler e Salvar um arquivo XML

Há diversas aplicações para o uso de um arquivo XML, em geral, quando se necessita carregar configurações pré-definidas.

Como carregar?

Uma vez com um arquivo XML dentro da pasta Resources,
exemplo:
<achievement>
<uniqueid>0</uniqueid>
<referencename>My Achievement</referencename>
<goal>Solve until 10 seconds</goal>
<points>10</points>
</achievement>
using UnityEngine;
using System.Collections;
using System.Xml;


public class XMLEditor : MonoBehaviour
{

void Awake()
{
//Load
TextAsset textXML = (TextAsset)Resources.Load("myxml.xml", typeof(TextAsset));
XmlDocument xml = new XmlDocument();
xml.LoadXml(textXML.text);
}
}
Desta forma você carrega o XML como um TextAsset da Unity3D

Como ler o arquivo XML?

Ler o arquivo XML é realmente muito simples utilizando as classes da .NET framework


using UnityEngine;
using System.Collections;
using System.Xml;


public class XMLEditor : MonoBehaviour
{
void Awake()
{
//Load
TextAsset textXML = (TextAsset)Resources.Load("myxml.xml", typeof(TextAsset));
XmlDocument xml = new XmlDocument();
xml.LoadXml(textXML.text);

//Read
XmlNode root = xml.FirstChild;
foreach(XmlNode node in root.ChildNodes)
{
if (node.FirstChild.NodeType == XmlNodeType.Text)
Debug.Log(node.InnerText);
}
}
}

Obviamente essa é maneira mais simples de ler um XML, e caso o XML possua diversas hierarquias, você deverá implementar seu método de navegação através dos nós.

Como salvar em XML?


using UnityEngine;
using System.Collections;
using System.Xml;


public class XMLEditor : MonoBehaviour
{
void Awake()
{
//Load
TextAsset textXML = (TextAsset)Resources.Load("myxml.xml", typeof(TextAsset));
XmlDocument xml = new XmlDocument();
xml.LoadXml(textXML.text);

//Read
XmlNode root = xml.FirstChild;
foreach(XmlNode node in root.ChildNodes)
{
if (node.FirstChild.NodeType == XmlNodeType.Text)
node.InnerText = "none";
}

//Simple Save
xml.Save(AssetDatabase.GetAssetPath(textXML));
}
}

E através do AssetDatabase recuperamos o local do arquivo que foi carregado e salvamos por cima.

Eis a maneira mais rápida e fácil de carregar, ler e salvar arquivos XML na Unity3D

sexta-feira, 31 de agosto de 2012

The Shuffle Puzzle iOS



finalmente depois de vários dias (11 dias) de espera o The Shuffle Puzzle é aprovado na appstore! Foram 8 dias para entrar em modo "waiting for review" e 4 dias para sair do modo "in review". Mas finalmente saiu!

Dêem uma olhada! O jogo está gratuito!

itunes link: The Shuffle Puzzle

terça-feira, 28 de agosto de 2012

Gameficação - Gamification



Para quem não sabe o que é Gameficação ou Gamification: habilidade de aplicar elementos de jogos e/ou técnicas game design à um contexto que não seja um jogo. Em outras palavras, gameficar uma situação real.
Exemplo:

Há algum tempo eu havia me inscrito num curso a distância sobre Gamification e agora as aulas iniciaram. Para quem tiver interesse as inscrições ainda estão abertas e é totalmente gratuito! O curso é oferecido pela Coursera.
Iniciou em 27 de Agosto de 2012 e vai durar seis semanas com direito a certificado!
Link do curso: https://www.coursera.org/course/gamification

Para você que não conhece, a Coursera é uma compania de empreendedorismo social que oferece cursos gratuitos em parcerias com universidade do mundo inteiro, como: Princeton, Stanford, ...

Lembrei de falar quando vi o post no GameReporterUOL (=

http://gamereporter.uol.com.br/coursera-oferece-curso-gratuito-de-gameficacao/


Resumo breve sobre o curso:

About the Course

Gamification is the application of digital game design techniques to non-game problems, such as business and social impact challenges. Video games are the dominant entertainment form of our time because they are powerful tools for motivating behavior. Effective games leverage both psychology and technology, in ways that can be applied outside the immersive environments of games themselves. Gamification as a business practice has exploded over the past two years. Organizations are applying it in areas such as marketing, human resources, productivity enhancement, sustainability, training, health and wellness, innovation, and customer engagement. Game thinking means more than just dropping in badges and leaderboards; it requires a thoughtful understanding of motivation and design techniques. This course examines the mechanisms of gamification and provides an understanding of its effective use.

domingo, 26 de agosto de 2012

Como criar uma biblioteca DLL para Unity3D


English Version on: fernandogamedev-en

Depois do projeto The Shuffle Puzzle publicado para iOS e Android decidimos refatorar a extensão do editor para criar GUI 2D. A intenção é publicar no Asset Store da Unity3D, porém não faz sentido algum publicar o código-fonte aberto.

Se você quer criar um plugin para distribuição comercial é interessante que você faça uma DLL.

Ferramentas utilizadas:
1. Crie um projeto Class Library no Visual Studio C# 

2. Salve o projeto e em propriedades do projeto, mude o Target Framework para .NET 2.0 Mobiles usam no máximo o .NET 2.0

3. Adicione as referências a API da Unity3D: UnityEngine.dll, UnityEditor.dll se necessário. Você encontrará essas DLL em: <code>C:\Program Files (x86)\Unity\Editor\Data\Managed</code>

4. Codifique sua biblioteca. Fiz aqui um teste bem simples para mostrar o funcionamento.

5. Compile sua biblioteca: Build

6. A sua DLL está pronta e está na pasta bin/release/MyLibrary.dll e copie para o seu projeto na Unity3D Assets/Plugins/

7. Feito isso você já pode usar sua biblioteca no seu projeto!



;)



quarta-feira, 22 de agosto de 2012

Experiências de um amador



Antes de você vir falar que tem a melhor idéia do mundo, entenda que milhares de pessoas já tiveram essa sua idéia, mas por que diabos ela ainda não foi feita? Porque nem todos sabem como transformar idéias em realidade. Para isto é necessário muito estudo e esforço. 

Visando diminuir os esforços, procure sempre leituras e experiências de outros desenvolvedores, aprenda com os erros dele e com os acertos também, afinal você não precisa reinventar a roda para andar carro, não é?

O seguinte texto é muito bom e vale a pena ler, trata-se da experiência de um completo amador em desenvolvimento de jogos que decidiu sair do software tradicional para se aventurar no mundo mobile. Ele fala desde a concepção, empecilhos, até a publicação;

terça-feira, 21 de agosto de 2012

Shuffle Puzzle no Game Reporter UOL



Puxa, essa tinhamos que falar. Paciência é de fato uma virtude e aos poucos o esforço para fazer o The Shuffle Puzzle vai sendo recompensado com os retornos dos jogadores. 
Hoje foi a vez do Game Reporter Uol e olhe só o que eu achei lá: 


Com certeza muito gratificante,
fica a dica: manter a paciência! 

=D


quinta-feira, 16 de agosto de 2012

Unity3D XCode e PNG Error


Eu havia produzido minha aplicação para o iOS e pus meu ícone configurado pela Unity3D. No entanto ao compilar (build) meu projeto no XCode 4.3 3 erros apareciam, mas o causador era esse:

Command /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/Library/Xcode/PrivatePlugIns/iPhoneOS Build System Support.xcplugin/Contents/Resources/copypng emitted errors but did not return a nonzero exit code to indicate failure

...

Se você encontrou um problema semelhante, fique feliz e resolva facilmente! Este erro é causado porque a imagem criada pela Unity3D é um <code>png interlaced</code>. Crie, edite e corte seu ícone e salve como png not interlaced pelo GIMP ou Photoshop.


Não selecione a opção Interlacing

segunda-feira, 13 de agosto de 2012

Admob Android Plugin for Unity3D





This post is for beginners and I will teach how to create a simple Android plugin for Unity3D. This plugin will show admob on your app.

In a futher post I will show how to use AndroidJNI for callbacks from C# to Java code inside on your plugin.


First, on your Unity environment create a folder named Plugins and a subfolder named Android. This is default. Inside Android's folder we will create the android project from eclipse.




Now create a Android Project on Eclipse.

Change the default location to your Android folder on Unity


Setup the package name with care and choose the min SDK version.
Now we will import and setup admob lib. At this moment I use the version 6:  6.1 (GoogleAdMobAdsSdk-6.1.0.jar) and my JDK is 1.6


Create a folder named libs and paste the admob library
Add the library admob from your worspace and the Unity library from the Editor's folder. Add the Classes.jar 


Don't forget to select all libraries to export.
And select the compilance level to 1.5

Select the app target over 3.0 O target
We must setup the manifest.xml to add permissions and other configurations. You may see this steps on: https://developers.google.com/mobile-ads-sdk/docs/admob/fundamentals


Now, let's code the Admob!
Agora você só precisar configurar seu admob exatamente como mostra no site da Google

The main activity is extended from UnityPlayerActivity. This override the main class of Unity and does your plugin the start point of your app.


This code is to add a Layer on default 3D view. The linear layout will receive the admob.

Now,  Clean your project and Export; it!


Now you can do the build from Unity3D and remember to adjust the package name on Build Settings to the same of your plugin.

You can download the projet here.

Plugin admob para Unity3D





Inicialmente o propósito deste tutorial é de apenas mostrar como criar um simples plugin que exiba a propaganda do admob.

Futuramente em outros posts irei mostrar como utilizar o Android JNI para que através de um script C# você consiga comunicar-se com seu plugin Android.

Dentro do seu ambiente Unity você deverá criar uma pasta onde ficará o plugin. Por padrão a pasta deve ser chamar: Plugins e para cada plataforma, no caso Android, uma subpasta: Android . É dentro dessa pasta que iremos criar o nosso projeto pelo eclipse.


Agora iremos criar um configurar o projeto pelo Eclipse:
Crie um projeto no seu workspace Eclipse

Modifique o local onde ele irá criar o projeto para a Pasta Android que está no seu projeto Unity


Configure o nome do Pacote e o SDK mínimo necessário, para este escolhi 2.1, mas prefiro usar acima do 2.2
Agora nós vamos importar e configurar a biblioteca do admob! Configura sua campanha admob no site e baixe o SDK do admob. Para este tutorial estou usando a versão: 6.1 (GoogleAdMobAdsSdk-6.1.0.jar)
O JDK que estou usando é o JDK 1.6. Atualize também seu SDK Android.

Crie uma pasta chamada libs e adicione a biblioteca do admob
Adicione a biblioteca do Admob que está no seu workspace e a biblioteca da Unity3D Classes.jar Essa biblioteca está na pasta do Editor da Unity.


Não esqueça de selecionar todas as bibliotecas para o Export
Escolha o nível de compilação para o 1.5

O target do Admob deverá ser superiro ao Android 3.0
Agora teremos de configurar nosso manifest.xml para atribuir as permissões e outras configurações.
Note que todos os passos de configuração do Admob estão em : https://developers.google.com/mobile-ads-sdk/docs/admob/fundamentals


Agora poderemos começar a codificar e então faltará apenas mais 2 passos =D
Agora você só precisar configurar seu admob exatamente como mostra no site da Google

Note que a Activity principal é estendida da classe UnityPlayerActivity, isso irá fazer um override na classe principal de execução da Unity, tornando o seu plugin o ponto de partida da sua aplicação.


Este é o código para adicionar uma Layer na frente da view padrão da Unity, esse Layout irá receber o admob.

Agora a última etapa, exportar: dê um Clean no seu projeto e exporte!


Pronto! O jar foi exportado!
Você já pode fazer o build, lembre-se de em buildsettings alterar o nome do package para o mesmo do projeto do plugin!

Você pode baixar o projeto aqui.