# Desenvolvimento de jogos eletrônicos

O desenvolvimento de jogos eletrônicos é o processo na qual um jogo eletrônico é produzido. A criação de jogos eletrônicos é de responsabilidade de uma desenvolvedora, a qual pode ser uma única pessoa ou uma grande empresa.

## Desenvolvimento do jogo moderno

O desenvolvimento de um jogo moderno e comercialmente viável, envolve uma ampla variedade de habilidades e uma equipe especializada. Tipicamente uma equipe de desenvolvimento hoje em dia inclui:
* Produtores - Responsáveis pela coordenação geral do projeto
* Designers - Responsáveis por projetar a jogabilidade, o conceito, regras e estruturas do jogo
* Programadores - Responsáveis por gerar o código em linguagem de programação que irá dar vida ao jogo
* Artistas - Responsáveis pelo grafismo do jogo. Cria a representação visual dos personagens, cenários e objetos presentes no jogo
* Engenheiros de som – Responsáveis pela sonorização do jogo
* Testadores - Responsáveis por analisar o jogo e documentar defeitos de software. Este processo faz parte do controle de qualidade no desenvolvimento de jogos eletrônicos

## Processo de desenvolvimento

O processo de desenvolvimento inclui conceitos de gerência de orçamento, equipe, conhecimento, etc. Ao contrário da maioria dos softwares corporativos, o desenvolvimento de jogos não se dá através de métodos cíclicos, e sim através de métodos como desenvolvimento ágil de software (como Scrum) para pequenas equipes, e processo de software pessoal (PSP) para grandes equipes.
O processo de desenvolvimento inclui as seguintes fases:

### Pré-produção

Foco na ideia e no conceito. Tem como meta produzir uma documentação (o plano de produção). A documentação é dividida nos seguintes documentos:
* High Concept Document - Faz uma descrição inicial sobre o jogo (tipo de jogo, fases, história, etc)
* Pitch Document - Faz uma descrição sobre o campo de atuação do jogo (mercado, consumidores, publicidade, exposição, etc)
* Concept Document - Faz uma descrição técnica sobre o jogo (plataforma, linguagem de programação, aplicações utilizadas, etc)
* Game Design Document - Antes de começar a produção faz uma associação de todos os documentos anteriores, também é chamado de protótipo virtual, pode ser modificado ao longo da produção
* Protótipo - É a implementação do desenho do documento, onde são testados diferentes algoritmos, modelos e funções durante diferentes os cenários. Sua principal meta é testar, adicionar e modificar recursos. Geralmente são usadas ferramentas RAD nesse processo

### Produção

É a parte principal do jogo, onde são desenvolvidos os ativos e o código-fonte. Programadores desenvolvem o código-fonte, artistas desenvolvem os ativos (objetos 3D, cenários, etc.), engenheiros de som desenvolvem os efeitos sonoros e os compositores compõem músicas, level designers criam níveis e cenas não-jogáveis.
* Design - Formado pelos artistas que desenvolvem os ativos (objetos 3D, cenários, etc.)
* Programação - Formado pelos programadores desenvolvem o código-fonte
* Criação de níveis - Formado pelos level designers que através de ferramentas criam cenários e cenas não-jogáveis
* Produção de arte - Formado por artistas que criam vídeos, trailers, capturas de tela, etc
* Produção áudio
** Efeitos de som - Feito pelo engenheiro de som para criar efeitos especiais
** Música - Feita por artistas músicos, podem ser música ambiente, ou disparada através de um gatilho
** Atores de voz - São representados por dubladores que dão vida as vozes dos personagens
* Teste - É a fase final da produção, tem como objetivo garantir a qualidade do produto;

### Milestone (marco)

Pode ser associado a entregas de software em determinado cronograma no período de desenvolvimento, podem ser:
* First playable - É a primeira versão jogável sem grandes implementações, geralmente apresentada internamente somente aos editores
* Alpha - É a fase onde todas as funcionalidades de jogabilidade estão disponíveis
* Code freeze - Fase onde nenhum código adicional é escrito, apenas bugs são consertados
* Beta - É a fase onde é entregue uma parte do jogo, mas que contém todas as funcionalidades da versão final
* Code release - É a fase onde o código é enviado para a avaliação do fabricante de console (geralmente não é usado para jogos de PC)
* Crunch time - É o tempo entre a finalização do código e o lançamento do produto, mais focada na divulgação do jogo na mídia especializada

## Plataforma

O desenvolvimento de jogos também depende da plataforma a qual o jogo irá rodar, existem plataformas de máquinas de arcade, consoles de mesa, consoles portáteis, computador e celulares.
* Arcade - Geralmente são máquinas exclusivas para jogos que podem ser totalmente adaptadas para apenas um jogo específico
* Consoles - Apesar de serem máquinas feitas com objetivo exclusivo para jogos, elas não podem ser customizadas como os arcades e tem um hardware limitado o que pode tornar mais fácil a questão da portabilidade, mas também pode limitar os recursos do desenvolvimento
* Computadores - Maquinas genéricas onde na teoria pode-se ter recursos ilimitados, o principal desafio é criar jogos que sejam executados pela maioria dos computadores da atualidade
* Dispositivos móveis - Plataformas como celulares, que geralmente tem o poder de processamento mais fracos dos hardwares, o principal desafio é fazer com que os jogos se comportem da mesma forma em celulares com características diferentes, por isso geralmente os jogos de celulares são desenvolvidos em plataformas sobre máquinas virtuais que possam rodar em várias máquinas com um só código