Huella rusa en la saga escandinava de videojuegos, terminando

El final de la primera parte de la historia , que revela un episodio brevemente mencionado en el libro finlandés "Videojuegos finlandeses: historia y catálogo" .



En esta parte, describo los problemas organizativos y técnicos y saco algunas conclusiones sobre la organización del proyecto y las razones por las que tuvo éxito.


Fase 0


Entonces, después de terminar un breve proyecto sueco y haber descansado por un tiempo, conseguí un trabajo en una compañía que producía contenido bajo la marca registrada "INFON" (sí, este es el mismo: "INFON en su teléfono"). INFON también tenía planes para la producción de juegos móviles en 2001, pero este mercado todavía estaba bastante nublado y carecía de la base cuantitativa necesaria de dispositivos, en la oficina solo vi el teléfono Nokia 9110 adecuado para el desarrollo de juegos, pero después de jugar con él decidimos posponer este asunto (I Escuché que más tarde este "ladrillo" fue presentado a algún gobernador). Me pusieron a cargo de los applets para los servicios en línea de la compañía, publicados bajo la marca Logoton, lo que permitía a los usuarios preparar contenido gráfico y de audio, seguido de enviarlos a sus teléfonos por SMS. En general, pasé casi un año haciendo esto.



Fase 1


En algún lugar en marzo de 2002 comenzó la historia sobre la cual Mikko Honkakorpi contó brevemente en su entrevista. Por lo que recuerdo, Artyom Golubchin, gerente de la compañía de reclutamiento finlandés-rusa MPS-Rusia (que trabajaba para el mercado finlandés), inicialmente vino a mí y me ofreció obtener una entrevista sobre el tema del trabajo. Decidieron desarrollar el negocio y pasar a la categoría de desarrollo de outsourcing, abriendo los llamados "centros de competencia" (como llamaron a su modelo de negocio). La principal ventaja de los "centros" era la simplicidad de la manipulación del personal por parte de la empresa empleadora, a saber, la facilidad de cierre y despido, ya que en Finlandia existen grandes dificultades y el despido inadecuado puede llevar a la quiebra a la empresa.


Una de las empresas que quería colocar su "centro de competencia" era la empresa finlandesa Akumiitti Oy. En ese momento, un proveedor bastante conocido de soluciones para organizar servicios móviles. La primera entrevista fue sin la presencia de un representante de la empresa finlandesa. Si no me equivoco, la primera vez que fui entrevistado por Artem Golubchin y dos finlandeses. Uno de los finlandeses era el vikingo Timo Multamaki (ahora un famoso diseñador de juegos de mesa finlandés) y algún otro finlandés cuyo nombre ya no recuerdo. Solo recordé que me preguntaron qué tipo de juego me gusta, a lo que respondí que "Operation Flashpoint". Luego hubo una entrevista con psicólogos, y solo una vez en un tercio hubo una entrevista con Mikko Honkakorpi. Paralelamente, los finlandeses contactaron a Sergey Kuligin y nos invitaron a discutir el proyecto.



Resultó que una de las principales compañías de telecomunicaciones planeaba comenzar a vender un nuevo teléfono Siemens M50 de bajo presupuesto en uno de los países de Europa del Este y dado que el teléfono tenía soporte J2ME a bordo, el cliente quería recibir de Akumiitti un paquete de 20 juegos junto con servicios móviles. La principal dificultad era que la fecha límite estaba programada para el 1 de junio, y el patio ya estaba a fines de marzo, y todo en todo quedaba a menos de dos meses. Basado en su rica experiencia de juego, Sergey Kuligin rechazó la oferta de cooperación, citando que hacer tantos juegos en ese período es una apuesta, pero tenía menos experiencia y continué las negociaciones.



