Categoria: Desenvolvimento

Como criar seu próprio game

Tiny and Big, do estúdio alemão Black Pants, que decidiu apostar em engine própriaComo Fazer um Jogo

Provavelmente, em algum momento de devaneio ou de brilhante inspiração no chuveiro, qualquer jogador já pensou em um game ideal. Uma história empolgante, personagens fortes e bom nível de entretenimento. Por que então não colocar a mão na massa e torná-lo real? A seguir vamos percorrer os elementos básicos na jornada de se tornar um desenvolvedor independente.

O primeiro passo: identificar sua habilidade

Mais que uma grande ideia, o desenvolvimento de qualquer game geralmente respeita sete grandes etapas: design do jogo, programação, design de níveis, arte e animação, áudio e música, narrativa e negócio.

É difícil pensar que algo tão empolgante e explosivo como um game respeite essa ordem de produção quase industrial, mas, na maioria das desenvolvedoras de grande e médio porte, as etapas são muito bem respeitadas. “Geralmente um estúdio gasta um grande esforço na engine, no código e jogabilidade. Quando chega a hora da narrativa, apela para um grande artista gráfico para juntar todos os elementos necessários da história com animações”, diz Talita Goldstein, brasileira e produtora da Minority, do game Papo & Yo.

Se ao ler os termos “engine”, “jogabilidade” e “código” formou-se um nó em seu cérebro, provavelmente será necessário avançar em leitura e pesquisa para se familiarizar um pouco com os bastidores dos jogos. Atualmente, grandes games são produzidos utilizando kits de desenvolvimento, como Unity 3D, UDK (dos responsáveis pelo game Unreal) e Cryengine (da Crytek, do game Crysis). Esses kits criam toda a ambientação básica de programação e são como o esqueleto ou a infraestrutura do jogo. Através deles é possível desenvolver um game e migrá-lo automaticamente para várias plataformas (com os devidos custos).

Além da vantagem de driblar as dificuldades iniciais de programação, os kits possuem uma grande comunidade de desenvolvedores, com tutoriais, aulas e complementos para tornar a vida do designer bem mais simples. Outro incentivo, como no Unity 3D, é o custo zero. A solução é gratuita para os desenvolvedores independentes e, dependendo do tamanho do projeto, os custos de migração de plataforma não são tão altos.

Por outro lado, se desenvolver toda essa estrutura faz parte do seu objetivo como programador, é possível começar praticamente do zero, seja seu game feito em flash, Java ou C#. Aqui o válido é não complicar. Escolha a linguagem de maior familiaridade e veja o que é possível fazer com ela.

Desenvolver uma engine própria pode trazer bons resultados. Essa foi a aposta do estúdio Black Pants, que apresentou o curioso Tiny and Big no festival independente BIG, em São Paulo.  “Fizemos tudo do zero. Desde a engine até a arte final. Ninguém do time tinha trabalhado com games. Se soubéssemos o quão difícil, teríamos optado por Unity 3D ou outro caminho menos problemático”, confessa o alemão Florian Grolic, responsável pelo design do game.

Para todos os efeitos, Florian explica que não basta ser um cara com uma ideia, é preciso ser “corajoso e identificar qual sua ambição, seu desejo e perseguir seu sonho”.

Parcerias fundamentais

Não há como escapar. Sem uma grande compreensão de programação, dificilmente um game sairá do papel. A não ser que você seja um gênio computacional e ao mesmo tempo criativo, será necessário buscar apoio em outras pessoas. O crucial para um time é que ele seja complementar. “Também é importante encontrar pessoas que você se dê bem em relação ao trabalho. Buscar amigos pode ser um erro, pois normalmente acontecem frustrações pelo caminho e discussões são inevitáveis”, diz Grolic.

Por outro lado, é preciso encontrar uma sintonia. Em geral, ela surge da familiaridade de cada um com o projeto, ou mesmo de valores fundamentais. “Na Minority todos compartilham seus esforços. Mesmo com 15 funcionários e propostas de crescimento, não abandonamos nosso funcionamento indie. Isso é o que nos faz trabalhar com prazer”, comenta Talia.

Outro ponto importante é o custo. É provável que um primeiro game não vá consumir mais poder de processamento que o seu próprio PC de casa, principalmente se você trilhar por um caminho mais simples – como desenvolver um game para web em Flash ou mesmo algo mais simples para smartphones.

Quando as proporções são ampliadas, mais dinheiro vai ser necessário. Se o seu projeto é genial, um ótimo time foi escalado e tudo está funcionando como deveria, mas, faltam aqueles dólares para desenvolver mais os personagens ou mesmo migrar a plataforma, chegou o momento de caçar um investidor. Nem sempre um programador é um bom marqueteiro. Nesses casos, é importante ter um bom porta-voz, em especial na hora de apresentar seu game para um possível investidor.

