O final da primeira parte da história , revelando um episódio brevemente mencionado no livro finlandês "Videogames finlandeses: história e catálogo" .

Nesta parte, descrevo questões organizacionais e técnicas e tirei algumas conclusões sobre a organização do projeto e as razões pelas quais ele foi bem-sucedido.
Fase 0
Assim, após concluir um breve projeto sueco e descansar por algum tempo, consegui um emprego em uma empresa que produz conteúdo com a marca comercial “INFON” (sim, é a mesma coisa - “INFON no seu telefone”). O INFON também tinha planos para a produção de jogos para celular em 2001, mas esse mercado ainda estava um pouco nebuloso e não possuía a base quantitativa necessária de dispositivos, no escritório vi apenas o telefone Nokia 9110 adequado para o desenvolvimento de jogos, mas depois de brincar, decidimos adiar esse assunto (I Ouvi dizer que mais tarde esse “tijolo” foi apresentado a algum governador). Fui encarregado de miniaplicativos para os serviços on-line da empresa, publicados sob a marca Logoton, permitindo que os usuários preparassem conteúdo gráfico e de áudio, depois enviando-os para seus telefones via SMS. Em geral, passei quase um ano fazendo isso.

Fase 1
Em março de 2002, começou a história sobre a qual Mikko Honkakorpi contou brevemente em sua entrevista. Tanto quanto me lembro, Artyom Golubchin, gerente da empresa de recrutamento finlandesa-russa MPS-Russia (que trabalhava para o mercado finlandês), veio inicialmente a mim e se ofereceu para ser entrevistado sobre o assunto do trabalho. Eles decidiram desenvolver o negócio e passar para a categoria de desenvolvimento de terceirização, abrindo os chamados "centros de competência" (como chamavam de modelo de negócios). A principal vantagem dos “centros” era a simplicidade da manipulação de pessoal pela empresa empregadora, ou seja, a facilidade de fechamento e demissão, pois na Finlândia existem grandes dificuldades e a demissão inadequada pode levar à falência da empresa.
Uma das empresas que queriam colocar seu “centro de competência” era a empresa finlandesa Akumiitti Oy. Naquela época, um provedor bastante conhecido de soluções para organizar serviços móveis. A primeira entrevista foi sem a presença de um representante da empresa finlandesa. Se não me engano, a primeira vez que fui entrevistado por Artem Golubchin e dois finlandeses. Um dos finlandeses era um Timo Multamaki do tipo viking (agora um famoso designer de jogos de tabuleiro finlandês) e outro finlandês cujo nome não me lembro mais. Só lembrei que eles perguntaram que tipo de jogo eu gosto, ao qual respondi que "Operation Flashpoint". Depois, houve uma entrevista com psicólogos, e apenas uma vez em um terço houve uma entrevista com Mikko Honkakorpi. Paralelamente, os finlandeses contataram Sergey Kuligin e fomos convidados a discutir o projeto.
Verificou-se que uma das principais empresas de telecomunicações planejava começar a vender um novo telefone Siemens M50 de baixo orçamento em um dos países da Europa Oriental e, como o telefone tinha suporte a J2ME a bordo, o cliente queria receber da Akumiitti um pacote de 20 jogos junto com serviços móveis. A principal dificuldade era que o prazo estava marcado para 1º de junho e o quintal já era o final de março, e tudo estava a menos de dois meses. Com base em sua rica experiência em jogos, Sergey Kuligin rejeitou a oferta de cooperação, citando que fazer tantos jogos nesse período é uma aposta, mas eu era menos experiente e continuava as negociações.