Me pidieron que desarrollara escenarios para 20 juegos móviles y los mostrara en la próxima reunión, que tendría lugar en unos días. Por las noches durante estos días, "metí" un montón de juegos viejos de mis archivos de BK-0010, haciendo una compilación de guiones adecuados. Los juegos incluyen arcade, juegos de azar y lógica. Después de reunirme con Mikko y Timo unos días después, les presenté los guiones. Mikko dijo que los guiones les convienen y conmigo y Timo se dieron la mano, lo que marcó la conclusión de un acuerdo. Bueno, me inscribí para crear un equipo y lanzar 20 juegos móviles en mis escenarios con una "fecha límite" el 1 de junio de 2002.


Fase 2


En la fase de trabajo en equipo, el proyecto logró interesar a tres personas más:


  • Alexander Vasiliev , un experimentado desarrollador de Java con habilidades para resolver problemas no resueltos, trabajé con él en la empresa alemana Concept Software GmbH.
  • Evgeny Mikhailov , quien recientemente renunció a su servicio militar. Se le asignó el papel de ingeniero de control de calidad, también tenía experiencia en el desarrollo para plataformas informáticas de consumo.
  • Sergey Oleinik , uno de los mejores artistas rusos en el campo del pixel art, que fue contratado a tiempo parcial como diseñador subcontratado, ya que tenía el empleo principal en forma de trabajo en INFON (unos años más tarde, Sergey llegará a los primeros puestos del director en INFON).

De todos los miembros del equipo, solo Sergey Oleinik y yo tuvimos experiencia directa con dispositivos móviles. La compañía nos asignó una habitación en su edificio de oficinas en la calle Bolshaya Morskaya, al lado de la Casa de los Compositores. El equipo necesario se entregó en forma de computadoras y muebles de oficina. Todo esto no era nuevo y mostraba signos obvios de "beushnost". Las computadoras son de "marca" y, si no me equivoco, la producción de COMPAQ, con Windows XP preinstalado, que era nuevo en ese momento, que pocos de nosotros enfrentamos en ese momento (preferimos Windows 98). Toda esta "marca" y la especificidad del "hardware" no nos permitieron reorganizar el sistema operativo, lo que proporcionó riesgos adicionales en un proyecto ocupado, no pudimos hacer nada al respecto.


Fase 3


La siguiente fase fue el diseño y la planificación del trabajo. Basado en la "fecha límite", calculé que el tiempo promedio para un juego fue de aproximadamente 2.5 días (está claro que no había necesidad de hablar sobre fines de semana y días festivos, con un horario tan ocupado). Desarrollar juegos con esto de acuerdo con la metodología estándar generalmente aceptada: "en, usted, programador, realizar tareas y hacerme bien" no era realista y desde que recordé los preceptos de Adam Smith sobre el aumento de la productividad con una especie de "transportador", me concentré en el "transportador" con Mínimo cambio de tareas. Se compiló un cronograma de red claro con el cálculo del tiempo y el orden de trabajo para maximizar la paralelización del trabajo.


Los roles se distribuyeron en este orden:


  • Alexander Vasiliev estaba ocupado desarrollando módulos dependientes de la plataforma para mostrar el espacio del juego, y también hizo varios modelos de juegos.
  • Evgeny Mikhailov estaba ocupado probando productos terminados. Sus habilidades para resolver acertijos mientras probaba acertijos realmente ayudaron. (En la implementación del siguiente paquete de juegos, también participó en la redacción de modelos de juegos)
  • Sergey Oleinik solo estaba ocupado en la producción de contenido gráfico.
  • Estuve involucrado en la comunicación con el cliente, el desarrollo de modelos de juegos y la postproducción con la preparación de lanzamientos. También tuve el papel de director de arte y representación de algunos elementos del juego (gracias a BK-0010 y ZX-Spectrum que me dieron estas habilidades).

Fase 4


