Como passamos do desenvolvimento web para o desenvolvimento de jogos

Olá Habr! Por quase uma década e meia, criamos e desenvolvemos serviços da web. Você pode conhecer alguns deles, ter experiência de uso, amar apaixonadamente ou ter sentimentos contraditórios, mas isso não é mais o que acontece agora.


Portanto, tínhamos dois criadores de sites conhecidos no mercado - uCoz e uKit, mais de 90 % dos registros que nunca se converteram em criar seu próprio site, um desejo ambicioso de salvar pelo menos 5 % desse público e também duas pessoas e meia na equipe que possuem algum tipo de nenhuma experiência no desenvolvimento de jogos. Não que fosse um suprimento necessário para o lançamento do jogo sobre a indústria da web ... Bem, você entende.


imagem

O início do caminho sinuoso


59845 linhas de código no back-end e 65675 front-end. Mais de 2 anos de desenvolvimento, falhas e impasses, 7 opções de interface. Tudo isso agora está para trás, embora possa demorar muito tempo para chegar a alguém dos membros da equipe em sonhos.


Como aconteceu que as pessoas e uma empresa que lida principalmente com os criadores de sites adotaram (e fizeram!) Uma estratégia on-line para vários jogadores . Mesmo se temático: sobre sites e webmasters?


Em algum momento, percebemos que o uCoz, como produto, começou a se tornar obsoleto, e esse foi um dos motivos para a criação do uKit. Tudo ficaria bem, mas acabou que o problema é mais profundo e suas raízes não vão a lugar algum, mas à psicologia humana. Não importa globalmente sobre qual construtor de sites falar - uKit, uCoz, Wix, Tilda, Jimdo, LPmotor (perdoe todos os outros colegas que não citei, somos centenas, lembro de todos, amo todos). A grande maioria dos usuários registrados nunca criará um site . Esse é um fato facilmente verificado; basta comparar o número de registros (contagem sem bots) e o número de domínios / clientes ativos que são realmente atendidos.


Porque Uma boa pergunta, em busca de uma resposta para a qual ligamos para nossos e não apenas usuários. Porque amanhã . Ou na próxima semana. Tudo está claro, tudo é conveniente, mas não há tempo. É como ir à academia.


Foi então que surgiu um pensamento simples - para essas pessoas, por sua atração, nós já pagamos, e para não tentar salvar pelo menos parte desse público, deixando-os jogar na criação de sites?


“Acredito que todos os que estão de alguma forma conectados à criação de projetos na Internet devem definitivamente brincar com o gerenciamento de sites como parte dessa estratégia econômica. Não é à toa que eles dizem que os jogos podem ensinar alguma coisa ... Este é um dos poucos casos em que você pode realmente entender alguns dos princípios de gerenciamento de uma equipe de site e os recursos de trabalhar em muitos sites. E para aqueles que estão prestes a mergulhar nesta indústria, é obrigatório estudar a mecânica apresentada no jogo! ”

Dmitry G. tcp Dimok (notório nos círculos estreitos do Runet webmaster, blogueiro)

Todo mundo quer fazer um jogo para si.


Ninguém acredite totalmente em mim, mas esse realmente não era o pré-requisito número um. Embora a história seja tão antiga quanto o mundo. “Sou músico, vamos fazer um jogo para músicos!”, “Sou um desenvolvedor de jogos, vamos criar o Game Dev Tycoon!” - há muitos exemplos desses brinquedos, especialmente no gênero indie.


Game Dev Tycoon, a propósito, é um sucesso óbvio. Isso é evidenciado por um monte de clones, desenvolvimento na máfia. plataformas. Nossos jogos são fundamentalmente diferentes (outras mecânicas, uma configuração diferente), mas o Web Tycoon é mais frequentemente comparado com eles.


imagem

Primeira dor


A decisão é tomada, nós fazemos o jogo. Ele escreveu sobre a experiência da equipe no parágrafo de abertura. Além disso, os caras já estão ocupados com os projetos em andamento, o que não é razoável separar deles. E daí? Então, você precisa confiar o trabalho aos profissionais. Esta foi a nossa primeira dor real.


