This patch fixes a couple long-standing issues related to the damage model. The most notable new feature to come out of this, is the introduction of critical parts. To fix some related AI bugs, many parts on aircraft are now marked as "critical". When one of these is destroyed, the AI pilot will attempt to maintain control of the plane, but when they figure out they can't, they'll eject.
Between this change and the rest of the damage model fixes, it's now possible to destroy planes without completely obliterating them or setting them on fire.
For modders:For modders: The RCS value in the Control parameter for the DamageablePart has been removed, and replaced with new values. See the changelog below for more details.
Changelog
New Features: - Added "Critical parts" which trigger ejection from pilot
Improvements: - Losing a wingtip in AV8 reduces RCS roll authority - Losing both wingtips in AV8 causes complete loss of RCS roll authority - RCS damage can be caused to specific control axes - It's possible to destroy aircraft from pilot ejecting from damage instead of fire
Bugfixes: - All engine instances can be destroyed by damage - Right engine is destroyed by right side damage on F-4E instead of left - Control damage is no longer multiplied by >200X
Balance: - Most Wings and elevators on all jets listed as critical - Tweaks to MiG-23 damage model to better match visuals - Reduced image of wing damage from AV8 elevators 2.0 -> 1.0 - F-4 outer wings roll damage increased 0.1 -> 0.2 - Swing wings
JSON: - Removed "RCS" as a value for "Control" in the "PhysicsDamage" entries - Added "RCSRoll", "RCSPitch", "RCSYaw", as values for "Control" in the "PhysicsDamage" entries - "Control" value defaults to "None" instead of "Pitch" - Added "IsCritical" to the "DamageablePart" definitions
0.14.1.2 is now available on the Tester's branch
This patch is mainly to fix some issues with vehicles moving around on the map. The navmesh has been updated, and ground clamping has been re-added to the game, but with new optimizations.
For performance's sake, vehicles used to drive directly on the navmesh. When the maps were guaranteed to be totally flat, this looked just fine. However, with terrain, the navmesh is necessarily coarse enough that imprecisions are actually noticeable, causing hovering vehicles, or vehicles that appeared under the ground.
To fix this, ground clamping has been re-implemented, and thanks to previous optimizations this time the performance impact is minimal this time is minimal. Like the rest of the movement, the rate at which the clamping updates is less frequent the further from the camera the vehicles are. The rotation is also pulled directly from the navmesh, which is close enough, skipping the math necessary to level the vehicles on terrain.
Changelog
Improvements: - Reimplmented an optimized raycasted ground clamping for vehicles - Added distance readout to the nav mode strategic target markers - Expanded the island tour description
Bugfixes: - Updated Sand Island (WIP) navmesh to fix hole in it - Fixed NRE when switching to vehicle camera before a vehicle has spawned - Vehicles no longer hover above ground or drive under ground
Balance: - Lowered attrition requirement for blue tickets from 20 -> 15
Arena Mission Runtime and Why it's So Important
The 0.14 patch cycle will probably be the most important patch the game sees up through the release of the game. With it comes the Arena Runtime and Event System, which basically controls and consolidates all the Arena mechanics, as well has a robust framework for creating and completing mission objectives in game.
The BMP-1 has been added this patch. Their 73mm HEAT guns are low velocity and ineffective against tanks, but devastating against other mechanized units. Unlike the other mechanized units though, they have no self-defense machinegun, and so are quite vulnerable to air attack.
New Arena Mission Runtime and Event System
This is the main feature of the patch, and where the huge bulk of development time has gone the past month. The code that ran the Arena mode was spread all over the codebase, difficult to work with, and not expandable to cover the needs for the training campaign and the campaign itself.
The new set of objectives that can be programmed into missions are currently:
Attrition (Red/Blue) Greater Than
Attrition (Red/Blue) Less Than
Aircraft Arrived At
Unit Arrived At
Aircraft Took Off From
Aircraft Landed At
If this sounds like something that should have been done a very long time ago, that's correct. For a long time I thought I could get away with the ultra-basic set of mechanics I had written for the Early Access launch version of TCA, but as the game is nears internally set milestone dates, and the flight mechanics and (still WIP) content nearing their final states while the core game mode still feels as barebones as it does, it's become clear that's no longer the case. All this together has caused me to make a big shift in development priorities, but more on that later.
To facilitate the above system, a new runtime event system has been implemented into the game. This decouples a lot of code that was reaching far across the game to totally unrelated systems, and centralizes it into a single point of contact. The combination of these two things means that adding new objective types, if needed, is also far simpler now.
New Spawning System
A major difficulty that sprung up with the new map was that the old spawn system was no longer adequate. The original system was extremely simplistic, and only worked for the large flat plains that the previous map (and test maps) consisted of. Since the new terrain has water, roads, and dense bases with buildings, spawn points needed to get a lot smarter. Some simple tools have been written so that spawns can be hand-placed, and avoid the failed spawns that were frequently appearing on the new map.
Attrition
The second tutorial campaign mission demonstrates the attrition mechanic. On some missions, each side has a number of "tickets", and depleting the enemy's, while conserving your own, will be necessary to complete objectives. This is a very straightforward mechanic, but it's a powerful one and fits certain mission types.
New Map Progress
Work on the new map continues. This map will be available for 1.0 and is significantly larger than the previous map. The map doesn't correlate 1:1 with a real location, but is meant to be representative of northern Germany during the 80s.
Due to its size, a chunking system has been developed to prevent issues with collisions. We are currently working through the navmesh difficulties this creates.
Path to 1.0, and a Shift to Content-Driven Development
As said before, this patch is probably the most important patch the game will receive until 1.0 with regards to features. Now that all the underlying building blocks are in place, I'm making a very conscious choice to move from developing features for notional future ideas, to instead adding content first and then adding the features as needed.
This is something that's perhaps long overdue, and is influenced by some side projects I've tackled over the course of the game's development, as well as the game's reception. Building levels for the game, playing them, seeing what's missing, and then adding the content and features as needed has in my experience been a lot more successful than the very "theoretical" approach that TCA has had up to this point.
What this means to you is to expect more frequent updates with a bigger focus on adding content to the game. For the most part, these will come in the form of the Prelude campaign missions and the supporting vehicles and features needed to build them. There is a pretty sizeable backlog of units that have already been modeled out, but need to be added to the game!
Thanks again for coming along with me on this journey. There's still a lot of work to be done until I'm ready to call the game "1.0", but with the new Arena tools and mechanics, I feel more confident than ever about completing this game.
0.14.1.1 is now available on Tester's branch, featuring first campaign missions
Hello, this patch features the necessary back end work to build out the rest of the campaigns for the game, and makes the necessary significant strides to move Arena and the game closer to its 1.0 state.
For a high level overview of what this patch means and future plans for the game, see this major news post.
Changelog
New Features: - First 2 missions of the "Prelude" campaign meant to demonstrate/teach all Arena mechanics - Arena attrition mechanic where destroying units reduces the "tickets" available for a side - New objectives using attrition mechanic - Attrition bar to display Attrition mechanics when in Arena map view + Illuminates when attrition damage is done + Has a "combo" visual when lots of damage is done in a short time - Event system to drive mission design and objectives - New Arena runtime and objective system - Completion of objectives and mission completion handled by runtime - Added BMP-1
Improvements: - Objectives right justified in Arena mission selector - Font size reduced for the arena mission selector - When objectives are completed, a HUD popup appears - Arena map camera dragging more responsive - Arena menu displays objectives with display names - Spawning for vehicles in Arena handled through hand-placed spawn points - Added spawn points to all strategic targets on old and new Island maps - Objectives display in Arena Map UI revised to make failed objectives states and stars earned more clear - Audio speed of sound increased 2x -> 3x - M113 and BTR70 moved to the Mechanized subcategory in the Database
Bugfixes: - Vehicle icons restored when in Arena view - Tweaked navmesh to reduce chance of vehicles getting stuck
Balance: - Reduced gun tracking against air targets for BTR70 and M113: 50 -> 25
JSON: - Added "DisplayName" to Objectives definition - Replaced "PrimaryObjectives" and "SecondaryObjectives" with unified "Objectives" in Arena mission definition - Objective definitions expanded + Value: Used by the ticket goals as the reference value + IsOneShot: Once the objective is completed, it can't be failed + IsFailing: Used for objectives which are completed by default, and change to failed if their condition fails (e.g. BlueTicketsMoreThan) + IsPrimary: Required to complete the mission + SetFlagOnCompletion: Sets a flag on completion - Added new GoalTypes + RedTicketsLessThan, RedTicketsMoreThan + BlueTicketLessThan, BlueTicketsMoreThan + AircraftArrive + UnitArrive + AircraftTookOffFrom + AircraftLandedAt - Added "IsInvincible" to StrategicTarget definition, preventing it from being disabled from damage
0.13.7.1 has been released! Features UI sounds and more accurate VTOL behavior.
As work continues on the Arena introduction campaign, UI sound effects, such as for when mission objectives are completed, were needed to unblock a task, so this very old backlog item has finally been taken care of.
UI Sound Effects and UI Audio Channels
This has been a task I've been dreading for a very long time simply because it was going to be a tedious exercise. Thanks to some foresight and plentiful use of nested prefabs, it actually wasn't as bad as I thought it was going to be. UI SFX are one of those really minor things that add a lot to game feel, so I'm really happy this is finally done.
VTOL Nozzle Angle Changes
Another small backlog item: The nozzle thrust and rotation is now based on an engine actually rotating versus just magically being applied through input. The UI has been updated accordingly to support this. The effect is exaggerated here in the above gif, since the Pegasus nozzles rotate fast enough that you won't notice this.
Changelog
New Features: - New sounds when hovering/clicking on buttons - New sounds when a slider is manipulated - New sounds when a "big thing" happens such as selecting a game mode - Added UI and Music sound sliders to the audio settings - External audio can be heard (quietly) when in database view
Improvements: - Engines apply VTOL nozzle vectored thrust based on true nozzle angle - AV8B nozzle moves 180 degrees a second - On the HUD, nozzle chevron and text shows desired angle - On the HUD, nozzle bar shows true nozzle angle - VTOLD HUD is triggered by desired nozzle angle instead of true angle - STOVL MFD reports true nozzle angle instead of desired angle - AV8B nozzle angle gauge reports true nozzle angle instead of desired angle - AnimatedParts can be overridden by engine VTOL values
JSON: - Added "VTOLNozzleSpeed" to engine definition, how many degrees/second can rotate - Added "VTOLAnimatedParts" to engine definition, any AnimatedParts in this list will instead be controlled by the engine VTOL controller
0.13.6.3 has been released, official TrackIR support and Steam screenshots!
Almost everything I've been working on lately has been back end to support the upcoming training campaign, which will introduce each of the mechanics of Arena one by one and take place on the new island map. The Arena mission handling got refactored a bit, along with a global event system, to handle the basic scripting necessary for the Arena training missions.
In the parallel to this, one of the things that has been on the backlog for a while has been updating the TrackIR plugin and fixing a couple head tracking related bugs.
Official TrackIR Plugin
The absolutely ancient TrackIR plugin I've been using for almost 10 years has finally been updated to the latest, which brings native support for the game in the TrackIR software. The unusual pitch ladder movements when head tracking was used have also been addressed.
Steam Screenshots
Another small line item that was on the backlog for a long time was having photo mode actually take Steam screenshots. This works as would expect, with the default behavior being to take a Steam screenshot if the game is currently being run through Steam. Two new settings have been added to the game to force the old behavior of locally saved screenshots, or disable Steam screenshots entirely.
Behind the Scenes
The new map is quite large, with the base geometry for it now being down. Expect mountains and valleys to fly through. It's still extremely WIP, so keep that in mind with image.
The first campaign mission is very simple, just taking off and landing in a couple airbases around the island map, but since the game right now only has events for purely "Strategic" stuff like base capture, this has caused some coding fun to expand the event system to make for more robust mission objectives.
The bulk of the remaining work on the game will be on building out the Arena and Arena missions. The training campaign is still subject to re-organization but this is the rough outline of not just the campaign but also Arena's feature-set.
Changelog
Improvements: - Strategic Target visuals no longer Z-Test - Updated TrackIR plugin to the latest over the original 10 year old plugin - Game will be recognized as "Tiny Combat Arena" in the TrackIR software - Photo mode automatically takes Steam screenshots - Added setting for local screenshots to be saved only when Steam is not in use, or always - Added setting to enable/disable Steam screenshots - Shutter effect in photo mode happens only after a photo has been successfully saved
Bugfixes: - Occasional freeze caused by TIR on startup no longer happens - "Use head tracking" setting works as expected - "Use head tracking" setting can enable/disable TrackIR mid-flight - TrackIR no longer resets every time settings window is opened - "Reload TrackIR" keybind works as expected
Balance: - AltitudeEfficiency set to the following values to make dedicated fighters better at high altitude + AV8B: 1.0 + F-5/MiG-21: 1.2 + F-4/MiG-23: 1.5
JSON: - Added "AltitudeEfficiency" parameter to the engine definition for aircraft + Value of 1 is normal, >1 mean engine suffers less engine degradation with altitude
0.13.5.4 is now available!
Hello! This patch cycle is once again focused on bugfixes, as a lot of dev attention has been on the next terrain, the new challenges it's creating, and other behind the scenes work.
The major changes this patch, with links to the posts in which they are discussed, are:
New Features: - Added real (64 by default) and virtual (256 by default) audio channels to audio settings tab - Minimum airspeed that can be read by an aircraft is now configurable on a per-aircraft basis
Improvements: - Cockpit design changed so that ONLY the cockpit is in the cockpit model, no more duplicated geometry (e.g. fuselage in both models) + "Third person" parts of the model such as the canopy bow are hidden when in first person + First pilot automatically hidden when in first person + Cockpitless planes no longer require special h andling regarding camera clip planes - AV8B model updated for new cockpit modeling workflow and removed unused vertex colors - AV8B no longer uses unique shader - Near clip plane for ALL cameras is now 0.05 (most were 1.0) - Far clip plane for ALL cameras is now 100k - When escape menu modal dialogs are open, escape will close it - Floating origin now applies in the vertical
Bugfixes: - Page selectors on database mode now work - Instant action wing selector pages should work correctly when multiple pages are visible - Pressing escape during the pause menu while settings or bindings are open won't continue game - Fog and clouds no longer disappear when loading Instant Action after Arena - AI aircraft flying in formation automatically switch back to nav mode - Cockpit no longer shakes at higher altitude - "Investigate" AI behavior correctly accounts for floating origin - "Idle Orbit" AI behavior correctly accounts for floating origin - "Climb" AI behavior correctly accounts for floating origin - Arena icons no longer appear for a single frame near origin when a unit spawns - Camera text correctly accounts for the floating origin - Radar altimeter and shadows should be handled better when flying "out of bounds" - Paging for the wing selector and database selector should work correctly for edge cases - When vehicles fall off the navmesh, they instead report (with error messages) that they did, but also shouldn't call any invalid NavMeshAgents - Optimized how stores weight is calculated (was an unexpected bottleneck) - Changes to audio mix to hopefully reduce missing engine sounds - Afterburner thrust value no longer affects aircraft if no afterburner is available - AV8B MFD Cruise page minimum speed IAS/TAS now matches the Game HUD minimum speed - Landing gear can no longer be raised/lower post-ejection - Terrain raycasting better accounts for vertical floating origin - Aircraft no longer spawns underground in Arena if a new sortie
JSON: - Warning shown in log when collider is missing - Added "HideInFirstPerson" list to aircraft definition (see AV8B JSON for example) - Added "Avionics" property to aircraft with sub-property "MinDisplayedAirspeedMPS"
0.13.5.4 is available on the Tester's branch
Changelog
Bugfixes - Terrain raycasting better accounts for vertical floating origin - Aircraft no longer spawns underground in Arena if a new sortie
0.13.5.3 is now available on the Tester's Branch
Audio is one of the more difficult things to work on because it relies on a third party middleware, is very difficult to debug, and for various reasons is very fragile and difficult to source control, so it's always a slog whenever I adjust anything of checking back to make sure I didn't break everything. That said, there are two audio changes this patch:
Audio priorities have been changed around a bit to hopefully make the disappearing player engine audio less likely.
Sliders have been added to settings to raise the number of simultaneous channels that can be heard.
The second change is kind of a hack, but until I find a more permanent and robust solution to the reported audio problems it's the best I can do. Raising the audio channels will make it less likely for sounds to cut out or not play correctly, but there is some CPU cost to this.
There's still a couple remaining issues that are likely caused by the updated floating origin. Once those are fixed, this will be pushed to the main branch.
Changelog
New Features: - Added real (64 by default) and virtual (256 by default) audio channels to audio settings tab - Minimum airspeed that can be read by an aircraft is now configurable on a per-aircraft basis
Bugfixes: - When vehicles fall off the navmesh, they instead report (with error messages) that they did, but also shouldn't call any invalid NavMeshAgents - Optimized how stores weight is calculated (was an unexpected bottleneck) - Changes to audio mix to hopefully reduce missing engine sounds - Afterburner thrust value no longer affects aircraft if no afterburner is available - AV8B MFD Cruise page minimum speed IAS/TAS now matches the Game HUD minimum speed - Landing gear can no longer be raised/lower post-ejection
JSON: - Added "Avionics" property to aircraft with sub-property "MinDisplayedAirspeedMPS"
Known Issue: - In Arena, taking off, climbing to 30k feet, then ending sortie and respawning, can put the plane under-ground
0.13.5.2 Hotfix is now available on the Tester's Branch
Changelog:
Bugfixes: - Radar altimeter and shadows should be handled better when flying "out of bounds" - Paging for the wing selector and database selector should work correctly for edge cases