No teníamos un dispositivo físico real al comienzo del proyecto (por lo que recuerdo, fue traído por los finlandeses en algún lugar) y utilizamos emuladores de Siemens (emuladores para SL-45 y M50). Como sistema de compilación final, utilizamos Sun Java Wireless Toolkit . No había ofuscadores en ese momento, tampoco teníamos un sistema de control de versiones (trabajamos en un sistema de servidor de archivos común), la automatización era mínima.


Dado que el dispositivo objetivo tenía limitaciones muy severas en el rendimiento y la memoria, se decidió minimizar la carga en el "recolector de basura" creando objetos del juego cuando el juego comienza y reutilizándolos durante la aplicación, es decir. Al principio, creamos de inmediato todo lo que necesitábamos y vivió hasta el final de la aplicación. Los gráficos se almacenaron en forma de archivos PNG, y debido a la falta de tiempo, realizamos una automatización mínima de su empaque (eliminando información redundante y duplicada) y diseñamos esto como una utilidad separada que une los recursos gráficos. Los recursos de texto también se empaquetaron y almacenaron por separado, una utilidad especial fue responsable de esto. Decidieron excluir el diseño de sonido debido a la pobreza de las capacidades del dispositivo, la falta de tiempo y el ahorro de memoria. Se suponía que cada juego estaba representado por un archivo JAR de 30-40 kilobytes de tamaño.


Dado que algunos juegos requerían cálculos de punto flotante, pero CLDC 1.0 (que estaba en el dispositivo de destino) no admitía flotante ni doble, nosotros, como en las computadoras antiguas, salimos transfiriendo todos esos cálculos a un "punto fijo" (se asignaron 8 bits a int a la parte fraccional), se implementaron funciones trigonométricas a través de tablas y se implementó una pequeña biblioteca para este tipo de datos. Para no confundirnos en los tipos de datos, ya que todo era int, hicimos una notación especial, donde los datos adicionales iban en el nombre de la variable con un prefijo, por ejemplo, i8_width denotaba un valor con un punto fijo de 8 bits (entonces no pude evitar usar tal notación )


Usando mis desarrollos anteriores, se creó un marco de juego. El marco consistía en varias interfaces y clases auxiliares y describía un modelo abstracto estándar de un juego móvil, que cubriría todos los géneros del paquete de juegos planeado con la capacidad de cargar y guardar el proceso del juego.


Cada juego se desarrolló de acuerdo con el patrón Modelo-Vista-Controlador , esto hizo posible aislar los módulos que se estaban desarrollando y no "colgar" durante el proceso de desarrollo en ninguna etapa preparando los módulos en lotes.


  • StrategicBlock describió el modelo y contenía todo lo relacionado con la implementación del modelo de juego y la interacción de los componentes contenidos en esta clase.
  • PlayerBlock fue responsable del controlador , era una interfaz universal que devuelve un registro del progreso del jugador o IA, esto permitió que se mostraran juegos de demostración automáticos al usuario.
  • GameStateRecord fue el más importante y describió el estado interno del mundo del juego. Este objeto también se transfirió a la parte dependiente de la plataforma de la Vista, donde se dibujó un campo de juego en función de su estado.

Fase 5


Cuando se completaron las fases preparatorias, comenzaron el trabajo de producción. El primer juego lanzado, si no me equivoco, fue el juego "Carting" (carrera de autos), luego su modelo de juego fue reutilizado con pequeños cambios para el juego "Downhill race" (pista de esquí). En el proceso de desarrollo, todos los juegos producidos tenían sus nombres en clave, y el producto terminado ya tenía el nombre del nombre enviado por Mikko. Algunos nombres de los juegos eran bastante extraños (por ejemplo, el juego de karate se llamaba "Chop Chop"), pero si recuerdas que los suecos tuvieron que deshacerse del nombre de acorazados en algún momento, hubo un gran ruido.


