Version 0.4.0 (Di-Cokka)
This update adds one new vehicle to the MVP, the Di-Cokka, this is a vehicle from Metal Slug instead of an original design. Half added as a joke, half as a warmup for future vehicles. It's mechanics are very different from the other vehicles in the pack for more info, check the updated documentation.
Besides this new vehicle, this update is actually mainly a HUGE rewrite and bugfix update. This update fixes a ridiculous amount of bugs and undefined behavior that was present in the mod before. It also is a massive rewrite of how turrets work. This is a lot more code compared to the Di-Cokka, which is also fairly simplistic by design compared to other vehicles. Since it's a cartoon tank from a run and gun game series.
Code wise, a lot of these changes are also in preparation of me potentially making a new AI library in vein to VJ Base, where the base code for the MVP will serve as the vehicle base. This is partly why I put such a focus on extensibility and flexibility. But of course, I also did it to make my job easier. This library will allow others to more easily use my AI code for their projects, it will even make integrating my NPCs to my own future projects easier, which is another plus. And reason I want to make this library. No ETA on when I'll begin work on this library.
Known bugs:
- Because of a bug in GZDoom 4.10, there is a 50/50 chance that right when close GZDoom, it will crash. I can't really do anything about it on my end. I do know that it's caused by the AttackStates state array however.
Videos:
Video on the Di-Cokka: https://youtu.be/Y7TBvQGW7nc
Video on the newly rewritten turret mechanics and line of fire checks: https://youtu.be/qLtzr4XU0X0
Changelog:
- The line of fire checks that the turrets use have been completely reworked from the ground up. Now instead of relying on a hardcoded function. There is instead a custom LineTracer class (MVP_LOFRaycast), which contains a bunch of basic methods and variables. These methods and variables from the custom LOF tracer can then be used to make custom LOF checks for specific usages, creating a far more flexible and extensible system, such as for vehicle attacks with specific collision rules. However, there is still a basic LOF tracer and check function included, useful for projectile attacks with fairly generic collisions and such (e.g not rippers like the .50 BMG projectiles).
- Turrets now have elevation limits that they can obey, like real world turrets do. Turrets cannot move/shoot above or below those limits, if a target is too high up for a turret to shoot in particular, then the vehicle it's attached to will try to drive away from the target, to allow the turret to shoot it. These new elevation limits can be specified with the MVP_BaseTurret.MaximumPitch and MVP_BaseTurret.MinimumPitch properties.
- The way the turrets' turn sounds are handled has been improved and consolidated. And the turn sound can be changed with the new MVP_BaseTurret.TurnSound property.
- A realistic turret traverse system has been implemented, which makes it so turrets have to actually take time to aim at targets, instead of facing them instantly like normal monsters. Which adds an extra element of realism (And balancing !). You can specify turn rates with the CombatAngleTurnRate and CombatPitchTurnRate properties, which control how many degrees per second a turret can traverse horizontally and vertically, respectively. A new +NOCOMBATTRAVERSE flag has also been added, which can be used to turn off the realistic turret traverse entirely, it's used by the Di-Cokkas' turret. (However it can be turned off on the Di-Cokka check the document for more info.)
- Code has been implemented to allow marine warnings, and marine warning zones, to be created and moved at whichever direction a turret is aiming at. This is useful for making it so Smart Marines can know that they should avoid vehicle attacks, e.g to avoid the line of fire of an enemy APC. The code isn't super generic however, and does need some messy turret-specific setting up, such as for when the warning zone should be created and removed.
- A lot, and I mean, a fucking LOT of bugfixes. Way too many for me to even remember or list, some were deliberate fixes from me, others were simply consequences of all the refactors on how the turrets' code works.
For a list of all the bug fixed, here is a list to all the commits since the last release.