- Hola, Habr! Mi nombre es Zhenya y soy adicta al proyecto.
- (serie de votos inconsistente) ¡Hola, Zhenya!
Después de tal introducción, las referencias al trabajo generalmente se siguen hasta altas horas de la noche de lunes a viernes y durante todo el día los fines de semana, contando kilogramos de comida chatarra consumida, descripciones coloridas de noches sin dormir antes de la fecha límite, y al final ese vacío y desapego que viene después del final del proyecto ... Y todo esto será más adelante en el texto, pero primero un poco de historia.

Soy desarrollador en Dodo Pizza Engineering. Muchos chicos de nuestro equipo participan en varios proyectos paralelos. El año pasado, por ejemplo, fue una búsqueda de telegramas sobre el servicio de mensajería
CMAN , que
se dedicó al Moscow DotNext 2018 . Este año, decidimos continuar la tradición y hacer otro juego para DotNext 2019. Entonces, era septiembre, había un par de meses antes de la conferencia y necesitábamos un plan con urgencia.
FYI: Esta es la primera parte de un artículo sobre IT Alchemy. La siguiente parte serán los detalles técnicos del desarrollo del juego.
Plan de proyecto ideal
Entendimos que repetir la historia del año pasado no funcionaría. Primero, luego fue la primera vez, y la primera vez por definición es única. En segundo lugar, y esto es probablemente lo más importante: ese proyecto se ha desarrollado durante varios meses. Y unas semanas antes del evento, los desarrolladores generalmente se fueron para hacerlo a tiempo completo.
Bueno, nuestro objetivo era más modesto: teníamos menos personas, plazos más cortos y demasiado trabajo principal para jugar durante las horas de trabajo. En una sesión conjunta de lluvia de ideas, alguien sugirió crear una variación de TI del popular juego Alchemy hace muchos años.
Permíteme recordarte brevemente para aquellos que no encontraron esos momentos: el jugador tiene un número inicial de elementos (generalmente 4), al combinarlos puedes recolectar más y más elementos nuevos que se están volviendo más difíciles. La tarea del jugador: abrir todos los elementos. En la Alquimia original, un número finito de elementos alcanzó varias decenas de miles.
Captura de pantalla del mismo Alchemy 2013Nuestra idea me pareció un proyecto ideal durante un mes por tres razones:
- Tareas técnicamente claras: implementar un servidor de fondo, escribir un cliente para teléfonos, dibujar una interfaz e imágenes de elementos.
- Se pide que las palabras de los temas de TI se combinen entre sí (jeje, si solo).
- La tarea que me puse personalmente: hacer el juego solo en mi tiempo libre, los fines de semana, sin mucho esfuerzo. Definitivamente no queríamos repetir la experiencia del año pasado.
Reglas de montaje: llegar a tiempo en 30 días.
¿Qué se debe hacer primero para armar un proyecto viable en un mes? Así es, ¡corta el alcance! De hecho, todo nuestro trabajo se dividió perfectamente en cuatro bloques:
- Servidor de fondo. Misha Kumachev ( Ceridan ), quien diseñó el backend para CMAN, fue responsable de ello.
- Clientes de Unity para Android e iOS. Esta parte fue sobre mí porque ya tenía una docena de prototipos y dos juegos publicados en Google Play.
- El diseño de la interfaz y los íconos fue realizado por Tanya Turmanidze.
- Y ... contenido para el juego. Pero este bloque no ha tenido un propietario durante mucho tiempo. Y ese fue quizás nuestro error más importante (y más obvio).
Nuestro concepto básico no era diferente del 2013 original: el jugador tiene 4 elementos básicos, en total puedes recolectar otros N elementos. Cada elemento debe tener: nombre, imagen y descripción del arte. Cualquier elemento nuevo se recopila de solo otros dos abiertos anteriormente.
Para evitar el fraude, almacenamos toda la información sobre combinaciones de elementos en el backend. El cliente envió una solicitud desde la ID de dos elementos que el jugador intentó conectar, y el servidor devolvió si esta combinación fue exitosa o no. Si tiene éxito, se le envió al cliente la ID del nuevo elemento, su nombre y descripción. Por nombre, el cliente encontró la imagen deseada y apareció un nuevo elemento en el reproductor. Es decir, todos los datos necesarios para el juego fueron almacenados por el backend.
También planificamos una tabla de registros para los 20 mejores jugadores que recibieron premios, ya que se asignó un cierto número de puntos por cada artículo recolectado. Eso, de hecho, es todo.
Calma tu ardor, supera las tentaciones de hacer demasiado
Naturalmente, en el proceso de numerosas discusiones, me vino a la mente una amplia variedad de Lista de Deseos, que rechazamos prudentemente. Aquí hay algunos de ellos:
- Hubo una idea de agregar un sistema de logros cuando un jugador reunió alguna rama de elementos, un elemento complejo o un conjunto. Después de darnos cuenta de que con la invención de los elementos, las cosas estaban lejos de ser tan optimistas como esperábamos, abandonamos esta idea. Los logros tendrían sentido en una escala de mil elementos, pero en realidad teníamos mucho menos de ellos.
- Alguien sugirió resaltar de manera especial aquellos elementos que ya no se pueden usar en combinaciones. Sin embargo, las pruebas preliminares han demostrado que esto no es necesario.
- El momento técnico. En la implementación final, todas las imágenes están protegidas dentro del cliente de Unity. Es decir, para actualizar o complementar el contenido, es necesario actualizar el ensamblaje en la tienda. Hubo una idea de transferir imágenes a CDN, para que el cliente extraiga datos del backend e imágenes de CDN. Entonces sería casi un cliente "delgado" con una interfaz agradable. Si logramos hacer esto, entonces el juego sería infinitamente expandible con una oportunidad constante de cargar algunos nuevos conjuntos de elementos. Pero nos tranquilizamos por el hecho de que el juego fue creado durante dos días ... Hubo una tentación, pero lo superamos con éxito.
Bueno, cortamos perfectamente nuestras tareas técnicas, llegamos a tiempo claramente, y también con un margen. Se salvaron los días laborales, ni un solo borrador de trabajo resultó dañado (lo que no se puede decir sobre mis tardes y fines de semana).
Mis sentimientos antes de ver lo que está pasando con el contenidoNunca bromees con granos de contenido
La confianza para el componente técnico jugó un truco en el caso del segundo ingrediente creativo del juego: el contenido. Aquí cometimos dos errores: no elegimos a una persona responsable y tomamos demasiados temas para generar pares de palabras que no pudimos masticar. Detalles:
- Después de la primera sesión de lluvia de ideas, decidimos que los elementos de nuestra Alquimia se relacionarán con tres temas: TI, tecnología alimentaria y algo del mundo de Dodo. Y no abandonamos de inmediato esta idea. Las palabras y las combinaciones se generaron simultáneamente en tres direcciones, y aunque fue divertido, de alguna manera no se dio cuenta de inmediato de que los tres temas no tenían muchos puntos de intersección. En algún momento, sin embargo, nos dimos cuenta de que algo iba mal, dejamos caer el pie y dejamos Dodo (pizza, por supuesto). Después de eso, algo comenzó a cristalizarse. Pero aquí el segundo momento jugó un papel.
- Escribí anteriormente que el proceso de compilación de contenido no tenía un propietario. Las primeras palabras fueron inventadas por varios grupos de personas que simplemente lanzaron todo lo que se les ocurrió. Así que en nuestra lista había cosas tan extrañas como "shkolota", "frijoles" o "hijo de la novia de mi madre". (Y sí, fue posible dibujar "beans" a JavaBeans, pero ... no lo hagas.) Ya en la mitad del proyecto, cuando nuestro árbol de palabras no podía arraigarse sobre la base de la lógica, apareció un desbordamiento: Anton Bruzhmelyov, tiró casi todas las palabras que se habían inventado antes e hizo nuevas combinaciones más lógicas.
- Pero los dos puntos anteriores llevaron al hecho de que quedaba muy poco tiempo para inventar contenido. Como resultado, obtuvimos solo 128 elementos. Es cierto, de nuestros probadores voluntarios frente a colegas, solo una niña pudo recopilar todos los elementos en unos pocos días. Nos tranquilizó. Pero obviamente no tomamos en cuenta el grado de perseverancia y determinación de las personas que lucharon por los premios en la conferencia.

