Hola
Hoy les contaré sobre otro desarrollo de casas fanático, sobre cuán lejos pueden traer el interés y la perseverancia, y sobre lo que se descomponen. En general, todo es bastante estándar para tales historias.
Debajo del corte, verá: una historia detallada de la creación de RTS con sus propias manos (concepto, código, interfaz, equilibrio, mapa, modelos) y un experimento para vincular un rastreador de TI como una herramienta de entrada.

Bueno, empecemos.
En el patio 2014.
Soy estudiante del Departamento de Diseño de Información de Polytech (ahora "Ingeniería de Gráficos y Diseño").
Con mi diploma de licenciatura, desarrollé un juego para un kinekt sobre un duelo de dos pujas, en el que tenías que esquivar los ataques del enemigo y lanzar tu anzuelo en él (¡VEN AQUÍ!).
En el trabajo del maestro, decidí dar un paso más. En ese momento, apareció una novedad técnica en el laboratorio del departamento: un rastreador de TI. La elección cayó inmediatamente sobre él. No había duda de que el trabajo será un juego; todo lo que quedaba era elegir el tema. Después de pensarlo un poco, me di cuenta de que quiero honrar la estrategia con la que crecí y que me abrió el maravilloso mundo de la programación: Warcraft3.
La tesis de maestría, sin embargo, no es solo el desarrollo de un producto. En mayor medida, debería representar algún tipo de investigación. La cuestión de cómo integrar el seguimiento de TI en una estrategia reveló la caja de Pandora.
Aquí entraron en juego muchos años de experiencia en juegos. La mayoría de los juegos intentan limpiar la pantalla de controles, dando el espacio principal al contenido. En estrategias, la interfaz ocupa un gran espacio. Para comprender qué es una unidad en particular, debe encontrarla en la pantalla, seleccionarla, mirar la "barra de estado" y encontrar el parámetro necesario allí. Cuando surge una necesidad similar durante la batalla de grandes ejércitos, tal secuencia de acciones a menudo crea dificultades.

Surgió la pregunta: dado que ya encontramos la unidad en el campo, ¿por qué necesitamos seleccionarla más tarde para leer la información? ¿Por qué no lo entiendes con solo mirarlo? Después de la demostración, la pregunta se transformó en el sabio nombre "Funcionalidad del área operativa de la visión humana en la interacción humano-computadora", que, en esencia, significaba comparar la efectividad del mouse y los ojos al resolver el problema de encontrar un objeto de una multitud y leer información de él.
Summa technologiae
Hay un tema Hay un concepto Depende de la elección de la tecnología. Después de una revisión de mercado, la elección cayó entre Unity, UnrealSDK, libGDX, entre los cuales se eligió Unity + C #. Después de dominar la interfaz, el ciclo de vida de los objetos en el escenario y las posibilidades de interactuar con ellos, comencé a desarrollar.

Gracias al mayor milagro de nuestro tiempo, Internet, encontré una impresionante serie de tutoriales que permitieron construir la base del motor para el futuro juego. Después de pasar por una serie de tutores durante un par de noches sin dormir, tenía una estrategia en mis manos. Tenía trabajadores capaces de construir edificios; cosechadoras capaces de extraer recursos y edificios capaces de producir unidades.
Esta base fue suficiente para el experimento. Es cierto que faltaba un componente importante: conectar la funcionalidad del rastreador de TI al juego en sí.

El sistema de seguimiento de TI es un conjunto de dos computadoras, una de las cuales muestra los incentivos destinados al usuario (llamémosla Demostrador), y la segunda recopila y analiza la información proveniente del rastreador de TI (llamémosla Registrador). Había un software que salía de la caja con el rastreador de TI, lo que hizo posible sincronizar dos máquinas, calibrar el registro de la mirada del examinado (todos tienen sus propios parámetros oculares y la mirada misma), y luego ejecutar una serie de estímulos estáticos para verlo. En mi tarea, se suponía que el registro de la vista debía integrarse en un programa extraño.
Para hacer esto, tuve que estudiar el protocolo de interacción entre el Demostrador y el Registrador. La transmisión de datos se llevó a cabo a través de la red local utilizando paquetes UDP con comandos, lo que significa que necesitaba escribir mi propio cliente de calibración emulando el funcionamiento de la aplicación predeterminada.
Me llevó un par de días excavar para escribir un cliente. Primero como una aplicación de terceros. Le permitió pasar por la calibración y luego controlar el rectángulo en la pantalla con una mirada. Más precisamente, el rectángulo fue dibujado en el punto de fijación de la mirada. Parecería que no es ciencia espacial, sino la capacidad de usar el ojo no como un medio para obtener información, sino como una herramienta para la producción, influencia en el mundo exterior, deleites y conmociones.
Cuando todo estuvo listo, llegó el momento de experimentar.

