Cómo me convertí en desarrollador de juegos para teléfonos móviles

Una pequeña historia de cómo me convertí en desarrollador de juegos. Intentaré resaltar los problemas que encontré en mi camino y compartiré algunos números. He trabajado como programador durante mucho tiempo, desde 2001, he estado lidiando con computadoras desde la infancia, pero comencé a jugar juegos solo a principios de 2014. Y el catalizador de esto fue el artículo sobre Habré. En algún lugar a principios de 2014, mientras leía artículos sobre Habré, encontré un artículo sobre cómo un joven hizo un juego simple para VK. Un sencillo juego de batalla de aviones en 2D. Había poco en el artículo sobre el juego en sí, pero me interesó el hecho de que le ofrecieron vender el juego por 700 dólares. Se negó y luego se arrepintió, ya que el juego solo le trajo pérdidas. Y esta "historia de éxito" de alguna manera me inspiró.



Me preguntaba si no podría hacer un juego como este. Sí, puedo escribir una docena de ellos al mes. Estudiando la cuestión del desarrollo para la web, decidí decantarme por flash, parece que en ese artículo había un juego solo en él, aunque su declive ya era una conclusión inevitable. Entonces, comencé a dominar el flash, a mirar videos en YouTube, a intentar repetir pequeños ejemplos. No pensé mucho en elegir lo que quiero hacer, quiero hacer mi Command & Conquers con mi servidor y unidades :) No puedo dibujar, así que tomé fotos del juego original que se pueden encontrar en Internet. Pensé que si salía algo, pediría el arte para el juego a alguien que supiera cómo hacerlo. Cuando algo funcionó, publiqué videos y capturas de pantalla en mi página en VK. No recuerdo cuánto tiempo estuve haciendo esto, pero, como planeé antes,No logré hacer un mar de juegos en las próximas semanas. El trabajo principal también consumió mucho tiempo y me moví muy lentamente. Un poco más tarde, mi viejo amigo Dima, que también es un gran fanático de los juegos de estrategia, me ofreció su ayuda en el proyecto. Le dio al proyecto una aceleración. Además, resultó que estaba familiarizado con un artista que ya había participado en la creación de proyectos similares para PC. Por tanto, ya contaba con desarrollos, maquetas de edificios y equipamiento.