Esos mismos frijoles, y también una abeja cibernética (!), Curiosidad y un registro. ¿Qué sucede cuando la fantasía gana el sentido común?El contenido es la parte más importante del juego, es lo que atrapa o no se aferra al jugador. El trabajo sobre el contenido puede y debe comenzar incluso antes del trabajo técnico. Bueno, siempre tiene que haber una persona responsable que, con su mano despiadada, cortará todo lo que sea innecesario y deje solo lo que constituye la imagen completa.
Hasta ahora todo bien o problemas con Apple
Largo, corto, pero diez días antes de DotNext, nuestra alquimia de TI comenzó a convertirse en un producto funcional. Finalmente obtuvimos las combinaciones finales de palabras. La diseñadora Tanya no tuvo que volver a dibujar las imágenes 10 veces. El backend siempre se ha hecho bien y se dirigió con confianza a la funcionalidad deseada, y después de eso finalicé nuestro cliente de Unity.
Es hora de comenzar a publicar nuestra aplicación en las tiendas. No esperaba ningún problema con Google Play, ya tenía la experiencia de publicar aplicaciones completas, pero Apple Store, a juzgar por las historias de colegas, comenzó a inspirar preocupación. Y estos temores no fueron en vano.
Publicamos versiones de prueba para Android e iOS, primero lo probamos nosotros mismos y luego invitamos a más colegas. Capturé casi todos los errores cuando lo probé yo mismo. Es cierto que hubo un problema con la velocidad de animación en dispositivos iOS, que no pude detectar por mucho tiempo, porque todo funcionaba bien en el emulador. Pero espero hablar de esto en el segundo artículo sobre la parte técnica de nuestro proyecto.
La mayoría de las cosas que tuvieron que corregirse estaban relacionadas con el diseño: ya sea que aparezca el "golpe" en el botón, la ventana no se estirará correctamente en diferentes relaciones de aspecto de la pantalla. Fue una parte bastante aburrida y no la parte más interesante del trabajo, pero al final alineamos el diseño con todas las pantallas posibles. Desafortunadamente, pasamos la mayor parte del tiempo en la pantalla del juego y miramos a través de una gran jamba ... Pero resultó ser tan estúpido y desastroso que merece un párrafo separado.
Entonces, literalmente tres días antes de la conferencia, tuvimos un conjunto de 128 palabras, backend listo para usar y clientes recopilados para Android e iOS. Es hora de publicar versiones públicas. Con Google Play, todo fue como un reloj. Pero con la Apple Store, tuvimos dificultades imprevistas.
Mientras tanto, en Apple: "¿Qué más pensarías para evitar que los chicos lancen?"Me advirtieron que tumbarse en el costado es algo terrible, pero no entendí cuánto. Primero, nos mostraron que estábamos jugando, luego nos redirigieron por algunas razones muy extrañas: "Su aplicación no es una aplicación, sino una vista web". Después del tercer o cuarto editorial, simplemente comenzamos a escribir en respuesta: "No, esto no es una vista web, no, tenemos contenido y la aplicación hace algo útil".
Hubo la última noche antes de DotNext y el último intento de publicar la aplicación. Milagro, pasa! No dormí bien, como en la infancia antes de mi cumpleaños. Quería despertarme, mirar el portal de desarrolladores de Apple y ver una marca de verificación verde allí. Por desgracia, el milagro no sucedió.
Sobre fakapy y cat
- Pantalla de inicio y control de entrada de Apple.
Este es mi dolor personal. Porque lo pasó por alto. Los días de los juegos a principios de la década de 2000, cuando la pantalla de inicio copiaba un estante con juegos de mesa o simulaba una sala de juegos, han quedado atrás. Sin embargo, solo teníamos eso.
La pantalla de inicio resultó estar sobrecargada. Y salió completamente, tanto por el estilo del juego como por su propósito directo: darle a la persona la oportunidad de jugar lo antes posible. Incluso en la lógica de nuestro trabajo de diseño, el jugador solo vio una vez la pantalla de inicio durante el registro. Cuando lo reinicias, la pantalla principal del juego se abre inmediatamente.
La imagen en sí era maravillosa, había detalles en ella, había un gato en ella ... y había muy poco campo de entrada en ella, que no todos podían ver con un dedo. No todos los que quieren jugar hicieron frente a la pantalla de inicio, por lo que ya perdimos al principio un porcentaje de jugadores.
Pero el archivo más desagradable se convirtió en la razón por la cual Apple nos registró por última vez: en el iPad (cuya relación de aspecto está mucho más cerca del cuadrado que en todos los otros dispositivos que consideramos), la imagen inicial se escaló para que el gato se subiera al botón "Aceptar" , y la persona físicamente no pudo hacer clic en él.
Healthy Man Cat y Smoker Cat en iPad
Por supuesto, no esperábamos que nuestros jugadores jugaran en el iPad, pero el hecho de que la cabeza del gato bloqueara el inicio del juego era innegable. Para no cortar parte de la audiencia, tuvimos que ir de una manera más complicada: honestamente anunciamos que Apple tenía una política draconiana, y nos redirigieron, pero invitamos a todos a registrarse para las pruebas públicas y participar en el juego de esta manera.
Lo más molesto es que casi todo el tiempo de desarrollo utilicé la pantalla de inicio más simple con un fondo negro, un gran campo de entrada y un botón OK, que nada bloqueó.
¿Cuál es la moraleja de toda esta historia? En nuestro caso, gastamos más esfuerzo y empeoramos todo. Mejor es más fácil. Dirige la energía en la dirección correcta y obtiene el resultado deseado, y si comienza a volverse sabio, entonces el karma universal llega a usted y golpea su cabeza dolorosamente.
- El segundo fakap ocurrió con un número finito de elementos en el juego. Como escribí anteriormente, solo una persona de todos nuestros evaluadores recopiló todos los elementos en unos pocos días. Pero nuestros evaluadores jugaban fragmentos entre el trabajo y un poco por las tardes. Pero nuestros verdaderos jugadores de DotNext estaban decididos a ganar premios, así que a mediados del primer (!) Día, habíamos decidido los tres finalistas. Es decir, estas personas, sin escatimar sus dedos, perforaron los 128, o más bien 133 elementos.
Vaya, ¿dónde está 133, si todo el tiempo antes hablé de 128? Como adicto al proyecto empedernido, en el último momento quería poner algo en el juego. Por lo tanto, la diseñadora Tanya dibujó, y secretamente de otros participantes del proyecto agregué cinco huevos de Pascua más sobre personas que de alguna manera estaban conectadas con el desarrollo del juego. Y el número total de elementos que se mostraron al jugador fue codificado para simplificar. Como resultado, los jugadores recolectaron solo 128 elementos (que no es el número máximo de puntos) y pensaron que eso era todo.
Cinco preciosos en forma de elementos de Pascua.
En lugar de un epílogo
DotNext pasó. Para Android, el juego fue descargado por 146 personas. Otros 43 rompieron la prueba beta pública para iOS. Hicimos una
charla para los jugadores. La mayoría de los jugadores estaban satisfechos (no recibimos críticas negativas directas), los premios encontraron a sus ganadores. Bueno, como siempre, el alivio y la devastación cayeron sobre mí, casi siempre.
Ahora, después de más de un mes, me dejaron ir y escribí este post mortem. Bueno, no pudimos evitar los fakaps. Pero logramos nuestro objetivo: implementamos un proyecto completo en un mes sin interrupción del trabajo y lo lanzamos con éxito en la conferencia. ¿Esta historia me enseñó algo? ¿Quizás es hora de detenerse y unirse al trabajo de diseño? Es difícil de decir, ¡espera la próxima conferencia!
En la versión fuera de línea de nuestra "alquimia de TI", sin una tabla de registros y con una pantalla de inicio fija, puedes jugar descargándola en Google Play .