Hay una escena limitada a una pantalla. En él, después del lanzamiento, las unidades (tanques, jajaja) se generan y comienzan a moverse al azar.

Cada unidad tiene una cierta cantidad de salud. Todas las unidades tienen la salud máxima, excepto una que tiene la mitad del nivel de HP. Cuando se resalta una unidad, vemos un marco a su alrededor con un indicador de salud. Quién tiene plena salud: el indicador está verde y lleno. En la unidad herida, está rojo y medio lleno. El objetivo es encontrar un tanque herido entre el resto y mantenerlo aislado por un segundo. El parámetro medido principal es el tiempo requerido para completar esta tarea. El experimento consistió en 5 niveles, que diferían en el número de unidades en el escenario: 5, 10, 15, 20, 25. La hipótesis era que resolver este problema con la ayuda de un rastreador de TI requeriría menos tiempo.
Se realizó un experimento, se recopilaron datos. Ha llegado el momento de procesar estadísticas. Utilicé las herramientas habituales: PHP y JavaScript, calculé el criterio de Fisher y descubrí que la diferencia entre usar un cursor y usar un rastreador es estadísticamente significativa. Por supuesto, la velocidad de ejecución de la tarea se usó como una variable dependiente. Luego visualicé el resultado usando D3.js.
En general, generalmente para resolver estos problemas, ya sea el lenguaje R o el programa SPSS. Pero por naturaleza amo ahorrar energía y recursos mentales. Consideraba perder el tiempo aprendiendo estas herramientas adicionales como una inversión ineficiente.

La imagen resultante superó mis expectativas. Resultó que los sujetos que usaban el rastreador de TI resolvieron el problema dos veces y hasta 15 objetos tres veces más rápido que los sujetos con el mouse.
La investigación y el supervisor formalizaron el
artículo y fue publicado en la revista Perception.
Wow! Éxito, fama, etc.
Aquí me gustaría mencionar por separado a mi supervisor. Gracias a él, escribí mis dos diplomas y, en general, avancé hacia la programación y la interacción humano-computadora. Pavel Orlov (
1 y
2 ), ahora enseña en el Imperial College de Londres, pero en general estudia a las personas con la ayuda de un rastreador de TI y crea todo tipo de chistes geniales.
En principio, uno podría detenerse en esta etapa, pero el alma del artista gritó que como trabajo de graduación de un maestro, se podría mostrar algo más que un simple proyecto unido en un tutorial.
Aprendiendo a caminar
Para que un juego sea un juego, debe tener un concepto, idea, trama, lógica. Los eventos no deberían ocurrir en un plano de césped interminable, sino en un mapa específico, en el que, además de edificios y recursos, deberían estar presentes elementos de alivio y algún tipo de vegetación ... Las unidades obviamente deberían poder moverse no solo, sino que la interacción del jugador con el mundo debería tener lugar a través de una interfaz reflexiva.

