Hello! The 9.0.X patches are now public. This is the biggest patch the game has had in a while. In late June, [url=https://twitter.com/Why485/status/1538291997362073600]I started working on IR SAMs[/url]. However, I quickly ran into many snags with regards to the performance and inflexibility of the current code. The bad news is that IR SAMs still aren't in. The good news is that the game has made some major strides forwards and cleared the worst roadblocks that used to keep me up at night. For the moment, the Arena UI is really busy. I've added a shortcut to disable it, defaulting to Shift-H, while in flight, but this is all subject to change very soon. [h2]Vehicle Overhaul[/h2] [previewyoutube=ouo7LSYxKbw;full][/previewyoutube] The central feature of this patch are the new vehicle mechanics and optimizations. The previous vehicle code struggled to scale any larger than what was presented in the Arena Demo mission. They also could not pathfind around obstacles, nor were they aware of terrain beyond that it existed below them. This critically lead to many limitations in the map design. For example, vehicles would be completely unaware of water, roads, mountains or bridges. The old vehicle code was also fundamentally quite performance intensive, even with many hacked on optimizations that made the code harder to understand and work on, to the point where I was simply not comfortable having more than ~100 active vehicles. [h3]Pathfinding and its Implications[/h3] [img]https://i.imgur.com/b9k6xGl.png[/img] About 1800 lines of code later (and ~3700 deleted lines!), the vehicles have been massively overhauled, based on a proper pathfinding solution. It's hard to overstate how important this is to the game. From the beginning, I've wanted Tiny Combat Arena to be about strategically applying your own plane and weapons to influence a simulated battle on the ground. Your flights should be in service of a larger goal and mission, about more than just dogfighting in a context-less void. With this change, that goal feels totally within reach. Vehicle behaviors are much more advanced now. They follow roads (and speed up when on them). They can travel through cities and around buildings. They will even try (try!) to avoid runways and drive around wreckages of other vehicles. This adds so much more depth to flexibility to how maps can be designed. The new code has been tested with hills, roads, canyons, and even tunnels. Vehicles will drive around bodies of water, and drive over bridges when available. Expect more interesting terrain soon! If you'd like more detailed information, [url=https://store.steampowered.com/news/app/1347550/view/3387287522104680944]check out this news post about the vehicles[/url]. [h3]Bullet, Gun, Turret, and Targeting Optimizations[/h3] [img]https://i.imgur.com/U9gQOoX.png[/img] In addition to all of this, the new code features greatly optimized code for bullets, guns, and turrets. The algorithms are efficient to the point where all vehicles can now compensate correctly for bullet drop, the targeting is much more accurate, and they can fire off many more shots than before without lagging the game. Vehicles can even support multiple turrets now (a forward looking feature). To show off this feature, the M60A1 is now able to use the commander's cupola machinegun. This rewrite also gave me an opportunity to expose the bullet code to moddable JSON. Previously, guns could be edited, but the bullet definitions were hardcoded, optimized for the old gun system. The new guns were designed and optimized from the ground up to function with loaded data. However, be aware that these optimizations apply only to ground vehicles. Aircraft are still using the old gun/bullet system, but will converted soon enough. [h2]Groups and Supplies[/h2] [img]https://i.imgur.com/DyU9N9j.png[/img] Vehicles are now spawned in [b]groups[/b] rather than the gigantic and cumbersome formations. This gives more flexibility to how they move around the battlefield, and helps to spread the units out a bit more. Battles are a lot cooler to watch now! Strategic Targets now have [b]supplies[/b] and scenario defined [b]group limits[/b]. Each base can support a certain number of groups of certain vehicle types. Strategic targets will automatically "build" new groups to hit their unit cap, and will replace groups that have been destroyed. Building is not instantaneous, though for the moment it is very quick. [b]Building vehicle groups costs supplies![/b] Each group has a cost associated with it and if the strategic target expends all of its supplies it can no longer build units. Destroying units matters way more now that bases have supplies. If you destroy enough of their vehicles to run it out of supplies, those vehicles are gone forever. It makes vehicles much more valuable than before. This system is something that will be expanded in due time, but for the moment, be aware that when a base is captured, it is automatically replenished up to 30 Supply. This is a feature I'm really excited about because it opens up many new avenues for mission design! [h2]Revised View System[/h2] [previewyoutube=BmB9xp6VL10;full][/previewyoutube] In order to expand the things that the camera can look at, there's been a slight rework on how views are selected. External (F2), Chase (F3), Flyby (F4), and Weapon (F6) now only function to select cameras on the currently viewed object. Pressing F1 will always take you back to the cockpit of your plane and reset the viewed object to yourself. Meanwhile, Vehicle (F7) and Aircraft (F8) can be used to cycle between all active vehicles and aircraft, setting them as the new viewed object. All the external cameras work on anything viewable, though the Weapon camera applies only to aircraft. You can do the flyby camera on vehicles too, even if it looks a little silly. [h2]Improved Targeting[/h2] [previewyoutube=JM699kBrI54;full][/previewyoutube] The difficulty in targeting high threat targets is one of the game's most common criticisms, and something that's finally been addressed with this patch. [img]https://i.imgur.com/WuzIJUr.png[/img] As you move the targeting crosshair around (hidden when looking forwards), a selection of 6 targets will be specially highlighted. Pressing the target button, the radar will cycle between these targets. Most importantly, this selection is [b]prioritized by threat[/b], so AAA like Shilkas will be targeted before a tank that is not a threat. [img]https://i.imgur.com/3Z70dmQ.png[/img] The targeting is based around the screen center, allowing you to target by looking at something. When off-boresight, a small crosshair will appear in the center of the screen to give you a reference point to aim with. [h2]Flying Below Radar[/h2] [previewyoutube=19ULTymEqNg;full][/previewyoutube] Surprise new feature: you can fly below the radars of the Shilkas to avoid fire. This is probably temporary for this specific Shilka variant, since they are supposed to be horribly scary to try and kill at close range, but this is now a feature that can be applied to anything with radar. Keep in mind though that for the time being, this feature is only in use on the AAA radars. A pass on air to air combat, which will include refinement of the radar mechanics (and missiles), is still upcoming. [h2]Closing Thoughts[/h2] [img]https://i.imgur.com/rrr1DpF.png[/img] What started as "I'm going to get SAMs working" ended up exposing the worst technical debt the game had. What's come out of the work, is a far more robust vehicle system and ground game that clears what was the biggest road block I feared. Maps are no longer extremely restrictive in design, vehicles are no longer the dramatic bottleneck of the game, and all the new mechanics create the building blocks that Arena needed to capture the feeling I was looking for. Next up [h2]Changelog[/h2] [code]New Features: - New navmesh driven vehicles - Vehicles will prefer roads when out of Combat - Vehicles can navigate around fixed obstacles such as buildings - Completely new turret code for vehicles - Vehicles can now have multiple turrets - Completely new bullet code (used only by vehicles at the moment) - Bullets created and loaded through JSON data, exposing them for editing - Bullet constants file defines pools for different types of bullets and effects - Bullets and their visual effects pooled in a new, less disruptive way - Sensors are added to the vehicle, not the turret - Individual turrets can now be linked to specific sensors on the vehicle - Added error messages when spawning vehicles with invalid weapon or bullet names - Added error messages for invalid barrel and firepoint subparts, or turrets with no barrels - Navmesh support for "Sand Island" map - Buildings have built in "no go" navmesh option - Bridges default to "road" navmesh - Vehicles now operate in "Groups" instead of massive formations - Strategic Targets can support a scenario defined number of Groups - Groups are "built" one at a time, and require supplies to build - Strategic Target icons show group and "construction" related information - Strategic Targets can be run out of supplies to prevent spawning of new vehicles - When a strategic target is destroyed, its supplies are destroyed with it - If a Strategic Target has <5 supply on capture, it will get 5 supplies for free - Vehicle groups in combat will slow down to fire on the move and try to avoid roads - Vehicles further from camera run at reduced tick rates to allow for higher vehicle counts - "IsImportant" flag used on vehicles that require full fidelity regardless of distance (e.g. AAA) - Vehicles can be viewed using F7 and Shift-F7 (See Improvements) - Vehicles will avoid and drive around wreckages - Small cross is visible in view center to help with targeting - The next object to be targeted has its target box enlarged - Minimum altitude mechanic under which a radar cannot detect a target, or will lose a lock - Shilka/M163 have a minimum detection altitude of 50 meters/~150 feet AGL - Added defensive mission for vehicles - Defensive vehicles will position themselves between an adjacent hostile strategic target and their own - Support for named vehicle groups - Added key (Shift-H by default) to toggle visibility of Arena symbology while flying Improvements: - Vehicle movement has been significantly optimized - Vehicles no longer clip into and overlap each other - Bullets and their visual effects should no longer produce intermittent stuttering - JSON: Renamed TurretBase->TurretAzimuth and Barrels->TurretElevation - JSON: Explicitly defined Barrel data now required for turrets - Significantly optimized targeting calculations allow for all vehicles to use bullets with gravity - Tank cannons now named after their real cannons - New visual effects for all machinegun impact types (Hit, Penetrate, Water, Grass, Explode) - Crater counts adjusted (Small 175->100, Medium 75->150) - Machineguns can not be heard from as far away - Cannons can be heard from further away - Bullet flyby SFX completely redone - Longer tracers - Targeting priorities are now specified on the turret level - Max range and targeting priorities of a vehicle moved to the turrets in the Database - Dust trail effect tweaked for performance - JSON: BurstLength now refers to how many shots per burst rather than a time interval - Vehicles wiggle a bit when off-road to simulate suspension - Aircraft guns use new impact SFX - Garbage collection optimizations for the old style bullets (still in use by aircraft) - Capturing of Strategic Targets now happens in smooth "real time" versus one second "ticks" - Experimental incremental garbage collection enabled - Vehicles will avoid airports a little more (but will still drive over them if they think its quicker) - Default cockpit horizontal FOV is now 75 degrees at 16:9 - Vehicles are more spread out and will try not to clump up as tightly - View system redesign to allow for more robust cycling between objects - External, Chase, Flyby, and Weapon are view types and do NOT cycle between viewables - Next/Previous Vehicle (F7/Shift-F7) cycles the viewed object between vehicles - Next/Previous Aircraft (F8/Shift-F8) cycles the viewed object between aircraft - Removed bindings for Previous Externa/Chase (Shift-F2/Shift-F3) - External/Chase camera can't look under vehicles - Database shows statistics for multiple turrets (see M60A1) in a nicer format - Bullets are initialized only once on game startup - Drastically improved performance in the main menu - In instant action, groups of vehicles are spawned in based on the faction defined formations - Removed ~3700 lines of old vehicle and vehicle adjacent code (no game change, but I'm really happy about it) - When a strategic target has negative MaxSupply, the UI will not show supply at all - Targeting logic creates a group of selectable objects - Target button cycles between this group of objects - Selectable objects are prioritized by type so that threats are targeted first Balance: - Fixed scaling options not applied to wreckages - M60A1 has a functional machinegun turret on top of its main turret - Machineguns no longer use thick bullets - Tank shell velocity more closely matches their real stats (1500-1700 m/s depending on gun) - M68 mounted on M1 is more accurate than the standard one mounted on the M60 - T80B has its own more powerful gun and projectile (2A46-2, 125mm) - M163/Shilka max range reduced 4km -> 3km - M60s from Kogasa and T80s from Ichirin are now defensive - Murasa Shilka groups reduced to 1 and now defend the base - Added 2 groups of defensive Shilkas so Toramaru Bugfixes: - Planar shadows render correctly for scaled buildings (i.e. bridges) - Bullets fired from AAA will no longer disappear when the vehicle is destroyed - Looping gun audio works correctly for vehicles (affected M163 and Shilka) - Ocean shader uses same depth offset as terrain - M1A1 has a proper barrel submesh for recoiling barrel animation - Potential fix for the elusive CAP null reference error that would shut down a flight of jets - F2 camera no longer cycles to ground vehicles - Fixed invalid vehicle spawn after Kogasa Arms Fort was captured by USSR - Vehicles ride rougher when off-road and smoothly when on-road (logic was reversed) - Groups of 1 no longer get stuck and unable to issue commands - Target location for vehicles when moving will be in the correct formation - Armored units will move to a new location when their target base has been captured - Armored units should no longer cluster around the center of the target base - Vehicles no longer change target every second - Vehicles correctly prioritize targets again (e.g. tanks targeting tanks) - Added missing barrel to M1A1 that was preventing it from spawning - Missile turreted vehicles don't error check for barrels - SA-9 and SA-2 can spawn without errors again - Performance no longer sharply degrades after every level load - Bullet effects no longer play a SFX at the origin on game start - Fixed group icon sometimes appearing at the origin for vehicles marked important (i.e. AAA) - Fixed bug where errors could be thrown by bullets when leaving Arena mode - Strela classified as SAM instead of vehicle[/code]