Feature/scenery targets (#60)

* Added Scenery targets
* Documentation updates
This commit is contained in:
2025-07-17 19:50:57 +02:00
committed by GitHub
parent b6a1285bde
commit 1d4c0a8313
27 changed files with 833 additions and 182 deletions
+67
View File
@@ -0,0 +1,67 @@
<!DOCTYPE html>
<html lang="en" data-theme="dark">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>About Us</title> <!-- Google Fonts -->
<link rel="stylesheet" href="/style/prism.css">
<link rel="stylesheet" href="/style/style.css">
<script src="/js/prism.js"></script>
<script src="/js/site.js"></script>
<style>
.side-nav a.active {
font-weight: bold;
color: #4fc3f7;
}
</style>
<script type="module" src="/js/components.js"></script>
</head>
<body>
<header>
<app-header></app-header>
</header>
<main>
<div class="reference-container">
<app-sidebar></app-sidebar>
<div class="content-wrapper">
<h1>About Spearhead</h1>
<h2>Created by Mission makers, for mission makers</h2>
<p>
I Dutchie, started Spearhead as an idea of making mission making easier for myself and others.<br>
On the way I've had a lot of help, in the form of feedback, ideas and most importantly testing from a lot of people. <br>
Even though, at the time of writing this, I've written every single line of code myself, I could not have done it without the help of these members.<br>
Therefore it's something WE created.
Our goal was very simple, make it possible to make big dynamic missions, without having to either give away all controll or having to get knee deep into scripting. <br>
We struck a balance.
</p>
<h2>Hope you enjoy it!</h2>
<p>
All I can say is that I hope that some of you out there will take the step and make a mission! <br>
Or, those that are experienced in mission making, will find more joy in making the mission they always wanted to make!<br>
If you do, dont hesitate let me and TDCS know! <br>
Don't worry, no obligation to let us use it, but any feedback is always welcome! <br>
All I really want is to see the DCS community enjoy the Multiplayer environment as much as I do!<br>
~ Dutchie
</p>
</div>
</div>
</main>
<footer>
<p>&copy; 2025 Spearhead Project</p>
</footer>
</body>
</html>
```
+186 -5
View File
@@ -4,8 +4,12 @@
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Spearhead Persistence</title>
<title>Spearhead: Advanced CAP</title>
<link rel="stylesheet" href="/style/prism.css">
<link rel="stylesheet" href="/style/style.css">
<script src="/js/prism.js"></script>
<script src="/js/site.js"></script>
<style>
.side-nav a.active {
@@ -25,14 +29,191 @@
<app-sidebar></app-sidebar>
<div class="content-wrapper">
<note-box type="warning" title="Work in Progress">
This page is not complete and documentation will be changed as updates are made.
</note-box>
<h1>Advanced Tutorial: CAP</h1>
<p style="font-size: 24px;">
<b>You're a little early! <br>
We're still working on this tutorial, but it will be available soon.</b>
<p>
Setting up CAP can be a challenge. Creating a dynamic environment for your players where enemy
aircraft prove a challenge, but is still fun is something that requires some thought. <br>
With Spearhead, we tried to make it as easy as possible, but to give you as much control as well.
<br>
Air combat is so much more than just aircraft flying around. There's intercepts, combat air patrol
or maybe fighter sweeps. <br>
Sometimes one of these is enough, sometimes creating a network of all three can make it feel like a
very dynamic environment. <br>
In this tutorial we'll explain how to set up each different type of CAP and we'll finish with some
considerations on how to combine them and create an environment we think is fun to play in. <br>
</p>
<h2 id="quick-reference">Quick Reference</h2>
<p>
Quickly noting down all the names, trigger zone conventions and other things worth mentioning before
we get into the details. <br>
<h3 id="cap-groups-ref">Cap Group Prefix</h3>
<table class="table-no-style">
<tbody>
<tr>
<td><code-inline>CAP_A</code-inline></td>
<td>=></td>
<td>Primary CAP group. First to go out and also important in defining how many active units
can in a zone.</td>
</tr>
<tr>
<td><code-inline>CAP_B</code-inline></td>
<td>=></td>
<td>Secondary CAP group. Will be reinforcing the primary CAP group.</td>
</tr>
<tr>
<td><code-inline>CAP_S</code-inline></td>
<td>=></td>
<td>Sweep groups. These group will be used for fighter sweeps.</td>
</tr>
<tr>
<td><code-inline>CAP_I</code-inline></td>
<td>=></td>
<td>Intercept groups. These groups will be used for intercepts.</td>
</tr>
</tbody>
</table>
<note-box type="info" title="Combining Tasks">
Currently a group can do 1 thing. Either be Primary, Seconday, Sweep or Intercept. <br>
If you want to have different types during different stages, it's best to copy paste groups and
rename them accordingly. <br>
</note-box>
<note-box type="info" title="Airfield Defenses">
</note-box>
<h3 id="cap-zones-ref">Zones</h3>
<table class="table-no-style">
<tbody>
<tr>
<td><code-inline>CAPROUTE_[ZoneID]_[NAME]</code-inline></td>
<td>=></td>
<td>A Cap ROUTE. The two most outer points are used to define the fly-over points.</td>
</tr>
<tr>
<td><code-inline>INTERCEPTZONE_[ZoneID]_[NAME]</code-inline></td>
<td>=></td>
<td>An Intercept zone. This is where, when detected, Intercept flights will try and
intercept an enemy units.</td>
</tr>
</tbody>
</table>
</p>
<h2 id="setup">Setting up groups</h2>
<h3 id="types-explained">Types explained</h3>
<p>
Before we go into depth on each type it's best to first look at the types briefly and what we
mean.<br>
All groups that fly CAP, intercept or sweep missions are prefixed with
<code-inline>CAP_</code-inline> and then a letter to indicate the type of group. <br>
<br>
<code-inline>CAP_A</code-inline> and <code-inline>CAP_B</code-inline> are CAP groups as most often
seen in missions. <br>
They will fly out, patrol a certain route and engage any enemy fighter that gets too close. <br>
<br>
<code-inline>CAP_S</code-inline> groups are Sweep groups. <br>
These will fly out, fly a pre-designated route and engage enemy fighters they come across. <br>
They, however, will not stick around and orbit, but will fly back home once their sweep is complete.
<br>
These are very nice for older scenarios or where Air Superiority is not maintained by either side.
<br>
<br>
<code-inline>CAP_I</code-inline> groups are Intercept groups. <br>
These groups will remain on high alert and will be triggered when enemy aircraft are detected in a
certain zone. <br>
<br>
NOT IMPLMENTED YET: <br>
<code-inline>CAP_E</code-inline> are escort groups. <br>
These units will be dedicated to escorting CAS, SEAD and Strike flights. <br>
The ground attack units mentioned are not in yet and thus escort groups are not either. <br>
<note-box type="warning" title="Overriding Taskings">
Each tasking has very specific waypoints, both for departure, arrical and ofcourse all point in between. <br>
Overriding the "tasking" will break part of the cap flow as "RTBInTen" and RTB events are triggered by waypoints. <br>
Overriding these waypoints and taskings will break the management by Spearhead.
</note-box>
<h3 id="combat-air-patrol">Combat Air Patrol</h3>
<h4 id="zone-setup-cap">Zone Setup</h4>
<p>
Combat Air Patrol groups use <code-inline>CAPROUTE_</code-inline> zones to know where to go.<br>
These are trigger zones that need to be <code-inline>quad zones</code-inline>.
The way the trigger zone is mapped to a route is as follows: <br>
<br>
The 2 points that are furthest apart from each other are chosen as the "leg" of the route. <br>
The other 2 points are discarded. <br>
<br>
The Orbit route is then created with an "Anchored" task. With the closest point being the starting
point with an outbound leg to the furthest point. <br>
</p>
<h4 id="group-setup-cap">Group Setup</h4>
<p>
Now you've defined where the CAP group will fly, it's time to set up the group itself. <br>
The groups are used directly and will not be renamed, duplicated or anything else. <br>
However, please note, again, that if you manually take over controll of the groups by giving them waypoints it will break the management by Spearhead. <br>
They will ofcourse be despawned, respawned and tracked by Spearhead as needed. <br>
Add an aircraft unit and set it to "spawn from parking cold". <br>
Name the group (unit names are not regarded) <br>
<note-box type="info" title="Cloning">
Adding the lead first, then editing the loadout, livery etc. and only then adding flight members will automatically copy the leads loadout and other settings.
</note-box>
</p>
<h4 id="what-it-does-cap">What it does</h4>
<p>
</p>
<h3 id="sweep">Sweep</h3>
<p>
</p>
<h3 id="intercept">Intercept</h3>
<p>
</p>
<h2 id="balancing">Balancing & Scaling</h2>
<p>
We are fully aware that balancing and scaling of the Air Threats is something you need to do. <br>
We are still designing how to make this as easy as possible for you, the mission creators. <br>
The idea is to have thresholds. (If x number of players are in the mission, then add certain groups.) <br/>
Most importantly it should be easy to use and easy to estimate before play testing. <br>
<br>
Things we need to think about are (but not exclusively) whether or not we only want to scale based on CAP capable aircraft. <br>
eg. if you have 10 apaches, should it bring up twice as much CAP? <br>
Ofcourse we also need to think about the downscaling and about how later it can integrate with supplies. <br>
Please bear with us, as we are definitely working on this and making sure that you can scale for to 100 players without much trouble. <br>
</p>
</div>
</div>
</main>
<footer>
<p>&copy; 2025 Spearhead Project</p>
+68
View File
@@ -0,0 +1,68 @@
<!DOCTYPE html>
<html lang="en" data-theme="dark">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Spearhead Missions</title>
<link rel="stylesheet" href="/style/style.css">
<script src="/js/site.js"></script>
<style>
.side-nav a.active {
font-weight: bold;
color: #4fc3f7;
}
</style>
<script type="module" src="/js/components.js"></script>
</head>
<body>
<header>
<app-header></app-header>
</header>
<main>
<div class="reference-container">
<app-sidebar></app-sidebar>
<div class="content-wrapper">
<h1>Advanced Tutorial: Missions</h1>
<h2 id="strike">Strike</h2>
<p>
Naming: <span class="inline-lua"><span class="lua-variable">MISSION_STRIKE_[Name]</span></span> <br>
</p>
<h3 id="specific_targets">Specific Targets</h3>
<p>TBD</p>
<h3 id="scenery_targets">Scenery Targets</h3>
<p>
Bridges, buildings or other type of targets that are baked into the map are awesome targets.<br>
We wanted to make sure they were easily integrated in Spearhead.
All you will need to do is right click on the scenery object you want added. <br>
You will then get the option to "Assign as...", click this and you'll see a new trigger zone created. <br>
It's best not to edit the triggerzone, but you can rename it however you like. <br>
Scenery objects will always be a specific "target" in the mission.
</p>
<note-box type="warning" title="Changing IDs">
Be aware that Object IDs can change when maps are updated and edited and the "Assign as..." action will have to be performed again.
</note-box>
<p>Here's two images showing how a bridge is added to a mission.</p>
<img src="/img/bridge.png" style="max-height: 35remrem;"/>
<img src="/img/bridge_added.png" style="max-height: 35remrem;"/>
</div>
</div>
</main>
<footer>
<p>&copy; 2025 Spearhead Project</p>
</footer>
</body>
</html>
```
+3
View File
@@ -6,7 +6,10 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Spearhead Persistence</title> <!-- Google Fonts -->
<link rel="stylesheet" href="/style/prism.css">
<link rel="stylesheet" href="/style/style.css">
<script src="/js/prism.js"></script>
<script src="/js/site.js"></script>
<style>
.side-nav a.active {
+5 -2
View File
@@ -6,8 +6,11 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Spearhead Reference</title> <!-- Google Fonts -->
<link rel="stylesheet" href="../style/style.css">
<script src="../js/site.js"></script>
<link rel="stylesheet" href="/style/prism.css">
<link rel="stylesheet" href="/style/style.css">
<script src="/js/prism.js"></script>
<script src="/js/site.js"></script>
<style>
.side-nav a.active {
font-weight: bold;
+5 -2
View File
@@ -6,8 +6,11 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Spearhead API</title>
<link rel="stylesheet" href="../style/style.css">
<script src="../js/site.js"></script>
<link rel="stylesheet" href="/style/prism.css">
<link rel="stylesheet" href="/style/style.css">
<script src="/js/prism.js"></script>
<script src="/js/site.js"></script>
<script type="module" src="../js/components.js"></script>
</head>
+17 -27
View File
@@ -6,8 +6,11 @@
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Spearhead Tutorials</title>
<link rel="stylesheet" href="../style/style.css">
<script src="../js/site.js"></script>
<link rel="stylesheet" href="/style/prism.css">
<link rel="stylesheet" href="/style/style.css">
<script src="/js/prism.js"></script>
<script src="/js/site.js"></script>
<style>
.side-nav a.active {
font-weight: bold;
@@ -49,13 +52,11 @@
<img style="width: 100%;" src="../img/script_install.png"></img>
</div>
<div class="note">
<p>
Spearhead does not require any dependencies (eg. MIST or MOOSE). Compatibility with other frameworks is
not tested at this time, so cannot be guaranteed, but there should be no conflicts if they are not
controlling the same units.
</p>
</div>
<note-box type="info" title="Note">
Spearhead does not require any dependencies (eg. MIST or MOOSE). Compatibility with other frameworks is
not tested at this time, so cannot be guaranteed, but there should be no conflicts if they are not
controlling the same units.
</note-box>
<h2 id="stages">Stages</h2>
@@ -114,13 +115,9 @@
will trigger a backup unit to startup and fly out to take over. <br />
</p>
<div class="note">
<p>
TIP ! <br />
You can start a mission, speed up the simulation and make the CAP fly out to see what happens
</p>
</div>
<note-box type="info" title="Tip">
You can start a mission, speed up the simulation and make the CAP fly out to see what happens
</note-box>
<h3 id="creating-cap-routes">Creating CAP Routes</h3>
<p>
@@ -153,11 +150,10 @@
Missions are managed and monitored by Spearhead. <br/>
Statics, groups and single units all alike. <br/>
</p>
<div class="note">
<p>
<strong>NOTE:</strong> While static are the same as groups in this context, they are not within DCS, please refrain from using static groups. A <span class="inline-ref">static</span> in DCS has a 1:1 relation for group:unit.
</p>
</div>
<note-box type="info" title="Note">
While static are the same as groups in this context, they are not within DCS, please refrain from artificially created static groups. A <code-inline>static</code-inline> in DCS has a 1:1 relation for group:unit. <br>
By default DCS will always keep 1 static object in 1 groups.
</note-box>
<p>
For this example I'll set up two missions. The first one is <span class="inline-lua"><span class="lua-variable">DEAD</span></span> mission and will consist of an SA-2 site with an additional "control center".
</p>
@@ -284,12 +280,6 @@
<img src="../img/briefing_mission.png"/>
</div>
</div>
<div class="note">
<p>
<strong>TIP:</strong> You can make both the <span class="inline-ref">Color</span> and <span class="inline-ref">Fill</span> have a <span class="inline-ref">0</span> value for <span class="inline-ref">a</span>. This will make the weird box be invisible. Make sure to add the name of the mission to the text box name to easily find it back.
</p>
</div>
<p>
We are now done creating a first mission. Hit fly and test it. <br/>
Check all references for way more features and keep up to date with the latest changes as they come along! <br/>