Cegado por las oportunidades y las perspectivas, comencé a escribir código. En primer lugar, les di a las unidades la oportunidad de atacar. Bueno, dado que atacan, por supuesto, necesitarán protección, por lo que mis unidades se han cubierto de armadura. Los edificios estaban en peligro de destrucción, por lo que las unidades tuvieron que aprender a repararlos. ¿Y por qué no al mismo tiempo agregar la capacidad de vender estos mismos edificios? Y si te ves un poco más prometedor, ¿es posible armar los edificios ellos mismos para que puedan disparar a los enemigos?
Esta idea se convirtió en la piedra angular que determinó el desarrollo posterior y la refactorización completa de mi proyecto. En este punto, tenía una clase WorldObject de la que heredaban Unit and Building, cada una de las cuales tenía la funcionalidad correspondiente. Las unidades pueden moverse, atacar, obtener recursos, construir edificios. Los edificios podían pararse y producir unidades, pero no podían moverse ni atacar. Hubo un deseo de hacer un edificio de seguridad: una torre o una torreta. La torreta debe ser inherentemente un edificio, pero posee la habilidad de ataque inherente a las unidades. Rompió todos mis planes. Era necesario eliminar de alguna manera la funcionalidad de ataque de la clase Unidad ...
Pero es posible ver el problema de manera más amplia. ¿Hay algún otro enlace intermedio entre la parte posterior y las unidades? ¿Hay alguna otra situación de usar las capacidades de una clase a otra?
Para analizar los vuelos, decidí estudiar: qué otras inconsistencias de este tipo están presentes en el juego tomado como referencia: Warcraft3. ¿Y sabes que? Les convirtió allí una galaxia entera. Hay edificios que pueden atacar, como Guard Tower u Orc Burrow. Hay quienes también pueden moverse, por ejemplo, Ancient of War. Hay unidades que no pueden atacar, como Wisp o todo tipo de ovejas y cerdos neutrales que corren por el mapa (bichos). Continuaron reflexionando sobre la naturaleza de la diferencia entre edificios y unidades, y me di cuenta de que no existen tales diferencias. Estos son solo los significados impuestos al programa por los jugadores para su propia conveniencia. Solo hay unidades y sus habilidades: moverse, atacar, producir unidades, construir edificios, obtener recursos, etc.

La solución obvia a la situación fue la creación de interfaces que las unidades pueden implementar. Se crearon los siguientes: MoveAbility, RotateAbility, AttackAbility, DefenseAbility, HpRegenAbility, DefenseAbility, ProduceAbility, BuildAbility, RepairAbility, SellSelfAbility. La unidad esencialmente seguía siendo solo un contenedor con un nombre, imagen y modelo. Todas las demás habilidades están unidas a él en la parte superior.
Nuevo mundo valiente
Ahora depende del concepto.
Permítame recordarle que el caso tuvo lugar en 2014. Luego hubo un tipo de estancamiento en el género de la estrategia, y esto influyó en la elección del género del juego en sí. También en esos años, hubo un claro aumento en la popularidad del escenario steampunk. Era un gran admirador de los mundos, vestido de cobre y latón, envuelto en vapor, corriendo hacia su futuro mecánico. Pero me pareció aburrido hacer el juego solo con un golpe en steampunk y estaba buscando el desarrollo de una idea. Quería agregar una confrontación al juego. ¿Y qué se puede oponer al máximo a una civilización industrial tecnogénica? ¡Por supuesto, magia y unidad con la naturaleza! Sí, por supuesto, dices Arcanum, pero maldita sea, con el tiempo la belleza de tal escenario no se pierde. Además, verá que el proyecto no se convirtió en un clon, dormido por un estudiante sobre sus rodillas, sino en algo completamente diferente. Quizás en el opuesto ideológico completo de Arcanum.
¿Quién habitará este mundo? En mi opinión, los juegos de fantasía modernos (y esto es en última instancia fantasía) ahora se han encontrado con una crisis de arquetipos. Obviamente, esto se debe a la negación universal, todo se vuelve más accesible y, por lo tanto, más comprensible. Pero esto hace que no sea menos molesto ver a "personas" aburridas comunes y corrientes en todas partes, aturdiendo abrumadoramente los músculos de los "orcos", agrios por la gracia de los "elfos" y otros tan incomprensibles y distantes que el ojo está borroso, "protoss".
Quería alejarme lo más posible de todo esto, abstraerme. ¿Y qué podría ser más abstracto que una pelota? Pasé de esta forma geométrica perfecta. Le agregó una porción de biomorfismo "zerg" (sí, él pecó contra sí mismo). Pensé: ¿por qué las criaturas abstractas no deberían tener la capacidad de moldear su cuerpo y todos los tejidos integumentarios?

