Lo primero, tienes que tener el juego original, claro. Nada de copias pirata que aquí apoyamos a los desarrolladores.
Segundo, debes hacerte con el magnífico documento traduccido por Trenkos sobre el editor: https://forum.il2sturmovik.com/topic/26 ... er-manual/ basado en el excelente documento de JinMT (https://forum.il2sturmovik.com/profile/12622-jimtm/).
Tercero, hazte con los grupos y misiones de prueba: https://forum.il2sturmovik.com/applicat ... p?id=28179
Cuarto, guárdate el link a esta página: https://il2missionplanner.com/
Finalmente, pero no menos importante es saber dónde leches anda el editor. Pues mira, curiosamente está en [dirección del juego]/bin/editor/STEditor.exe
Bien... ya tenemos las herramientas básicas y ahora viene lo complicado. Saber lo que vas a hacer.
Yo normalmente lo primero que hago es leer sobre el frente y buscar algún hecho característico que permita crear una misión en los mapas disponibles. Si no, siempre puedes crearla desde cero. Vale, tomemos como ejemplo la campaña que hice de El cerco de Vjazma. Para ello se utiliza el mapa de Moscow.
Nos vamos al mission planner y cargamos el mapa de moscú: ruedecilla dentada y elegimos Moscow.
![Imagen](https://s25.postimg.cc/3t1y2yge3/Curso1.jpg)
Ya tenemos el mapa completo a la vista. Bien, este mapa nos permite buscar la zona en que queremos volar, definir vuelos y ver tiempos y rumbos así que, vamos a calcular qué superficie vamos a necesitar.
Para una partida MP, normalmente yo calculo 1:30h de vuelo (pues entre pitos y flautas al final salen +2h) así que, pongamos que la ruta de ida y de vuelta tiene que estar en torno a 20-30 min, pues si sumamos rodaje, despegue y combate ya tenemos la 1:30h.
Bien, pues en el misión planer trazamos la ruta de vuelo y vemos qué distancia podemos recorrer en 25 min a 300kph. Eso nos dará aproximadamente el radio de vuelo en torno al aerodromo. Todo lo que quede fuera no nos va a importar a la hora de editar. Por supuesto, daremos un cierto margen para que aquellos aventureros no encuentren un mapa vacío si se alejan.
Lo normal es que la zona de vuelo y combate tenga en torno a 1200-1500km2. Teniendo en cuenta que el mapa de moscú abarca más de 100 000km2 nos sobra mucho mapa.
Tomando como base el aeródromo de Frolovo (2702) calculamos desde ahí las posibles rutas y distancias para recorrer en el tiempo de juego y así saber la zona que vamos a necesitar a la hora de editar la misión.
Bien, ahora ya sabemos la zona en la que tenemos que poner cosicas. Así que disparamos el odiado editor y cargamos el mapa de Moscú... ¿Cómo?
Por defecto el editor nos carga el mapa de Lapino, lo cual es una suerte porque muchas veces vamos a estar haciendo pruebas y necesitaremos un mapa pequeño. Bien, pulsamos izquierdo en una zona vacía del mapa y luego con botón derecho, elegimos properties. Ya tenemos la ventana de propiedades del mapa.
Verás un botón gordo que pone Terrain Presets, púlsalo y elige el mapa a cargar, en nuestro caso Moscow Autumn. Ahora, tenemos que hacer que nuestro Preset cargado, coincida con el GUI Map y con la Season (estación del año). En el desplegable de GUI-Map seleccionamos Moscow-autumn y en Season seleccionamos Summer. Aceptamos y tras un rato mediano de carga, tenemos ya el mapa de moscú cargado.
![Imagen](https://s25.postimg.cc/hzhoy6yyz/Curso2.jpg)
Si te fijas... el mapa viene vacío... ni un puente, ni una casa... ésto es así porque en IL2 GB (BOX a partir de ahora), tenemos que tener en cuenta una cosa: RENDIMIENTO. Así que todo lo que cargues de más, te va a perjudicar los fps y los jugadores se quejarán de lag y demás zarandajas (dejando de lado a los X-whinners, que esos se quejan de otra cosa).
Por tanto, nos vamos a limitar a poner objetos sólo en la zona que vamos a usar y en un margen de seguridad en torno a ella. ¿Pero cómo cargamos las casicas y demás?
Por si no has cotilleado lo que hay dentro del directorio de juego, verás que hay en data, una carpeta que se llama Template. Ahí tienes los objetos para cada mapa normalmente separados en Towns (ciudades-pueblos), Bridges (puentes), City (ciudades grandes como moscú o Stalingrado), Airfields (Aeródromos), Churchs (Iglesias) y Railways (estaciones de tren). Para los mapas pequeños como lapino, los grupos ALL ya lo incluyen todo.
Asegúrate de tener el mapa en modo 2D esquemático.
![Imagen](https://s25.postimg.cc/wkl8j5yy7/Curso3.jpg)
Ahora vamos a cargar los objetos. Para ello, nos vamos al menú File->Import from File y seleccionamos el grupo a cargar. En el caso del mapa de moscú, serán sucesivamente las ciudades, pueblos, iglesias y demás...
Una vez que tenemos todo cargado en el mapa, veremos que está muy bonito pero nos sobran miles de kilómetros de terreno en torno a nuestra zona de combate. Pues simplemente, usando botón izquierdo-arrastrar, borramos todo aquello que quede fuera de la zona que vamos a usar en la mision/campaña así que nos quedarán en torno a unos 1200km2 de terreno con objetos.
Ahora, seleccionamos todos los objetos (ratón izquierdo-arrastrar) y los marcamos para agruparlos. Seleccionamos (botón derecho) Group y todos estos objetos desaparecen sustituidos por un grupo. Simplemente lo renombramos como nos guste. Yo suelo usar Escenario. ¿Y cómo puedo modificarlo o trabajar con él? Pues seleccionas el grupo creado y con botón derecho, seleccionas Set Group as Working para trabajar en él o Ungroup para desagruparlo.
Es posible que los objetos ya te vengan agrupados en grupos tales como City Group etc... en este caso, lo primero es seleccionar los grupos y hacerle un Ungroup para poder borrar los objetos que nos sobran. Una ventaja del editor es que podemos meter grupos dentro de grupos así que podemos seleccionar varios grupos y agruparlos.
Bien, ya tenemos el escenario dispuesto. Ahora vamos a poner nuestro amado avioncito para que el jugador vuele. Nos vamos a los botoncillos de la derecha del editor (si no los ves, ves a View y asegúrate que tienes marcado Objects Library). Pulsamos sobre Planes y se nos despliegan los aviones disponibles. Evidentemente, deberás seleccionar uno que poseas pues no te vale de nada seleccionar un Bf109G14 si no lo has comprado. Seleccionamos por ejemplo un Bf109F4 y lo ponemos en el aeródromo de Frolovo (2702).
Ahora, seleccionamos el avion y seleccionamos properties. Hemos puesto el avión pero NO hemos creado la entidad, por tanto pulsamos el botón Create Linked Entity. VEmos que el botón ha cambiado a Delete Linked Entity (que sería para borrar la entidad), por lo tanto ahora el avión tiene "entidad" en el juego. Desplegamos las propiedades avanzadas (si, pulsando la flechilla esa que aparece al lado de Plane). Ya tenemos las propiedades avanzadas abiertas. Para conocer lo que hace cada cosa, echa un vistazo al magnífico trabajo de nuestro nunca bastante valorado Trenkos.
![Imagen](https://s25.postimg.cc/fqkmrd2fv/Curso4.jpg)
Lo que nos importa para hacer volable el avión es ir al desplegable AI, seleccionamos Player. En el desplegable Country, seleccionamos Neutral, Germany (Alemán) o Allied (Rusia). Podemos poner el avión invulnerable desmarcando la casilla Vulnerable o poner munición o combustible ilimitados. En el caso de partidas cooperativas, el avión debe marcarse como Cooperative Start pero para Sigle Player, la dejamos sin marcar. Podemos elegir el skin, la munición o la carga (payload).
![Imagen](https://s25.postimg.cc/uzak553u3/Curso5.jpg)
¿Cómo veo el skin? Muy sencillo, en la carpeta bin del juego, tienes otra carpeta llamada Viewer, que contiene un visionador de skines para el juego. Esos skines y en ese orden es como se muestran en el editor.
Ahora, viene una parte importante que es alinearlo con el suelo. Para ello seleccionamos el avión y pulsamos poner en el suelo.
![Imagen](https://s25.postimg.cc/mjkznl3j3/Curso6.jpg)
Hemos alineado el avion con el suelo pero debemos alinearlo con la pista, para ello pasamos a vista cenital, pulsando el botón de la flecha hacia abajo.
![Imagen](https://s25.postimg.cc/j91q81jgr/Curso7.jpg)
Ahora veremos las texturas reales en vez del mapa y podremos alinear nuetro avión. Para ello hacemos zoom con la rueda del ratón y usando el tirador rojo, lo rotamos hasta alienarlo con la pista. Podemos desplazarlo pulsando sobre él con botón derecho, manteniendo y arrastrando.
![Imagen](https://s25.postimg.cc/j91q81r6j/Curso8.jpg)
Ya tenemos nuestro avión listo para despegar.
Lo siquiente es salvar la misión. Pulsamos primero en una zona vacía del mapa y seleccionamos properties para desplegar las propiedades de la misión. Podemos ahora, ponerle un nombre, una fecha, variar las condiciones atmosféricas etc... pero lo importante aquí a parte del nombre (y la descripción que nos ayudará a encontrarla luego), es seleccionar en el desplegable Mission Type, Single (un jugador).
Salvamos la misión con File->Save As...
Nos aseguramos de salvarla en data/Missions.Y ya estamos dispuestos a volarla desde el juego.
Lanzamos el juego y nos vamos a misiones y ahí deberia estar nuestra misión.
PARTE 2
Sobre spanwer y enabled...
Bien, ya hemos hablado que el la edición de box tenemos que tener presente siempre una palabra, EFICIENCIA. Todo aquello que el jugador/es no vea no debería moverse/activarse. Por diseño del juego, de momento, el límite de renderización de las entidades (aviones y vehículos, objetos estáticos e incluso efectos) es de 10kms. Todo aquello que esté más lejos no se va a renderizar por tanto una IA que ande por el mapa lejos del jugador y que nunca va a ver lo único que hace es consumir recursos a lo tonto. Por tanto, debemos activar/desactivar las entidades cuando sean/no sean necesarias en función de la posición del jugador. Aquello del 46 de tener columnas de vehículos moviéndose por el mapa aunque no se viesen no tiene sentido aquí. Tenemos que pensar de otra manera.
¿Cómo logramos ésto? Por medio de Triggers (Activadores). Activaremos o crearemos los objetos según los necesitemos y los desactivaremos o borraremos cuando no sean necesario.
Pero ¿qué diferencia hay? En BOX existen dos formas de evitar que una entidad nos afecte al rendimiento.
La primera es Desactivar la entidad (no está marcada como enabled). En este caso la entidad EXISTE, está creada y configurada pero su código no está ejecutándose y no es visible o interactuable en el mapa. El consumo de recursos es mínimo y para usarla sólo tenemos que activarla.
La segunda forma es crear la entidad en el momento que se necesita (Spawn). En este caso, la entidad NO EXISTE y no consume ningún recurso pero podríamos tener un impacto mínimo en lag en el momento de la creación (sobre todo si spawneamos muchas unidades a la vez).
¿Cuál usar? A gustos... pero yo por regla general, uso el método de activar para entidades que se tienen que mover, tales como aviones o vehículos y el método del spawn para entidades fijas tales como Artillerías o infantería atrincherada.
No obstante, depende de cada uno el usar un método u otro.
Bien, todo bueno tiene que tener un malo así que vamos a poner uno. Cuando nuestro jugador se aproxime a Vjazma se va a encontrar un mig3 volando a 2500 metros. Así que nos ponemos a ello. Nos vamos al mapa nos desplazamos hasta Vjazma, desde la librería de objetos, seleccionamos Planes y elegimos un mig3s24 (serie 24). Los situamos sobre el mapa a unos diez kms al noreste de Vjazma, creamos la entidad y ahora lo configuramos.
Le ponemos un nombre, por ejemplo mig3 enemigo (cuidado con acentos y carácteres raros que pueden dar problemas) y lo orientamos con el tirador rojo. ¿Cómo ponemos la altura? Bien, si nos fijamos en las propiedades básicas del objeto aparecen los parámetros x,y,z. Pues la altura la ponemos con el parámetro Y. Ponemos ahí 2500 (altura sobre el nivel de mar no sobre el suelo) y ya tenemos nuestro mig a 2500 mts de altura. Los parámetros AX, AY y AZ, nos indican la orientación en cada uno de los ejes y si usamos el tirador rojo veremos como cambia el parámetro AY.
![Imagen](https://s25.postimg.cc/neqezldsr/Curso9.jpg)
Ahora, nos vamos a las propiedades avanzadas del mig y configuramos el nivel de la IA, el país (Rusia para que sea enemigo), elegimos in Air para que el aparato empiece en el aire con el motor arrancado y demás y lo más importante, desmarcamos Enabled para que el aparato no aparezca nada más empezar la misión. En este caso, usaremos el método de activar la entidad cuando la necesitemos. Por ello debe empezar desactivada.
![Imagen](https://s25.postimg.cc/f98d1fx9n/Curso10.jpg)
Bien, ya tenemos nuestro mig en el aire y preparado. ¿Cómo logramos que aparezca cuando queramos? Pues como ya hemos dicho, con Triggers.
Si nos fijamos, en la librería de objetos, existe un grupo denominado MCUs. Esos son los comandos que vamos a poder usar en nuestra programación. Para saber lo que hace cada uno consulta la guía.
Si abrimos el grupo de MCU y nos desplazamos hacia abajo, encontraremos uno llamado Trigger: Check Zone. Este MCU lo que hace es verificar si una serie de condiciones se han dado dentro de una zona circular determinada y en caso de ser así, emitir una señal.
Bien, situamos nuestro TRIGGER CHECK ZONE sobre Vjazma y nos vamos a las propiedades avanzadas. Ahora, configuramos el radio de la zona que detectará (6000m de radio), el tipo de zona (cilindro para que no importe la altura), que se active cuando el objeto ENTRE en la zona (Closer) y el tipo de entidad a detectar (Planes y coalición Axis). Hay que tener en cuenta que este trigger no volverá a armarse hasta que no se cumplan las condiciones, es decir no haya un avión del eje volando dentro del trigger.
![Imagen](https://s25.postimg.cc/62q2dyhor/Curso11.jpg)
Pero tenemos un problema, para que el trigger se active, es necesario decirle que esté preparado (disponible) por ello debemos darle la orden desde otra MCU. Puede ser otro trigger o cualquiera otra MCU. Como no sabemos cuándo va a entrar el jugador en la zona, arrancaremos el trigger nada más empezar la misión. Para ello, buscamos la MCU denominada TRANSLATOR: MISSION BEGIN y la situamos en el mapa. Esta MCU se activa al empezar la misión y emite una señal que nos permite arrancar otras MCU.
Pero debido a que al arrancar la misión las cosas pueden no estar estables aún, daremos unos segundos para estabilizar las cosas ante de activar el trigger. Para ello, seleccionamos una MCU Trigger: Timer y lo ponemos en el mapa cerca del Mision Begin. Ahora, nos vamos a las propiedades avanzadas y ponemos en Seconds 3, es decir, el timer recibe la señal de activación, cuenta 3 segundos y emite la señal a otra entidad.
Bien, ahora seleccionamos el Traslator Mission Begin y pulsamos botón derecho. Nos sale un menú en el que la tercera opción es Selected Object Menu. Si pulsamos sobre esa opción veremos que nos aparece Add Object y Add Target. Aquí viene una de las partes más liosas del editor, qué es un object y que es un target. Por regla general un object es una entidad a la que pertenece el MCU y un Target es una entidad u otra MCU a la que queremos dar una orden.
Seleccionamos pues Add Target y pulsamos en el Timer. Veremos que aparece una línea roja con una flecha para indicar la dirección de la señal. Una línea roja señala una unión de tipo Target y una línea verde una de tipo Object.
![Imagen](https://s25.postimg.cc/kyolljldn/Curso12.jpg)
Ahora, seleccionamos el timer y hacemos lo mismo para añadir como target del timer al Check Zone de manera que vemaos una linea roja que va del Mission BEgin, pasando por el timer hasta el check zone. Bien, ya tenemos la lógica necesaria para activar el trigger check zone. Pero ¿cómo activamos el avión? Recordemos que lo tenemos desactivado, así que para activarlo usaremos la MCU Trigger: Activate que es como una peonza. La situamos en el mapa cerca el mig3.
Ahora, creamos la lógica que es "cuando el check zone se active, damos la orden al activate para activar el mig3". A efectos del editor se traduce en decirle al Trigger Check Zone que cuando se dispare, lance una señal al trigge Activate. Para ello, seleccionamos el check zone, botón derecho, Add Targety clicamos en el Activate. Con lo que nos aparecerá la línea roja entre el check zone y el activate. Ya ahora el Activate debe "activar" el mig3, pero el mig3 es una entidad y como tal, no podemos darle una orden al estilo MCU sino que debemos añadirlo como Object (Add Object). Por tanto,seleccionamos el Trigger: Activate y botón derecho, Add Object y clicar en el mig 3. Nos aparece un raya verde indicando que ese trigger afecta al objeto mig3.
![Imagen](https://s25.postimg.cc/s1wh15bdn/Curso13.jpg)
Ya tenemos la lógica preparada. Pero hay un problemilla... si salimos de zona y volvemos a entrar, el mismo mig volverá a activarse esté muerto o no... así que queremos que el trigger Check Zone sólo se active una única vez. Por tanto, cuando se dispare, deberemos desactivarlo. Para ello, añadimos un Trigger: deactivate cerca del Trigger: Check Zone y le decimos al check zone que añada TAMBIEN como Target al Trigger: deactivate, de manera, que cuando se dispare, active el deactivate y ahora al deactivate le ponemos como objetivo el mismo Check Zone que es el que queremos desactivar. Como el check zone, es una MCU y no una entidad la tenemos que añadir como Target. Por lo tanto, seleccionamos el Deactivate y hacemos Add Target contra el Check Zone. Nos aparecerá una línea roja de ida y vuelta.
![Imagen](https://s25.postimg.cc/i4lg83bhn/Curso14.jpg)
Ya podemos probar la lógica y ver que el Mig aparece al entrar en la zona. En el próximo capítulo veremos como hacer que el mig siga unos puntos de ruta y busque objetivos.
PARTE 3
Si hemsos probado, veremos que efectivamente el avión aparece pero se queda volando y no va a ningún sitio. Eso es porque no le hemos dicho a la IA que se mueva a otro sitio. Para ello, se usa otro tipo de Trigger que se encuentra entre las MCUs y que se denomina Trigger: Waypoint. Un Waypoint permite a ciertas entidades como vehículos, barcos o aviones moverse siguiendo una ruta. Bien, vamos a darle a nuestro avión una ruta para que vaya desde su zona de spawn hasta la zona donde se supone que estará el avión del jugador.
Para ello, empezaremos por usar un truco muy útil: eliminar el fondo. Cuando hay muchas MCUs y entidades en el mapa resulta muy difícil seguir las lineas y más si el mapa es claro o de nieve. Por ello, clicamos en una zona libre del mapa y luego pulsamos ALT+F9 y ¡chas! El fondo desaparece (se va a negro) o vuelve a aparecer.
Bien, quitamos el fondo y elegimos un waypoint de las MCUs y lo situamos cerca de nuestro malote. Ahora tenemos que configurar, pulsamos sobre él para abrir las propiedades. El campo Y nos permite elegir la altura del waypoint, es decir, la altura a la que nuestro avión volará al pasar el waypoint. Si pulsamos en opciones avanzadas, podemos configurar el radio de efecto del waypoint, la prioridad y la velocidad a la que volará nuestro aparato. Siendo un avión, el mínimo radio efectivo para dar por cumplido el waypoint debería ser 200mts pero pondremos 300mts para estar más seguros. Como prioridad, dejamos medium.
![Imagen](https://s25.postimg.cc/qkyg5rtnv/Curso20.jpg)
Bien. Vamos a poner otros dos waypoints iguales, para ello, seleccionamos el waypoint y con botón derecho, elegimos copiar pegar y los pegamos siguiendo un ruta. Ahora ya tenemos los waypoints que seguirá el avión.
Pero cada waypoint, necesita saber a qué entidad pertenece así que los vamos seleccionando uno a uno y añadimos como objeto a nuestro avión enemigo, de manera que de cada waypoint debería salir una flecha verde hacia el avión.
Cuando el avión llegue a la zona efectiva del waypoint, se dará por cumplido y disparará una señal para indicarlo. Es esta señal la que nos permitirá activar el siguiente waypoint para el avión. Por ello, marcamos el primer waypoint y le añadimos como Target, el segundo y al segundo el tercero. Nos quedara pues una ruta hecha con los waypoints en la que cada waypoint disparará el siguiente waypoint que debe seguir el avión.
![Imagen](https://s25.postimg.cc/7fv6w0uff/Curso21.jpg)
Pero... ¿Cómo activamos el primero de los waypoints?
Como ya hemos dicho, un waypoint no es efectivo hasta que no lo disparamos. Por ello nos aprovecharemos el timer que dispara el activate para que también nos dispare otro timer de 2s que dispare el primer waypoint. Puede parecer un poco lioso pero es cuestión de lógica. Se inicia el juego y el trigger Mission Start dispara el timer de 3s que espera a estabilizar el juego. Cuando pasan esos 3s éste trigger dispara el activate y a la vez el timer de 2s. El activate sobre el avión se ejecuta en ms, y a los dos segundos el timer de 2s dispara el trigger waypoint 1 de manera que el avion volará hacia ese waypoint.
![Imagen](https://s25.postimg.cc/te1b0qxgb/Curso22.jpg)
Bien. Ya hemos conseguido que el avión siga la ruta hasta el objetivo. ¿Cómo logramos que busque y ataque al jugador? Para ello contamos con otro tipo de MCUs que son los comandos y entre ellos está el comando Command: Attack Area. Situamos esta MCU cerca del punto de detección y al igual que los Waypoint configuramos el parámetro Y a 2500 mts de altura de manera que el avión enemigo empezará a orbitar aleatoriamente alrededor de esa posición y a esa altura. Ahora, abrimos las propiedades avanzadas para configurar el resto de parámetros. Mantenemos la prioridad en medium pero el el radio lo aumentamos a 10000mts y marcamos que sólo ataque objetivos en el aire. En el caso de un avión de ataque al suelo marcaríamos que sólo atacase a los objetivos en tierra.
Finalmente seleccionamos el último waypoint y le añadimos como target el Command:Attack Area de manera que al activarse el waypoint, el avion enemigo volará hacia la zona de búsqueda y empezará a buscar enemigos.
![Imagen](https://s25.postimg.cc/is7sdtau3/Curso23.jpg)
Bien, ya tenemos nuestro vuelo completamente operativo con un avión enemigo que aparecerá cuando el jugador alcance la zona del trigger Check Zone, y el cual volará hasta esa posición y empezará a buscar a nuestro avión jugador.
Ahora por último seleccionamos todos los objetos añadidos usando clicar y arrastrar y dando botón derecho. Seleccionamos Group Objects. Nos aparecerá un cuadrado azul con el nombre de Group. Lo cambiamos a algo como avion enemigo o cualquier otra cosa. Y ahora, vienen otra de esas magias del editor que nos hacen la vida más fácil. Este grupo que tanto nos ha costado crear, podemos guardarlo como grupo y usarlo de nuevo las veces que queramos. Para guardarlo sólo tenemos que clicar el grupo para seleccionarlo e ir al menú del editor File->Save Selection to File... Y para recuperalos simplemente vamos a File->Import from File. De esa manera, cada vez que necesitemos un avion enemigo que aparezca al llegar a cierto punto podemos importar este grupo y adaptarlo modificando la posición de los waypoints o los parámentros.
![Imagen](https://s25.postimg.cc/p7l1z6adn/Curso24.jpg)
![Imagen](https://s25.postimg.cc/dv8ghdtyz/Curso25.jpg)
SEGUIRA... (si encuentro ganas y tiempo... )