Em primeiro lugar, foi feita uma tentativa honesta de contratar um estúdio de desenvolvimento de jogos bem desenvolvido para o desenvolvimento. Felizmente, foi possível obter recomendações de colegas-amigos no workshop para quem é melhor recorrer. No nível da ideia, todos gostaram do projeto, e os estúdios estavam prontos para iniciar esse trabalho.


Aqui estão alguns cenários que encontramos mais tarde:


  • Sim, admitimos que nossos jogadores não. Boa sorte com o projeto!
  • Quer um jogo de navegador? Vamos fazer isso no Unity, não uma pergunta. E o fato de o usuário precisar instalar o plug-in no navegador (na época era apenas assim) não é um problema, custa quase todo mundo!

Dois estúdios não pagaram a conta mais barata. docas. Resultados muito volumosos. Muito trabalho foi feito, sem perguntas. No entanto, era tudo sobre algum outro jogo. Talvez até bom, mas diferente. Para a descrição, o popular é o mais adequado: "O que os russos fazem, tudo acaba sendo um rifle de assalto Kalashnikov". Ficou claro que as pessoas estavam acostumadas com isso e queriam fazê-lo em um gênero conhecido por eles, com mecânica bem conhecida e bem desenvolvida, e é por isso que eles eram figurativos em diz. doc


No entanto, não há revestimento de prata. A partir dessa fase de desenvolvimento de estúdio em estúdio, criamos um nome, mas muito valioso. O código original era uWebmaster (o jogo é sobre webmasters, e estamos acostumados a chamar tudo pela letra U). Uma opção obviamente mais relevante foi proposta - o Internet Tycoon, que depois se transformou no Web Tycoon.


A segunda dor, faça você mesmo


Quando tivemos que admitir que nada funciona com os estúdios conosco (ou conosco), decidimos fazer uma casa. Uma longa seleção da pessoa fundamental para o processo, o designer do jogo, começa. Quem entendeu a ideia, estava inicialmente interessado em um gênero semelhante, possuía as competências necessárias, etc.


Não quero falar muito sobre um tópico muito difícil, quem são esses designers de jogos. Como é necessário e se é necessário escrever diz. docas. Se um designer de jogos jogar seu jogo, se comunicar com o público, ser um gerente. Esta é uma conversa muito separada e holística. Vou dizer uma coisa: hoje, por razões bem diferentes, o projeto e a equipe sobreviveram a 4 designers de jogos (incluindo um júnior).


O recrutamento não foi fácil em todas as frentes. Por um longo tempo, seu único representante era uma jogabilidade solitária (uma das quatro mencionadas acima). A principal razão para isso é o "princípio residual", com requisitos razoavelmente altos. Ou seja, antes de tudo, os desenvolvedores precisam do projeto principal e foram contratados com bastante sucesso. E o techdir do jogo não se cristalizou. Isso, é claro, não pode ser feito. Decidiu fazer - faça. Mas nós continuamos neste ancinho por um longo tempo.


Mesmo quando o técnico finalmente apareceu, ele foi por muito tempo seu próprio líder de equipe, arquiteto e, para um conjunto completo, um artista. Corrigido absurdo pessoal difícil. Demorou cerca de seis meses para formar uma equipe completa. Por mais estranho que possa parecer, eles procuram um ilustrador há mais tempo. E de repente nosso gerente de escritório se tornou eles.


Resumindo um certo resultado para esta parte da história, podemos dizer que, há dois anos, nossa equipe de jogos realmente estava trabalhando. Era para quem desenhar interfaces, e para quem escrever código, e até o scrum foi introduzido um pouco mais tarde, o que já era uma prática estabelecida para a empresa como um todo.


Design e Interfaces


Agora, temos a seguinte aparência:


imagem

É incomum para o jogo, e pode-se até dizer que é chato e não divertido. Mas esta é uma escolha significativa. Parece mais um portal da Web à primeira vista do que um jogo.


Pessoas como:


imagem

Ao exibir capturas de tela para conhecidos, muitas vezes ouvia algo como: "Então este é o painel de administração", "Eu pensei que eram as estatísticas de alguém, não um jogo" Aqueles que são o nosso público imediatamente entraram em choque. Eles queriam algo realmente autêntico, não toons. Talvez tenhamos perdido alguns jogadores casuais devido ao estilo escolhido, mas acreditamos na sua concisão.


