Este artigo é destinado a crianças em idade escolar, estudantes e pessoas mais velhas, que nunca tentaram, mas realmente querem começar a escrever jogos de computador. Quem na infância não jogou jogos de computador e não quis escrever seu próprio jogo, que será melhor que GTA ou Crysis? E eu queria, e por incrível que pareça, ainda quero. E durante vários anos de prática ensinando os mesmos programadores, fiz algumas anotações sobre onde ir e o que fazer.
O artigo não afirma ser completamente preciso e confiável, foi escrito por apenas uma pessoa que reuniu sua experiência em apenas alguns anos. Além disso, considera apenas o lado prático e romântico: não cobre os problemas de monetização e obtém benefícios de outros jogos além de satisfazer a pessoa amada e possivelmente outros.
1. Por onde começar?
Da prática. Você pode começar com C puro e OpenGL / DirectX, esse é o caminho do samurai, porque aprendê-lo do zero, sem abstrações, é bastante difícil.
Você pode usar estruturas como SDL ou LibGDX / PyGame / LÖVE2D de nível superior se o C / C ++ parecer muito confuso. Aqui o nível de abstração é um pouco mais alto, portanto, é um pouco mais fácil, mas você mesmo precisa fazer toda a organização da estrutura interna do jogo, percebendo o que é um loop de jogo e como organizar um sistema de eventos nele. Essa abordagem fornece um bom nível de conhecimento e habilidades, mas, a princípio, não incentiva a escalada nas profundezas das florestas de ferro.
E, finalmente, você pode pegar um mecanismo de jogo como Unity / Unreal / CryEngine / Godot e fazer um brinquedo nele.
Então, como escolhemos toda essa diversidade? Mas isso é apenas uma pequena parte. A armadilha típica em que um novato ainda não desenvolvedor cai é a escolha de uma ferramenta. Estrutura / mecanismo e linguagem. Muitos artigos são lidos, tutoriais em vídeo são assistidos, coisas grandes são ditas sobre algo, coisas desagradáveis são contadas sobre o mesmo ... Não existe um sistema ideal e não existe; caso contrário, o Ideal Game Engine teria sido inventado há muito tempo (junto com Ideal Linguagem de Programação) e todas as empresas simplesmente procurariam “programadores”, não programadores em nenhum ecossistema em particular. Nós apenas pegamos a ferramenta que melhor se adequa à nossa tarefa, ou mais ou menos assim, e uma pessoa que não pode escolher pode permanecer no mesmo lugar que há anos, sem nenhum progresso.
Então, como escolher? Podemos apenas pegar o primeiro e começar a entender. Não gosta quando o usa por mais de uma semana ou duas? Pegamos o seguinte e imediatamente escrevemos algo simples como uma cobra, lendo a documentação da ferramenta selecionada e procurando tudo o mais no Google e escrevendo o documento de design para o nosso Super Game, que matará Diablo e Doom ao mesmo tempo. Por que começar com algo simples quando já temos a idéia de um Super Game? Tudo é muito simples, o nível de habilidade de um desenvolvedor iniciante é sempre tão baixo que ele reescreve seu Super Game vinte vezes, os resultados não atendem às expectativas e, por trás dessa frustração, há uma reflexão completa sobre a idéia de escrever seu jogo e programar em geral. No início do treinamento, fazemos coisas simples que você pode sentir e brincar imediatamente com os amigos, competindo em recordes. Esse é o nosso incentivo, essa é a nossa alegria pela auto-educação e pela atividade produtiva do cérebro, isso é algo que não nos permite queimar. Após a cobra, você pode primeiro olhar para ela e tentar reescrevê-la "da maneira normal", porque a primeira cobra, mesmo que funcione perfeitamente, terá uma estrutura interna semelhante a um monstro, mudar a aparência da cobra será muito difícil e adicionar um novo bônus a ela será ainda mais difícil. . E então reescreva-o novamente ou passe para outra coisa, caso contrário, essa cobra já está no fígado. Agora vamos fazer, por exemplo, uma bola pulando das paredes, que precisa entrar no ringue, não importa o que, de fato, seria uma idéia.
Existem apenas algumas dicas para escolher: na minha opinião, você não deve usar algo de nível muito baixo, porque estamos escrevendo jogos aqui, em vez de interromper sinalizadores de bits e entrar em ponteiros. Com um nível muito baixo, é muito fácil ir para uma floresta distante e passar alguns meses quase desperdiçados. E não use algo de nível muito alto (como os motores), porque eles fornecem um nível de abstração muito alto. Desde que não saibamos como os motores estão dispostos, não fazemos muito sentido usar o desenvolvimento de outras pessoas, teremos que entender como ele é organizado, porque todos no mundo dos motores têm muitas limitações internas com as quais teremos que lidar no futuro, e temos mãos e pés conectados falta de informações e entendimento do processo, além de
vazar algum furo no motor, não podemos fazer nada até entender completamente sua estrutura interna. O equilíbrio entre a complexidade do aprendizado e a liberdade de ação.
2. Como estudar?
Aqui, uma habilidade extremamente útil chamada "googling" é útil para nós. A Internet é uma fonte enorme de informações, que por alguma razão, em minha memória, geralmente é subestimada, e a segunda página do mecanismo de busca já é algo inatingível. Portanto, aprendemos a fazer essas perguntas ao mecanismo de pesquisa para fornecer a amostra de que precisamos. Em geral, no início, os tutoriais em vídeo serão publicados. E você pode ler livros didáticos. As aulas em vídeo têm a vantagem de fornecer imediatamente um resultado tangível em pouco tempo, o que é muito útil para motivação, mas eles têm grandes problemas com a integridade das informações, portanto ninguém cancelou os livros e a documentação. Você pode procurar e ver exemplos de código no github, esta é uma lição extremamente útil, da qual você pode aprender nada menos do que nos livros didáticos. Nós olhamos para tudo que é incompreensível no código de outra pessoa e olhamos na rede o que estava aqui. Então nós usamos (ou não, hehe). O roubo de idéias e conceitos só é incentivado (se o código estiver sob uma licença gratuita). Se algo for bastante complicado, mas muito necessário - não é proibido entrar em contato com outras pessoas em fóruns e salas de bate-papo, mas é muito fácil começar a abusar desse método, portanto, não é aconselhável e apenas se completamente preparado, e várias horas de pesquisa competente foram malsucedidas. Nas áreas da matemática, recomendo fortemente que você leia e compreenda álgebra vetorial, geometria analítica, teoria das probabilidades e muitas palavras inteligentes, uma vez que essas são áreas universais que são úteis não apenas em jogos. Das línguas - inglês óbvio, a maior parte da documentação está escrita em inglês. O uso de tradutores não é proibido. Novamente, aqui precisamos aprender a aprender e procurar informações, que serão úteis em todos os lugares e sempre, não apenas nesta área. No entanto, o treinamento não deve ofuscar a prática e vice-versa. É aconselhável manter a relação de tempo entre escrever e estudar no nível 20/80 e, então, a prática só pode ser adicionada, estudantes eternos são bons, mas impraticáveis. Tempo de equilíbrio.
3. Queria algo mais sério?
Após o último estágio e vários (dezenas) protótipos de jogos, já aprendemos a escrever de maneira tolerável, talvez até com um número não muito grande de aninhados if-elseif-elseif. Encontramos e lemos várias dezenas de projetos de outras pessoas, e mesmo que metade não entenda, ainda não é muito assustador, porque já parecemos prontos para fazer algo sério, como o Super Game? Segure os cavalos. Temos vários protótipos, e eles até são ótimos, mas nem tentamos terminar nosso trabalho. Assim que algo ficou mais ou menos funcionando, acabamos de mudar para algo mais interessante, mas ainda estamos aguardando uma fase extremamente dura, na qual muitos (inclusive eu, hehe) entram em colapso: criando o Projeto Finalizado. Qual a diferença dos nossos protótipos? E aqui está o que: O Projeto Concluído é o mesmo protótipo, mas foi gasto três vezes mais que a parte do protótipo, ele executou todos os menus, configurações, verificou se ele funciona bem em diferentes resoluções de tela e com teclados diferentes, pelo menos uma dúzia de níveis ou uma opção de nível de dificuldade, para que seja interessante jogar não apenas para o autor e seus amigos, mas também para pessoas aleatórias na escola ou universidade. A parte mais rotineira, o que dizer, mas a vontade mais útil e muito bem treinada para vencer. Se você não passar por esse estágio, poderá permanecer um escritor de protótipo por toda a vida. Equilibrando-se em uma rotina e diversão.
4. Onde procurar bibliotecas?
Se você ler atentamente o segundo parágrafo, a resposta parecerá óbvia: online, em repositórios e de outras pessoas. E como se tudo estivesse bem, economizamos tempo e imediatamente fazemos algo bacana. Mas enquanto estudamos, temos tempo e temos a oportunidade de construir bicicletas - é um pecado não aproveitar esta oportunidade. Se a leitura de livros e artigos e a visualização de lições são uma extensão do nosso conhecimento, a criação de nossas próprias bibliotecas é um aprofundamento e em várias frentes ao mesmo tempo: implementação de APIs convenientes (cortando desempenho e usabilidade supérfluos e equilibrados), aprofundando e explorando o interior de nosso ecossistema de ferro-linguagem , e a criação de pequenos módulos concluídos, mesmo que dupliquem parcialmente a funcionalidade dos existentes. Mas o principal aqui não é ir em ciclos. Ainda estamos escrevendo jogos e um kit de ferramentas para eles. Aqui, você também pode se tornar um escritor de bibliotecas e nunca fazer um único Projeto Finalizado. Mas há também uma enorme camada de experiência geral.
5. Conclusão.
Ainda existem muitas perguntas sem resposta, algumas das quais serão brevemente respondidas aqui.
O que é um documento de design e por que é necessário? Este é um wiki para um jogo ainda não criado, quanto mais completo, melhor. E isso deve ser feito antes do início do jogo, estimando aproximadamente o tempo de desenvolvimento pelo número de pessoas disponíveis e cortando recursos.
Por que cortar recursos? Passando pelas etapas anteriores, você pode estimar aproximadamente o tempo durante o qual você e sua equipe se cansarão de fazer esse projeto. Se estivermos em uma situação de desenvolvimento independente no subsolo, sem financiamento e um cronograma de trabalho, há uma chance muito alta de confusão e agitação em vez de implementar o projeto. Todo o material interessante é implementado muito rapidamente, e ainda resta muita rotina, o que precisa ser feito, e nossa tarefa é equilibrar o frescor e a rotina, para finalizar da mesma forma.
Onde procurar artistas / músicos / designers? Para começar, você pode criar um Projeto Quase Finalizado, sem gráficos e sons, com sprites rabiscados em msPaint e as mesmas animações desajeitadas e fodas com recursos gratuitos encontrados na rede. Eu realmente não recomendo carregar outras pessoas com algo que ainda não está terminado e tem grandes chances de permanecer inacabado.
Na verdade, eu ia conseguir um emprego na Valve, EpicGames ou em qualquer outro lugar, e trabalhar lá, por que preciso de tudo isso? A maioria dos programadores do mundo é autodidata, geralmente com ampla experiência no "porão"; além disso, protótipos e pequenos brinquedos são um excelente portfólio para colocação em grandes empresas, e não apenas para a posição de desenvolvedor de jogos.
Bônus: A maioria dessas técnicas é adequada para absolutamente qualquer campo, não apenas na programação de jogos, mas também na programação. Além disso, você pode obter uma educação artística ou aprender a esculpir, usando as mesmas instruções após pequenas edições na direção certa.
Obrigado pela leitura, o artigo está sujeito a críticas e acréscimos.