El trabajo transcurrió sin problemas y no recuerdo serios problemas organizativos y técnicos. Como de costumbre, el dispositivo real mostró que la emulación no siempre refleja la imagen real de las cosas, pero no hubo momentos críticos que requirieran una rehacer total. Con el "desconocido" Windows XP hubo un caso "divertido" cuando llegamos al trabajo por la mañana y de forma inesperada vimos por nosotros mismos que todas las computadoras cambiaron su contraseña y no tuvimos que iniciar sesión. Al mismo tiempo, las computadoras se configuraron para que no tuviéramos la oportunidad de establecer nuevas contraseñas, aparentemente, olvidamos restablecer algunas configuraciones de seguridad. Aproximadamente medio día de trabajo se dedicó al alboroto con este asunto y todo terminó con un pirateo total de sistemas con contraseñas de sistema cambiantes.



Gracias a Dios, nadie durante el período de trabajo se enfermó y no ocurrieron algunas circunstancias de fuerza mayor, ya que no teníamos tiempo libre para ellos. Mikko nos visitó personalmente con poca frecuencia, principalmente con su correspondencia por correo electrónico. Sucedió que podía venir y solo me enteré después del hecho. Aproximadamente un mes y medio después del comienzo del trabajo, nos fotografió a los tres en el lugar de trabajo para el boletín interno de Akumiitti.



No sin cambios en los planes de trabajo que afecten el horario. Uno de los escenarios del juego fue el 11 de septiembre y se le pidió al jugador que protegiera las torres gemelas de los aviones kamikaze que volaban sobre ellas. Al principio, este escenario fue aprobado por los finlandeses y Sergey Oleinik dibujó un excelente protector de pantalla (otros que no sabía cómo dibujar) incluso que contenía un retrato en miniatura de Osama bin Laden, pero en algún lugar de la segunda mitad del trabajo de producción, recibí un mensaje de Mikko de que tendría que rechazar este juego. , ya que es un "tema muy confuso" y nadie quiere acumular problemas probables con el mundo espiritual de los terroristas y sus simpatizantes, que pueden evaluar incorrectamente el juego. Por lo tanto, este script fue rechazado y el juego fue reemplazado rápidamente por otro, lo que requirió un par de días adicionales.



Finalmente, los 20 juegos se hicieron a tiempo + 2 días debido a cambios por parte del cliente. El paquete fue completamente probado y enviado primero por Akumiitti, y luego por ellos a su cliente (una gran empresa de telefonía móvil). El paquete constaba de los siguientes juegos:


  • INCREÍBLE MAZE (rompecabezas, laberinto) inspirado en el famoso juego Soko-Ban
  • BALLOON PARK (arcade) inspirado en el juego del Día D
  • BLACK JACK (juego) es solo un juego en 21
  • Máquina tragamonedas soviética inspirada en CARTING (arcade)
  • CHOP CHOP (juego de lucha) inspirado en el juego KARATE-DO
  • COSMIC STORM (arcade) inspirado juego Asteroides
  • PELIGRO ZONA (arcade) juego inspirado RAID LARGO
  • DOWNHILL RACE (arcade)
  • LEAP OF FE (arcade) inspirado en el juego visto una vez en PC
  • Juego de rally inspirado en OFFROAD (arcade)
  • PACK RACE (arcade) recuerda vagamente a Pac Man
  • TENIS inspirado en el juego PING-PONG (deporte)
  • PITMAN (arcade) recuerda vagamente al juego Boulder dash
  • PUZZLE (rompecabezas) hecho sobre la base del rompecabezas 15
  • RACKET BALL (arcade) juego inspirado Arkanoid
  • SEA BATTLE (arcade) script para la buena batalla naval antigua
  • SHIP DUEL (arcade) juego inspirado Worms
  • STAR GUN (arcade) inspirado en el juego base Star visto
  • Juego de tesoros inspirado en TREASURE HUNT (arcade, laberinto)
  • VIPER (arcade, laberinto) alteración del juego Snake