Así nacieron los orbes.
Estan vivos No tienen extremidades. Tienen habilidades telequinéticas para interactuar con el mundo y la capacidad de cantar (como los delfines) para comunicarse entre sí. Poblaron el planeta bastante densamente, pero se formaron dos centros de poder.

Uno es tradicional, conservador, donde creen que son hijos de la naturaleza y deben integrarse al máximo y contribuir a su desarrollo.

El segundo: aquellos que se consideraban a sí mismos el pináculo del algoritmo evolutivo de la naturaleza, lo que significa que los gobernantes tienen derecho a quemar bosques en fábricas y eclipsar los cielos con humo y vapor. Y, por desgracia, de acuerdo con el estándar (pastel, dejó a los orcos, pero no dejó al zorro), el segundo deseo de conquistar el mundo los obligó a buscar la expansión de su base material y llevó a sus buques de guerra a la tierra llena de bosques y brillantes con luz cristalina ...
Detrás de este lazo había una alusión a eventos completamente históricos. ¿No es así que en un día no muy hermoso los indios vieron el mástil de los barcos conquistadores en el horizonte? En el mundo de los orbes, la historia se repitió, solo a los indios locales les dimos brujería real, y los conquistadores no zarparon de España en el siglo XV, sino, digamos, de Bismarck, Alemania.
Así comenzó una guerra que destruyó ambas civilizaciones. Se suponía que nuestro juego comenzaría en los fragmentos del mundo pasado, donde una tribu joven comienza a buscarse en estas vicisitudes de magia y tecnología.
Entre una pandereta y un engranaje
¿Pero cuál es el desarrollo?
Solo hay una carrera en el juego, pero en el transcurso de la trama puede modificarse. La experiencia obtenida de matar y explorar el mundo te permite comenzar el desarrollo en las ramas de la magia y la tecnología.

Para empezar, nos instalamos en dos ramas: Creación y Destrucción. En cada uno de ellos varias galerías de tiro. La recepción de cada uno de ellos afecta a todas las unidades y todas las estructuras de la raza. La creación es responsable de todas las características constructivas: desarrollo del mundo, producción, extracción de recursos, etc. La destrucción, a su vez, es responsable de la destrucción de su propia especie y de todo lo que se mueve.
Después de bombear en una rama en una dirección, inmediatamente bloquea la oportunidad de continuar en la otra. Al final, para responder a la pregunta, ¿cuántas razas en el juego pueden ser diferentes? Es una, pero con un potencial de desarrollo de 4 completamente diferente.
Y aquí tenemos un concepto. Entonces, ¡es hora de decidir quién estará en nuestro juego! Qué unidades y edificios, cómo van a cambiar. Después de mucha discusión, decidimos centrarnos en el conjunto básico de estrategias: un trabajador (construye edificios, extrae recursos), una unidad ligera (rápida, débil), una unidad pesada (lenta fuerte), una catapulta (muy lenta, muy delgada, combate de largo alcance). De los edificios: la base (produce trabajadores), el nido (da un aumento en la comida), los cuarteles (produce una unidad ligera y pesada), el taller (produce catapultas), santuarios / fábricas (permite el bombeo).
Sí, olvidé por completo hablar sobre los recursos del juego. Decidimos mantenernos en un par clásico: cristales + límite de alimentos, así como un recurso adicional para avanzar a lo largo del árbol de desarrollo. Los cristales se extraen de depósitos dispersos en el mapa (hola starcraft), el límite de alimentos aumenta con la construcción de edificios especiales: nidos. Se obtiene un recurso adicional al construir uno de los dos tipos de edificios en géiseres venenosos: santuarios o fábricas. Además, el juego tiene experiencia para la destrucción de ejércitos enemigos y criaturas neutrales. Si un jugador gana un nuevo nivel y tiene un santuario o una fábrica, puede bombear una ventaja en el árbol de desarrollo.
Pero volvamos a las unidades y nivelación.
Pensando durante mucho tiempo, pensamos en cómo las ramas de actualización modificarán las unidades. Llegó a lo siguiente:
- Steampunk + Destruction aumentará el daño y el alcance de las unidades.
- Steampunk + Creation aumenta el poder de producción, pone a todos en una armadura y también aumenta la rentabilidad de la caminata de cada empleado.
- Magic + Destruction, a su vez, hace que las unidades sean más rápidas en el ataque y reduce su costo, convierte las catapultas en armas colgadas en la pared.
- Magic + Creation aumenta el stock de salud, y también aumenta significativamente la velocidad de movimiento.
¿Recuerdas que dije anteriormente que el juego resultó ser el opuesto ideológico de Arcanum? En el mundo que hemos creado, la tecnología y la magia no son mutuamente excluyentes. La fantasía de vez en cuando nos deslizaba visiones de hechiceros caminando sobre patas mecánicas y tanques, puestos en movimiento por un cristal mágico en lugar de una planta de vapor o diesel.
Encuentra el punto de equilibrio
Todo esto suena bastante simple, pero cuando intentamos transferir esta narrativa al espacio de números, valores exactos y sus crecimientos, todo resultó MUY confundido. Es fácil arrojar algunos deltas de valores para las habilidades, por ejemplo, esta unidad recibe +20 de daño y esto +15 a la velocidad de movimiento. Pero entonces es muy difícil reducir esta gran variedad de parámetros para equilibrar.

