Hola Habr! Durante casi una década y media, hemos estado creando y desarrollando servicios web. Puede conocer algunos de ellos, tener experiencia de uso, amar apasionadamente o tener sentimientos encontrados, pero ahora no se trata de eso.
Entonces, tuvimos 2 creadores de sitios web conocidos en el mercado: uCoz y uKit, más del 90 por ciento de los registros que nunca se convirtieron en la creación de su propio sitio, un deseo ambicioso de salvar al menos el 5 por ciento de esta audiencia, y también dos personas y media en el equipo que tienen algún tipo de sin experiencia en desarrollo de juegos. No es que fuera un suministro necesario para el lanzamiento del juego sobre la industria web ... Bueno, ya entiendes.

El comienzo del camino sinuoso
59845 líneas de código en el backend y 65675 frontends. Más de 2 años de desarrollo, fallas y puntos muertos, 7 opciones de interfaz. Todo esto ahora está detrás de nosotros, aunque puede llevar mucho tiempo llegar a uno de los miembros del equipo en sueños.
¿Cómo sucedió que las personas y una empresa que se ocupa principalmente de los creadores de sitios de repente adoptaron (y lo hicieron) una estrategia multijugador en línea . Incluso si es temático: sobre sitios y webmasters?
En algún momento, nos dimos cuenta de que uCoz, como producto, comenzó a quedar obsoleto, y este fue uno de los motivos para crear uKit. Todo estaría bien, pero resultó que el problema es más profundo y sus raíces no van a ningún lado, sino a la psicología humana. No importa globalmente de qué creador de sitios hablemos: uKit, uCoz, Wix, Tilda, Jimdo, LPmotor (perdone a todos los demás colegas que no he nombrado, somos varios cientos, recuerdo a todos, los amo a todos). La gran mayoría de los usuarios registrados nunca crearán un sitio . Este es un hecho fácilmente verificable; es suficiente para comparar el número de registros (recuento sin bots) y el número de dominios / clientes activos que realmente se atienden.
Por qué Una buena pregunta, en busca de una respuesta a la que llamamos a nuestros usuarios y no solo a ellos. Porque mañana O la semana que viene. Todo está claro, todo es conveniente, pero no hay tiempo. Es como ir al gimnasio.
Fue entonces cuando surgió un pensamiento simple: para estas personas, por su atracción, ya hemos pagado, y no tratamos de salvar al menos a parte de esta audiencia al permitirles jugar en la creación de sitios.
“Creo que todos los que de alguna manera estén conectados con la creación de proyectos de Internet definitivamente deberían jugar con la administración del sitio como parte de esta estrategia económica. No es de extrañar que digan que los juegos pueden enseñar algo ... Este es uno de los pocos casos en los que realmente puedes comprender algunos de los principios de administrar un equipo de sitio y las características de trabajar en muchos sitios. ¡Y para aquellos que están a punto de sumergirse en esta industria, es obligatorio estudiar la mecánica presentada en el juego!
Dmitry G. alias Dimok (conocido en los círculos estrechos del webmaster de Runet, blogger)
Todos quieren hacer un juego para ellos mismos.
Que nadie me crea completamente, pero este realmente no era el requisito previo número uno. Aunque la historia es tan antigua como el mundo. "Soy músico, ¡hagamos un juego para músicos!", "¡Soy un desarrollador de juegos, hagamos Game Dev Tycoon!", Hay muchos ejemplos de estos juguetes, especialmente en el género indie.
Game Dev Tycoon, por cierto, es un éxito obvio. Esto se evidencia por un montón de clones, desarrollo en la mafia. plataformas Nuestros juegos son fundamentalmente diferentes (otras mecánicas, una configuración diferente), pero Web Tycoon se compara con mayor frecuencia con ellos.