Ele finalmente convenceu que o jogo não precisa parecer um jogo típico, uma olhada no Football Manager. O simulador pode não parecer muito divertido, mas ter sucesso. Este é o gênero.


Dentro do estilo escolhido, havia várias opções para efeitos visuais. Abaixo estão diferentes soluções de diferentes designers.


imagem

imagem

imagem

imagem

imagem

imagem

Tudo é melhor se você adicionar AI


Os jogadores adoram cosméticos. Ainda não o implementamos, mas já aprendemos como gerar um avatar para um jogador a partir de uma fotografia. O mais interessante é que isso acontece com uma abordagem específica muito inovadora para aprendizado de máquina e treinamento de modelos sem conjuntos de dados.


É gerado a partir dos elementos do nosso designer de avatar e não é estilizado a partir de uma foto à la Prisma. E, embora a máquina não tenha conquistado um homem em termos de qualidade, ela o alcançou em termos de qualidade, que, dada a tarefa, é considerada um sucesso.


imagem

A própria tecnologia tem planos para se desenvolver. Esta história é digna de um post separado, ou mesmo de nenhum, e certamente será publicado em Habré. Se alguém é muito impaciente, bata no PM, daremos a oportunidade de brincar com isso pessoalmente.


Inglês primeiro, celular primeiro


Quanto mais chegamos ao lançamento, mais percebemos que nosso jogo se encaixa perfeitamente em dispositivos móveis. Em algum lugar ainda melhor do que na área de trabalho. Ao mesmo tempo, durante o período de teste, nossos players de navegador nos agradaram muito com o público. Eles conduziram conversas ativas de TI na sala de bate-papo do jogo, escreveram bots para automatizar o jogo e escolheram nossa API não documentada.


Inicialmente, o jogo foi desenvolvido com a ideia de que atualmente estamos desenvolvendo um navegador, nele testamos a mecânica, o equilíbrio e, em seguida, rapidamente, graças à API incorporada, coletamos aplicativos nativos. A realidade fez ajustes.


Não havia tempo ou orçamento sobrando para esse plano maravilhoso. Ao mesmo tempo, quase todos os editores com quem conversamos estavam interessados ​​principalmente em dispositivos móveis e se ofereceram para procurá-los quando tivermos um.


Era necessário comprometer, porque em Cordova por alguns meses reunimos aplicativos para iOS e Android. É claro que eles não são padrão (embora muito decentes), mas você pode jogar com bastante conforto. E é possível testar a hipótese "como vai" com absoluta precisão.


Problemas com a App Store


Com a Apple e moderação na App Store, tive que lutar um pouco. No início, houve um esboço com a motivação: “Você é um aplicativo da web. "Os dispositivos Apple têm Safari, e vivem nele, não se preocupe." Mas nós vencemos.


Infelizmente, devido aos requisitos da Apple, tive que renomear a moeda do jogo atraente Bitcoin para Webcoin. Para ser justo, eles têm razão, desviar é realmente possível. Embora para nós as sensações não sejam as mesmas.


Quanto às localizações, estamos completamente prontos para começar em um público que fala inglês. No entanto, é mais fácil e mais barato aprimorar e testar nosso mercado nativo de língua russa. Portanto, até agora, começamos apenas na Rússia, mas em uma ou duas semanas esperamos retornar ao inglês primeiro.


Pontos técnicos


Migrando do React e Redux para o Vue e o Vuex


Entendo que agora estamos pisando no gelo fino de possíveis holivares, portanto, farei uma reserva imediatamente de que não estamos impondo nada ou afirmando nada, concordamos conscientemente com "você simplesmente não sabe cozinhá-los". Esta é apenas uma descrição do nosso caminho, razões para a escolha e a experiência.


A primeira revolução no processo de criação do jogo, embora bastante suave, foi a transição de React e Redux para Vue e Vuex.


Nós da empresa tentamos desenvolver todos os produtos aproximadamente na mesma pilha de tecnologia. Isso é principalmente uma questão de conhecimento acumulado e, nesse caso, uma fácil transferência entre equipes de desenvolvimento. Básico para nós hoje: NodeJS, React e MongoDB.