Hablamos y decidimos hacer un juego juntos. Teníamos un programador, este soy yo, el artista Sashka y el guionista Dima. Estuvimos de acuerdo en cómo dividir la piel de un oso no matado, inventamos un nombre para el proyecto y nos pusimos manos a la obra. Después de un tiempo, abandonamos VK y comenzamos a hacer un juego para teléfonos móviles. Como parte del proyecto ya lo había desarrollado yo en flash, se decidió no dejarlo, utilizando Adobe AIR, era posible escribir para casi cualquier plataforma. (Una pequeña digresión, estoy escribiendo sobre flash, como si estuviera poniendo excusas, para ser honesto, realmente no entiendo todos los ataques a esta tecnología, todos parecían ofendidos por el flash juntos y lo dejaron juntos. Generalmente me gusta el flash, así que no más excusas.



Como no tenía experiencia en el desarrollo de juegos y la comunidad flash ya estaba empezando a dispersarse, inventé varias bicicletas y algunas de mis decisiones fueron, por decirlo suavemente, controvertidas. Decidí no mantener la narrativa cronológica, recordar lo que estaba pasando, ya es difícil para mí, así que elegiré un tema e intentaré contarte cómo se desarrolló esta dirección en el juego.



El juego no difirió en algunas características, todas las mecánicas del juego fueron tomadas de varios juegos de estrategia de finales de los 90 y principios de los 2000.



Dado que el juego está hecho en estilo isométrico, todos los objetos utilizados consistieron en imágenes pre-renderizadas. Ahora hay más de 8000 de ellos. Sasha a menudo los vuelve a dibujar y me dio conjuntos, a menudo cambiando los nombres de las imágenes, y esto llevó al hecho de que el código tenía que ser editado, y en un momento determinado tuve que escribir un programa separado que organizaría las imágenes y escribiría el código. para que estos kits se puedan utilizar fácilmente. Esto ahorró mucho tiempo. Inicialmente, no había niebla de guerra, luego hice una especie de muleta a partir de una imagen negra, que "perforé" con óvalos, y luego espié el algoritmo para dibujar niebla en el motor de estratos. El mapa del paisaje en el juego se dibujó con una imagen. El mapa indicaba de antemano los lugares donde era imposible moverse. Para esto escribí a cierto editor,donde fue posible marcar estos lugares con ciertos rectángulos. Y ya en el juego, los cargué en una matriz y revisé constantemente si la unidad se encontraba con este rectángulo o no. Sorprendentemente, fue muy rápido y los mapas se compilaron con la menor cantidad de ubicaciones dadas. No conocía ningún algoritmo para encontrar un camino y, por alguna razón asombrosa, decidí inventar el mío propio, a pesar de que en Internet era posible buscar en Google los ya preparados en AS3. Cuando una unidad tropezó con un rectángulo tan invisible, indicando algún tipo de obstáculo, por ejemplo una roca, comenzó a girar en el sentido de las agujas del reloj (de hecho, no recuerdo en qué dirección comenzó a girar, pero ya no importa), verifiqué si podía. ir allí y seguir adelante, o girar de nuevo.Si la unidad tropezó con el rectángulo dado o no. Sorprendentemente, fue muy rápido y los mapas se compilaron con la menor cantidad de ubicaciones dadas. No conocía ningún algoritmo para encontrar un camino y, por alguna razón asombrosa, decidí inventar el mío propio, a pesar de que en Internet era posible buscar en Google los ya preparados en AS3. Cuando una unidad tropezó con un rectángulo tan invisible, indicando algún tipo de obstáculo, por ejemplo, una roca, comenzó a girar en el sentido de las agujas del reloj (de hecho, no recuerdo en qué dirección comenzó a girar, pero ya no importa), verifiqué si podía. ir allí y seguir adelante, o girar de nuevo.Si la unidad tropezó con el rectángulo dado o no. Sorprendentemente, fue muy rápido y los mapas se compilaron con la menor cantidad de ubicaciones dadas. No conocía ningún algoritmo para encontrar un camino y, por alguna razón asombrosa, decidí inventar el mío propio, a pesar de que en Internet era posible buscar en Google los ya preparados en AS3. Cuando una unidad tropezó con un rectángulo tan invisible, indicando algún tipo de obstáculo, por ejemplo, una roca, comenzó a girar en el sentido de las agujas del reloj (de hecho, no recuerdo en qué dirección comenzó a girar, pero ya no importa), verifiqué si podía. ir allí y seguir adelante, o girar de nuevo.a pesar de que en Internet era posible buscar en Google los ya preparados en AS3. Cuando una unidad tropezó con un rectángulo tan invisible, indicando algún tipo de obstáculo, por ejemplo, una roca, comenzó a girar en el sentido de las agujas del reloj (de hecho, no recuerdo en qué dirección comenzó a girar, pero ya no importa), verifiqué si podía. ir allí y seguir adelante, o girar de nuevo.a pesar de que en Internet era posible buscar en Google los ya preparados en AS3. Cuando una unidad tropezó con un rectángulo tan invisible, indicando algún tipo de obstáculo, por ejemplo una roca, comenzó a girar en el sentido de las agujas del reloj (de hecho, no recuerdo en qué dirección comenzó a girar, pero ya no importa), verifiqué si podía. ir allí y seguir adelante, o girar de nuevo.



Bueno, volví al curso. De hecho, podría girar en diferentes direcciones según la situación. Se veía terrible, además, para evitar que los jugadores perdieran dinero debido a la estupidez de los recolectores y del desarrollador, hicimos la recolección de recursos usando helicópteros de carga que volaban y no necesitaban sortear obstáculos. Soluciones tan maravillosas estaban en casi todas partes. Descargué el contenido del servidor. Para hacer esto, creé un servidor en casa, y constantemente no estuvo disponible una vez a la semana durante varias horas, lo que no permitía a los nuevos usuarios iniciar el juego en absoluto. Y decidimos publicar ese milagro en la tienda de aplicaciones de Google. Y en algún lugar de noviembre, según las estadísticas, el 16 de 2014 se lanzó el juego en Android. El juego contenía muchos errores, en algunos dispositivos podría no iniciarse en absoluto y, si se iniciaba,no pudo comenzar debido a la imposibilidad de descargar atlas y misiones, pero, sorprendentemente, fue recibida calurosamente. Muchos jugadores escribieron críticas positivas y pidieron que se corrigieran varios fallos.



imagen



Poco a poco abandoné mi servidor doméstico y como repositorio de contenido para el juego, alquilé espacio para el sitio, compré un dominio y cerré el problema con las descargas. El artista comenzó a pintar un nuevo lado del conflicto, Dima comenzó a trabajar en el guión de la campaña. Y decidí hacer un servidor para jugar a través de Internet. La monetización en el juego se realizó mediante anuncios molestos, pero no generó nada, 50-100 dólares al mes. Le dimos todos estos “ingresos” al artista.



imagen

Así es como se veían los ingresos del primer mes



Servidor de juegos



Tenía experiencia escribiendo un servidor en C ++, esta es una aplicación cliente-servidor muy simple que usa sockets, en la que tenía 2-3 clientes, pero luego necesitaba inventar una bicicleta mejor. Elegí C # porque en ese momento había estado programando en él durante mucho tiempo, así como Microsoft SQL Server para almacenar estadísticas. Busqué en Google un ejemplo de un servidor en C #, comencé a comprender la implementación de sockets en AS3 (escribiré sobre flash como este en el futuro). La idea era simple, mis unidades ya tenían una cola de comandos, que luego ejecutaban, solo necesita agregar un comando a una unidad en un dispositivo, enviarlo al servidor y el servidor enviará este comando al segundo dispositivo y viceversa. Y también algunas funciones de servicio, autorización en el servidor, creación de una sala, control de versiones del juego, el juego se actualizaba con mucha frecuencia, se le agregaron nuevas unidades,Se corrigieron errores y esto requirió que los jugadores jugaran las mismas versiones, etc. Me las arreglé para escribir un servidor de producción con relativa rapidez. Y, ¡he aquí! ¡podemos jugar entre nosotros! Eché a perder la creación de salas mucho más tarde, y al principio los jugadores simplemente podían elegir un mapa para crear el juego, y el segundo jugador tenía que hacer clic en unirse al servidor, y luego se conectaron y jugaron en el mapa que eligió el jugador que creó el juego. Y este servidor se ubicó nuevamente en mi apartamento. Poco a poco, llevé el multijugador a un aspecto más o menos decente. Ahora pueden jugar hasta 8 jugadores en un mapa, en diferentes versiones, hasta 3 equipos. Además, las estadísticas del juego y algunas funciones se pueden ver en el sitio del juego, que escribí en ASP.net. Todos los juegos que tienen lugar en el servidor se guardan en archivos xml,que se puede descargar y visualizar en el cliente con varios modos de velocidad. Guardo repeticiones en disco, no en la base de datos, y ya hay bastantes. No estoy seguro de si esto es una buena idea, pero tampoco hay ningún deseo de enviar más de 100 gigas de repeticiones a la base de datos. Por ganar el juego, se otorga una calificación, con cambios menores, esta es una calificación calculada según el sistema ELO. De vez en cuando, me encontré con varios problemas de optimización, la necesidad de lidiar con trucos asincrónicos, falta de espacio en el servidor y mucho más. Y finalmente alquilé un servidor normal. Primero virtual y luego real.con cambios menores, esta es la calificación ELO. De vez en cuando, me encontré con varios problemas de optimización, la necesidad de lidiar con trucos asincrónicos, falta de espacio en el servidor y mucho más. Y finalmente alquilé un servidor normal. Primero virtual y luego real.con cambios menores, esta es la calificación ELO. De vez en cuando me encontré con varios problemas de optimización, la necesidad de lidiar con técnicas asíncronas, falta de espacio en el servidor y mucho más. Y finalmente alquilé un servidor normal. Primero virtual y luego real.





Tan pronto como el juego se volvió gratificante, aparecieron personas que querían ganar usando métodos deshonestos. Y con esto había que hacer algo, ya que asustaba a los jugadores normales. Por lo tanto, agregué la transferencia al servidor de datos sobre los recursos recolectados y consumidos, el número de carreras de recolectores a la base, etc. Se agregaron datos sobre precios unitarios, etc., a la base de datos, para que pueda calcular cuántos recursos ha transferido el jugador al servidor y analizado allí. Y si los datos no coincidían, echaba del juego al tramposo y contaba la victoria para el oponente. Pero los jugadores a menudo me sorprendían con su ingenio. Otra forma que encontré es acelerar el juego. No sé cómo lo hicieron los jugadores, en general, todo el juego funcionó más rápido para ellos, y los recolectores estaban recolectando más rápido y el lanzamiento de unidades fue más rápido.Tuve que calcular la tasa de liberación de unidades en el servidor y también castigar a las astutas. Sin embargo, sin emular el juego, no será posible evitar completamente el juego sucio en el servidor. Pero como el juego no es popular, resuelvo problemas a medida que están disponibles. Hay jugadores habituales con los que me comunico periódicamente sobre fallos y, a veces, yo mismo juego con las retransmisiones de mi canal los fines de semana. Siempre puedes cargar el juego y ver qué sucedió en él.



imagen





No había muchos jugadores en el servidor. Algunos tuvieron miedo de perder su calificación y, por lo tanto, no jugaron. Era necesario agregar un jugador impersonal que no se ofendería de perder y que pudiera entretener a los jugadores. Necesitamos un bot. Para escribir un bot, fue necesario resolver una serie de problemas. Si es fácil escribir la cola de construcción de edificios, entonces encontrar un lugar adecuado en el mapa para la construcción ya es más difícil. En misiones fuera de línea, por ejemplo, preasigné lugares para la IA donde podría construir edificios. Pero si el enemigo construye todo de acuerdo con un plan dado y coloca edificios en los mismos lugares, no será interesante, se necesita algo más. Y descubrí cómo hacer trampa aquí. Me perseguía la idea de que el servidor almacena todos los juegos y tienen todos los lugares donde los jugadores ya estaban construidos, jugando unos contra otros. Solo necesita organizar esta información y usar ... Entonces,Detener. ¿Qué pasa si uso completamente la estrategia de construcción y libero unidades de un jugador real que alguna vez jugó en este mapa y estaba en el mismo lugar donde está ahora el bot? ¿Alguien notará tal sustitución? Y para ser honesto, también controlaré el lanzamiento de unidades según la cantidad de dinero que ganó. El juego en sí no se emuló en el servidor, sino que funcionó completamente en el cliente que creó el juego, y algunos puntos eran difíciles de entender. Por ejemplo, el servidor no podía conocer la posición exacta de las unidades móviles en el mapa, la información sobre la posición era solo en el momento en que la unidad terminó de ejecutar el comando para ir, y el servidor aún desconocía mucha información. Pero los consideré no tan significativos, a veces era necesario transferir un comando al cliente a las unidades para que atacaran a los oponentes más cercanos. Esto me pareció suficiente.También agregué algunas fichas al bot, esta es la capacidad de recuperar sus edificios si alguien los capturó por un ingeniero y no logró venderlos, la necesidad de restaurar sus edificios si fueron destruidos y muchas otras funciones necesarias para sobrevivir en el campo de batalla. Sorprendentemente, el bot echó raíces. Los jugadores juegan con él de buena gana. E incluso los jugadores fuertes, teniendo un poco de boquiabierto, a veces pueden perder con sus propias tácticas, jugaron hace un mes contra el mismo bot o un jugador real, pero aún así debemos admitir que no llega a un buen jugador. Ahora el bot ha jugado más de 311 mil juegos, y en el 40% de las batallas ganó.necesario para sobrevivir en el campo de batalla. Sorprendentemente, el bot echó raíces. Los jugadores juegan con él de buena gana. E incluso los jugadores fuertes, habiendo quedado un poco boquiabiertos, a veces pueden perder con sus propias tácticas, jugaron hace un mes contra el mismo bot o un jugador real, pero aún así debemos admitir que no llega a un buen jugador. Ahora el bot ha jugado más de 311 mil juegos, y en el 40% de las batallas ganó.necesario para sobrevivir en el campo de batalla. Sorprendentemente, el bot echó raíces. Los jugadores juegan con él de buena gana. E incluso los jugadores fuertes, teniendo un poco de boquiabierto, a veces pueden perder con sus propias tácticas, jugaron hace un mes contra el mismo bot o un jugador real, pero aún así debemos admitir que no llega a un buen jugador. Ahora el bot ha jugado más de 311 mil juegos, y en el 40% de las batallas ganó.



Versión paga del juego



Cuando el artista pintó por completo el segundo lado del conflicto de la URSS, antes teníamos solo uno: una alianza, queríamos intentar venderlo. No recuerdo exactamente cuándo aparecieron las compras en el juego, pero también decidimos hacer una versión paga del juego, que no tenía anuncios y tenía una segunda cara sin compra. Se solucionaron muchos fallos e incluso apareció un algoritmo de búsqueda de rutas normal. Los mapas de imágenes fueron reemplazados por mapas en mosaico, que se dibujaron con herramientas estándar. La campaña fue traducida al inglés, ya por un traductor normal, y no por nuestra cuenta.



imagen



Ahora el juego tiene la oportunidad de jugar como Japón, y también recientemente agregamos otra raza "Aliens", este es un lado separado donde puedes jugar con unidades parecidas a escarabajos hasta que el equilibrio esté completamente ajustado, y francamente son débiles.



imagen



En junio de 2015, lanzamos la versión paga de nuestra estrategia y no estuvo nada mal. El juego ha estado durante mucho tiempo en la cima de las estrategias pagas en Rusia y en algunos otros países. Y trajo alrededor de $ 1000 durante el primer mes. Este fue el primer ingreso normal de los juegos, creí que esto podría generar algo. Durante todo el tiempo, la versión paga en Android generó alrededor de $ 22K (ya menos Google).



imagen



Estos picos, comenzando desde el centro de la imagen, son ventas. Anteriormente funcionaban mejor, ahora las ventas, como pueden ver, no tienen el mismo sentido que antes, al menos para mi juego.



Localización



Vale la pena mencionar las traducciones por separado. El juego ahora tiene 7 idiomas además del ruso. La mayoría de las transferencias me las hicieron jugadores de diferentes países, ya sea gratis o por una pequeña recompensa. Fue un momento muy divertido. Una vez, habiendo entrado en el servidor multijugador, noté un fuerte aumento en el número de jugadores, literalmente 10 veces. Por un lado, me hizo feliz.



Miré las estadísticas de visualización de anuncios y no noté ningún cambio allí. Miré a algunos jugadores de IP, todos eran de China. Busqué en Google y encontré mi juego en Internet chino, completamente localizado. Alguien lo destripó, tradujo todo a las imágenes y lo colocó. Además, se eliminaron los anuncios en el juego, se desbloquearon varias funciones pagas, etc. ¡Pude sacar provecho de esto, tomé la traducción al chino de allí y la puse en mi juego! Robé una traducción de un juego que me robaron. Versiones actualizadas y deshabilitada la capacidad de jugar antiguo. Sorprendentemente, el juego fue muy popular en Tailandia, aunque no tuvo una localización de 1.3 M descargas. 250 mil descargas en Tailandia, que ocupa el primer lugar, seguida de Rusia con 160 mil. Mostraré este gráfico un poco más tarde.



imagen



Juego de actuación de voz



Inicialmente, buscábamos sonidos libres en varias librerías de sonidos libres, generamos algunas claves en el doblaje del menú con un generador de voz. Básicamente, estas eran frases solo en inglés. Ahora hay doblaje en ruso e inglés. A veces, para la versión VK, pedimos ayuda con la actuación de voz de las unidades de nuestros jugadores de habla rusa. Luego conocimos a Alexei, quien expresó todos nuestros juegos en el futuro. El proceso de doblaje de uno de los juegos La



música del juego fue escrita por nuestro artista Alexander, y algunas composiciones nos las escribió Yuri (GraYaSDF).



Publicidad



Si bien el juego no trajo nada más que placer, no se pensó en publicitarlo. Entonces decidí probarlo. El correo estaba lleno de sugerencias de todo tipo de blogueros para introducir el juego en una de las mejores reseñas de sus canales. Probé este tipo de anuncios varias veces y me decepcionó por completo. No tenía sentido de tales críticas, y algunos pidieron más dinero del que el juego trajo en un mes. Lo único que realmente valió la pena fue el anuncio en w3bsit3-dns.com. Existe algún tipo de programa para desarrolladores donde puedes escribir un artículo sobre tu juego. Y este es el único anuncio que realmente valió la pena para mí. Pero también, lo más probable, depende del juego. No compré ninguna instalación.



imagen



Así es como se ve el gráfico de configuración del juego. No pude determinar el patrón, por lo que las descargas pueden subir o bajar. El crecimiento puede ocurrir con un aumento de las malas valoraciones y una caída, con un aumento de los ingresos y una disminución de la ANR. Una vez, al cambiar a un nuevo número sdk de Android, no intenté instalar el juego en un nuevo dispositivo para la prueba, y allí, como resultó más tarde, estaba prohibido escribir en la carpeta del documento, o se requirió un permiso especial del usuario. Y el juego durante un par de días, supongo, simplemente no se iniciaría en dispositivos nuevos. Y sin embargo, el juego mostró un gran aumento en las descargas, lamentablemente no me quedaba este gráfico, pero lo discutimos en nuestro pequeño equipo. A veces las caídas parecen ser artificiales, esto se nota especialmente a principios de 2018. Parecen cortados en una cierta cantidad. Por cierto,muchos desarrolladores experimentaron este otoño.



Otras plataformas



También lancé el juego en iOS y luego en Steam. Es muy fácil usar la tecnología Adobe Air. Durante un tiempo, incluso tuve una versión de navegador del juego en VK. Pero ni siquiera hubo cerca de esas descargas que en Android. Por lo tanto, la plataforma principal para mí es Android.



Mis otros juegos



Escribí sobre un juego. De hecho, ya hay tres. De hecho, son uno, ya que están hechos con el mismo motor y ya son zakos para Warcraft - Warage y Dune - Expanse.



imagen



Conclusión



Lanzando juegos posteriores después del primero, que ya eran pan comido y con un mayor grado de preparación, noté que no era tan fácil irrumpir en la cima de la tienda de Google, como lo fue con el primer juego a fines de 2014. Hay un montón de contenido para estrategias, pero noté que agregar contenido no conduce a ningún crecimiento en las instalaciones. Por tanto, todavía no he decidido si mejorar los juegos existentes o empezar un nuevo proyecto, si estudiar una nueva tecnología y si seguir jugando juegos en general. En cualquier caso, sin siquiera darme cuenta de la idea de lanzar muchos juegos pequeños, me parece que pude pasar los últimos 7 años con beneficio, dominando una nueva dirección. Y todo gracias a ese pequeño artículo sobre aviones. Espero que mi artículo sea útil para alguien, o quizás inspire a alguien a desarrollar juegos.



All Articles