Primer dolor
La decisión está hecha, nosotros hacemos el juego. Escribió sobre la experiencia del equipo en el párrafo inicial, además, los muchachos ya están ocupados con proyectos en curso, lo cual no es razonable arrancarles. ¿Y qué? Por lo tanto, debe confiar el trabajo a profesionales. Este fue nuestro primer dolor real.
En primer lugar, se hizo un intento honesto de contratar un estudio de desarrollo de juegos bien desarrollado para el desarrollo. Afortunadamente, fue posible obtener recomendaciones de colegas-amigos en el taller a quienes es mejor recurrir. A nivel de la idea, a todos les gustó el proyecto, y los estudios estaban listos para asumir ese trabajo.
Aquí hay algunos escenarios que encontramos más adelante:
- Sí, admitimos que nuestros gamedes no. ¡Buena suerte con el proyecto!
- ¿Quieres un juego de navegador? Hagámoslo en Unity, no una pregunta. Y el hecho de que el usuario necesite instalar el complemento en el navegador (en ese momento solo era así) no es un problema, ¡cuesta a casi todos!
Dos estudios pagaron no por el diz más barato. muelles Recibió resultados muy voluminosos. Se ha hecho mucho trabajo, sin preguntas. Sin embargo, se trataba de algún otro juego. Quizás incluso bueno, pero diferente. Para la descripción, el popular es el más adecuado: "Hagan lo que hagan los rusos, todo resulta ser un rifle de asalto Kalashnikov". Estaba claro que la gente estaba acostumbrada y quería hacerlo en un género conocido por ellos, con mecánicas bien conocidas y bien desarrolladas, y por eso eran figurativos en diz. doc
Sin embargo, no hay revestimiento de plata. Desde esta etapa de tambaleo de estudio en estudio, sacamos un nombre, pero muy valioso. El código original era uWebmaster (el juego trata sobre webmasters, y estamos acostumbrados a llamar todo por la letra U). Se propuso una opción obviamente más relevante: Internet Tycoon, que luego se transformó en Web Tycoon.
El segundo dolor, hazlo tú mismo
Cuando tuvimos que admitir que nada funciona con los estudios con nosotros (o con nosotros), decidimos hacer una casa. Comienza una larga selección de la persona fundamental para el proceso, el diseñador del juego. Quien captaría la idea, inicialmente estaba interesado en un género similar, poseía las competencias necesarias, etc.
No quiero hablar mucho tiempo sobre un tema muy difícil, quiénes son estos diseñadores de juegos. Como es necesario y si es necesario escribir diz. muelles En caso de que un diseñador de juegos juegue su juego, comuníquese con la audiencia, sea un gerente. Esta es una conversación muy separada y holística. Diré una cosa: hoy, por razones muy diferentes, el proyecto y el equipo han sobrevivido a 4 diseñadores de juegos (incluido uno junior).
El reclutamiento no fue fácil en todos los frentes. Durante mucho tiempo, su único representante fue un juego solitario (uno de los 4 mencionados anteriormente). La razón principal de esto es el "principio residual" con requisitos bastante altos. Es decir, en primer lugar, los desarrolladores necesitan el proyecto principal, y allí fueron contratados con bastante éxito. Y el techdir para el juego no cristalizó. Esto, por supuesto, no se puede hacer. Decidí hacerlo, hacerlo. Pero seguimos con este rastrillo durante mucho tiempo.
Incluso cuando finalmente apareció el techdir, fue durante mucho tiempo el líder de su propio equipo, arquitecto y, para un conjunto completo, un artista. Personal corregido sin sentido duro. Se necesitaron alrededor de seis meses para formar un equipo completo. Por extraño que parezca, han estado buscando un ilustrador durante mucho tiempo. Y de repente nuestro gerente de oficina se convirtió en ellos.
Resumiendo un cierto resultado a esta parte de la historia, podemos decir que hace 2 años nuestro equipo de juego comenzó a trabajar realmente. Era para quién dibujar interfaces y para quién escribir código, e incluso scrum se introdujo un poco más tarde, lo que ya era una práctica establecida para la empresa en su conjunto.
Diseño e interfaces
Ahora nos vemos así:

Es bastante inusual para el juego, e incluso se podría decir que es aburrido y no divertido. Pero esta es una elección significativa. A primera vista, parece más un portal web que un juego.
A la gente le gusta:

Al mostrar capturas de pantalla a conocidos, a menudo escuché algo como: "Así que este es el panel de administración", "Pensé que eran las estadísticas de alguien, no un juego". Aquellos que son nuestra audiencia inmediatamente fueron con una explosión. Querían algo realmente auténtico, no toons. Quizás perdemos algunos jugadores casuales debido al estilo elegido, pero creemos en su concisión.
Finalmente se convenció de que el juego no tiene que verse como un juego típico, una mirada al Football Manager. El simulador puede no parecer muy juguetón, pero puede ser exitoso. Este es el género.
Dentro del estilo elegido había varias opciones para imágenes. A continuación se presentan diferentes soluciones de diferentes diseñadores.