En una gran tabla de Google, registramos todos los cambios deseados en cada unidad, centrándonos en una sensación de belleza. El sentido de la belleza trabajó en conjunto con el empirista interno, por lo que cada cambio en los valores se verificó de inmediato en la escena de la batalla de prueba.

En algún momento, en el medio de la noche siguiente, se llegó a la conclusión de que sentirse bella es bueno, pero solo la lógica y el aparato matemático pueden conducir al éxito en una tarea.
Quedó claro que todos los valores deberían reducirse para cada unidad a uno o más coeficientes, que ya podríamos comparar. Resultó que toda la escuela y toda la universidad no te están preparando para calcular la efectividad del constructor. No es tan obvio quién aportará más al tesoro: el que carga más en la mochila o el que se mueve más rápido.
Después de una noche de insomnio de trucos matemáticos, se construyeron fórmulas para calcular la efectividad de diferentes tipos de unidades y edificios, y esta etapa fue más o menos pasada.Entonces, probablemente, una pregunta se te metió en la cabeza: ¿cómo llevó toda esta locura al juego? Contestaré rápidamente, por primera vez, por el método de interrupción meticulosa. Pero cuando cada rama recibió 2 etapas de desarrollo en cada dirección y el número total de unidades alcanzó 9, entonces mi programador interno perezoso se rebeló. ¿Cómo es que, para mí, sin temblor de criaturas, tengo que hacer una rutina tan aburrida y estúpida?Luego creé una aplicación web para generar un árbol de flujo.
RTSeditor (como lo llamé con una mano ligera) hizo posible crear la estructura de árbol en sí misma e indicar para cada nodo el incremento de valores requerido por las unidades IAbility. El nodo cero determinó la configuración inicial de cada unidad de juego.Este sistema devolvió JSON, que ahora era aceptado por Unity y configuró objetos del juego (también se tuvo que superar una cierta cantidad de tiempo sobre este sistema de importación, porque no era tan fácil construir y caminar alrededor de los árboles).Finalmente, se realizó el trabajo y, en lugar de una tortura infernal, se obtuvo una herramienta conveniente que le permite configurar rápidamente todo el "contenido" del juego.Music Ainur
Aquí me gustaría insertar un comentario. A lo largo de la historia, uso diferentes pronombres, luego yo y luego WE. El hecho es que comencé el proyecto solo, realicé un estudio, creé el "motor" del juego, etc. Pero luego, con mi actividad, me interesé por mis camaradas y al principio dos personas se unieron al proceso: Vladimir Ermakov ( Avega ) como programador experimentado y Pavel Shilin como consultor descriptivo de artistas. Luego, se agregaron Anna Trofimova y Nikolai Morozov ( Avatar4eg ) para ayudar con el paisaje y la programación, respectivamente. Mi buen amigo Dmitry Mashoshin también participó en la creación de un equilibrio durante un par de noches de su tiempo.Vladimir ayudó a tomar la decisión de transferir unidades al sistema IAbility, y luego decidió conectar su proyecto de graduación con el juego. Su tema y objetivo era escribir AI. Una tarea considerable, que en términos generales se resolvió, y nuestros oponentes informáticos aprendieron a reconstruir la base y enviar sus ejércitos a la base encontrada del enemigo con un transportador.Volvamos al desarrollo. Cuando ya teníamos tal variedad de funcionalidades, se volvió simplemente insoportable ver cómo estas formas de vida desarrolladas pastan en un plano de hierba sin fin. Quería crear un mundo para ellos y comencé a crear un mapa.El primer paso analicé las tarjetas WC3. Aprendí que consisten en varios puntos de partida ubicados simétricamente, campamentos de unidades neutrales, puntos para el desarrollo posterior de la base y un astuto sistema de caminos entre todo esto.Bueno, intenté crear algo similar, pero mío (je, con estas palabras puedes escribir todo el desarrollo en su conjunto).
Al principio, el mapa fue dibujado y diseñado en papel.Luego se describe en Photoshop en un mapa de altura en blanco y negro. Inicialmente estricto, luego adquirió suavidad, suavidad y ruido. Un punto importante aquí era mantener la diferencia entre las caras intransitables de las superficies y los descensos y ascensos.Después de eso, esta estructura fue sacada del avión que ya estaba en Unity. Resultó un buen alivio, muy similar a una tarjeta de juego.Pero algo estaba mal con él. Estaba completamente blanco y gritó en voz alta: AGREGAME TEXTURAS.Lo que hice
No tuve tiempo de dibujar mis texturas (lo confieso, pero el tiempo para aprobar el diploma fue adecuado y tuve que dar la vuelta), por lo que se utilizaron las texturas de WorldOfWarcraft descargadas de fuentes abiertas.