Buscando formação

Com um número já interessante de faculdades de desenvolvimento de games, o Brasil está se tornando um território promissor. Cursos de games, como o da Fascisa, em Campina Grande (PB), estão surgindo com projetos recheados de cultura local, inovação e qualidade técnica.

Se desenvolver games é sua paixão – e, depois de um test drive de maneira independente, você acha que leva jeito – analisar os cursos e seus programas de ensino pode ajudar a sanar deficiências conceituais, de programação, modelagem e outras.

Código de Ética e Práticas Profissionais de Engenharia de Software

Princípio 1º: Público

Engenheiros de software devem atuar consistentemente com os interesses públicos. Em particular, engenheiros de software devem, apropriadamente: 1.01.   Aceitar total responsabilidade pelo seu próprio trabalho. 1.02.   Moderar os interesses do engenheiro  de software, do empregado, do cliente, e dos usuários, com o bem público. 1.03.   Aprovar software somente se o mesmo estiver absolutamente convicto que seja seguro, de acordo com suas especificações, passe nos testes apropriados, e não diminua a qualidade de vida, diminua a privacidade, ou prejudique o meio ambiente. O efeito final do trabalho deve ser pelo bem público. 1.04.   Esclarecer para as pessoas ou autoridades apropriadas qualquer perigo real ou potencial ao usuário, ao público, ou ao meio ambiente, que se creia esteja associado ao software ou documentos relacionados. 1.05.   Cooperar com os esforços para enviar desculpas a prejuízos graves causados ao público por software, sua instalação, manutenção, suporte, ou documentação. 1.06.   Ser justo e evitar obter vantagens em todos os assuntos, particularmente os públicos, referentes a software ou documentos relacionados, métodos e ferramentas. 1.07.   Considere questões de falta de habilidade física, alocação de recursos, desvantagens econômicas e outros fatores que podem diminuir ao acesso aos benefícios do software. 1.08.   Seja encorajado a participar voluntariamente de tarefas por boas causas e para contribuir com a educação pública a favor da disciplina.

 

http://igti.com.br/blog/wp-content/uploads/2017/08/iStock-514570298-1500x500.jpg

 

Princípio 2º:  Cliente e Empregado

Engenheiros de software devem atuar de um modo que atenda os melhores interesses de seu cliente e empregado, consistentemente com os interesses públicos. Em particular, engenheiros de software devem, apropriadamente: 2.01.    Prover trabalho nas suas áreas de competência, sendo honestos e transparentes sobre qualquer limitação sobre sua experiência e educação. 2.02.    Não utilizar software conscientemente que tenha sido obtido ou retido de modo ilegal ou antiético. 2.03.    Usar a propriedade do cliente ou do empregado somente nos modos em que esteja autorizado, e com o conhecimento e consentimento do empregado. 2.04.    Estar certo de que qualquer documento sobre o qual se dependa esteja aprovado, quando necessário, por alguém autorizado pela sua aprovação. 2.05.    Manter em segredo qualquer informação confidencial obtida no seu trabalho profissional, contanto que tal confidencialidade esteja consistente com os interesses públicos e consistentes com a lei. 2.06.    Identificar, documentar, coletar evidências, e reportar ao cliente ou ao empregador, prontamente se, na opinião dos mesmos, um projeto esteja a ponto de falhar, de se provar muito caro, violar a lei de propriedade intelectual, ou problemático em qualquer outro ponto de vista. 2.07.   Identificar, documentar, e reportar assuntos significativos de interesse social, dos quais esteja alertado, em software ou documentos relacionados, ao empregador ou ao cliente. 2.08.    Não aceitar trabalho externo em detrimento ao trabalho executado ao seu empregador primário. 2.09.    Não promover interesses adversos ao seu empregador ou ao seu cliente, a não ser que um interesse de valor ético maior esteja sendo compromissado; neste caso, informe ao empregador ou a outra autoridade apropriada sobre o envolvimento ético.

Princípio 3º:  Produto

