SBGames 2011: Damian Isla – Hey indie Developers.

Primeiramente quem é Damian Isla? Estamos falando do diretor de tecnologia da Moonshot Games, que começou sua carreira no laboratório do MIT, e trabalhou em projetos como Halo 2 e 3, entre outros. E o seu mais novo projeto é o Fallen Frontier que desenvolve como indie.

Damian deu uma palestra sobre o por quê desenvolver a própria game engine e as vantagens, tanto em custos, como em tempo de desenvolvimento do game em si. Na verdade, ele mostra uma ponto de vista que montar a sua própria engine já é fazer o game.

“Hey indie developers: it’s a Great Time to Build an Engine”.

Ter o controle de tudo que se produz, e otimizar a Engine para as necessidades do Game e para as equipes de produção, são alguns dos aspectos que Damian defende para se produzir uma engine. No jogo Fallen Frontier, Damian desenvolveu uma interface que permite aos artistas pintarem a iluminação e desenvolver o cenário como se utilizasse um editor gráfico como o Photoshop.  Além de desenvolver ferramentas especificas para o jogo, como physics, e esqueletos para as animações. Essa abordagem aumentou o desempenho da equipe durante a produção.

Se pararmos para pensar um pouco nas engines tradicionais como a Cry Engine, Unreal, e até mesmo a Unity ou a Torque, qual a vantagens delas? São engines genéricas que dão suporte para desenvolver todo o tipo de jogo. Mas qual seria a curva de aprendizagem para uma engine como a Cry Engine? E a quantidade de ferramentas que vão ser realmente utilizadas para se produzir o game? Sem contar o custo e a liberdade para alterar a tecnologia.

Essas perguntas nos levam a alguns pontos como: tempo de produção, conhecimento da equipe no software e otimização do game. Damian levou em torno de um ano para produzir a engine e, segundo ele, todos os processos de desenvolvimento de um game tem que se tornar uma experiência única da equipe. A engine tem de ser desenvolvida junto com as pessoas que vão utilizá-la. Ela será criada a partir do Game Design, passando por artistas, designer de level e som por exemplo.

A equipe de Fallen Frontier é formada por três pessoas, mais um produtor. Se olharmos o vídeo, com certeza nos perguntamos só três pessoas para desenvolver um jogo com essa qualidade? Sim, otimização do processo é a maior vantagem, o programador não perde tempo criando e aprendendo o que não vai ser usado, o mesmo acontece com o level designers e artistas. Ou seja, todo o empenho da equipe é dirigido para um só lugar, o game. Com isso, ele vai defender que o jogo pode, e tem de ser uma experiência única por parte da equipe, e não módulos separados que não tenham relação entre si.

Damian cita o sucesso indie MineCraft, que talvez seja o mais bem sucedido jogo indie em termos de capital, que conseguiu entrar   em um mercado extremamente competitivo e lotado de games de desenvolvedoras gigantes. Como uma pessoa ou equipes minúsculas, conseguem produzir games que superam muitos aspectos dos games AAA. Estamos falando de desenvolvedores indies, que produzem jogos por que gostam e não simplesmente para vender. Eles normalmente não buscam um padrão de sucesso já estabelecido pelas grandes desenvolvedoras.

Alguns pontos para não esquecer ao desenvolver sua engine. Primeiramente o editor de mundo, sempre criem seu editor de mundo, nunca se esqueçam das ferramentas mais importantes já inventadas, “Copiar e Colar, Desfazer e Refazer”. O uso de scripts ”Lua”, controladores de animação, render, entre outros.

“The Most important workflow/Productivity Technologies ever invented, copy/paste and undo/redo”

E para finalizar, algumas ferramentas open source que podem aumentar o desempenho da sua engine, Box2D, Bullet, Cal3d, Lua, Recast, OpenSteer, Game swf.

Bom pessoal. Espero pelo menos ter passado um pouco, do por quê desenvolver uma engine hoje. Acabo o post com a frase do Damian.

“Reinvent as much of the wheel is necessary”

Autor: Roger Machado Ver todos os posts de

