quarta-feira, 18 de setembro de 2013

Players de Elite!

E ae pessoal,

Bom, antes de mais nada fiquei sabendo hoje que Like a Boss é um dos finalistas do SBGames 2013! Aeeee! =) Enviamos o jogo como "Em Produção" por falta de uma categoria "Alpha do Beta do Theta", não estávamos muito confiantes, a gente tinha trabalhado só 1 mês no projeto... e... lá estamos nós! Aeeeee! =)

Ano passado o evento foi show de bola, espero que esse ano seja ainda melhor.
Pra quem tiver interesse e ainda não tenha visto a lista completa de jogos finalistas, pode acessar esse link. Pelo que entendi desde o começo, ainda vai ter mais uma eliminatória antes do evento, mas não tenho certeza. De toda forma, é legal passar de qualquer fase de qualquer concurso, e esse ano a competição ta bem complicada, uma porrada de jogo bom... da até orgulho de ser brasileiro =P.

Só aproveitando esse momento pra fazer um comentário, eu acho realmente muito triste saber que enquanto ano passado, nessa época do ano, corríamos e nos preparávamos para SBGames, BIG e BGS, este ano só vai acontecer o SBGames... eu entendo que organizar um evento de grande porte não é nada fácil, mas a impressão que tenho é que o pessoal não sabe como é importante pros indios poder participar desses eventos... o BGS vai acontecer, mas sem Festival de Jogos... os caras tem uma baita estrutura, arrecadam uma puta grana de patrocinadores e expositores, e estão cortando as pequenas, porém importantes medidas de incentivo pros desenvolvedores nacionais... e o BIG, que talvez tenha sido meu evento preferido do ano passado por ter todo um lado business que foi ULTRA importante pra gente... não vai acontecer esse ano, uma grande pena... =(

Queria eu fazer uma piadinha first world problems... se nossa situação como desenvolvedor no Brasil não fosse tão precária...
Mas, enfim, não adianta chorar o leite derramado... hoje eu vim aqui pra fazer o que se deve fazer em um dev blog... falar sobre dev! Quem diria que esse dia ia chegar!

E como meu primeiro tópico oficialmente sobre dev, vou falar sobre uma coisa que eu não vejo a hora de implementar no Like a Boss: Players de Elite!

Existe player mais elite que o grande Leerooooooyyyy Jenkiiinnss???
Bom, como já mencionamos algumas vezes em outros posts (tipo esse e esse), em Like a Boss, você, o player, é na verdade o Boss que tem que arregaçar os players. Mostrar quem é que manda nessa bagaça! Os "players" em geral são bem noobs (eu quero dizer os "players" do Like a Boss, mas é válido pros players do mundo real também), mas, vira e mexe sempre aparece um cara acima da média. Um cara que manja dos paranaue de matar chefe, player, do lore, das mecanicas internas do jogo... sempre tem uns no life pra fazer uma puta engenharia reversa e se tornar o kra mais eficiente possível dentro do jogo. Posso dizer que foi uma época legal da minha vida, quando invés de inventar mecânicas internas eu tinha que descobrir elas... inventar da muito trabalho... =P

Mas, enfim, essa característica dos players não podia deixar de aparecer no Like a Boss! Os players comuns no jogo representam as classes comuns de RPGs, Arqueiros, Guerreiros, Magos, Sacerdotes, Paladinos, etc etc etc... e pra IAs eles são consideravelmente inteligentes do jeito que são. Sabem a hora certa de usar habilidades, de bater, de fugir, sabem se ajudar... na verdade desde o começo uma das maiores preocupações com esse projeto é os players serem tão fodásticos que ser o chefe vai ser mais frustrante que divertido.

"Puta que pariu, como que pode ser tão dificil sair de cima do fogo??" - Pergunta mais misteriosa do mundo dos MMORPGs
Mas, não satisfeitos com a dificuldade natural do jogo (que claro, pode ser nerfada (de novo)), nós vamos implementar os Players de Elite. Eles são players especiais em todos os sentidos. Mais poderosos, mais inteligentes, com habilidades extras, alguns possuem auras que dão bonus para os aliados próximos, e mais importante: nenhum é igual ao outro. Os players de elite serão facilmente identificáveis por seus nicks, sendo os únicos players no campo de batalha com o nome em cima da cabeça. A idéia é que o Boss, com tempo de jogo, identifique os Players de Elite como seus nemêsis, por exemplo, um dos Players de Elite chamado Schwarzenego (acidentalmente o mesmo nick que eu uso quando jogo) tem um perfil extremamente agressivo, causa muito dano, muito rápido, é bem resistente, aumenta o dano dos aliados próximos... no entanto, de tempos em tempos precisa ficar away por alguns segundos pra responder pra mãe (que já ta de saco cheio dele ficar jogando esses joguinhos) que horas que ele vai sair do computador.

Queremos que o Boss (o jogador de verdade) se acostume com os perfis de cada Player de Elite, e que torne eles os vilões de verdade do jogo, pra sentir aquela sensação de "MORRE FDP" que é tão boa. Mas, players tão importantes no mundo de Like a Boss não podem se diferenciar apenas no nome né? Precisam se diferenciar também no modelo, afinal de contas os kras farmam o dia inteiro, os kras manjam das putarias, os kras tem item TOP!

Archer de Elite Mid level. Esse arrombado vai dar raiva viu... ja vo avisando.
Estamos atualmente trabalhando nos modelos e texturas dos Players de Elite, mas sério, os Elite High level... parece um Boss, os caras são tenso d+.

Esse corno é tão rápido e tem tanta skill pra fugir que se não fosse o dano absurdo, era melhor deixar ele por ultimo.
Como todos os players regulares, os Players de Elite também tem uma progressão. A progressão de todos os players acontecerá de acordo com o level do Boss, em tese porque conforme você (boss) fica mais foda, só players mais experientes vão tendo coragem de te enfrentar.

Eu poderia dizer que o negócio é ignorar esse cara. Com tanta vida e skills de proteção, enfrentar ele é pedir pra morrer. Mas, os Warriors de Elite são a definição de "se correr o bixo pega, se ficar o bixo come".
Ainda tem uma porção de questões sobre o gameplay do Like a Boss que estão em discussão (naturalmente), o formato dos levels, das quests, de uma porrada de coisa. Mas a gente ta colocando muitas fichas na mecânica dos players elite. A gente acha que eles vão dar uma boa variedade de gameplay, aumentar bastante replay value, e com certeza ajudar você a se sentir épico, como todo Boss tem que ser.

Já vou avisando... se você só tiver habilidades mágicas, e tiver que enfrentar esse cara... pode "largar o teclado". Ele reflete tanta magia que você vai se sentir jogando Tenis.
Infelizmente, no entanto, nenhum dos colegas acima está implementado =( Nem o colega abaixo, diga-se de passagem. Estamos trabalhando em sistemas mais "invisiveis" ao jogador, no exato momento estou trabalhando em implementar o sistema de inventário, que ta tenso. Ainda tenho algumas prioridades antes de implementar eles dentro do jogo, mas sinceramente é o que eu mais quero fazer já faz um bom tempo.

Sério, os Healers comuns já são um pé no saco. Se eu conhecesse 1 healer no WoW igual a 1 dos healers comuns do Like a Boss, eu era um cara feliz. Imagina 1 healer foda, o dobro + apelão?
Enfim, com certeza nos próximos dias/semanas teremos mais novidades sobre o sistema dos players de elite, quem sabe uns vídeos Alpha Beta Theta de gameplay? Mas, por enquanto é isso =P. Tem alguma idéia que acha que ia ser foda? Alguma coisa envolvendo Players de Elite que a gente ainda não pensou? Deixa suas sugestões nos comentários!

Abraços!

segunda-feira, 16 de setembro de 2013

Unity C# - Delegates e Eventos

E ae pessoal, beleza?

Como havia dito ontem, vamos começar a efetivamente tentar fazer posts diários sobre o andamento dos nossos projetos, decisões que tomamos, problemas que encontramos, etc, mas eu tinha escrito esse post a tanto tempo que tava escrito "acho que até o final de maio vamos ter muita coisa pra postar aqui..." hauhauha to me sentindo praticamente jogando Sim City no Cheetah Speed, negócio ta tenso... mas, enfim, esse post é dedicado a programação novamente, sobre um tópico que aprendi recentemente e tem me ajudado muito na produção dos nossos jogos, algo que é EXTREMAMENTE ÚTIL, Delegates e Eventos!

Esse é um tutorial talvez um pouquinho mais avançado que o de Singletons, mas de verdade, é bem simples, vou tentar explicar de um jeito bem fácil de entender. Outra coisa que acho válido mencionar logo de cara é que eu sou noob de delegates e eventos e eu ainda sinto que não estou usando isso a todo o poder... por isso, fique a vontade nos comentários pra me chamar de retardado. (Também é C#, pra Unity)

-Delegates e Eventos

De acordo com o google images, pra manter o padrão...

Impressionantemente, uma imagem que realmente descreve o que é um delegate com eventos!
Tendo em mente que eu não sou nenhum mestre dos delegates, eu diria que Delegates e Eventos podem fazer juntos de maneira simplória: Em uma classe, você cria um delegate (praticamente como um método, você da um nome, um tipo de retorno e quantos parâmetros esse método recebe), e um evento que é do tipo do delegate (isso é, um evento que recebe os mesmos parâmetros e retorna a mesma coisa que o delegate criado). Agora, todas as classes do seu projeto podem se "inscrever" no seu evento, e serem avisados que aquele evento foi chamado pra fazerem seja lá o que eles quiserem fazer.

Ok, não foi a melhor explicação do mundo, mas calma, eu explico melhor mais pra baixo.

Bom, mesmo sendo noob dos delegates, eu já descobri alguns usos que são simplesmente fantásticos. Um exemplo que eu acho muito útil é para controlar Inputs (principalmente mobile, mas é útil de toda forma). Vamos supor você tem um jogo de matar monstrinho, e na tela existem 5 botões referentes a suas habilidades pra matar monstrinho. Muito provavelmente você tem uma classe que é responsável por controlar os inputs (vou chamar aqui de InputHandler), e nessa classe você diz que quando um dedo toca a tela, o jogo deve lançar um Raycast da câmera pra dentro do jogo, descobrir se acertou algum botão, e SE acertou, soltar a magia. Maravilha.

No entanto, sem delegates e eventos, a sua classe InputHandler está diretamente atrelada a sua classe SkillHandler, que gerencia o uso de todas as magias. Obrigatóriamente você precisa de uma referencia ao SkillHandler dentro do InputHandler, e quando um dedo bate em um botão, você chama algo tipo SkillHandler.UseSpell(2) onde 2 é o index do botão tocado.

Maravilha, funciona... mas e se agora você decidiu fazer uma tela de stats de jogo, então você quer marcar quantas vezes cada habilidade foi usada? E se agora você quiser que toda vez que o jogador use a magia X, uma luz mude de cor? E se agora você quer que comece a chover sempre que o cara use uma magia de água? Vai socar todas essas checagens no InputHandler? Vai deixar uma classe ser totalmente dependente da outra pra que tudo isso funcione direito?

Esse é certamente um dos inúmeros casos em que os delegates salvam o dia. O InputHandler deve ser responsável pelo Input e nada mais. As outras classes precisam simplesmente receber o input e tratar da maneira correta para saber o que fazer com aquele input. Sem delegates, seria necessário criar referência de todas as classes que possam precisar de input no inputhandler, para fazer chamadas diretas de métodos, ou pelo menos pra enviar mensagens para esses objetos. Mas com delegates... isso é tudo diferente, e na verdade, muito mais simples.

Bom, a primeira coisa a se fazer nesse caso é efetivamente criar um delegate na classe InputHandler, e atrelar um evento a este delegate. Isso é feito da seguinte forma:



Agora, para facilitar ainda mais as coisas, podemos considerar a classe InputHandler um singleton, afinal de contas nós queremos que ela centralize todos os inputs recebidos e apenas de as ordens para as outras classes, você jamais precisará de duas instancias dessa classe em uma cena. Para isso, como conversado neste post, vamos adicionar as seguintes linhas pra classe InputHandler:


E finalmente, para acabar a classe InputHandler, vamos adicionar uma chamada ao evento que foi criado anteriormente. Essa chamada deve acontecer no momento em que o botão da skill é pressionado, como por exemplo no código:


Agora, vamos trabalhar na classe SkillHandler. Ela deve efetivamente soltar a magia quando o botão for pressionado. O código aqui é bem simples, e a classe ficaria assim:


Mas o que estamos fazendo aqui? Bom, no OnEnable, isso é, quando essa instancia ficar ativa, nós estamos registrando essa instancia da classe no evento OnSpellUse, da classe InputHandler, e dizendo na hora do registro que o método a ser chamado é o método UseSpell(). Na prática, o que isso quer dizer é que sempre que o InputHandler chamar o evento onSpellUse(); como demonstrado um pouco acima, o método UseSpell() da classe SkillHandler será chamado automaticamente. Na prática, o InputHandler não sabe absolutamente nada sobre a classe SkillHandler, mas mesmo assim consegue chamar o método UseSpell() indiretamente.

Ainda na classe SkillHandler, é importante adicionar o seguinte código:


Dessa maneira, quando a classe SkillHandler for desativada por qualquer motivo que seja, ela se desvinculará do evento do InputHandler, liberando uma referência na memória, e assim o método UseSpell não será mais chamado pelo InputHandler quando o evento for chamado.

Seguindo a mesma lógica da classe SkillHandler, poderíamos criar uma classe chamada... sei la, WeatherHandler, que muda o clima de acordo com as habilidades usadas. O código dessa classe inicialmente seria bem semelhante ao código da classe SkillHandler:


Dentro do método ChangeWeather(), seria necessário verificar como efetuar a mudança do clima, pra que clima deveríamos mudar (chuva, sol, vento, etc), enfim, todas as checagens referentes a mudar o clima seriam feitas aqui. E, assim como UseSpell na classe SkillHandler, esse método será automaticamente chamado assim que o evento onSpellUse() for chamado no InputHandler.

É possível criar inúmeros registros em apenas um evento, e dessa forma fazer com que várias classes respondam.

Um projeto básico de exemplo está disponível aqui, com as classes mencionadas neste post. Qualquer dúvida ou sugestão, deixa um comentário! Se quiser me esclarecer sobre outros usos de delegates e eventos, eu fico muito agradecido!

Grande abraço,
Allan

Apresentando... Like a Boss!

E ai pessoal, tudo bem?

Bom, é fácil dizer que este até hoje não tem sido um blog de desenvolvimento. Infelizmente nós estamos tendo muito pouco tempo pra postar sobre o nosso trabalho por aqui, e isso acaba resultando em um blog rarissimamente atualizado, o que é muito triste.

"Tenho tanto trabalho pra fazer que nem consigo atualizar meu blog sobre o trabalho..."
Só não é mais triste que ver nossas outras mídias também tão pouco atualizadas, como Facebook e o Website, mas prometo que vamos trabalhar nisso a partir dessa semana, com um enfoque especial aqui no blog! Vamos tentar nosso máximo para fazer um post por dia contando nosso progresso diário em cima de nossos projetos, e todo final de semana vamos fazer um post com um recap e falando um pouco mais sobre o que planejamos fazer. Este por ser o primeiro de muitos, vai ser um post de introdução sobre as coisas das quais vamos falar, principalmente sobre nosso novo jogo.

Bom, antes de mais nada, relembrando, a algum tempinho atrás mencionei o jogo em que estamos trabalhando, Level Up: Heroes of Neverfail, para o Cartoon Network, ele está prestes a ser publicado para a América Latina e sendo traduzido para mais 5 línguas para ser publicado na Europa também. Estamos bem ansiosos pra saber como vai ser a recepção dos jogadores, e quando ele for publicado oficialmente, volto a comentar aqui!

Mas, existe um outro projeto no qual estamos bem empolgados em trabalhar que ainda nem mencionei aqui no blog (pelo menos essa versão), e que certamente vai ser o foco das próximas postagens... e o nome desse projeto é...

Qualquer semelhança com o logo de um jogo famoso é mera coincidência
Imagino que alguns de vocês que tiveram o saco de ver nossos posts mais antigos aqui no blog já estejam de certa forma familiarizados com a ideia deste jogo, que é muito simples: Você é o Boss. Você gosta de passar seus dias relaxando na sua sala maquiavélica, quando de repente 40 players sem ter mais o que fazer da vida saem matando todos seus amigos e estão loucos pra dançar em cima do seu corpo, enquanto roubam tudo que você juntou durante toda sua vida. Isso é, se você permitir.

A ideia do Like a Boss surgiu durante o Global Game Jam deste ano, quando fizemos uma versão para web/pc em 48 horas. Das 48 horas, passamos 9 horas apenas conversando e discutindo e pensando e elaborando e repensando...como mais detalhadamente descrito neste post, nossa ideia era sair de la com um jogo que a gente achasse legal e que pudesse vir a se tornar um jogo completo, e saímos de la com Like a Boss (que pode ser jogado neste link).

Simples, sem dúvida... mas ficamos muito orgulhosos, 48 horas mto bem gastas =)
No entanto, esta versão inicial era pra PC e apesar de na época estarmos apaixonados pela ideia do jogo, estávamos sem tempo de continuar a produção do mesmo. Estávamos trabalhando em cima do Knights Trial, em pé de fechar o contrato com o Cartoon Network, correndo atrás de 1000 coisas... infelizmente o projeto ia ter de esperar... até agora!

Voltamos a trabalhar no Like a Boss dia 1 de julho de 2013. Queríamos enviar uma versão jogável para o SBGames 2013, por isso voamos na produção. Começamos o projeto do 0, dessa vez pra mobile, então todos os modelos, scripts, tudo de tudo precisou ser refeito. Na verdade para conseguirmos otimizar o jogo para 40 inimigos simultaneamente, precisamos otimizar o jogo a um nível que nunca tínhamos otimizado antes. Mudamos completamente o estilo visual do jogo, mudamos o esquema de controle, mudamos... tudo =P menos a ideia central do jogo. E em 1 mês de produção paulera, nosso resultado foi esse:

Vídeo de gameplay enviado ao SBGames 2013. Impressionante como já mudou bastante desde então.

Na realidade nós ficamos muitíssimo satisfeitos com esse estágio alpha de desenvolvimento. Em apenas um mês conseguimos implementar 12 habilidades, 3 inimigos bem inteligentes, uma boa parte dos menus do jogo, 2 cenários, 1 chefe, 1 inimigo chefe... mas com certeza ainda faltava muito a ser desenvolvido. Na verdade, nós estimamos que este projeto levará em torno de 12 meses para ser completamente terminado, e ainda estamos no 3o mês de produção.

Warrior correndo. Ainda ta com o set inicial, noob.

Bom, como na versão inicial a ideia é que seus inimigos sejam os players, representados pelas classes tradicionais de players. Atualmente estão implementadas apenas 3 classes, Warrior, Archer e Priest, podendo ser Warrior Tank, Warrior DPS, Priest Holy, Priest Shadow e Archer DPS. Cada um deles possui 6 habilidades e fazem de tudo para se manterem vivos. Possuem um tempo de resposta, desviam de golpes, se curam, se ajudam. E claro, reclamam pra burro que os outros são noobs.

Os players vão ficando menos noobs com o tempo, graças ao farm desgraçado por item.
Diferentemente da versão original no entanto, estamos trabalhando em cima de vários sistemas de progressão. A progressão mais básica do jogo se da através do sistema de XP, bem tradicional. Ao matar players, você ganhar levels, com levels você fica mais forte. O jogo também contará com um sistema de itens mais complexo do que os outros jogos que já trabalhamos. Os itens terão qualidade (comum, raro, lendário, épico), e poderão ser de 6 tipos, Capacetes, Luvas, Botas, Torsos, Armas e Anéis, e podem receber upgrades e gemas que melhoram seus atributos.

No one knows what its like to be the bad man behind blue eyes...
Alem disso, outro sistema muito legal que pretendemos implementar em Like a Boss é o sistema de customização da sala de seu Boss. Como inicialmente você é apenas um NPC a ser morto para uma quest simples, sua sala é pequena e simples... mas conforme você vai provando sua força e derrotando mais e mais players, você conquista o direito não só de expandir sua sala mas também de posicionar armadilhas que podem ser combinadas com suas habilidades para efeitos devastadores nos jogadores.

A arena do Caveirão. Quantas armaduras não ficaram vermelhas nessa sala, quebradas pela arma do chefe...
Outra coisa que está sendo nova para nós e que pela primeira vez estamos trabalhando em um jogo com história! Não só é porradaria pra la e pra cá, mas os players e o próprio chefe contam a história do que está acontecendo no mundo do jogo e todas as suas ações não são apenas em vão. Atualmente, a primeira histórinha que o jogador tem contato é do chefe Skeleton King (o único implementado no momento), que esta tranquilo em sua sala da dungeon quando grupos e mais grupos de jogadores começam a aparecer e discutir uma certa quest que lhes foi dada pelo Coveiro, um NPC que vive do lado de fora de sua dungeon, e com o passar dos grupos Skeleton King percebe que o Coveiro NPC traidor é quem está oferendo uma recompensa por sua cabeça. Em outras palavras, é hora de sair da dungeon e mostrar pro Coveiro quem é o NPC mais foda. E assim, o jogador conhece o sistema de quests do jogo, tendo sua primeira missão de matar de uma vez por todas o coveiro, e aproveitar e dominar uma cidade pra expandir seu território.

O Coveiro... NPC que da quest pra matar NPC não é NPC de verdade... é PNC
Enfim, sinceramente essa é só a ponta do Iceberg, nós temos uma porrada de idéias legais pra implementar nesse jogo e vamos discutindo aqui no blog conforme formos implementando, mas desde já gostaria de pedir o feedback de vocês, sobre tudo, sobre qualquer coisa! Vamos fazer algumas sessões de teste nas próximas semanas, e pouco tempo depois vamos precisar de alpha testers que estejam interessados em nos ajudar, por isso se você quer saber mais sobre o projeto, entra em contato com a gente, ou aqui pelo blog ou pelo e-mail contact@firehorse.com.br.

Nos próximos dias vou fazendo updates pequenos aqui no blog sobre ferramentas, modelos, texturas que estão sendo implementados, e no próximo final de semana volto a fazer um post um pouco mais completo. Se tiverem dúvidas sobre qualquer aspecto de qualquer coisa, não só do Like a Boss, da um toque pra gente e podemos esclarecer as coisas aqui pelo blog.

Valeu pessoal, brigado pela atenção prolongada! =P
Abraços,
Allan

sábado, 10 de agosto de 2013

Level Up: Heroes of Neverfail

Bom dia pessoal, como vão as coisas?

Hoje, sábado, dia 10/8, decidi que estava na hora de fazer um novo post nesse blog. Sério, deve ter gente achando que a gente morreu em um acidente ou coisa do tipo... pq nossa página no facebook ta desde 6 de fevereiro escrito "Aniversario de 1 ano" hahaha e no blog o ultimo post foi dia 20 de abril... to até com preguiça de fazer a conta de quantos dias atrás isso foi...

Mas, ao contrário do que se possa imaginar, não só ainda estamos vivos, como nunca trabalhamos tanto nas nossas vidas. Nas ultimas semanas eu tenho dormido mais no escritório que em casa, umas jornadinhas de 72 horas de trabalho... coisa tranquila... haha mas, como diria Confúcio (ao menos de acordo com o google), "Escolha um emprego que você ama, e você nunca precisará trabalhar um dia na sua vida"

Esse cara manjava dos paranauê

E nesses meses e meses de trabalho... fizemos uma porrada de coisa! Mas, o que eu quero mostrar pra vocês hoje, é um projeto que esta em nossas mãos desde o início de março desse ano, e está agora nos detalhes finais como traduções, cutscenes e etc e tal... e o jogo é Level Up: Heroes of Neverfail. Em parceria com o pessoal do Cartoon Network, desenvolvemos este jogo para iOS e Android baseado na série Level Up, e sinceramente estamos muito contentes com o resultado!

Logo oficial do jogo

A série conta a história de alguns jovens que jogavam um jogo que é, basicamente, World of Warcraft do paraguai, e por motivos misteriosos, surgiram portais que trazem inimigos de dentro do jogo para o mundo real. (Pra ilustrar é mais fácil ver aqui: http://www.youtube.com/watch?v=CyMCPOIvJZU) Ao longo da série vários monstros vem para o mundo real e o os personagens principais, com as armas que conseguiram dentro do jogo, precisam fazer de tudo para detê-los.

Inicialmente, a proposta deste jogo era muito simples: um remake do Knights Trial com os personagens e enredo da série. No entanto, a gente queria entregar um produto mais acabado, mais divertido, que de mais vontade de jogar (uma vez que Knights Trial tem sérios problemas de repetição, dificuldade, etc). Pensamos em como poderíamos usar uma mecânica semelhante mas mudar a maneira de mirar as habilidades, e de reduzir a sensação de repetição do jogo, sem precisar triplicar a quantidade de conteúdo (em outras palavras, de tempo também).

Prestes a jogar com uma arma overpower e um chapéu lindio, este é Wyatt

A solução na verdade veio de várias maneiras. A primeira resposta veio da maneira mais óbvia pelo formato da série. Ao invés de controlar um personagem que pode comprar um monte de habilidades e basicamente se tornar o que quiser com qualquer combinação de magias possíveis, criamos três personagens (baseados nos personagens principais da série), cada um com sua especialidade. Dante, o melee, Wyatt, o "ranger" e Lyle, o mage. O jogador tem total liberdade para trocar de personagem e continuar a campanha enfrentando monstros e chefes, e na verdade é incentivado a jogar com os três personagens. Dessa forma existem três pequenos caminhos de progressão, até liberar todas as habilidades de cada um dos personagens, e uma variedade forçada de gameplay, com habilidades muito diferenciadas.

Shop do jogo. Lyle, nesta imagem bonitão com cajado overpower e chefe dos indios

O segundo grande problema do Knights trial é a mira das habilidades. Era necessário clicar no ícone  da habilidade, apareceria uma área de alcance ao redor do seu personagem, e você precisaria clicar na tela na direção desejada para lançar a magia naquela direção. O problema é que toda hora o jogador precisa ficar mirando cada hora pra um lugar, e em devices grandes (tablets em geral), o cara precisa ficar tirando a mão direita de cima das skills para mirar toda hora, o que se torna chato e cansativo muito rapidamente. Como a mecânica central continuaria a mesma, implementamos um sistema de auto-mira. Apesar de tirar uma parte que consideramos importante na interação, que é mirar e sentir aquele prazer de acertar na cara do inimigo por seu próprio mérito, reduziu drasticamente a complexidade de se jogar o jogo (que agora é voltado pra um público muito mais jovem), e ao aumentar o número de inimigos simultaneamente ainda existe aquela sensação de estar sendo atropelado por monstros que faz com que você queria explodir a tela inteira o mais rápido possível. No início estávamos um pouco... céticos, com essa mudança, mas sinceramente o resultado foi muito melhor que o esperado.

Dante apanhando que nem um coitado girando que nem loco

O terceiro, e MAIOR problema de Knights Trial do ponto de vista de design, é a repetição do jogo. Knights Trial foi desenvolvido em três meses em três pessoas, e na época ainda éramos muito... inexperientes (hoje ainda somos, mas menos =P). Pra reduzir o problema de gameplay repetitivo, precisaríamos adicionar muito conteúdo para o jogo original. Novas arenas, chefes, habilidades, modos diferentes de jogo... coisas extremamente trabalhosas de se fazer. Para este novo projeto, no entanto, nós teríamos praticamente o mesmo tempo de desenvolvimento, de março até o início de julho, e com certeza ia ser complicado aumentar o conteúdo em qualquer um dos aspectos acima. Mas, ao invés disso, decidimos implementar dois sistemas da moda: Sistema de missões (a la Jetpack Joyride), e, atrelado a ele, um sistema de recompensas (a la Team Fortress 2, com capacetes). Esse sistema adicionou um valor de replay no jogo absurdamente alto, sem a necessidade de gerar mais conteúdo. Sinceramente eu não sei se existe ALGUM jogo que NAO se beneficiaria com esse sistema. É legal, divertido, são micro objetivos, é rápido de sentir que você completou alguma coisa, é rapido de ver as recompensas... enfim, é... fantástico. Se você está trabalhando em um jogo e está com dificuldade de variar o gameplay sem ter muito trabalho... recomendo pensar num sistema de missões. Você vai sentir a melhora assim que implementar as primeiras 3 missõezinhas.

Dante, o segundo Ultimo Samurai
E por fim, outro grande ponto diferente de Knights Trial, é que ao invés de seguir o esquema de fases que o primeiro jogo seguia, que forçavam o jogador a jogar 5x na arena do deserto... 5x na arena da floresta... 5x na arena da caverna... que sinceramente enche o raio do saco, decidimos fazer um esquema de "Endless Campaign". Basicamente, o número de inimigo, o dano e a vida de cada inimigo é baseado no level do jogador, e as arenas são sorteadas aleatoriamente a cada partida. Em outras palavras, se alguem tiver vontade saco de jogar eternamente, o jogo vai ficar cada vez mais difícil e desafiador até o ponto que nem o Chuck Norris conseguiria passar da fase. Dessa maneira, o jogador não sente que ta toda hora jogando a mesma fase, os inimigos são mais variados que em Knights Trial (e mais bonitos, que também ajuda), o desafio é constantemente aumentado, e as fases que começam com 7-8 inimigos nos primeiros níveis do jogador, chegam até a 70-100 inimigos em torno do level 31 (última recompensa (no momento)). Juntamente com o sistema de missões, o jogador sempre tem um gameplay diferente. Cada personagem requer estratégias de jogo diferentes, e cada arena oferece desafios diferentes.

Wyatt, ainda com o chapéu mais lindio de todos, tacando granada na galera

Por fim, é seguro dizer que apesar de pra quem olha de fora, Level Up: Heroes of Neverfail possa parecer exatamente idêntico a Knights Trial, para nós que olhamos de dentro, códigos, modelagem, texturização... podemos dizer com segurança que é um jogo completamente novo, mais otimizado, mais bonito, com mais recursos, mais divertido e sem dúvida nenhuma mais finalizado e arriscaria até dizer mais divertido de trabalhar em cima.

Cenário da floresta no Unity. Se fosse mais low poly era um quadrado

O jogo está em seus estágios finais apenas num processo mais... burocrático por um tempinho já, mas espero ver ele publicado até o final do ano (na verdade eu gostaria de ver ele publicado hoje =P mas acho que no mínimo em setembro/outubro). Pra falar a verdade, esse vai ser nosso primeiro jogo oficialmente publicado, nã oda nem pra acreditar!!! Haha e apesar de ser um "advergame", um jogo por encomenda, que recebemos pra criar, é nosso filho tanto quanto qualquer outro jogo nosso, e eu estou ansioso pra ver como vai ser a recepção do público geral ao jogo.

Lyle, agora de legionário, tacando fogo na galera

Nos próximos dias (vou fingir que isso seja verdade) quero fazer um novo post falando sobre nosso novo projeto, um jogo próprio que estamos trabalhando a apenas um mês em cima, mas que estamos extremamente empolgados em fazer... quem encontrou com a gente no SPIN que teve agora já sabe que jogo estamos falando (ou pra quem olhou a lista inteira de jogos do sbgames =P) mas pra quem ainda não viu... mais informações em breve! Vou tentar seguir uma promessa que fiz a muito tempo atrás com o Knights Trial, de fazer posts sobre esse novo projeto constantemente, discutindo novas features, pedindo feedback, discutindo maneiras de resolver problemas e basicamente a porra toda.

Espero poder escrever de novo em breve, e por favor, se você teve saco de ler até aqui hahah deixa sua opinião sobre o jogo nos comentários!

Abraços,

sábado, 20 de abril de 2013

Unity C# - Singleton

E ai pessoal, tudo bem?

Bom... eu ainda não posso falar sobre os projetos em que estamos trabalhando... mas como eu to com um tempinho livre, achei que podia ser legal fazer um tutorialzinho de uma coisa que é EXTREMAMENTE útil, e que eu sei que não é todo mundo que usa... Singletons.

Antes de continuar, gostaria de dizer que esse tutorialzinho básico será em C# (que diga-se de passagem eu recomendo fortemente se você usa Unity), e é bem simples, pode ser útil pra qualquer um, sem exagero.

-Singleton

De acordo com o Google Images, a definição de Singleton é:

Me vê 2 shot de Singleton por favor...

No entanto, em programação, a definição é um pouco diferente. Eu já li definições de Singleton que fazem com que você tenha medo de saber o que isso é de verdade... mas resumidamente é a coisa mais simples do mundo: É um código que garante que só exista UM objeto de sua classe e é facilmente acessível justamente por ser único.

Por exemplo... vamos supor um Tower Defense. Em um jogo desse tipo (e MUITOS outros tipos) você provavelmente vai ter uma classe que seja WaveHandler ou qualquer coisa do tipo, enfim, UM ÚNICO objeto (instancia da classe) que é responsável por controlar o spawn dos inimigos, por wave, por tempo, por seja la o que for. Essa classe mede quantos monstros estão vivos, quantos faltam pra wave acabar, cria os inimigos... enfim, esse cara sozinho eh quem manda no sistema de spawn. Então, usando um código bem simples, essa classe seria +- isso:

Um código bem tosco, não use isso como exemplo pra fazer o seu código de spawn =P
Se eu jogar esse código em um GameObject vazio, indicar pra ele qual o prefab, qual o ponto de spawn, quando eu der Play imediatamente ele vai criar 30 copias do prefab no ponto de spawn. Ai, minhas torres overpower vão matar os 30 bichos e é bem fácil saber o que vai acontecer depois.... absolutamente nada. A cada bicho morto, eu não to avisando pra minha classe WaveHandler que um bicho morreu (inimigosVivos - 1), então a checagem no update nunca vai dar 0. Pra minha classe ficar sabendo quando um inimigo morreu...você pode fazer de várias formas... criar um Array, colocar os inimigos nele e ficar vendo se eles ainda estão vivos... ou criar uma referencia a essa classe dentro de cada inimigo pra quando eles morrerem eles mesmos dizerem inimigosVivos --... pode criar uma classe estática que mantem controle dos inimigos vivos (é o que eu fazia até então)... OU, você pode simplesmente tornar sua classe um Singleton!

Pra isso, o código ficaria assim:

A implementação que eu mais gosto. Existem outros métodos de fazer um Singleton, mas esse é o mais simples.

Mas o que esse pedaço de código faz na prática? É muito simples... agora, de qualquer outro script do jogo, qualquer um, eu posso escrever isso aqui:


Entenderam a mágica? Agora eu não preciso de um array com todos os bichos pra ficar vendo se alguém morreu... não preciso de outra classe... não preciso criar uma referencia... arrastar no inspetor... basta eu dizer WaveHandler.Instance.qquerCoisaQueEuQuiser e eu estarei acessando o meu script WaveHandler, e a única coisa que eu preciso garantir é que esse script só exista UMA VEZ na cena.

E é basicamente isso! Esse é um tutorialzinho bem básico, assim que eu tiver um tempo de novo vou fazer um tutorial falando de Delegates e Eventos e como eles podem facilitar sua vida.

Espero que seja útil pra alguém, e qualquer dúvida deixa um comentário ou manda um e-mail pra gente!
Abraços,

quarta-feira, 3 de abril de 2013

Colhendo a Plantacao

E ae pessoal, tudo bem?

Mais de um mês se passou do nosso ultimo post, que por sinal foi numa data muito especial pra gente aqui da Fire Horse, quando completamos 1 ano de vida.

Hoje, depois de ver o comentário do sr Jose naquele post (na verdade eu vi no dia que ele comentou, comecei a escrever naquele dia... mas só estou terminando hoje =P) me senti inspirado pra voltar aqui e dar noticias de vida sobre como andam as coisas, e ainda na mesma linha do post de 1 ano, achei que seria legal fazer uma comparação de como as coisas tem sido pra gente agora, e como foram 1 ano atras, acho que estamos finalmente colhendo o que plantamos.

A verdade eh que a completa ausência aqui do blog tem um motivo: nos estamos atolados de trabalho.

Na realidade as pastas estão no Dropbox, mas é quase isso
O ano passado foi um ano como nenhum outro em nossas vidas. A gente nunca esperou que ia ganhar alguma coisa assim, no nosso primeiro ano, na verdade a gente nem sabia se conseguiria criar um jogo que realmente rodasse em celulares, enfim... foi muito melhor do que esperávamos.

No entanto, financeiramente falando... não foi um ano fácil  Nosso custo de trabalho nesse período, sem empresa formalizada, sem nenhum custo fixo... foi realmente muito baixo, mas alimentação, transporte... enfim, vida, tem um custo de toda forma, e apesar de alguns prêmios, tudo foi gasto ou para pagar dividas ou adquirir novas dívidas (como comprar Unity). Resumidamente, fechamos o ano no negativo (financeiro pelo menos).

Mas, todo o trabalho definitivamente não foi em vão, e com certeza valeu nosso esforço. Deixamos de ser apenas 3 muleques que acabaram de se formar, pra ser alguém que já mostrou que consegue fazer um jogo, não que sejam jogos do outro mundo, mas jogos que funcionam, que tem mais valor do que palavras... e graças a principalmente Knights Trial e Commander Flag, hoje estamos trabalhando em 3 projetos simultaneamente, e melhor, recebendo pra trabalhar neles!

Não estamos nadando em grana, na verdade se você precisar de um jogo barato, entra em contato com a gente que tamo quase de graça hahaha, infelizmente não posso falar de nenhum dos três projetos aqui por preferências dos clientes, mas o que posso dizer é que são projetos muito legais, dois deles são jogos de verdade enquanto o outro é mais burocrático (inclusive, precisamos de gente que manje de Construct 2 para este burocrático, é chatinho mas paga bem, se tiver interesse contact@firehorse.com.br). Parece até mentira mas eu finalmente posso dizer que estou vivendo de fazer jogo, e não pagando pra fazer jogo!

Enfim, esse post não é la muito informativo, mas os projetos devem terminar entre o começo e o fim de Maio e quando estiverem prontos podem ter certeza que vamos postar uma porrada de coisa sobre eles, sobre o processo... enfim, de verdade, só de ver o resultado, no ponto em que eles estão hoje, comparando com nossos jogos anteriores... é impressionante o quanto melhoramos de lá pra cá, nada realmente ensina mais do que praticar... e eu espero poder continuar fazendo jogos por muitos e muitos anos, quem sabe um dia a gente ta bom o suficiente pra fazer um jogo que presta? =P

Só pra terminar queria agradecer ao pessoal que teve saco de ler nosso blog, nossos posts, e muito muito feliz mesmo de ver que o pessoal curte nosso trabalho, espero num futuro próximo ter muito mais coisa pra mostrar, e também ver o trabalho desse pessoal que comentou por aqui. Curtam nossa página no facebook e assim que tiver mais o que dizer sobre os projetos a gente avisa por la sobre novo conteúdo por aqui!

Grande abraço,

quarta-feira, 6 de fevereiro de 2013

Aniversário de 1 ano da Fire Horse!!!

E ai pessoal, tudo bem?

Já faz mais de uma semana do nosso ultimo post, e por isso peço desculpas. As coisas tem sido bem corridas no aspecto burocrático das coisas então não estamos tendo toneladas de conteúdo pra postar, mas, hoje, dia 6 de fevereiro de 2013, a Fire Horse Studio completa UM ANO de existência!!


Pois é... exatamente um ano atrás eu (Allan), o Fernando e o Danilo começávamos a trabalhar juntos como uma empresa... uma ideia que, acredito eu, como a maioria dos estúdios de games do Brasil e talvez do mundo, surgiu de um sonho em comum... a ideia de viver trabalhando com o que a gente ama, criar jogos. Se você tem curiosidade de saber um pouco mais de onde viemos o que fazíamos antes e tudo o mais... continue lendo, mas já aviso, o post é grande!

Na época do TCC nós nos sacrificamos bastante... cometemos o erro clássico de fazer um projeto que devia ser desenvolvido por 50 pessoas com 10 anos de experiência e não 7 neguinho que abriam a engine pela primeira vez... o que resultou em noites e mais noites sem dormir, aprendendo, aplicando, errando, bugando e testando pra chegar num ponto que nós estivéssemos satisfeitos com o jogo...

Todo esse sacrifício valeu a pena, o jogo estava muito completo e apesar de estar muito longe do que gostaríamos que ele fosse, estava muito bom considerando que era nosso primeiro projeto de verdade em Unity. O jogo em questão se chama SWOP!


E foi ai que algo ficou perfeitamente claro... noites sem dormir... perda da vida social (isso é, paramos de jogar... haha)... meses sem ver a luz do sol... haha e ainda assim, o orgulho de ver o resultado final não só compensava por tudo isso, mas era uma sensação... incomparável. De repente, estava óbvio, nós tínhamos certeza absoluta que o que queríamos fazer da vida era sofrer, suar e brigar, mas acima de tudo, criar jogos.

A partir desse momento conversamos, montamos uma equipe mais reduzida (infelizmente não tinha como mantermos o grupo inteiro do TCC até porque cada um levava sua vida, tinha seu trabalho) e decidimos sair de nossos empregos e nos empenhar totalmente nessa empreitada, que sabíamos que não seria fácil, mas sabíamos também que se conseguíssemos fazer dar certo, a recompensa iria muito além de dinheiro.

Naquele tempo nós tivemos a sorte de conhecer o sr Fabio Yoshioka (que até então era meu chefe), que decidiu abrir as portas para nós usarmos a infra estrutura da empresa dele (NextPage). Compramos os computadores, trouxemos para o escritório (que é muito bom, próximo ao metro Praça da Arvore), e oficialmente, naquele momento, a Fire Horse ganhava vida.

Registrando o momento com estilo... =P
A maior experiência que tínhamos trabalhando juntos foi o SWOP, que concluímos no final de 2011, e não possuíamos um grande portfólio cheio de trabalhos de qualidade para mostrar pra futuros clientes... e nunca tínhamos desenvolvido nada para mobile, nem mesmo tínhamos muita experiência com Unity pra falar a verdade... Nesse ponto nós percebemos que existia MUITO trabalho a ser feito... criar um website, registrar um domínio, uma página no facebook, e mais importante que isso, desenvolver um projeto rápido e simples para mostrarmos o que éramos capazes de criar.

Por sorte, antes mesmo de decidirmos a ordem de todas as coisas e começar a trabalhar, surgiu uma oportunidade de fazer uma maquete 3D para uma agência de publicidade de uma concessionária Toyota, um trabalho que veio na hora perfeita. Queríamos recuperar o dinheiro investido nas máquinas e por ser apenas uma maquete 3D, somente o Fernando ficaria preso no job, enquanto eu e Danilo poderíamos dar continuidade nos outros pontos.

Maquete ia ser usada num manual de treinamento, por isso precisava de muitos detalhes
Devido a grande quantidade de detalhes da maquete, o projeto levou aproximadamente um mês para ser concluído, e nesse tempo o Danilo ainda estava trabalhando na empresa anterior o que reduzia bastante o tempo que ele podia trabalhar com a gente, e eu criava um aplicativo de testes para mobile, um catálogo para a Fila que poderia ser atualizado automaticamente com novos itens e tudo o mais, para vendedores levarem nos clientes e estarem sempre atualizados sem a necessidade e imprimir constantemente catálogos gigantescos. No final das contas o projeto do catálogo não foi adiante, e percebemos que era hora de pensar naquele projeto de jogo rápido de produzir, para começarmos a criar um portfólio direcionado a games.

Depois de muito pensar, no começo de abril de 2012, surgiu então o projeto Commander Flag. A ideia central do jogo era muito simples, era em grande parte um jogo 2D exigindo muito pouco do tempo do Fernando, seria um projeto fácil onde poderíamos conhecer na prática as limitações, problemas e qualidades de se desenvolver para mobile, e ao mesmo tempo era possível adiantarmos as outras questões pendentes (site, pagina no facebook, etc).

Na época, o menu era um quadrado marrom de fundo e um branco escrito play na frente...
No começo de maio, aproximadamente um mês depois, nós já tínhamos nossa página do facebook criada, já possuíamos o domínio http://www.firehorse.com.br, nosso website temporário no ar, e o projeto Commander Flag já era jogável, ainda com muita coisa inacabada como menus, pouquíssimas fases e inimigos, mas dava para testar com os usuários. Estávamos recebendo um feedback tão bom sobre o jogo, mesmo nesse estado primário, que nessa época decidimos tentar um crowdfunding no Kickstarter. O jogo parecia ter futuro, e se conseguíssemos que essa tentativa desse certo, teríamos uma folga financeira e maior liberdade pra trabalhar.

Era feiinho e em Flash... mas melhor que dizer "não tenho site"
Durante esse mês em que o Commander Flag estaria tentando arrecadar fundos para o termino de seu desenvolvimento, descobrimos que haveriam 4 competições de desenvolvimento de games que tinham seu deadline em 31 de Agosto de 2012 (são elas, Festival de Jogos Independentes do BGS, Festival de Jogos do SBGames, Square Enix Latim America Game Dev Contest e por fim Festival de Jogos do BIG), e como Commander Flag estava meio que em espera e era um jogo muito simples, decidimos iniciar o desenvolvimento de outro projeto, muito mais complexo, que precisava ser desenvolvido em no máximo 3 meses (Maio, Junho e Julho) para enviar para as competições. Queríamos algo que saltasse mais aos olhos, enfim, algo que nos daria uma chance melhor de, talvez, quem sabe, ganhar alguma coisa... e foi ai que começou o desenvolvimento de Knight's Trial.

Refizemos esse personagem umas 200x até chegar nesse...
Passamos praticamente o mês de Maio inteiro só batendo a cabeça no projeto do jogo, imaginando como ele funcionaria... inicialmente a ideia veio com base no SWOP (nosso TCC) mas logo percebemos que era impraticável ter a mesma mecânica em um celular ou tablet... então pensamos e pensamos e pensamos... até que no começo de Junho, finalmente, começamos a trabalhar na prática. Knight's Trial é um projeto bem ambicioso e a gente queria ter o máximo possível de coisas prontas até agosto, por isso, trabalhamos forte em cima do jogo, batemos diversas vezes nas limitações dos devices (queríamos que todos os celulares equivalentes ou superiores ao iPhone 3GS fossem capazes de rodar o jogo), aprendemos nesses dois meses (Junho e Julho) mais do que na faculdade inteira, mais do que na vida inteira eu me arriscaria a dizer... Foi puxado, mas com certeza foi essencial pra gente. No fim de julho, estávamos com um projeto encaminhado, claro, ainda era um demo, mas já tinha algumas arenas, chefes, inimigos... enfim, já estava "próximo" do estado atual do jogo.

Na versão enviada pros concursos, o menu ainda era assim
Finalmente chegou Agosto... o projeto do Commander Flag não deu certo no Kickstarter (mas fizemos alguns contatos bem interessantes graças a ele), e o projeto do Knight's Trial estava encaminhado, pronto para fazer um beta teste mais oficial. Marcamos uma seção de beta test na faculdade Anhembi Morumbi, onde os alunos poderiam jogar por 1 hora o jogo e dar feedback sobre bugs, problemas, coisas chatas e etc, e saímos de lá com uma lista grande de coisas para corrigir, mas com pelo menos 95% dos testers empolgados em continuar jogando e acompanhar o projeto porque tinham adorado o jogo. Foi muito legal pra gente, escolhemos os principais problemas e começamos a corrigir. Nesse ponto, estávamos na primeira semana de agosto, e lá pelo dia 15 depois de corrigir os problemas mais graves achamos que seria uma boa pegarmos de volta o Commander Flag, simplificar algumas coisas, terminar de implementar outras, e tentarmos acabar tudo até o dia 31 de agosto, para podermos inscrever os 2 jogos nas competições. Foram 15 dias bem puxados, pois Commander Flag estava muito longe de estar pronto, mas conseguimos implementar vários inimigos diferentes e fases novas e enviar para as competições.

Os 4 festivais que marcaram 2012 pra gente
No final de agosto, pela primeira vez, nos encontramos um pouco perdidos. Tínhamos muito trabalho a fazer nos dois projetos de jogos, tínhamos outras idéias de jogos, mas ainda não tínhamos faturado absolutamente nada além do trabalho da Toyota. Estávamos cansados pelos meses de trabalho puxado de desenvolvimento nos jogos e achamos que era uma boa hora para reformular nosso website. Alias, vale notar que durante esse período estávamos atualizando facebook, criando imagens para por no projeto do Kickstarter, trocando o logo da empresa, enfim... teve muita coisa além dos próprios jogos... então trabalhar no site era, pra ser sincero, uma folga. Depois de uns 10 dias mais tranquilos, lá pro meio de Setembro, estávamos com nosso novo website pronto, o que está no ar até hoje! Além de muito mais bonito, não é em Flash (o que é péssimo pra alguém que diz que faz coisas para mobile)

E foi ai que começamos a receber boas surpresas. Nossos dois jogos estavam concorrendo nos 4 concursos (não enviamos Commander Flag para o BGS pois tinha uma taxa a ser paga... e a gente estava muito pobre (alias, a gente ESTÁ muito pobre =P)) e o feedback das competições veio antes do esperado. Logo, ficamos sabendo que Knight's Trial era um dos 3 finalistas como Jogo Independente no BGS, e havíamos recebido um e-mail da Square Enix dizendo que nosso jogo tinha passado da primeira fase de avaliações. Resumimos o trabalho no Knight's Trial, refizemos a maior parte das interfaces, resolvemos mais bugs da lista que recebemos naquele beta test (ainda faltavam vários (menores, mas vários)), enfim, adiantamos um pouco mais o jogo. No começo de Outubro ocorreu a BGS, e estávamos lá pra saber o resultado do Knights Trial. Quando o apresentador disse "e o vencedor é.... Knights Trial!" foi.... não sei nem descrever o que sentimos na hora. Se desse pra alguém ver a felicidade que a gente estava ia dizer que tínhamos acabado de ganhar a mega-sena acumulada... foi surpreendente, foi animal, foi MUITO BOM!

Allan, Danilo e Fernando, respectivamente
Aquele dia ganhamos um iPad, mas muito mais do que isso, ganhamos confiança de que alguma coisa a gente devia estar fazendo certo. Na mesma semana, recebemos outro e-mail da Square Enix dizendo que Commander Flag era um dos finalistas da competição e que eles queriam que a gente traduzisse o jogo para espanhol o mais rápido possível pra poder colocar na App Store e fazer o teste com o público... e quando lemos esse e-mail... a gente nem acreditou! Dentre sei la quantos jogos da América Latina inteira, o nosso era um dos 8 finalistas!! Era muita felicidade pra pouco coração... pegamos o projeto do Commander Flag e implementamos as traduções e mais algumas mudanças antes dele ser publicado, e no comecinho de novembro, o jogo foi pra App Store publicado pela Square Enix. Independente do resultado que saísse de lá, a gente ainda não podia acreditar que, mesmo que só para o concurso, um dos nossos 2 jogos estava sendo publicado pelos caras...


Assim que mandamos o jogo pra Square Enix, começou o SBGames 2012, em Brasília. No começo a gente não sabia se ia até la, a gente queria muito mas passagens, hotel, transporte, etc, tudo tem um custo... e pra gente que não tava ganhando nada, era complicado, mas decidimos ir do mesmo jeito, só eu e o Danilo. Com certeza foi um evento que valeu MUITO a pena, foi muito legal conhecer de perto os outros indies, ver o pessoal expondo os jogos... deu um probleminha com os jogos nos PCs que estavam la, mas foi muito legal do mesmo jeito, as apresentações, algumas palestras muito interessantes... enfim, com certeza valeu o dinheiro da viagem. Além disso, nós tínhamos enviado os dois jogos para a competição e a gente precisava estar lá pra que nossa inscrição fosse válida. Apresentamos nossos dois jogos no palco em um minuto, assim como dezenas de outros participantes, e conforme o desenrolar do evento acompanhamos muita coisa, até que finalmente chegou a hora das premiações.

Nesse momento eu ainda não sei explicar por qual motivo, o apresentador estava um tanto apressado... (em outras palavras, apressado pra caralho) e ficou meio que uma confusão enquanto ele falava as categorias e os premiados... foi muito legal ver de surpresa que tinha uma premiação em dinheiro pra galera, mesmo que "simbólica", e mais legal ainda ver como tinha vários jogos bons participando da competição e ganhando prêmios. O cara falou e falou e falou e deu vários prêmios e a gente não tinha ficado nem entre os finalistas em nada, pensamos "ok, acontece, a galera realmente ta com uns jogos bem legais mesmo" até que chegou a categoria de Jogos em Desenvolvimento. A gente talvez por erro da nossa parte, nem sabia que tinha essa categoria, e muito menos que nós só concorremos nessa categoria, mas quando o apresentador enrolado falou "Em 3o lugar... Knights Trial... Em 2o lugar... ??? (foi mal, eu esqueci =P) e em primeiro lugar... Commander Flag!" nos sentimos da mesma forma que no BGS... é difícil de explicar a sensação... é muito legal... e os dois jogos entre os 3 melhores? Nossos 2 primeiros jogos da vida?? Foi muito foda...

Diferentemente da premiação do BGS, tinha até outras pessoas na sala! =P
Voltamos pra São Paulo felizes da vida, e nesse ponto já sabíamos que nossos jogos não tinham sido selecionados no BIG em nenhuma categoria, mas, que participaríamos do Dev Island. Logo depois de voltar, recebemos outra notícia da Square Enix, dizendo que eles gostaram tanto dos jogos enviados (mais de 1000 jogos ao todo) que fariam uma "repescagem", selecionariam mais 9 ou 10 jogos para fazer uma segunda rodada de finalistas, e que dentre esses jogos estava Knights Trial. Mais uma vez, bateu um orgulho imensurável... até agora havíamos desenvolvido apenas 2 jogos, e os dois estavam sendo nomeados e ganhando prêmios e pra gente tudo aquilo parecia tão surreal que era difícil de acreditar. Voltamos a trabalhar no Knights Trial para corrigirmos alguns bugs para a Square Enix, pois eles iriam publicar o jogo também da mesma forma que o Commander Flag, e pediram tradução para espanhol e algumas correções.

Novo menu do jogo, já traduzido para espanhol
Continuamos trabalhando no jogo até o início de Dezembro, quando ele seria publicado. Assim que terminamos o que precisávamos para a competição, já estava em cima da hora para o Dev Island, o Game Jam do BIG Festival. Recebemos o tema de antemão, "Comer, Beber e Jogar" e pensamos, pensamos, pensamos... não só o tema era maldito, mas a gente precisava colocar alguns outros "detalhes" no jogo. Eles divulgariam 2 detalhes antes do evento, mais dois no início do evento e cada equipe poderia eliminar um. Os dois primeiros eram "O jogo precisa ter um sofá vermelho que faça parte da mecânica" e "Precisa ter um ponto turístico de São Paulo"... Sério, Comer, Beber e Jogar com sofá vermelho e um ponto turístico de São Paulo? Eu quase pedi um pouco de crack pro Danilo (que ou usa crack ou tem Alzheimer)  porque estava difícil de ligar os pontos...

Por fim das contas, conseguímos elaborar um joguinho que sinceramente eu fiquei muito orgulhoso, chamado "Ready, Eat, Fight!". Sem entrar em muitos detalhes (que podem ser encontrados nesse post e o jogo jogado nesse link), posso dizer que foi desenvolvido 100% em 24 horas, sem levar nada pronto, nem imagem nem efeito sonoro nem nada... e estava muito bonitinho, 10 personagens bem animados, cenário trabalhado, enfim... eu sinceramente não imaginava que a gente conseguiria produzir tudo nesse tempo, e na verdade até sobrou tempo, pelo menos umas 8 horas que ficamos bem de leve, dormindo... e foi nesse ponto que eu percebi como a gente evoluiu nesse ano... de praticamente nenhuma experiência com Unity, pra conseguirmos fazer um jogo assim em apenas 24 horas... foi um grande marco pra gente.

Menu do jogo Ready, Eat, Fight! (como da pra perceber pelo Ready Eat Fight gigante da imagem)
Esqueci de comentar ai pra cima, mas nós também fomos chamados para participar da Demo Night, que também ocorreu no BIG, que era um evento onde tivemos a oportunidade de mostrar nosso jogo (Knights Trial), fazer um pitch, como se estivéssemos vendendo para investidores, e depois ouvir a opinião de especialistas sobre a apresentação em si, sobre o que é necessário melhorar, o que esta bom, etc. Essa foi outra experiência fantástica que tivemos. Em apenas 7 minutos tentar vender o jogo, mostrar como ele pode ser rentável, como pode ser divertido... não é algo que a gente tenha muita experiência em fazer... mas montamos uma apresentação e falamos bastante nesse tempo, mostramos as principais características do jogo, o que ainda pretendíamos implementar além do que já existia, enfim, vender o projeto do jogo.

Ouvindo o feedback dos profissionais
O que foi muito legal do Demo Night foi que deu uma nova percepção pra gente. Knights Trial é um jogo com uma série de elementos que diferenciam ele de outros jogos do mesmo estilo, no entanto, quando mostramos o jogo, ou até mesmo quando trabalhamos em novas ferramentas para o jogo, a gente não da ênfase suficiente pra esses aspectos, e quem vê de fora acaba pensando "Hm... ok... tem uns 10 mil iguais a esse..." mas quem joga, sente as diferenças. Claro, é um jogo em que você anda por ai e mata bixinho, como trocentos milhões de outros jogos, mas a maneira de fazer isso, as possibilidades que o jogo oferecem, são bem diferentes. Arremessar os inimigos pra longe, combinar magias, chefes complexos... são coisas que estão lá, mas se não focamos nelas ao mostrar o jogo, as pessoas não percebem. No geral, o feedback do Demo Night foi muito bom com relação ao jogo em si, mas esse foi nosso maior aprendizado no evento.

Cara do Chris Avellone jogando Knights Trial... o cara participou de alguns projetos pequenos sabe... Fallout 2... Neverwinter Nights 2... Fallout New Vegas...
Mais tarde, ainda em Dezembro, recebemos o resultado da Square Enix e infelizmente Commander Flag não foi o vencedor da competição. Ganhamos um prêmio por ser um dos finalistas, mas de toda forma, encaramos como uma enorme vitória ter nosso jogo entre os 8. Na verdade, foi tão legal que conversando com o pessoal da Square acabamos conhecendo o sr Yasuhiro Fukushima, simplesmente o cara mais fodão da Square Enix... haha eu não sou de pagar pau pra muita gente... mas a gente tem que respeitar um cara que é um dos mais ricos do Japão, fundador de uma das maiores empresas de jogos do mundo... conversamos sobre nossos jogos, pedimos conselho sobre o mercado e os próximos passos, foi MUITO foda. O cara não só manja como é muito simpático, agradável  e diria até paciente em ficar respondendo nossas perguntas!

Sr Fukushima da Square Enix... um senhor extremamente simpático
Logo depois (ou um pouco antes, não me lembro =P) foi a festa de premiação do BIG. Nós não sabíamos o que ia dar, a gente ficou MUITO feliz pelo nosso jogo mas as outras equipes também fizeram trabalhos muito bons. É sempre meio chato perder, mas a gente estava consolado pelo fato de que se a gente não ganhasse, com certeza o vencedor ia ter merecido o prêmio, porque não tinha jogo ruim entre os participantes. Acabou que durante o a festa descobrimos que não tínhamos ganhado, como já descrevi ai em outro post mais antigo aqui no blog, mas tudo bem, porque não só tivemos a honra de participar (entre apenas 4 equipes), como percebemos o quanto evoluímos nesse tempo.

Pra fechar Dezembro com chave de ouro, a gente achou que estava mais que na hora de criar o nosso blog, que é esse que você está lendo agora. Mais precisamente críamos o blog no dia 21/12/2012... "o fim do mundo"... e preciso dizer que foi uma ótima decisão. Não porque milhões de pessoas entram e leem todo dia os textos colossais que eu escrevo, mas porque é interessante documentar e receber comentários sobre nosso trabalho, e fazer as pessoas conhecerem um pouco mais de quem somos.

O final de Dezembro e o início de Janeiro foram mais tranquilos, trabalhamos mais no Knights Trial, fizemos alguns posts aqui no blog sobre novas features, como fizemos elas... mas o momento mais marcante foi, com certeza, o Global Game Jam, que aconteceu nem duas semanas atrás. Participamos na FATEC em São Caetano do Sul, e a experiência que tivemos ta bem descrita nesse post (mais fácil ler lá que reescrever 300 páginas =P) mas resumidamente, foi MUITO foda. Com base em tudo que aprendemos durante o ano, tudo que evoluímos, os conselhos do sr Fukushima, o que vimos que deu certo, o que não deu certo, enfim... tudo... críamos durante o evento o Like a Boss!, um jogo em que ao invés de tentar eliminar um chefe épico pra catar um item novo, você precisa eliminar um grupo de players gananciosos que vieram atrás do seu tesouro (não, não o Kiko do Chaves), pois você é o chefe.

Tela inicial do jogo Like a Boss!
Mais uma vez foi muito puxado o desenvolvimento, mas dizer que ficamos felizes com o resultado é muito pouco. Quando teve gente que mandou e-mail pra gente só pra dizer "gostei muito do jogo de vocês" ahha já achamos fantástico, em 48 horas conseguímos criar um jogo que teve gente que se deu ao trabalho de parabenizar por e-mail... mais fantástico ainda foi quando vimos que alguém se deu ao trabalho de gravar um vídeo pra relatar um bug no jogo pra gente... haha e ainda mais fuderástico ver que o jogo saiu em duas listas de "melhores jogos brasileiros do Global Game Jam" (a lista do Arena IG e do GamesFoda) ao lado de jogos de um pessoal que ta na cena indie brasileira há anos... foi realmente muito bom.

Bug que o jogo não termina no Like a Boss! Yay! =P

E agora, estamos ai! Espero que ainda em fevereiro teremos algumas grandes notícias mas como dá azar falar antes de fechar... haha

Espero que vocês tenham gostado desse post, essa é nossa trajetória até agora e com certeza é só o começo. Pra quem está começando, se formando agora ou ainda na faculdade... o que eu posso dizer é, se você tem um investidor, ou condições de se manter por algum tempo, arrisca, tenta fazer dar certo, porque com muito trabalho, é possível. A gente ainda não ta faturando milhões, na verdade pra ser bem sincero nós estamos na linha entre o positivo e o negativo haha, mas a gente olha pra trás e vê tudo que já fizemos... os prêmios que já conquistamos... e ganhamos força pra acreditar que dá. E mesmo que daqui a alguns anos a gente precise fechar a empresa porque simplesmente não deu certo, acredito que falo por mim e pelos outros, esse ano foi excepcional, uma experiência que valeu mais do que qualquer salário, qualquer dinheiro, que vou levar comigo até o fim da minha vida.

E que 2013 seja melhor que 2012, e que mais indies apareçam no Brasil e mostrem que da pra fazer muita coisa legal mesmo com pouco investimento, e eu espero encontrar o pessoal de novo nos eventos que voltam no final do ano!

Um grande abraço de toda a equipe Fire Horse!