Me pediram para desenvolver cenários para 20 jogos para celular e mostrá-los na próxima reunião, que aconteceria em alguns dias. À noite, durante esses dias, "escavava" vários jogos antigos de meus arquivos do BK-0010, fazendo uma compilação de scripts adequados. Os jogos incluíam fliperama, jogos e lógica. Depois de me encontrar com Mikko e Timo, alguns dias depois, apresentei-lhes os roteiros. Mikko disse que os roteiros combinam com eles e comigo e Timo apertaram as mãos, marcando a conclusão de um acordo. Bem, me inscrevi para criar uma equipe e lançar 20 jogos para celular nos meus cenários com um "prazo" em 1º de junho de 2002.
Fase 2
Na fase de formação de equipes, o projeto conseguiu interessar mais três pessoas:
- Alexander Vasiliev , um desenvolvedor Java experiente, com habilidades para resolver problemas não resolvidos, trabalhei com ele na empresa alemã Concept Software GmbH.
- Evgeny Mikhailov , que recentemente deixou o serviço militar. Ele foi designado como engenheiro de controle de qualidade, além de ter experiência no desenvolvimento de plataformas de computadores de consumo.
- Sergey Oleinik , um dos melhores artistas russos na área de pixel art, que foi contratado em tempo parcial como designer terceirizado, pois tinha o emprego principal na forma de trabalho no INFON (alguns anos depois, Sergey chegará às principais posições do diretor no INFON).
De todos os membros da equipe, apenas eu e Sergey Oleinik tivemos experiência direta com dispositivos móveis. A empresa nos alocou um quarto em seu prédio de escritórios na Rua Bolshaya Morskaya, ao lado da Casa dos Compositores. O equipamento necessário foi entregue na forma de computadores e móveis de escritório. Tudo isso não era novo e apresentava sinais óbvios de "beushnost". Os computadores são "de marca" e, se não me engano, a produção do COMPAQ, com o Windows XP pré-instalado, que era novo na época, que poucos de nós na época enfrentavam (preferimos o Windows 98). Toda essa “marca” e a especificidade do “hardware” não nos permitiram reorganizar o sistema operacional, o que forneceu riscos adicionais em um projeto ocupado, não podíamos fazer nada a respeito.
Fase 3
A próxima fase foi design e planejamento de trabalho. Com base no "prazo", calculei que o tempo médio para um jogo era de cerca de 2,5 dias (é claro que não havia necessidade de conversar sobre fins de semana e feriados, com uma agenda tão ocupada). Desenvolver jogos com isso de acordo com a metodologia padrão geralmente aceita - "em, você, programador, faça-me bem e faça-me bem" era irrealista e desde que me lembrei dos preceitos de Adam Smith sobre aumentar a produtividade com uma espécie de "transportador", foquei no "transportador" com comutação mínima de tarefas. Um cronograma claro da rede foi compilado com o cálculo da hora e ordem do trabalho para maximizar a paralelização do trabalho.
As funções foram distribuídas nesta ordem:
- Alexander Vasiliev estava ocupado desenvolvendo módulos dependentes da plataforma para exibir o espaço do jogo e também criou vários modelos de jogos.
- Evgeny Mikhailov estava ocupado testando produtos acabados. Suas habilidades em resolver quebra-cabeças enquanto testava quebra-cabeças realmente ajudaram. (Na implementação do próximo pacote de jogos, ele também estava envolvido na criação de modelos de jogos)
- Sergey Oleinik estava ocupado apenas na produção de conteúdo gráfico.
- Estive envolvido na comunicação com o cliente, no desenvolvimento de modelos de jogos e na pós-produção com a preparação de lançamentos. Eu também tive o papel de diretor de arte e renderização de alguns elementos do jogo (graças a BK-0010 e ZX-Spectrum, que me deram essas habilidades).
Fase 4
Não tínhamos um dispositivo físico real no início do projeto (pelo que me lembro, foi trazido pelos finlandeses em algum lugar) e usamos emuladores da Siemens (emuladores para SL-45 e M50). Como sistema de compilação final, usamos o Sun Java Wireless Toolkit . Não havia ofuscadores naquele momento, também não tínhamos um sistema de controle de versão (trabalhamos em um sistema de servidor de arquivos comum), a automação era mínima.
Como o dispositivo de destino tinha limitações muito severas no desempenho e na memória, foi decidido minimizar a carga no "coletor de lixo" criando objetos de jogo quando o jogo inicia e reutilizando-os durante o aplicativo, ou seja, no início, criamos imediatamente tudo o que precisávamos e ele permaneceu até o final do aplicativo. Os gráficos foram armazenados na forma de arquivos PNG e, devido à falta de tempo, fizemos a automação mínima de suas embalagens (removendo informações redundantes e duplicadas) e o projetamos como um utilitário separado que cola recursos gráficos. Os recursos de texto também foram compactados e armazenados separadamente; um utilitário especial foi responsável por isso. Eles decidiram excluir o design de som devido à falta de recursos do dispositivo, falta de tempo e economia de memória. Cada jogo deveria ser representado por um arquivo JAR de 30 a 40 kilobytes de tamanho.
Como alguns jogos exigiam cálculos de ponto flutuante, mas o CLDC 1.0 (que estava no dispositivo de destino) não suporta float ou double, nós, como em computadores antigos, saímos transferindo todos esses cálculos para um "ponto fixo" (8 bits foram alocados para int para a parte fracionária), funções trigonométricas foram implementadas através de tabelas e uma pequena biblioteca foi implementada para esse tipo de dados. Para não nos confundirmos nos tipos de dados, como tudo estava int, fizemos uma notação especial, na qual dados adicionais foram inseridos no nome da variável com um prefixo, por exemplo, i8_width denotou um valor com um ponto fixo de 8 bits (então não consegui usar essa notação) )
Usando meus desenvolvimentos anteriores, uma estrutura de jogo foi criada. A estrutura consistia em várias interfaces e classes auxiliares e descrevia um modelo abstrato padrão de um jogo para celular, que abrangeria todos os gêneros do pacote planejado de jogos com a capacidade de salvar o processo do jogo.
Cada jogo foi desenvolvido de acordo com o padrão Model-View-Controller , permitindo isolar os módulos que estão sendo desenvolvidos e não “congelar” durante o processo de desenvolvimento em qualquer estágio, preparando os módulos em lotes.