Engenheiros de software devem assegurar que seus produtos e modificações relacionadas estejam de acordo com os maiores padrões profissionais possíveis. Em particular, engenheiros de software devem, apropriadamente: 3.01.  Comprometer com a alta qualidade, custos aceitáveis, e uma seqüência de atendimento racional, assegurando que os acordos entre as partes estejam claros e sejam aceitos pelo empregado e pelo cliente, e estejam disponíveis para avaliação do usuário e do público. 3.02.  Assegurar metas e objetivos apropriados, para cada projeto em que se trabalha ou se efetue proposta. 3.03.  Identificar, definir e objetivar assuntos éticos, econômicos, culturais, legais e de meio ambiente, relativos a projetos de trabalho. 3.04.  Assegurar que estejam qualificados para qualquer projeto em que trabalhem ou se proponham trabalhar, por uma combinação apropriada de educação, treinamento e experiência. 3.05.  Assegurar que um método apropriado é utilizado para qualquer projeto no qual trabalhem ou se proponham trabalhar. 3.06.  Trabalhar para acompanhar padrões profissionais, quando disponíveis, que sejam mais apropriados para as tarefas à mão, afastando-se deles somente quando houver justificativa ética ou técnica. 3.07.  Comprometer-se para entender completamente as especificações do software no qual estão trabalhando. 3.08.  Assegurar que as especificações para o software no qual esteja trabalhando tenha sido bem documentado, satisfazendo os requerimentos dos usuários e tenham as aprovações apropriadas. 3.09.  Assegurar estimativas quantitativas realistas de custos, atendimento, pessoas, qualidade, e saídas de cada projeto em que se trabalha ou propõem trabalhar e prover transparência ao acesso a estas estimativas. 3.10.  Assegurar adequados testes, depuração e revisões do software e documentos relacionados em que se trabalha. 3.11.  Assegurar documentação adequada, incluindo problemas significativos descobertos e soluções adotadas, para qualquer projeto em que se trabalha. 3.12.  Trabalhar para desenvolver software e documentos relacionados que respeitem a privacidade de todos que possam ser afetados pelo software. 3.13.  Ser cuidadoso para usar somente dados precisos derivados por significados éticos e legais, e usá-los somente de modo apropriadamente autorizado. 3.14.  Manter a integridade dos dados, sendo sensível a dados com ocorrências vencidas ou erradas. 3.15.  Tratar todas as formas de manutenção de software com o mesmo profissionalismo de um novo desenvolvimento.

Princípio 4º:  Julgamento

Engenheiros de software devem manter integridade e independência nos seus julgamentos profissionais. Em particular, engenheiros de software devem, apropriadamente: 4.01.  Ponderar todos os julgamentos técnicos pela necessidade de suportar e manter valores humanos. 4.02.  Somente endossar documentos preparados sob sua supervisão ou por suas áreas de competência e com os quais estejam de acordo. 4.03.  Manter objetividade profissional com respeito a qualquer software ou documento relacionado que seja chamado a avaliar. 4.04.  Não se envolver em práticas financeiras enganadoras como subornos, duplo faturamento ou outras práticas financeiras impróprias. 4.05.  Divulgar para todas as partes envolvidas aqueles conflitos de interesses dos quais não se possa racionalmente sair ou que não possam ser evitados. 4.06.  Recusar participar, como um membro ou orientador, em grupo profissional, privado ou governamental em assuntos relativos a software em que seus empregados, ou seus clientes tenham conflitos de interesses em potencial.

Princípio 5º:  Administração

Administradores e líderes de engenheiros de software devem creditar e promover uma postura ética no gerenciamento do desenvolvimento e manutenção de software. Em particular, estes gerentes ou líderes de engenheiros de software devem, apropriadamente: 5.01.  Assegurar o bom gerenciamento para qualquer projeto no qual trabalhe, incluindo procedimentos efetivos para promover a qualidade e reduzir o risco. 5.02.  Assegurar que engenheiros de software sejam informados dos padrões antes de serem responsabilizados pelos mesmos. 5.03.  Assegurar que engenheiros de software conheçam as políticas de emprego e procedimentos para proteção de senhas, arquivos e informações que são confidenciais ao empregado ou confidenciais a outros. 5.04.  Determinar trabalho somente depois de ter levado em conta apropriadas contribuições de educação e experiência, equilibradas com o desejo de promover mais educação e experiência. 5.05.  Assegurar estimativas quantitativas realistas de custo, tempo de atendimento, pessoas, qualidade e saídas em qualquer projeto no qual se trabalhe ou se proponha trabalhar, e prover transparência ao acesso a estas estimativas. 5.06.  Atrair engenheiros de software potenciais somente pela completa e precisa descrição das condições do emprego. 5.07.  Oferecer remuneração justa e racional. 5.08.  Não prejudicar injustamente alguém de obter uma posição para a qual a pessoa esteja perfeitamente qualificada. 5.09.  Assegurar que haja concordância racional sobre a criação de qualquer software, processo, pesquisa, escrita, ou outra propriedade intelectual para a qual um engenheiro de software tenha contribuído. 5.10.  Prover condições para ouvir acusações de violação de uma política ou deste código pelo empregado. 5.11.  Não pedir a nenhum engenheiro de software para fazer nada inconsistente com este Código. 5.12.  Não punir ninguém por expressar opiniões éticas sobre um projeto.