Fazer um jogo com um monte de dados e conexões foi inicialmente idiota no NoSQL. Como resultado, foi sangrento por uma semana que todos nós migramos para ele, mas primeiro as primeiras coisas.


Por que meio caminho mudou de React para Vue?


O advento do novo designer de jogos mudou a mecânica central do jogo, o que levou a uma séria alteração na maioria das interfaces do jogo. A nova mecânica foi rapidamente prototipada no Vue, o critério para essa escolha foi o baixo limiar de entrada na tecnologia. No mesmo período, criamos e começamos a introduzir um sistema vetorial de crescimento do tráfego, lucro e energia. Antes disso, eles simplesmente escreviam dados a tempo, mas não operavam com as taxas de alteração.


Inicialmente, em conjunto com o React, usamos o Redux. A propagação cresceu muito rapidamente - cada ação do usuário com um site no jogo criou uma nova entrada. Consequentemente, toda a história mudou e os contadores foram recontados e, como resultado, eles tiveram cálculos complicados de tráfego e lucro - tudo isso desacelerou terrivelmente. Claro, você pode pegar o MobX, refazer a lógica de cálculo, mas esse momento coincidiu com sérias alterações na mecânica do centro, de alguma forma não era antes. Ou as estrelas coincidiram. Onde eles tentavam resolver problemas no Redux conectando várias partes, no Vuex tudo funcionava imediatamente e era dividido em qualquer número de submódulos sem gestos desnecessários.


O açúcar da sintaxe e a flexibilidade do Vue realmente nos atingiram. Por exemplo, agora, para atualizar regularmente um valor em um componente, em vez de propriedades calculadas


foo() { return bar + baz; } 

escrever


 foo() { return (this.oneTick, bar + baz); } 

Um pouco de mágica está oculto na propriedade this.oneTick, que é reativa e é atualizada uma vez por segundo, fazendo com que o componente seja renderizado se o resultado da expressão bar + baz for alterado.


Migração de banco de dados


Do back-end, tivemos uma migração pequena e uma grande. Inicialmente, o projeto foi realizado no MySQL. Como foi rápido, simplesmente pensei que precisávamos de relés e outras delícias. Depois disso, amadurecemos um pouco e mudamos sem dor para o PostgreSQL.

Mais extensa e complexa foi a mudança para o MongoDB. A decisão foi devido à fácil escalabilidade e desempenho relativamente maior. Havia muito mais problemas durante o segundo movimento, apesar da presença de ORM. Mas a própria configuração do ReplicaSet e AutoFailOver padrão levou apenas uma hora.


Algumas palavras sobre editores


Para começar, estamos esperando por eles. Até agora, apenas o Mail.Ru acreditou em nós com confiança. Obrigado colegas por isso. Muito em breve descobriremos como nossa versão do navegador atinge seu público.


Nos livros e podcasts inteligentes, eles dizem que os editores precisam chegar a algum lugar pela metade, e não na fase de lançamento. Fizemos isso, começamos a conversar com antecedência, inclusive indo ao DevGamm em novembro.


O que esperávamos:


"Sim, ok, basta refazer isso e isso, e aqui estamos nós e nossa experiência!"


O que temos:


"É legal, algo novo e fora do padrão, cenário interessante, mas como você começa e haverá técnicas de monetização - venha".


imagem

Em geral, a teoria nos falhou. Tentativas de entender por que isso aconteceu, deram a resposta: "Você tem um padrão, então aqui está ele".


De coração, direi que, na minha opinião, não existem muitos fora do padrão, mas eles sabem melhor.


Em geral, os representantes do jogo reagem a nós de maneira positiva. Pode-se ver que o mercado se cansou dos próximos "Kill the Dragon" e "Conquer the Castle". Embora isso possa ser uma percepção distorcida das pessoas por dentro.


Final


Com um caminho tão espinhoso e torto, chegamos a um almoço suave. Este não é o caso quando os vencedores não são julgados e ainda não pode ser chamado de vitória. Portanto, estamos aguardando nos comentários seus comentários e perguntas. Responderemos prontamente a tudo!


Se você está pronto para oferecer cooperação, estamos prontos para considerá-lo.

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


All Articles