En medio de tal logro, la gerencia de TekLabs (la denominada unidad de negocios de MPS-Rusia) y Akumiitti decidieron marcar este asunto a través de una visita de un día por parte de la gerencia y el equipo de la casa de vacaciones suburbana de Escandinavia con una cena de gala y una sauna. Entonces, después de un tiempo, la "parte superior" de Akumiitti Jurki Matikainen nos visitó y discutió el desarrollo de la dirección móvil. En el mitin, describí qué recursos se requieren para organizar la producción de juegos móviles a escala industrial, pero no obtuve mucha comprensión (esto no era una prioridad para los finlandeses).



Mikko renunció después de un tiempo y Eero Pöyry (actualmente Director de Desarrollo de Rovio) se convirtió en nuestro curador de la empresa matriz. Nos mantuvo informados sobre los envíos del primer paquete de juegos publicado. Recibió información de que más de 1,200 aplicaciones móviles fueron enviadas a los primeros 1000 teléfonos móviles Siemens M50 vendidos por sus clientes, lo que mostró el interés real de los usuarios en el contenido J2ME. Recibí una tabla de envío por correo electrónico para los juegos y cumplió con la regla heurística expresada por Sergei Kuligin para mí: "si quieres que se garantice la venta del juego, haz la carrera", el juego "Carting" fue el líder absoluto en envío y tomó más de una cuarta parte de la tabla.


Creo que puede detenerse aquí, porque en mi opinión los detalles y resultados del proyecto se revelan con suficiente detalle.


Pequeñas conclusiones


En el contexto de todo lo anterior, me gustaría formular una serie de razones que, en mi opinión, condujeron al éxito del proyecto:


  • Fue posible encontrar e interesar rápidamente a personal sensible capaz de hacer el trabajo.
  • El equipo se creó desde cero, si hubiera un intento de conectar un equipo existente y diluirlo con nuevos miembros, lapear y desarmar con la jerarquía tomaría tanto tiempo que casi con seguridad pondría el proyecto al borde de la muerte.
  • Se encontró un "líder" activo (aunque prácticamente sin conocimiento de inglés), que asumió la responsabilidad y no tenía la experiencia suficiente para comprender que "esto es una apuesta".
  • El proyecto se pensó al principio, se llevó a cabo la planificación y distribución de roles. (tenga en cuenta la autenticación. De hecho, este es un paso muy raro en los proyectos, a pesar del hecho de que todos lo declaran, especialmente en los proyectos donde "los plazos están vigentes". El ciclo de desarrollo habitual pasa por el sistema: "¡piense demasiado tarde, hágalo!" )
  • Los representantes de Akumiitti y los ejecutivos de TekLabs no intentaron interferir en los procesos de producción, adhiriéndose a los límites e interactuando solo dentro de su rol comercial, proporcionando al liderazgo del equipo todo el apalancamiento necesario.
  • En general, el proceso no utilizó algo radicalmente desconocido para los participantes.

De los pasos equivocados que me gustaría señalar fueron:


  • El equipo de producción con software básico desconocido, con estrictos requisitos de tiempo, era un riesgo innecesario.
  • , .
  • , .

,


, . , INFON J2ME . INFON Akumiitti, — , 10 , INFON -.


2002 , INFON « », - NOKIA. ( ) Nokia 3410. , . , « », . « » . — « , ! !».



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



, ( ), Fowling Snowboard , « INFON ».


PS


, , , .


En algún lugar cerca del final del verano de 2002, para automatizar el ensamblaje para diferentes plataformas móviles, se realizó una versión del preprocesador para el lenguaje Java. Creo que si este no fue el primer preprocesador de Java (el preprocesador de antena apareció en el mismo año), entonces al menos fue el más poderoso, ya que era de dos pasos e incluso permitía almacenar datos en archivos XML. Este proyecto todavía está vivo como OSS y se usa, por ejemplo, al construir el controlador JDBC usando el comando Postgres . Incluso me sorprendió un poco encontrar este preprocesador en diferentes repositorios de Linux designados como el paquete libcomment-preprocessor-java .

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


All Articles