Princípio 6º:  Profissão

Engenheiros de software devem desenvolver a integridade e reputação da profissão consistentemente com os interesses públicos. Em particular, engenheiros de software devem, apropriadamente: 6.01.  Ajudar a desenvolver um ambiente organizacional favorável a agir eticamente. 6.02.  Promover conhecimento público de engenharia de software. 6.03.  Estender conhecimento de engenharia de software pela participação apropriada em organizações profissionais, encontros e publicações. 6.04.  Suportar, como membro de uma profissão, outros engenheiros de software empenhados em seguir este Código. 6.05.  Não promover seu interesse próprio em detrimento da profissão, cliente ou empregado. 6.06.  Obedecer todas as leis que governam seu trabalho, a não ser, em circunstâncias excepcionais, que seu cumprimento seja inconsistente com o interesse público. 6.07.  Ser preciso ao descrever as características do software no qual se trabalha, evitando não somente assertivas falsas, mas também assertivas que podem ser racionalmente percebidas como especulativas, vagas, enganadoras, imprecisas ou falsas. 6.08.  Assumir responsabilidade na detecção, correção e reporte de erros em software e documentação associada nos quais esteja trabalhando. 6.09.  Assegurar que clientes, empregados e supervisores conheçam a concordância dos engenheiros de software a este Código de Ética, e as subseqüentes ramificações de tal concordância. 6.10.  Evitar associações com negócios e organizações que estejam em conflito com este Código. 6.11.  Reconhecer que violações deste Código são inconsistentes com a profissão de engenheiro de software. 6.12.  Expressar opiniões às pessoas envolvidas quando violações significativas a este Código são detectadas, a não ser que seja impossível, contra-producente ou perigoso. 6.13.  Reportar violações significativas deste Código a autoridades apropriadas quando está claro que a consulta a pessoas envolvidas nestas significativas violações seja impossível, contraproducente ou perigosa.

Princípio 7º:  Coleguismo

Engenheiros de software devem ser justos e dar suporte aos seus colegas. Em particular, engenheiros de software devem, apropriadamente: 7.01.  Encorajar colegas a aderirem a este Código. 7.02.  Assessorar colegas no seu desenvolvimento profissional. 7.03.  Creditar amplamente o trabalho de outros e evitar aceitar créditos não merecidos. 7.04.  Revisar o trabalho de outros de uma forma objetiva, cândida e de modo apropriadamente documentado. 7.05.  Ouvir de modo justo, opiniões, assertivas ou reclamações de colegas. 7.06.  Ajudar colegas em estarem totalmente a par das atuais práticas de trabalho incluindo políticas e procedimentos de proteção com senhas, arquivos e outras informações confidenciais, e medidas de segurança em geral. 7.07.  Não interferir injustamente na carreira de nenhum empregado; entretanto, consideração pelo empregado, pelo cliente, ou pelos interesses públicos incentivarão engenheiros de software, em boa fé, a questionar a competência de um colega. 7.08.  Em situações fora de suas próprias áreas de competência, buscar por opiniões de outros profissionais que tenham competência nestas áreas.

Princípio 8º:  Indivíduo

Engenheiros de software devem participar de aprendizado por toda sua vida otimizando a prática da sua profissão e devem promover uma abordagem ética da profissão. Em particular, engenheiros de software devem continuamente se esforçar por: 8.01.  Evoluir seus conhecimentos em desenvolvimentos de análise, especificação, projeto, desenvolvimento, manutenção e teste de software a documentação relacionada, junto com o gerenciamento do processo. 8.02.  Melhorar sua habilidade para criar software de qualidade, seguro, confiável, e útil por custos racionais em tempo racional. 8.03.  Melhorar sua habilidade para produzir documentação precisa, informativa e bem escrita. 8.04.  Melhorar seu entendimento sobre software e documentos relativos ao trabalho em que trabalha, e do ambiente em que será usado. 8.05.  Melhorar seu conhecimento de padrões relevantes e leis que governam o software e a documentação relacionada em que trabalha. 8.06.  Melhorar seu conhecimento deste Código, sua interpretação, e sua aplicação no seu trabalho. 8.07.  Não dar tratamento injusto a ninguém por causa de alguma acusação irrelevante. 8.08.  Não influenciar outros a tomarem nenhuma ação que envolva uma quebra deste Código. 8.09.  Reconhecer que as violações pessoais deste Código são inconsistentes com um profissional de engenharia de software.