- O StrategicBlock descreveu o Modelo e continha tudo relacionado à implementação do modelo de jogo e à interação dos componentes contidos nesta classe.
- O PlayerBlock foi responsável pelo Controller , era uma interface universal que retorna um registro do progresso ou da IA do jogador, permitindo que jogos de demonstração automáticos fossem mostrados ao usuário.
- GameStateRecord foi o mais importante e descreveu o estado interno do mundo do jogo. Este objeto também foi transferido para a parte dependente da plataforma da Vista, onde um campo de jogo foi desenhado com base em seu estado.
Fase 5
Quando as fases preparatórias foram concluídas, começaram os trabalhos de produção. O primeiro jogo lançado, se não me engano, foi o jogo "Carting" (corridas de carros), então seu modelo de jogo foi reutilizado com pequenas alterações no jogo "Downhill race" (pista de esqui). No processo de desenvolvimento, todos os jogos produzidos tinham seus nomes de código e o produto final já tinha o nome do nome enviado por Mikko. Alguns nomes dos jogos eram bastante estranhos (por exemplo, o jogo de karatê era chamado "Chop Chop"), mas se você se lembra que os suecos tiveram que se livrar do nome Battleships em algum momento, houve um som sólido.
O trabalho correu bem e não me lembro de sérios problemas organizacionais e técnicos. Como sempre, o dispositivo real mostrou que a emulação nem sempre reflete a imagem real das coisas, mas não houve momentos críticos que exigissem uma refazer total. Com o Windows XP "não familiar", houve um caso "engraçado" quando chegamos ao trabalho pela manhã e inesperadamente percebemos que todos os computadores alteravam sua senha e não precisávamos entrar no sistema. Ao mesmo tempo, os computadores foram configurados para que não tivéssemos a oportunidade de definir novas senhas; aparentemente, esquecemos de redefinir algumas configurações de segurança. Cerca de metade de um dia útil foi gasto em confusão com esse assunto e tudo terminou com uma invasão total de sistemas com a alteração das senhas do sistema.

Graças a Deus, ninguém durante o período de trabalho ficou doente e algumas circunstâncias de força maior não aconteceram, pois não tínhamos tempo livre para elas. Mikko nos visitava pessoalmente com pouca frequência, principalmente com ele correspondência por e-mail. Aconteceu que ele poderia vir e eu só descobri isso depois do fato. Cerca de um mês e meio após o início do trabalho, ele fotografou nós três no local de trabalho para receber o boletim interno da Akumiitti.

Não sem mudanças nos planos de trabalho que afetam o cronograma. Um dos cenários do jogo foi em 11 de setembro e o jogador foi convidado a proteger as torres gêmeas dos aviões kamikaze que voavam sobre eles. No início, esse cenário foi aprovado pelos finlandeses e Sergey Oleinik desenhou um excelente protetor de tela (outros que ele não sabia desenhar), mesmo contendo um retrato em miniatura de Osama bin Laden, mas em algum momento da segunda metade do trabalho de produção, recebi uma mensagem de Mikko de que teria que recusar esse jogo , já que é um "tópico muito confuso" e ninguém deseja resolver problemas prováveis com o mundo espiritual de terroristas e seus simpatizantes, que podem avaliar incorretamente o jogo. Portanto, esse script foi rejeitado e o jogo foi rapidamente substituído por outro, o que exigiu mais alguns dias.

Por fim, todos os 20 jogos foram feitos no prazo + 2 dias devido a alterações por parte do cliente. O pacote foi totalmente testado e enviado primeiro pela Akumiitti e depois por eles para o cliente (uma grande empresa móvel). O pacote consistia nos seguintes jogos:
- INCRÍVEL labirinto (quebra-cabeça, labirinto) inspirado no famoso jogo Soko-Ban
- BALLOON PARK (arcade) inspirado jogo do Dia D
- BLACK JACK (jogos) é apenas um jogo em 21
- Slot machine soviética inspirada no CARTING (arcada)
- CHOP CHOP (jogo de luta) inspirado no jogo KARATE-DO
- Tempestade Cósmica (arcada) inspirou jogo Asteroids
- PERIGO ZONA (arcada) jogo inspirado LONG RAID
- CORRIDA DOWNHILL (arcada)
- LEAP OF FAITH (arcade) inspirado no jogo visto no PC
- Jogo de rally inspirado em OFFROAD (arcade)
- PACK RACE (arcade) lembra vagamente Pac Man
- PING-PONG (esporte) jogo inspirado TÊNIS
- PITMAN (arcade) lembra vagamente o jogo Boulder dash
- PUZZLE (quebra-cabeça) feito com base no quebra-cabeça 15
- RACKET BALL (arcade) jogo inspirado Arkanoid
- Script da SEA BATTLE (arcade) para a boa e velha batalha naval
- Jogo inspirado SHIP DUEL (arcade) Worms
- STAR GUN (arcade) inspirado no jogo base Star visto
- Caça ao tesouro (arcade, labirinto) inspirado jogo de tesouro
- VIPER (arcade, labirinto) alteração do jogo Snake
Em meio a essa conquista, a administração da TekLabs (a chamada unidade de negócios da MPS-Rússia) e da Akumiitti decidiram marcar esse assunto por meio de uma visita de um dia pela gerência e equipe da casa de férias suburbana da Escandinávia com um jantar de gala e uma sauna. Então, depois de um tempo, o “topo” de Akumiitti Jurki Matikainen nos visitou e discutiu o desenvolvimento da direção móvel. Na manifestação, descrevi quais recursos são necessários para organizar a produção de jogos para celular em escala industrial, mas não obtive muita compreensão (isso não era uma prioridade para os finlandeses).

Mikko parou depois de algum tempo e Eero Pöyry (atualmente Diretor de Desenvolvimento da Rovio) tornou-se nosso curador da empresa-mãe. Ele nos manteve informados sobre as remessas do primeiro pacote de jogos publicado. Ele recebeu informações de que mais de 1.200 aplicativos móveis foram enviados para os primeiros 1000 telefones celulares Siemens M50 vendidos por seus clientes, o que mostrou o real interesse dos usuários no conteúdo J2ME. Recebi um gráfico de envio de e-mail para jogos e ele cumpriu a regra heurística expressa por Sergei Kuligin para mim - "se você quer que o jogo seja vendido - faça a corrida", o jogo "Carting" foi o líder absoluto no setor de transporte e ocupou mais de um quarto do gráfico.
Eu acho que você pode parar por aqui, porque na minha opinião os detalhes e resultados do projeto são divulgados em detalhes suficientes.
Pequenas conclusões
Contra o pano de fundo, gostaria de formular uma série de razões que, na minha opinião, levaram ao sucesso do projeto:
- Foi possível encontrar e interessar rapidamente pessoal sensato, capaz de fazer o trabalho.
- A equipe foi criada do zero, se houvesse uma tentativa de conectar uma equipe existente e diluí-la com novos membros, ultrapassar e desmontar com a hierarquia levaria tanto tempo que quase certamente colocaria o projeto à beira da morte.
- Foi encontrado um "lead" ativo (embora praticamente sem conhecimento de inglês), que assumiu responsabilidade e não tinha experiência suficiente para entender que "isso é uma aposta".
- O projeto foi pensado no início, foi realizado o planejamento e a distribuição de papéis. (note auth. - Na verdade, esse é um passo muito raro nos projetos, apesar de todos o declararem, especialmente nos projetos em que "os prazos estão chegando". O ciclo de desenvolvimento habitual passa pelo sistema - "pense tarde demais, faça isso!" )
- Os representantes da Akumiitti e os executivos da TekLabs não tentaram interferir nos processos de produção, aderindo aos limites e interagindo apenas dentro de sua função comercial, proporcionando à liderança da equipe toda a alavancagem necessária.
- Em geral, o processo não usou algo radicalmente desconhecido para os participantes.
Das etapas erradas que eu gostaria de observar foram:
- O equipamento de produção com software básico desconhecido, com requisitos rigorosos de tempo, era um risco desnecessário.
- Análise inadequada dos cenários de jogos pelo cliente, o que levou à substituição de um dos jogos.
- Horário de trabalho muito estressante, levando ao esgotamento.
Fase adicional, russo
No contexto das etapas no campo dos jogos para celular dos parceiros ocidentais, não se pode deixar de contar sobre as etapas que conheço os jogadores russos nessa área. Como indicado acima, antes do projeto, trabalhei no INFON e ela também não queria ficar longe do desenvolvimento de jogos J2ME. Em geral, o INFON era muito semelhante ao Akumiitti nos negócios, com uma pequena diferença - o que os finlandeses prometeram por 10 anos fizeram no INFON por meio ano ou um ano.
Em julho de 2002, o proprietário do INFON pediu para fazer um jogo para celular sobre o tema “caça ao pato”, pois ele estava indo caçar com um dos principais gerentes da NOKIA. ( ) Nokia 3410. , . , « », . « » . — « , ! !».

INFON ( Nokia Totally Board, 2002 ). Snowboard NOKIA 3410, . INFON Penalty Drive OFF. .

, ( ), Fowling Snowboard , « INFON ».
PS
, , , .
Em algum lugar próximo ao final do verão de 2002, para automatizar a montagem de diferentes plataformas móveis, foi feita uma versão do pré-processador para a linguagem Java. Acho que se esse não foi o primeiro pré-processador Java (o pré-processador Antenna apareceu no mesmo ano), pelo menos foi o mais poderoso, pois era de duas passagens e até permitia armazenar dados em arquivos XML. Este projeto ainda está ativo como OSS e é usado, por exemplo, ao criar o driver JDBC usando o comando Postgres . Fiquei um pouco surpreso ao encontrar esse pré-processador em diferentes repositórios Linux, designados como pacote libcomment-preprocessor-java .