Skip to content

Feature - Release Preparation and tutorial mission #83

Merged
Tapawingo merged 93 commits intomainfrom
feat/firstMission
Nov 6, 2025
Merged

Feature - Release Preparation and tutorial mission #83
Tapawingo merged 93 commits intomainfrom
feat/firstMission

Conversation

@Tapawingo
Copy link
Contributor

@Tapawingo Tapawingo commented Nov 1, 2025

When merged this pull request will:

  • Add first tutorial mission "Crested Cap" with progressive tutorial triggers
  • Add new UI theme (early tests)
  • Finish Campaign Selection UI
  • Rename campaign and add campaign poster and description
  • Add new campaign map that matches the new UI theme
  • Add STT subtitles and next word suggestions
  • Remove obsolete src/campaigns directory
  • Add Mission Timer
    • Add Timer 3d model
    • Wire up with world tick service
  • Add tutorial & dialog system
    • New tutorial_dialog() API method that can point at UI elements by name/path
    • Blocking dialogs that pause trigger execution until dismissed
    • Automatic simulation pause during tutorials
  • Enhance trigger system with 20+ new TriggerAPI methods
    • Drawing detection: has_drawn(), get_drawing_count()
    • Counter detection: has_created_counter(), get_counter_count()
    • Combat detection: is_unit_in_combat()
    • Unit position: get_unit_position(), get_unit_grid()
    • Unit status: is_unit_destroyed(), get_unit_strength()
    • Engineer tracking: has_built_bridge(), get_bridges_built()
    • Artillery tracking: has_called_artillery(), get_artillery_calls()
    • Sleep/timing: sleep(), sleep_ui()
    • Helpers: vec2(), vec3(), color(), rect2()
  • Improve trigger system reliability
    • Add run_once parameter for one-time triggers
    • Fix multiline expression parsing with continuation operator detection
    • Add detailed error context (trigger ID, title, expression type, snippet)
    • Fix parse error handling to return null instead of empty dictionary
  • Fix line-of-sight (LOS) and combat systems
    • Adjust forest attenuation threshold (5.0 → 3.4) for realistic forest visibility (~70m)
    • Remove double range penalty between spotting and engagement
    • Units can now engage spotted enemies within weapon range
  • Add engineer bridge building system
    • Detects water features and calculates optimal bridge spans
    • Rebuilds pathfinding grid after placement
    • Uses ENGINEER_BRIDGE ammunition type
  • Add artillery fire mission tracking
    • Full signal flow: confirmation, shot, splash, impact
    • Ammunition consumption integration
    • Battle Damage Assessment (BDA) support
  • Refactor ammunition system to use equipment-based storage
    • Add ammo types to all unit definitions
    • Support engineer, mortar, and artillery ammo types
  • Add scenario drawing tool
    • Freehand pen tool
    • Stamp tool for symbols/markers
    • Eraser tool
  • Add custom command registration to scenario editor
  • Add missing recruitable units configuration to scenario editor
  • Change Terrains to save to json format
  • Add in-mission drawing system
    • Freehand pen tool
    • Eraser tool
    • Session-only drawings (cleared on exit)
    • TriggerAPI integration for tutorial detection
  • Add NATO military symbol generator (MilSymbol)
    • Enum-based API for type safety
    • Support all standard unit types and sizes
    • Affiliation colors per NATO APP-6 standard
    • High-resolution rendering with anti-aliasing
  • Add physical 3D unit counters
    • Physics-enabled RigidBody3D counters
    • MilSymbol texture generation at 2048x2048
    • Spawn at actual unit positions on map
    • Interactive counter drawer with configuration dialog
  • Add post-processing effect controller (PPEffectController)
    • Centralized shader effect management
    • Bound to TriggerAPI for mission scripting
  • Add loading screen with mission name and progress
  • Add text-to-speech (TTS) system integration
    • Unit voice responses for order confirmations
    • Automatic ammo/fuel warnings
    • Radio messages from trigger scripts
  • Add move direct command (bypassing pathfinding)
  • Add scenario editor improvements
    • TriggerAPI method autocomplete in trigger config dialog
    • Refactor monolithic ScenarioEditor.gd into separate services and helpers
    • Improved code organization and maintainability
  • Add clipboard 3D model for briefing documents
  • Add test mission auto-loading for development
  • Add NATO unit roster definitions
    • Scout platoons, tank platoons, ITV sections
    • Mortar sections, engineer platoons, field trains
    • Proper ammunition loadouts and equipment
    • Medical and engineer capability flags
  • Fix trigger evaluation to work when simulation is paused
  • Fix scenario drawing renderer issues
  • Add Scene node debug options to DebugMenu (CTRL + F3)
  • Add datetime options in the environment dialog
  • Add EnvironmentController which instantiates a world scene and controls time of day

Tutorial Mission Objectives

  1. Lane 1: Perform Radio Check
  2. Lane 1: Place unit markers
  3. Lane 1: Draw movement plan
  4. Lane 1: Start timer
  5. Lane 2: Move to objective
  6. Lane 2: Practice Combat
  7. Lane 3: Build Bridge
  8. Lane 3: Call for smoke barrage
  9. Lane 3: Move across bridge

Issue ticket number and link

Checklist before requesting a review

  • I have performed a self-review of my code.
  • I have tested my code.
  • I have documented my code in accordance with gdscript_documentation_comments.
  • I have requested a review in discord.
  • I have moved the related issues to the review section in the SCRUM Board.

