Jogo próprio. Parte 1

Isenção de responsabilidade


Aqui está um artigo sobre como meus amigos e eu escrevemos o jogo. Adicionamos e vendemos, mas não nos traz dinheiro. No entanto, foi muito interessante e divertido fazer isso, e decidi compartilhar minhas memórias. Haverá um mínimo de detalhes técnicos no artigo, não publicarei o código, pois aprender com ele é inútil. Este é um código de fãs, não profissionais, há um erro em um erro. Nenhum de nós tem formação em TI e ninguém nunca se envolveu profissionalmente em programação. Às vezes vou postar detalhes técnicos, pois sem isso, em lugar nenhum. Peço também aos leitores que não publiquem comentários sobre o que somos otários, pois é um insulto ler. Embora seja verdade.

Outras partes do artigo
Parte 2
Parte 3

Capítulo 1. Eventos Pré-Históricos


Muito tempo se passou e eu não me lembro muito bem dos detalhes, mas eu definitivamente lembro que cheguei em casa mais tarde do que o habitual e estava bastante cansada quando vi a ligação de Fyodor Mikhalych. Perdido.

Ligo para você amanhã, pensei.

Fedor Mikhalych sempre foi o coração do nosso projeto. E era como um cérebro, porém, isso também não era inteiramente verdade. Eu era mãos, eu acho. Certamente, eu era um back office. E Fedor Mikhalych - a frente. Portanto, ele sempre jorrou de idéias. E eu sempre cortei rudemente o vôo de seus pensamentos:

- Fedor Mikhalych, isso é impossível, pois será necessário refazer tudo no mecanismo e alterar metade dos essets. E isso sem mencionar que a ideia em si é idiota, eu não gosto - então responderei às ligações de Fyodor Mikhalych, para que em poucas semanas eu traduza suas idéias em código, ligue para ele e diga que eu criei e escrevi Krutetskaya coisa ... Mas será mais tarde.

Antes disso, ainda havia cerca de um ano. Enquanto isso, pensamos que escrevemos MMORPGs.

MMORPG começamos a escrever de alguma forma de repente. Nem eu, nem Fyodor Mikhalych, nem Dimon, nos envolvemos profissionalmente com programação, muito menos com o desenvolvimento de jogos. Todos trabalhamos no banco, Dimon negociado em moedas, I - em dívida e Fedor Mikhalych envolvido em suporte comercial. Além disso, Dimon e Fedor Mikhalych trabalhavam em um banco e eu em outro. Mas nós éramos jogadores. Nós queríamos escrever jogos. Eu "brinquei" em programação na escola, uma vez, com a ajuda do livro de Andre Lamot "Jogos de programação para Windows", escrevi um clone de Wolfenstein do jogo em C, escrevi claramente do livro, mas meu compilador não sabia como incorporar assembler no código C, portanto, diferente da versão do livro, meu mecanismo funcionava muito lentamente. Então eu não fazia programação há muito tempo, até que, uma vez, em uma livraria, meus olhos se voltaram para o livro “Programming 3D Games for Windows”, de Andre Lamot.

Deja Vu, pensei em francês. Desde que eu trabalhava em um banco francês, às vezes eu tinha que fazer isso.

Mas era um livro completamente diferente. Folheei e percebi que é disso que precisamos. Eu a queria. Eu queria fazer o que dizia. Liguei para Fedor Mikhalych e o convidei para escrever um jogo em 3D. E ele concordou.

Minha esposa preparou um jantar muito saboroso, mas eu estava muito cansada e silenciosamente peguei meu prato. Eu estava pensando por que o código não está compilando. Era verão e era chato no trabalho. Eu até perdi um laptop comigo para jogar no meu tempo livre. No verão, não há ninguém no mercado e há muito tempo livre no trabalho. E o código não foi coletado porque as variáveis ​​globais em mim foram declaradas no arquivo .h, e foram incluídas em vários arquivos .c. E o compilador jurou redefinição.

#ifndef file_h #define file_h 

Virá mais tarde. Enquanto isso, inventei minha bicicleta. Eu inventei muitos deles. Depois de ler o livro Lamp, pareceu-me que eu posso fazer qualquer coisa. Comecei a estudar o OpenGL e, em geral, nem precisava escrever nada (era um pipeline fixo, sim. Vou aprender muito sobre como funcionam os shaders e o que preciso escrever). Eu rapidamente empilhei um andador desajeitado na superfície no mundo 2D da perspectiva da primeira pessoa (o mundo é visível em 3D, mas o mecanismo não sabia como lidar com movimentos em altura, ou seja, tudo era 2D, como em Wolf). Havia uma análise detalhada de md2 e obj fomats no livro, e eu retirei o modelek do 2nd Quake e da Internet. Tudo estava bem, mas devido a erros como o descrito acima, o código pode parar subitamente de compilar após pequenas alterações. E ele não conseguiu parar. Na época, eu costumava ficar intrigado com o assunto e muitas vezes inventava bicicletas.

E sim, eu escrevi o mecanismo para o nosso MMORPG. E Fedor Mikhalych e Dimon foram responsáveis ​​por quase todo o resto. Eu me senti como John Carmack. Eu me senti bem Mas o progresso foi lento. E Fedor Mikhalych constantemente ligava. Aqui está agora. Ele deveria ter ligado de volta.

Agradeci a minha esposa pelo jantar e me servi de vinho. Precisamos conversar com Fedor Mikhalych. Minha esposa olhou para mim como um lobo. Na opinião dela, eu tive que falar com ela. Mas o dever está acima de tudo.

- Olá, Fedor Mikhalych, ligou?
- Patê, largue essa porcaria que você escreve, nós fazemos lixo!
Claro que respondi erradamente.
- Precisamos escrever jogos para o iPhone. O futuro são jogos para celular.

Devo dizer que Fedor Mikhalych não foi o primeiro a ter essa ideia. Appstor cresceu ativamente. Grandes projetos começaram a aparecer, mas havia muito espaço no mercado. E todo mundo queria ir para lá.

Ok. Vamos pensar sobre isso.
- Nehru pensa. Vamos fazer o jogo. Apenas algo mais simples, não o MMORPG, caso contrário, não adicionaremos nada à aposentadoria. Mas já devemos liberar agora, antes que o trem saia.
- Bem, eu quero escrever em 3D. Como jogar 3D em um iPhone?
"Esqueça", Fedor Mikhalych foi muito persistente. - Não vamos escrever em 3D. Vamos pensar sobre o gênero.
- Pense nisso. Ok, vamos ver o que há lá. Coloquei o Ikscode e dei uma olhada. Quando comprei um macbook para mim, vi que havia um código de hacker gratuito no disco. Parece que o ambiente é normal.
Ótimo. Coloquei seus links de e-mail para sites com tutoriais sobre programação para iPhone. Eu gostei especialmente de Ray Wenderlich. Dê uma olhada.
- bom

Algo assim, mergulhei no mundo do desenvolvimento móvel. Sem educação especializada, sem conhecimento de POO, sem uma idéia do que desenvolver. E meu primeiro pensamento quando abri o site de programação educacional para o iPhone foi "que sintaxe idiota". Com essas palavras, ainda descrevo o objetivo C.

Então foi mais divertido. Acontece que meu habitual

 GLBegin(GL_TRIANGLES); GLVertex3f(…); GLend(); 

Eles não funcionaram no iPhone. GLTranslatef etc. também não funcionou. coisas estúpidas.

Ok. Não é à toa que li a Lâmpada; sei como funciona, pensei. E ele escreveu.

Em alguns dias, descobri os Vertex Array Objects e como trabalhar com eles no shader. Levei mais uma semana para criar um projeto em que você pudesse mover um cubo com uma textura animada pela tela. Passava a maior parte do tempo desenhando uma série de texturas para animação. Sprites. Após cerca de duas semanas, eu tinha um pouco de plataforma pronto. Chamei-o de agente Ivan, em homenagem ao meu futuro professor de hebraico.



Todo esse tempo Fedor Mikhalych estava pensando intensamente. O fato é que, na opinião dele, o jogo de plataformas não fazia sentido escrever. Foi primitivo.

"Isso é primitivo", disse ele. - Isso seria mais sério. A propósito, você ouviu que vai relançar OVNI no seu computador?
- X-Com?
Sim.
- Está na hora. Jogo legal foi. A propósito, ele se encaixaria perfeitamente na interface de toque. Eles a deixarão sair em um iPhone?

Fedor Mikhalych pensou por um momento.

- Vamos lá.

Agora pensei.

- Vamos fazer X-com? Nós não temos direitos.
Bem, o clone. Não é a própria X-com. Eles serão lançados em um computador e ficaremos quietos em um iPhone.

Isso foi interessante. Nós dois realmente gostamos da X-com. Pareceu-me que criar um clone da X-com não era difícil. Mais difícil do que o jogo de plataformas, é claro, mas não muito. Durante seis meses deve lidar. Se você tiver sorte, vamos ao vivo em um iPhone antes que o remake seja lançado no PC. Vai ser legal. Vai ser divertido. E, o mais importante, este não é um grande projeto. Se eu fiz um jogo de plataforma do zero em 3 semanas, então Ikskoy é de 6 meses, multiplicamos imediatamente por 2 para não ficar chateado, total - um ano. Legal.

Capítulo 2. O Início dos Tempos


Pegamos fogo. Eu escrevi o código, Dimon fez texturas de chão e trabalhou com freelancers que fizeram modelos no formato md2. Além dos próprios soldados, pelos quais o freelancer com quem trabalhei era responsável. Bem, Fyodor Mikhalych estava pensando sobre a estrutura do jogo, o enredo, as armas, a arquitetura dos níveis, o equilíbrio, e isso era tudo.

Mas, o mais importante, escrevi o mecanismo no OpenGL, como eu queria.

Foi difícil no começo. Na maioria das vezes eu aprendi a escrever em Objective-C e OpenGL. Menor - escreveu o jogo em si. Mas com o tempo, eu me envolvi e, cerca de um mês depois, monstros animados do Quake 2 em um simulador de iPhone correram atrás do meu dedo por um campo quadrado texturizado (nossos modelos ainda não estavam prontos). Fedor Mikhalych personalizou a história para o jogo:

- Haverá um futuro, mas não muito longe. O mundo é dominado por corporações. E os ataques aqui e ali, de repente, o mundo inteiro está nos ataques.
"Ataques terroristas são ruins", respondi.
- Bem, claro, esse é o ponto. E você lutará com eles.
"Lutar é bom", respondi. - Mas chato. Não é para você atirar no Elies.
- e daí. Nós podemos e no Elien. Como queremos, vamos fazê-lo, este é o nosso jogo.
- Não podemos fazer isso pelo Elien, será o X-com. E para as pessoas não é interessante.
"Vamos lá animais", Fyodor Mikhalych não desistiu. Ele só teria que queimar alguém.
"Tenha pena dos animais", respondi.
- Bem, vamos lá, animais vis.
- Ou talvez eles sejam bons na alma?
- Aqui, você pensa corretamente. Mas e se esses animais fofos da alma forem maus?
Eu quero dizer? - Eu realmente não entendi.
- Bem, pegue o Greenpeace. Ele protege, digamos, pinguins, da extinção.

Fiquei um pouco surpresa:

- Quando os pinguins começaram a morrer? - Eu até entrei na Wikipedia. Não, está tudo em ordem, não desapareça. "Eles não morrem", eu disse em voz alta e cutuquei um dedo na tela.
- Sim, acalme-se - respondeu Fedor Mikhalych -, será necessário, eles começarão a desaparecer. Você entende a ideia. Eles são salvos da extinção criando um pinguim mutante com uma pessoa, a fim de acrescentar razão a eles, e para que eles deixem de morrer.
"Não há experimentos com humanos", respondi.
"Exatamente", Fedor Mikhalych não desistiu. Suponha que alguém cheirou e o matou. E encenou um ataque terrorista. E alguém adivinhou, e ele também foi morto, como um ataque terrorista. Então começaram os acordos com os terroristas, o comércio de armas, o tráfico de seres humanos e tudo isso - sob os auspícios do Greenpeace para ocultar os experimentos com pinguins humanos.
"Profundo", eu disse.
- Bem, toda essa máquina de fraude terrorista está ganhando força e uma reação auto-sustentável já está começando, você entende o que eu quero dizer?
"Sekou", eu realmente sigo. Eu ainda estou chiando.
Ótimo. Acontece que você meio que mata pessoas, e há pinguins mutantes nas costas e é isso. Isso é interessante? - Fedor Mikhalych me convenceu. Pareceu-me realmente interessante.

Chamei a próxima compilação do projeto de “pinguin” e comecei a aperfeiçoar o código. Dimon jogou cerca de cem texturas diferentes do chão, grama, concreto e outras coisas. Fedor Mikhalych também estava envolvido em texturas. No código, gerei um modelo de piso composto por quadrados. Cada quadrado tem sua própria textura. Carreguei vários modelos na memória e mostrei a Fedor Mikhalych como tudo segue um dedo pela tela. Enquanto isso, o primeiro modelo de nosso soldado chegou a tempo de um freelancer, e eu o adicionei em vez dos monstros do Quake 2. Em várias cópias.



Mas uma vez Fedor Mikhalych disse que deveríamos ver como tudo funciona no dispositivo. E eu comprei uma assinatura de desenvolvedor. Demorou algum tempo para configurar todos os certificados. Para mim, era uma floresta escura, mas Fedor Mikhalych conseguiu rapidamente. Carregamos o projeto no telefone, iniciamos, iniciamos o download ... e o aplicativo travou.

Incompreendido.

Lancei a compilação no emulador - funciona.

A mesma construção em um dispositivo real falha.

É hora de recorrer ao depurador.

Já naquela época, tudo estava relativamente bom com o código de depuração no ikskod. Lancei o criador de perfil e comecei a olhar para o aplicativo.

- De alguma forma, muita memória se esvai, Fedor Mikhalych, olhe. Temos 20 malucos em um campo quadrado e ela já comeu 150 MB ... 200 ... 250 ... 300 ... caiu. Eu pensei. Vamos contar. Nós criamos o chão. São quadrados de 128x128. Cada um tem 4 picos, isto é 16 mil picos. Cada um consiste em 3 coordenadas e 2 coordenadas de textura, todas elas são flutuações. Total de 82 mil carros alegóricos. E cada flutuador é de 4 bytes. 320 Kb total. Um pouco, hein?
"Não muito", concordou Fedor Mikhalych.
- Em seguida, enviamos suas texturas com Dimon. Agora temos 20 deles. Cada cor de 512x512 e 32 bits. Total de 1 MB por textura, 20 MB de saída. Um pouco, hein?
"Não muito", concordou Fedor Mikhalych.
- Em seguida, carregamos modelos de nossos soldados. Vou enviá-los 20 peças. Cada um dos 2 mil polígonos, cada um com 3 vértices, cada um com 5 flutuadores, cada um com 4 bytes. Total ... 2,35 MB. Burro?
"Não muito", concordou Fedor Mikhalych.
"Embora não." Cada modelo possui 95 quadros. Total de 220 MB.
"Sim", concordou Fedor Mikhalych, "e as texturas neles." 1024x1024 32 bits. Total de 80 MB. Apenas 300 MB disponíveis. E este é apenas um campo plano e 20 malucos. E no jogo haverá muito mais inimigos no nível. E todos os tipos de objetos. No simulador, não há restrições quanto à quantidade de memória. E no iPhone seus 512 MB. O sistema ocupa parte, você precisa se exibir.

Eu fiquei arrasada. Nesse ritmo, para carregar o nível, você precisará aguardar o lançamento de um iPhone com 5 a 10 GB de memória. Mas como Como Carmack fez o Quake ???

Source: https://habr.com/ru/post/pt409825/


All Articles