utools unite brasil
TRANSCRIPT
Quem sou?
• Fundador da Vortex Game Studios;
• Organizador da SPJam;
• Desenvolvedor (C, C++, C# e outros);
• Atualmente, no desenvolvimentode jogos e ferramentas de apoio;
• Gosto de bolo :)@TheMonkeyTail
@VortexStudios
@SPGameJam
Alguns problemas que encontramos• Input
Para cada tipo de dispositivo de entrada (teclado, joystick, mobile, touch) há necessidade de códigos específicos e não padronizados
• ArquivosA leitura e gravação de arquivos é diferente em cada plataforma. Nosso primeiros testes com gravação e leitura de arquivos no Android levavam os dispositivos a congelar.
• TraduçãoOs assets disponíveis para tratar o tema não funcionam adequadamente em jogos multiplataforma. O que adquirimos não funciona em Windows Phone e OS X
Temos:
• Diversos inputs, incluindo os desenhados na tela em jogos mobiles;
• Leitura e Gravação de arquivos;
• Bibliotecas que não compilam adequadamente em todas as plataformas;
• Necessidade de integrar bibliotecas exclusivas para diferentes plataformas
Resultado
• Longos periodos de produção e desenvolvimento;
• Códigos não-padronizados;
• Novo ciclo de aprendizado para cada plataforma;
• Custo elevado de produção;
• AHHHHHHHH!!!!
O que queremos?
• Reduzir o tempo de produção do seu jogo;
• Padronização de código-fonte;
• Reduzir o tempo de aprendizado para implementação de bibliotecas
• Reduzir o custo de produção do seu jogo
O que é a UTools?
• Qual o objetivo?Reduzir os custos e tempo de produção de jogos multiplataforma usando um framework padrão.
• Como funciona?Através da implementação de módulos especializados, cada um fazendo a sua tarefa, independente da plataforma de destino!
• E quais são os modulos?A imagem explica :)
A UInput
• Interface visual;
• Permite configurar todas as entradasem um só lugar, incluindo virtual
• Exportar e importar presetsem formato JSON
• Ativar, desativar ou mudarconfigurações em real-time
Exemplo (C#)float h = 0.0f;
if ( isPC ) {h = Input.GetAxis("Horizontal");
} else if ( isMobile ) {if( Input.acceleration.x >= 0.1f && Input.acceleration.x < 0.2f ) {
h = 0.5f;} else if( Input.acceleration.x <= -0.1f && Input.acceleration.x > -0.2f ) {
h = -0.5f;} else if( Input.acceleration.x >= 0.2f ) {
h = 1.0f;} else if( Input.acceleration.x <= -0.2f ) {
h = -1.0f;} else{
h = 0.0f;}
}
A UData
• Sintaxes amigáveis
• Leitura e gravação funcionando em qualquer plataforma, com a mesma implementação
• Armazenamento automático em nuvem quando a plataforma permitir
Exemplo (C#)
• LeituraBinaryWriter bW = new BinaryWriter( file );
bW.Write( section.id );bW.Write( section.locked );bW.Write( section.storeKey );
• GravaçãoBinaryReader bR = new BinaryReader( file );
section.id = bR.ReadUInt32();section.locked = bR.ReadBoolean();section.storeKey = bR.ReadString();
• LeituraudSave.OpenPlayerData( "jelly_save", false); // False = Leitura
udSave.Write( section.id );udSave.Write( section.locked );udSave.Write( section.storeKey );
• GravaçãoudSave.OpenPlayerData( "jelly_save", true ); // True = Gravação
section.id = udSave.Read<uint>();section.locked = udSave.Read<bool>();section.storeKey = udSave.Read<string>();
Exemplo (C# c/ UData)