Unity tiene una sorprendente funcionalidad de texturas que le permite dibujar texturas en la parte superior del formulario como pinceles. Esto permitió marcar rápidamente las zonas, y luego fue una cuestión de detalle y elaboración. Parece que el campo de juego es un elemento secundario de fondo, pero es el ojo del jugador el que lo mira durante todo el juego, por lo que quería que el mapa fuera realmente interesante y animado. Aquí me gustaría expresar mi gratitud a Ana, quien me ayudó mucho con el proceso de texturización y destacó el mapa.Una gran sorpresa nos esperaba aquí. Nuestras unidades se movieron perfectamente a lo largo de ese odiado avión de césped, caminaron hábilmente hasta el punto de presionar a lo largo de una línea recta ideal. Cuando comenzaron a aparecer obstáculos e irregularidades en su camino, comenzaron los problemas con el movimiento. Sí, los orbes no tienen patas, pero eso no les impidió romperlos en pequeños bultos. Era necesario dar a las unidades un algoritmo para encontrar el camino.Aquí, un Vladimir experimentado entró en el negocio, quien exploró el tema y se dio cuenta de que era demasiado laborioso implementar cualquiera de los métodos existentes para resolver el problema. Se encontró rápidamente un complemento (¿módulo?) Para Unity que resuelve el problema: A *. Vladimir descubrió la interfaz y la adaptó a nuestras necesidades. Después de eso, las unidades comenzaron a encontrar el camino perfectamente incluso al otro extremo del mapa, cuando antes estaban rocas, tierras bajas y otros placeres del paisaje.Después de la creación del mundo, la pregunta más ansiosa se volvió relevante: ¿por qué todas nuestras unidades son malditos CUBOS?Ha llegado el momento de dar a los orbes la forma adecuada, ponerlos en edificios característicos de su apariencia, darles herramientas para el desarrollo de un nuevo mundo y armas.Aquí quiero decir que antes de la graduación quedaban un par de semanas. Después de calcular mis capacidades de tiempo, llegué a la conclusión de que tengo aproximadamente 4 horas en un modelo y sus modificaciones. Tuve que trabajar rápido, fluir y al límite.Dar forma a lo sin forma
¡Conoce los orbes!

Estos son trabajadores básicos. El primero se bombea a la magia completa, el segundo a la tecnología completa. Uno, con la ayuda de un fragmento de cristal que ha crecido sobre sí mismo, puede arrastrar cristales de depósitos a otras piedras y llevarlos a un hormiguero para su uso posterior. El segundo pone herramientas tecnológicas y enormes contenedores para transportar.