Todo es mejor si agregas IA
A los jugadores les encantan los cosméticos. Todavía no lo hemos implementado, pero ya hemos aprendido cómo generar un avatar para un jugador a partir de una fotografía. Lo más interesante es que esto sucede con un enfoque específico muy innovador para el aprendizaje automático y la formación de modelos sin conjuntos de datos.
Se genera a partir de los elementos de nuestro diseñador de avatar, y no se estiliza a partir de una foto a la Prisma. Y aunque la máquina no ganó a un hombre en términos de calidad, lo alcanzó en términos de calidad, lo que, dada la tarea, consideramos un éxito.

La tecnología en sí misma tiene planes de desarrollo. Esta historia es digna de una publicación separada, o incluso de ninguna, y ciertamente estará en Habré. Si alguien es muy impaciente, toca el PM, le daremos la oportunidad de jugar con esto personalmente.
Inglés primero, móvil primero
Cuanto más nos acercamos al lanzamiento, más nos dimos cuenta de que nuestro juego se adapta perfectamente a los dispositivos móviles. En algún lugar incluso mejor que en el escritorio. Al mismo tiempo, durante el período de prueba, nuestros jugadores de navegador nos complacieron mucho con la audiencia. Llevaron a cabo conversaciones activas de TI en la sala de chat del juego, escribieron bots para automatizar el juego y seleccionaron nuestra API indocumentada.
Inicialmente, el juego se desarrolló con la idea de que actualmente estamos haciendo un navegador, en él probamos la mecánica, el equilibrio y, luego, rápidamente, gracias a la API incorporada, recopilamos aplicaciones nativas. La realidad ha hecho ajustes.
No quedaba tiempo ni presupuesto para este maravilloso plan. Al mismo tiempo, casi todos los editores con los que hablamos estaban principalmente interesados en los dispositivos móviles y se ofrecieron a visitarlos cuando los teníamos.
Era necesario comprometerse, porque en Cordova durante un par de meses reunimos aplicaciones iOS y Android. Está claro que no son estándar (aunque muy decentes), pero puedes jugar con bastante comodidad. Y es posible probar la hipótesis "cómo funciona" con absoluta precisión.
Problemas con la tienda de aplicaciones
Con Apple y la moderación en la App Store, tuve que luchar un poco. Al principio hubo un borrador con la motivación: “Eres una aplicación web. "Los dispositivos Apple tienen Safari, y viven en él, no se molesten". Pero lo ganamos.
Luego, desafortunadamente, debido a los requisitos de Apple, tuve que cambiar el nombre de la llamativa moneda del juego Bitcoin a Webcoin. Para ser justos, tienen razón, es posible que se produzca un error. Aunque para nosotros las sensaciones no son las mismas.
En cuanto a las localizaciones, estamos completamente listos para comenzar con una audiencia de habla inglesa. Sin embargo, es más fácil y económico para nosotros perfeccionar y probar en nuestro mercado nativo de habla rusa. Por lo tanto, hasta ahora solo hemos comenzado en Rusia, pero en una o dos semanas esperamos volver a English First.
Puntos técnicos
Migración de React y Redux a Vue y Vuex
Entiendo que ahora estamos pisando el hielo delgado de posibles holivares, por lo tanto, haré una reserva de inmediato de que no estamos imponiendo nada o afirmando nada, a sabiendas estamos de acuerdo con "simplemente no sabes cómo cocinarlos". Esta es solo una descripción de nuestro camino, razones de elección y experiencia.
La primera revolución en el proceso de creación del juego, aunque bastante suave, fue la transición de React y Redux a Vue y Vuex.
En la empresa, tratamos de desarrollar todos los productos en aproximadamente la misma pila de tecnología. Esto es principalmente una cuestión de experiencia acumulada y, en cuyo caso, una transferencia fácil entre los equipos de desarrollo. Básico para nosotros hoy: NodeJS, React y MongoDB.
Hacer un juego con un montón de datos y conexiones fue inicialmente tonto en NoSQL. Como resultado, fue sangriento durante una semana que todos migramos a él, pero lo primero es lo primero.
¿Por qué la mitad cambió de React a Vue?
La llegada del nuevo diseñador de juegos cambió la mecánica central del juego, lo que condujo a una seria alteración de la mayoría de las interfaces en el juego. La nueva mecánica se prototipó rápidamente en Vue, el criterio para esta elección fue el bajo umbral para ingresar a la tecnología. En el mismo período, se nos ocurrió y comenzamos a introducir un sistema vectorial de crecimiento del tráfico, ganancias y energía. Antes de eso, simplemente escribían datos a tiempo, pero no operaban con las tasas de cambio.
Inicialmente, junto con React, utilizamos Redux. La propagación creció muy rápidamente: cada acción del usuario con un sitio web en el juego creó una nueva entrada. En consecuencia, toda la historia mutó y los captadores fueron contados, y como resultado tuvieron cálculos complicados de tráfico y ganancias, todo esto se desaceleró terriblemente. Por supuesto, fue posible tomar MobX, rehacer la lógica de los cálculos, pero este momento coincidió con serias alteraciones en la mecánica central, de alguna manera no fue antes. O las estrellas coincidieron. Cuando intentaron resolver problemas en Redux conectando varias partes, en Vuex todo salió de la caja y se dividió en cualquier número de submódulos sin gestos innecesarios.
El azúcar de sintaxis y la flexibilidad de Vue realmente nos "golpearon". Por ejemplo, ahora, para actualizar regularmente un valor en un componente, en lugar de propiedades calculadas
foo() { return bar + baz; }
escribir
foo() { return (this.oneTick, bar + baz); }
Se oculta un poco de magia en la propiedad this.oneTick, que es reactiva y se actualiza una vez por segundo, lo que hace que el componente se represente si el resultado de la expresión bar + baz cambia.
Migración de base de datos
Desde el backend, tuvimos una migración pequeña y otra grande. Inicialmente, el proyecto se realizó en MySQL. Como fue rápido, simplemente pensé que necesitábamos relés y otras delicias. Después de eso, maduramos un poco y sin dolor cambiamos a PostgreSQL.
Más extenso y complejo fue el traslado a MongoDB. La decisión se debió a la fácil escalabilidad y al rendimiento relativamente mayor. Hubo muchos más problemas durante el segundo movimiento, a pesar de la presencia de ORM. Pero la configuración misma de ReplicaSet y AutoFailOver estándar nos llevó solo una hora.
Algunas palabras sobre editores
Para empezar, los estamos esperando. Hasta ahora, solo Mail.Ru ha creído con confianza en nosotros. Gracias colegas por eso. Muy pronto descubriremos cómo nuestra versión del navegador llega a su audiencia.
En libros y podcasts inteligentes dicen que los editores deben llegar a algún lugar a mitad de camino, y no en la etapa de lanzamiento. Lo hicimos, comenzamos a hablar por adelantado, incluyendo ir a DevGamm en noviembre.
¿Qué esperábamos?
"Sí, está bien, solo rehaga esto y esto, ¡y aquí estamos y nuestra experiencia!"
Lo que tenemos
"Es genial, algo nuevo y no estándar, un entorno interesante, pero ¿cómo comenzar y habrá técnicas de monetización? Ven".

En general, la teoría nos falló. Los intentos de entender por qué sucedió esto dieron la respuesta: "Usted tiene un no estándar, así que aquí está".
De la mano al corazón, diré que, en mi opinión, no hay tantos no estándar, pero ellos lo saben mejor.
En general, los representantes del desarrollador del juego reaccionan positivamente. Se puede ver que el mercado se cansó de los próximos "Kill the Dragon" y "Conquer the Castle". Aunque esto puede ser una percepción distorsionada de las personas desde adentro.
Final
Con un camino tan espinoso y torcido, llegamos a un almuerzo suave. Este no es el caso cuando los ganadores no son juzgados, y todavía no se puede llamar una victoria. Por lo tanto, esperamos en los comentarios sus comentarios y preguntas. ¡Responderemos rápidamente a todo!
Si está listo para ofrecer cooperación, incluso estamos listos para considerarlo.