8 Comentários em "SBGames 2011: Damian Isla – Hey indie Developers."

  1. Rinaldo 26/11/2011 at 15:34 - Reply

    Não sei se concordo. Ou se concordo, é só parcialmente.
    como disse no post “dos otimização do processo é a maior vantagem”
    Usar uma engine famosa como a Unity, Unreal não deixa de ser uma otimização do processo. Já que a maioria das pessoas envolvidas na área de desenvolvimento de jogos, já possui o conhecimento de como usar essas ferramentas. usar uma nova engine, leva tempo tanto para a produzir tanto para aprender a usa-la.
    Encapsulamento e não reinventar a roda é um dos principais aspectos da programação orientada a Objetos.
    Ainda usando a metáfora da roda, uma pessoa sozinha ou com uma pequena equipe, jamais conseguiria fazer uma roda tão perfeita quando a de uma empresa especializada nisso. Onde há uma equipe muito mais preparada, melhores equipamentos, e etc. sem contar o tempo de trabalho e retrabalho para fazer o que já foi criado.
    Mas ele disse tudo no final. Se for necessário, reinvente a roda. Saber como funciona e saber modificar, seria reinventar certo? ou reinventar seria começar do totalmente do zero?

    É inegável a curva de aprendizagem de criar uma nova engine e toda a vantagem de fazer uma plataforma exclusiva para o game, como vocês citaram no podcast, a equipe do Limbo utilizou desse conceito e rendeu mais de 3 milhões. Mas levaram anos no desenvolvimento.
    Acho que a verdadeira questão aqui é o tempo (E a aprendizagem, é claro)

    • everton.vieira 27/11/2011 at 00:40 - Reply

      Perfeito Rinaldo,
      Estávamos aguardando o primeiro leitor se pronunciar para não influenciarmos os demais. Que Damian me perdoe, mas não concordo com a sua visão. Acredito que esta abordagem só faça sentido para plataformas mais recentes como Flash, HTML5, Android ou IPhone. Mas, vejam que mesmo para estas citadas, há motores que geram códigos nativos e já otimizados (Unity 3D e PlayN). Há um erro muito comum citado por vários desenvolvedores ao longo da história, entre eles o pessoal que desenvolveu o sucesso independente Limbo, não faça seu game em paralelo ao desenvolvimento de um engine. São projetos grandes e complexos ocorrendo ao mesmo tempo, causando muito retrabalho, erros e desgaste na equipe. Um vez conversando com um membro da equipe do Taikidon, game desenvolvido pela brasileira Hoplon, o mesmo problema foi citado. Eles consideraram o desenvolvimento da engine em conjunto com o game, um dos seus principais erros iniciais. A construção de um motor hoje, só seria justificada se permitisse o uso de uma nova tecnologia, ou fosse a base para uma nova franquia. Analisando o game Fallen Frontier, não seria o caso. Sendo assim, não concordo com a visão apresentada por Damian. E você, o que acha?

      • Rinaldo 28/11/2011 at 07:52 - Reply

        Concordo Totalmente.
        Que Damian me perde², mas Fallen Frontier, não seria o caso para uma engine exclusiva mesmo. Não vejo nenhuma nova tecnologia que justifique necessidade de criar uma nova engine (pelo o que eu vi no trailer, é claro).
        “se for necessário, reinvente a roda”. isso seria necessário se a roda já não tivesse sido inventada. Creio que não há necessidade de reinventar, mas sim saber COMO ela funciona e como MODIFICA-LA conforme sua necessidade. Temos inúmeras engines disponíveis e muitas de ótima qualidade.
        Usando novamente o exemplo da equipe do Limbo, citando novamente o Podcast, se tivesse sido tão maravilhoso fazer a engine própria deles, eles não estaria migrando pra Unity. Pelas próprias palavras de Arnt Jensen (GameDirector do Limbo):
        “[Construir uma engine] foi muito trabalhoso. É como ter um produto duplo, fazer a engine e o jogo.”[coloco a fonte em baixo, tradução livre a minha =P]. Essa citação bate completamente de acordo com o que disse que o membro do Taikidon te falou, Everton. Fortalecendo ainda mais minha opinião oposta de Damian.
        Acho que nem com plataformas mais recentes isso faça sentido ou se justifique. Portar uma engine já criada para ter suporte a outras plataformas, é um trabalho difícil, mas, na minha opinião, faz muito mais sentido do que começar uma do zero. Realmente impossível que o pessoal da Unity tenha recomeçado do zero para fazer rodar os jogos no Flash. O pessoal da IndieLib estão fazendo um port da engine para iOS (querendo também pra Mac e Linux), sendo ela escrita em C++, boa parte do código vai poder ser reaproveitado (tá bom, tá bom, dai uma forçada na barra. tem toda as peculiaridades plataforma… e trocar DirecX para OpenGL não vai ser tão fácil, mas deu pra entender o ponto) [outro bom exemplo onde se o conceito de injeção de Dependências tivesse ido aplicado logo no começo do projeto, poderia ter sido útil].

        fonte da citação:
        http://www.next-gen.biz/news/playdead-using-unity-next-project

      • Rinaldo 28/11/2011 at 08:57 - Reply

        Ah! Acabei esquecendo, os jogos com mecânica similar a do Braid

        Chronotron
        http://www.kongregate.com/games/Scarybug/chronotron

        The Company of Myself
        http://www.kongregate.com/games/2DArray/the-company-of-myself

  2. Leonardo Zimbres 27/11/2011 at 11:51 - Reply

    Ouvi dizer desta palestra e fiquei muito curioso, bom estar sabendo melhor sobre o que foi dito lá. Muito grato pelo post!

  3. Leonardo Zimbres 27/11/2011 at 12:02 - Reply

    Ah, não tinha visto os comentários. Eu gostei de saber mais pois estou criando não uma engine, mas uma pequena framework, para colocar em prática alguns conhecimentos sobre OOP recentemente adquiridos. Eu gosto da proposta de criar uma engine no sentido que a moçada procura com muita garra essas coisas que “facilitam” o processo de desenvolvimento, que exportam para várias plataformas diferentes e resolvem toda espécie de problema sem saber programar. Terminam amarrados como em um novelo de lã sem saber como mecher as coisas e com um jogo cheio de bugs.
    Agora, se o jogo vende ou não, eu sempre vou acreditar na borboleta lá do japão que anda a bater as asas.

  4. Roger Machado 27/11/2011 at 21:06 - Reply

    Bom eu não sei direito, até onde isso realmente se propõe como vantagem ou desvantagem, estamos falando de indie games, então engines como a unity são realmentes vantagens para esses desenvolvedores, mas “high” engines como a Cry Engine ficam fora certamente de um desenvolvimento indie. Agora Braid, Minecraft e outros, será que não são melhores que muitos jogos que estão sendo produzidos pelas grandes? E não foi preciso uma super equipe e equipamentos de ultima geração para fazer esses jogos. Temos que pesar esses aspectos positivos e negativos, de um processo. Em relação ao desenvolvimento acho que houve um mal entendido quanto a fala: “todos os processos de desenvolvimento de um game tem que se tornar uma experiência única da equipe. A engine tem de ser desenvolvida junto com as pessoas que vão utilizá-la” e não ser desenvolvidade em simultaneidade ao desenvolvimento do game, é obvio ele defende a criação da engine como criação do game, mas não siginifica que os processos são simultaneos.

    Nesse caso vou citar o exemplo do Blender 3D que mantem seu desenvolvido diretamente vinculado aos artistas, e o próprio Toon Rosendaal defende essa idéia. Ou seja se algo está sendo desenvolvido a comunidade é avisada para ajudar a melhorar o desempenho da mesma, em outras palavras, os usuarios estão diretamente ligados ao desenvolvimento, como uma experiencia unica e de trocas durante o processo de desenvolvimento.

    O que não ocorre ao desenvolver em cima de uma engine “pronta”. é um aspecto mais filosófico e romantico em relação ao desenvolvimento de games, mas não deixa de ser uma possibilidade interessante, e que tem mostrado resultados excelentes, como os jogos citados anteriormente.

    E em relação ao conhecimento das engines, sinto muito informar, mas isso realmente não ocorre Rinaldo, existe uma defasagem gigante entre o conhecimento necessario para se trabalhar na industria hoje em dia e o que os profissionais acham que sabe ou apreenderam, isso foi discutido no Sbgames tanto no ambito nacional como internacional, e em breve vai estar no site, para que possamos discutir.

    Abraços.

    • Rinaldo 28/11/2011 at 08:49 - Reply

      Hey Roger,
      Concordo e Discordo parcialmente novamente.
      Tem desenvolvedores indies que resolvem se aventurar com “high” engines como a Cry Engine. Mas temos MUITAS ótimas opções “low” que dão muito bem conta do recado. Você citou Braid e Minecraft, realmente jogos superior a muitos produzidas pelas grandes. Mas acho que o verdadeiro fator, como disse lá no meu primeiro comentário e na ultima linha “acho que a verdadeira questão é o tempo..”. Não lembro os números de cabeça, mas Braid levou 4[?] anos e Minecraft 3[?], são dois projetos com mecânicas novas que justifica criar uma nova engine, mas temos que haver que seria possível desenvolve-los mais ligeiramente em praticamente qualquer engine… tanto que Minecraft possui mil e um clones. e a mecânica do tempo (e a do parceiro anti-temporal [mundo 3?]) de Braid já foram implementadas em outros jogos, incluindo jogos de Flash.deixo os links no final). Aproposito, aqui mesmo no Abrindo o Jogos, eles apresentaram as patterns Memento e Command, que foram utilizadas no desenvolvimento de Braid.

      Incluir o pessoal que vai utilizar a engine no desenvolvimento dela. Nisso não discordo de forma alguma, Qualquer coisa que diminua a “rixa” que ocorre entre programadores e artistas é valido. Mas, novamente, Unity, Unreal e uma boa porção de engine “prontas” tem um ambiente gráfico amigável para o pessoal que “vai utilizar”. e mesmo se não tiver, como programador, posso afirmar que sem duvida há como criar uma ferramenta para isso ou dar um jeito (antes criar um EDITOR do que criar uma ENGINE. sem falar que Scripts pode ser uma boa solução [se até "The Sims" usa scripts, qual o problema?]).

      Essa questão, do conhecimento, foi citada também no podcast do programador de jogos se não me engano. onde falam dos dois tipos de programador de jogos. O que sabe sobre as escuras profundezas da engine e o que não sabe mas acaba não precisando (Não estou dizendo de FORMA ALGUMA que ter esse conhecimento não é necessário). ele acaba entrando novamente a questão que estávamos falando de de incluir o pessoal (como a solução de Damian a interface dos artistas pintarem tipo photoshop).

      Abraço

Deixar um Comentário