Pero los nidos en los que viven los orbes. En el centro está la base varinat. A la izquierda está el desarrollo en magia, a la derecha, en tecnología. Además, tanto allí como hay desarrollo a lo largo de la rama de la destrucción y la creación, por lo tanto, se ven tan integrales. Pero, como saben, esto está lejos de ser siempre el caso.

Y aquí están los nidos híbridos. ¿Soportes de acero y cristales mágicos desde arriba? Por qué no Por el contrario, prefiero la unidad con la naturaleza, pero al mismo tiempo quiero tener un sistema de calefacción. Por favor

En total, 6 objetos (3 unidades y 3 edificios) + 4 modificaciones (2 mágicas, 2 técnicas) fueron modeladas para el juego. No hubo tiempo suficiente para la unidad de luz y los tótems, por desgracia.
Todas las modificaciones fueron diseñadas de tal manera que parte de ellas cambiaron durante el desarrollo de la rama de la destrucción, y parte de la rama de la creación.
Por lo tanto, el juego se ha vuelto visualmente diverso. Estás esperando el bombeo del próximo campo de tiro durante el juego, como unas vacaciones, porque después de eso, todas tus unidades se transformarán y reflejarán más sus características y tu estilo de juego.
En Unity, esto se agregó de la siguiente manera: las unidades tienen elementos básicos, por ejemplo, un cuerpo, además de cada galería de tiro (considerando la básica) tiene un enlace a los elementos gráficos correspondientes. Cuando aparece una unidad en la escena, se crea su parte básica, y luego todos los kits de cuerpo necesarios se agregan a la estructura de WorldObject a partir de los activos.
Ventana al mundo
Y ahora el juego ya parece un juego. Pero aún así, algo no se ha finalizado en él. Hay un mundo, las criaturas se mueven a lo largo de él, se están construyendo edificios, se están extrayendo recursos. Las batallas tienen lugar, se gana experiencia y las razas eligen su camino de desarrollo.
¿Por qué sufre entonces el jugador? El hecho es que no se desarrolla una interfaz adecuada, HUD, como se le llama comúnmente en los juegos.
Para resolver la tarea de construir la interfaz, inicialmente recopilé análogos, antiguos y nuevos: Command & Conquer, Cossacks, Warcraft 3, Starcraft 2, Warhammer, Dota, LoL, y comencé a analizar los elementos constitutivos.
La interfaz del juego (como en cualquier otra forma) debe reflejar la ubicación actual y el estado del protagonista, así como sugerir formas de cambiar este estado. En términos generales, esta es la disponibilidad de recursos, información sobre la unidad seleccionada (como su ubicación, salud, posibles acciones y explicaciones para ellos), la ubicación de todas las unidades en el minimapa, la capacidad de pausar y abandonar el juego.

Después de ver cómo los grandes realizan estas tareas, traté de armar mi propia estructura, correspondiente a los patrones de usuario habituales, pero ocupando la mínima cantidad de espacio en la pantalla.
En aquellos tiempos antiguos, las herramientas nativas de Unity para crear HUD eran un pequeño conjunto de elementos que debían crearse y colocarse en la pantalla directamente a través del código.
Después de escribir un hermoso frontend suave y adaptable en html + css, parece, por supuesto, un fanatismo más salvaje, pero ¿qué puede hacer? Tuve que adaptarme, calculando las diferentes sangrías, considerando constantemente el ancho y la altura de la pantalla.

Atornillar la belleza a esa interfaz es una tarea extremadamente triste, por lo que, para empezar, se decidió ejecutarlo en colores neutros en una forma plana.
Tan pronto como se lanzó la base, surgió la cuestión de crear una gran cantidad de íconos para eventos principales y otros elementos de la interfaz.
Se hizo evidente que dibujar todo era una tarea completamente desesperada con un límite de tiempo ajustado, y comencé a buscar alternativas. Encontré un proyecto maravilloso: GameIcons, que crea íconos simples gratuitos para juegos independientes. Se encontraron todos los componentes necesarios y se ensambló la interfaz.
En el curso del desarrollo, surgió la necesidad de crear un minimapa. Teniendo un poco de cerebro sobre las capacidades de Unity, agregué a cada unidad en la parte superior un rectángulo del tamaño correspondiente, que solo es visible a través de una cámara especial instalada sobre todo el campo.
Tan pronto como el minimapa estuvo listo, hubo un deseo de hacer clic en él para enviar unidades en viajes largos, de lo que me di cuenta rápidamente.