New naming convention is as follows:

`OC<Domain><Type>` e.g. `OCMenuButton`
Make TerrainData save to json and optimize LOS calculations to O(k)
Add rudimentary drawing to scenario editor
adds trigger api to set a global var that can then be accessed by other triggers.
@Tapawingo Tapawingo changed the title Feat/first mission Feature - Release Preperation and tutorial mission Nov 1, 2025
@Tapawingo Tapawingo marked this pull request as ready for review November 1, 2025 17:43
@Tapawingo Tapawingo changed the title Feature - Release Preperation and tutorial mission Feature - Release Preparation and tutorial mission Nov 1, 2025
@GianRathgeb
Copy link
Contributor

Things to improve on and my thoughts:

  • I dont think I have a save but the button "Continue Last Save" is still there and does not do anything, so maybe don't show it when there is not save?
  • when I load a mission, before it starts, there is just a white screen and in the button it says "FTX Crested Cap Checkride", what is this? Should I even see this? Continue works as expected
  • There is a bug that crashes when removing a unit from the a slot in the selection before the mission that just crashes the game (PoolDropArea.gd line 21
  • I think we should move to fullscreen, the values on screen are hard to read.
  • I don't really know how to play, there are hints and stuff but I am not sure how to move units around and what I have to do
    • when I say something like the tutorial suggest, nothing happens.
  • I also don't get any audio feedback. The tutorial says to say something like "Alpha Report Status" and I don't think we have something like that but at least it should show something to the console, right? No found it out to just keep the spacebar pressed. I will leave this comment just to show how I felt playing.
  • Okey I had a lot of issues figuring out how everything works. The suggestions help
  • I don't know how to attack the right way, I think there should be a tutorial when there is an attack or an enemy unit discovered.
    • Tutorial just says to check the status but that does not really help.
  • So I was not able to test the finish of a mission or combat

@Tapawingo
Copy link
Contributor Author

Tapawingo commented Nov 2, 2025

@GianRathgeb

I dont think I have a save but the button "Continue Last Save" is still there and does not do anything, so maybe don't show it when there is not save?

Campaign saves and all UI elements related to it are only placeholder until #28 is created.

when I load a mission, before it starts, there is just a white screen and in the button it says "FTX Crested Cap Checkride", what is this? Should I even see this? Continue works as expected

Could you provide a visual for this? I don't have this at all locally.

I think we should move to fullscreen, the values on screen are hard to read.

Agreed for release, but in debugging a window is easier to work with. In the game debug window it is possible however to select a option to make the game screen resize to fit debug window (so if you maximize the debug window you can get close to fullscreen).

I don't know how to attack the right way, I think there should be a tutorial when there is an attack or an enemy unit discovered.

Attacks are auto initiated once a enemy unit is seen and within range. But I'll make it more clear in the tutorial 👍. There is supposed to be an ambush initiated (this won't work fully until we have the AI controller). So for now you'll need to move ALPHA to grid 630852 and you'll run into the enemy where it is staged (CTRL + F3 -> Scene -> Refresh -> DebugOverlay -> enable debug to see all unit positions on the map).

@GianRathgeb
Copy link
Contributor

from my side everything looks fine, but I'll let Tobias also do a review

@tobelobb
Copy link
Contributor

tobelobb commented Nov 6, 2025

found a bug with the documents ont the left side in brief room. if you double click them you can put them back and they stop you from interacting with any other items.
the map is really hard to read even when I had the window maximized
maybe we could add some tutorial at the unit select screen to show how the points work and explain how troop sare kept and what they do
could not get "move to OBJ1" to work, me aswell as my friend tried saying objective but it does not seem to be a word. it always got read as move 2 and would get stuck trying to get distance
troops did not follow drawn lines, not sure how they should work

@tobelobb
Copy link
Contributor

tobelobb commented Nov 6, 2025

I have found out how to release the documents lol, thougth you had to right click them but you right click the table

@tobelobb
Copy link
Contributor

tobelobb commented Nov 6, 2025

I forgot to add, when failing a command it sends a tts message and my old voicemessage at the same time

@Tapawingo
Copy link
Contributor Author

Tapawingo commented Nov 6, 2025

@tobelobb

the map is really hard to read even when I had the window maximized

This is something that would need to be revisited in a different task. I fear a rewrite of map renderer would be needed.

maybe we could add some tutorial at the unit select screen to show how the points work and explain how troop sare kept and what they do

This is a good idea, but for this task it's out of scope.

could not get "move to OBJ1" to work, me aswell as my friend tried saying objective but it does not seem to be a word. it always got read as move 2 and would get stuck trying to get distance

This has yet to be implemented. It should be apart of the polish tasks and thus is out of scope of this task.

troops did not follow drawn lines, not sure how they should work

Drawn lines is just to help the player visualize their own plan. the simulation is not affected by them at all. In the finished game since you can't see your units on the map and you will have to use the unit counters, having a aid to visualize troop movement would be useful. and that is the purpose the drawing serves.

I forgot to add, when failing a command it sends a tts message and my old voicemessage at the same time

Noted. I'll push a fix asap.

@Tapawingo Tapawingo merged commit 289a079 into main Nov 6, 2025
3 checks passed
@Tapawingo Tapawingo deleted the feat/firstMission branch November 6, 2025 12:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants