This is the number one question every mission maker asks in the DCS community. There is a common consensus that the Mission Editor (ME) is both "lacking" and overwhelming at the same time.
Just shy of a couple years ago, I began to try learning it seriously, figuring out how the GUI can be modified and interacted with; and eventually (now) how certain logic is implemented in respect to the Simulator Scripting Engine, the real question at hand. (** SSE**)
If I could summarise the most frequent complaints I hear, it'd likely look something like this:
-
"The UI is confusing and/or lacks certain features" (e.g. Ctrl+Z/undo, map camera, hot updates)
-
"The AI is not programmable or customisable enough" (it is.)
-
"There is no sense of dynamic [behavioural] AI combat" (refer to above counterpoint) This gist is essentially dedicated to my findings about the SSE. How does the "Lua API" actually work? What are its limitations and how far can I go modifying it?
Snowflake's journey begins with exploring the ME. "Whaa?" Yeah, that's right. We will become a DCS modding team capable of open and closed-sourced tooling for missions, UI and other gameplay-related fields. Snowflake will also maintain discretionary rights for any closed-sourced tooling IP. There are very few teams known for handling open-sourced mission tooling, examples including MOOSE and MIST.
The first project I've released under this modding team is orbit, a proof-of-concept transcompiler that can generate Lua from Zig code. Upon private confirmation with a 3rd party developer that some teams
doin fact apply this concept I tested, I realised that I've been presented the rare opportunity to invent Snowflake as a team that can leverage the DCS modding community into the direction that is needed.
So, what am I talking about? What are we trying to do? Well, the goal is to address the key issues of what most people are upset with:
No undoβ cannot press a GUI element, nor use a keyboard input such as Ctrl+Z.** No redo**β likewise with undo, except you cannot redo.** Ground AI are dumb/fight too fast/picky/...β a mix of missing AI behaviour interfaces and user error on desired behaviour. Lack of AI control**β pretty self-explanatory, except it broadly covers all AI, some taskings, and some tasks.** Cannot modify or use mission data**β comes down to.miz
build steps and specific parameters.
So logically we address the biggest issues:
undo
β (& redo) functionality to the DCS ME, as GUI elements and keyboard inputs. (Ctrl+Z/Y)markline
β providing command-line control to players over AI units.
In addition, Snowflake is going to provide some general tooling for DCS that can be useful for mission makers and other modders requiring interaction with the mission:
orbit
β A "micro"-transpiler for generating Lua from another programming language.grunt
β An ME API for managing ground AI movement & behaviour.cdcs
β A C API for interacting with the SSE.
And, of course, we'll also provide very useful tooling for aircraft modders, select 3rd parties and ourselves:
satview
β An in-game 3D visualiser for observing the current position of GNSS orbitals during runtime.satlink
β An ME API for navigation, datalink and self-communication of GNSS satellites. (GPS and Link-16 possibiliies)supremacy
β A persistent, logistics-driven ME framework inspired by the Underground. [framework]
All of these projects mentioned are possible and panned to come. Comparing architecture, user-facing methods, complexity and level of abstraction from Snowflake to bigger, more popular open-sourced projects shows a massive difference in development focus and goals altogether:
|
|---|
[markline](https://github.com/snwfke/markline)
Let's start off by breaking one of the biggest misconceptions about the ME: "you can't modify it." Well, what if I told you that's simply not true?
Not only can we modify the GUI of the ME, it is completely bypassed by Integrity Check! This means we could actually mod it to our heart's content, and it would never pose a problem for MP gameplay.
| F10 Map Marker CLI | DirectX GUI (UI CLI) |
|---|---|
| underground_cli.mp4 | |
| underground_ui.mp4 | |
| The best thing Grooveline and I have built is a fully working string-based CLI that executes with F10 map markers. What was our basic and humble beginnings is the predecessor to markline. | We realised that it was so effective as a system, what if we simplified the way you could interface with the AI directly, while you're still flying? That's when the UI was decidedly given birth. |
I do not typically give projects a lot of praise, but when I do, it's usually because it's pretty damn good. In the case of The Underground, it does not fail to disappoint at all. While we don't have a website up, (yet) what we've done would make anyone who enjoys any sort of AI-to-player interaction will suddenly get the urge to fly in DCS.
We originally started off building it as a basic ME toolkit for enhancing immersion by programming AI behaviour and managing unit spawns, but now it's become a fully-fledged and closed-sourced ME framework that sets the precedent for rotary gameplay in DCS. Out of the many servers I've played, it comes on par with Contention and features a simpler, more custom design.
I believe satellites are slept on when it comes to DCS modding. Besides Caffeine Simulations' GNS530 and Garmin G5 suite, there is really no other modding team that has tried venturing into creating a Global Navigation Satellite System (GNSS) implementation. There is a lot of potential to be had here too, because this avenue lets you expand capabilities for:
-
Link-16 and other forms of tactical datalink.
-
Letting any ground, naval or air unit to share their location in real-time. (pending GNSS connection strength)
-
Sharing information about enemy units or route points to friendly units.
-
Proper NAVSTARGPS simulation.- Using DCS' celestial sphere for accurate constellations, calculating position like real GPS.
-
Creating a dynamic GHz frequency band that can be interfered with by GPS jamming.
-
Allowing GNSS satellites to communicate with each other, triangulate, and show loss/degradation of precision.
Having now pointed out some of the things DCS could (and probably would) benefit from, now it's time to look into the potential solutions.
Effort.