Vale la pena mencionar que parte de la interfaz es la visualización de información sobre el estado de una unidad, desde la cual todo comenzó. Al resaltar, ahora hay un círculo alrededor de la unidad, cuyo color refleja la relación de esta unidad con usted: verde - amigable, amarillo - neutral, rojo - hostil. Encima de la unidad, también se muestra una barra de salud, que también cambia de color según su cantidad.
Para ahorrar espacio en la pantalla, se decidió hacer las barras de salud de todas las unidades de una cierta longitud (de modo que al bombear y aumentar, la barra de salud de 10,000 hp no sería desde el borde de la pantalla hasta el borde).

La interacción con el mundo no termina ahí. Un elemento importante para comprender el estado del mundo y las posibilidades de cambio es el cursor. En la web, a menudo se convierte en un pie para mostrar un elemento en el que se puede hacer clic, y en un carro para el texto que se puede seleccionar.
En el juego, al igual que debemos entender quién levantó la mano y qué hacer con ella. Entonces, al resaltar, debemos entender de quién es la unidad y, al pasar a un estado de cierta acción (ataque, movimiento, producción), mostrar la posibilidad de interacción.
Tan pronto como aparecieron todas las acciones básicas, querían realizarlas desde el teclado para mayor velocidad. Para hacer esto, agregamos conjuntos de entrada de teclado que dependen del estado del jugador.
Y, por supuesto, la experiencia y el árbol de nivelación.

Alcanzamos el nivel: un botón especial para bombear se enciende, se abre un árbol. Muestra en verde lo que ya hemos aprendido, en negro, a lo que podemos ir, y en rojo, lo que no podemos.

Después de abrir un cierto campo de tiro, vemos todos los cambios que él hace en el juego, y luego decidimos si queremos bombearlo.
Sí, parece bastante torpe, ¡pero fue solo el comienzo!
¡Y ahora todo está listo para el primer lanzamiento! Hurra, muy lejos, por delante de un espacio infinito de opciones de desarrollo.

Queda por agregar solo la pantalla de inicio, y seguir adelante, explorar las increíbles extensiones de Evenedium. Oh sí, no dije que después de la lluvia de ideas reforzada elegimos el nombre.
EVENEDIO
Vamos!
Y algunas capturas de pantalla para aquellos que no quieren ver el video de arriba.



Finita?
La versión básica del juego estaba lista.
Sí, es muy simple, pero solo nos dio una razón para crear un excelente conjunto de tareas para un mayor desarrollo: aquí encontrará nuevas unidades, y la niebla de guerra, y habilidades con un generador que lo acompaña, y nuevas ramas de bombeo, y más variabilidad, y la campaña, y multijugador y monetización ...
Sí, por cierto: me defendí perfectamente bien, pero eso no me sorprendió. Estaba más entusiasmado con el futuro del juego, cuya implementación puse a trabajar de inmediato.
Los teclados estaban hirviendo, durante otro mes estábamos escribiendo activamente algo, y de repente, de repente, ¡descubrí que ya había pasado un año de desarrollo! Durante todo un año estuve estudiando detenidamente la creación de esta creación, llena de socios, y ahora somos un equipo, tenemos un producto y un futuro brillante. Decidimos celebrarlo.
El último compromiso comenzó a encontrarse con todos con una publicación de este tipo.

Y si. El ultimo. Por extraño que parezca, pero fue en ese momento que los chicos, que al final ayudaron seriamente con la creación, decidieron abandonar el proyecto. Requirió tiempo y esfuerzo, para lo cual no estaban preparados. No vieron en él ni perspectivas ni significado.
Para mí fue una sorpresa. Ofensivo, golpea bastante fuerte.
No habrá una larga conclusión, ¿por qué? Todo se describe arriba.
En general, estoy orgulloso de haber perseguido mi sueño de crear un mundo y llevarlo a ese estado.