A bit of a colossal update i.e. diff hell but it should hopefully provide to be a positive experience from the changelog:
Weapons
Added basic supporting for firing dumb-type weapons (machine guns, missiles - no dropper weapons or homing missiles yet)
Added weapon cycling with enter key.
Added weapon grouping support, so all similar weapons are grouped like in the original game, and individual weapons
Added support for projectile geometry - this is most noticeable when firing missiles. Unfortunately bullet-type projectiles are not quite right, mainly as they don't appear to actually have geometry to reference.
Entities / AI
Tweaked pathfinding so that cars now correctly drive on the right side of the road instead of the middle. Note the original game uses A* pathfinding which I'd like to implement at some stage as well.
Projectiles can destroy cars - this correctly uses armor levels. A car will start to become visibly damaged once its armor is bypassed and the hull takes sufficient damage.
Buildings can now also be destroyed - e.g. shooting at the water tower in the training level will result in the destroyed 'ramp' it produces. Note that certain geometry types such as cactus plants can have multiple parts shot off in the original game - this is not yet possible in Open76.
Entities (buildings & cars) are now correctly linked and will correctly link with mission logic - e.g. destroying the fireworks building in the first trip mission will advance the trip correctly.
FSM (State Machine)
The 'NEG' Op-code has been corrected. Previously it would invert the result value of the machine which was incorrect. It now "flips" the value (e.g. a value of 1 would become 0 and vice versa)
The FSM stack and parameters now use an IntRef class - this allows stack and parameter values to be modified and referenced between multiple state machines and fixes a lot of mission logic.
Added a large number of new FSM actions:
inc - increments parameter reference.
dec - decrements parameter reference.
set - Sets a parameter reference value directly.
isGreater - Checks if a parameter reference is greater than a value.
isLesser - Checks if a parameter reference is less than a value.
isEqual - Checks if a parameter reference is equal to a value.
camObjObj - Another cutscene camera type that uses an entity as an anchor while looking at another entity.
isWithinNav - Returns true (1) if an entity is within a specified distance to a path.
isWithinSqNav - Returns true (1) if an entity is within a specific squared distance to a path.
follow - Instructs a car to follow another car, includes advanced logic for 'overtaking' (see mission 1)
isAtFollow - Returns true (1) if a car is close to the car it's following.
setAvoid - Not entirely implemented, but will tell a car to avoid pathing near an entity.
setMaxAttackers - Doesn't do anything yet but sets the maximum amount of attackers for an entity.
setSkill - Not implemented yet (AI skill level - 2 values?)
setAgg - Not implemented yet (Sets aggression factor of an AI entity)
isAttacked - Returns true if the entity has the 'Attacked' property set.
isWithin - Similar to 'isWithinNav', checks if an entity is within a certain distance to another entity.
cbFromPrior - Similar to 'cbPrior', plays a radio message, but also sets a car as its "owner" (if the car dies, the radio message stops)
There are of course quite a lot of actions that haven't been implemented yet, but that list is getting smaller.
Parsers
Added an MW2 parser (contains all the non-game resources, e.g. main menu graphics)
Added a PCX Parser (image format - used for loading screen and splash screen)
Added an EFA parser (compressed PCX files, used for UI backgrounds)
Added an SHP parser (Contains multiple sprites, used for menu UI images)
** P.S. I spent a shameful amount of time getting the palette parsed for SHP files - turns out the palette is shared with the EFA files, it's not in the I76.EXE!)
Partially added a FNT parser (Doesn't quite work but it doesn't look like the FNT files are really used)
Parsed extra flag in MSN file to determine if an entity is the player - TeamId is not correct as you can have multiple entities with TeamId 1 (e.g. first trip mission)
UI
added main menu with basic logic (you can start training mission, new trip and exit!)
Game's intro videos now play on startup (outside editor only), same with mission videos.
Code
Ran code cleanup (Absolutely ravaged the pull request diff but at least it's consistent now)
Simplified and refined actual code logic.
Grouped car classes into appropriate namespaces and renamed some of my classes to be more legible.
Migrated a number of MonoBehaviour type classes to regular C# classes for simplicity's sake.
Misc
Reduced memory consumption from sprites a fair bit. The biggest memory hog (relatively speaking, the game uses like 200MB total) right now is the terrain, it might be viable to use regular meshes for terrain as a post-MVP task.
Most textures are now discarded from the system memory when they are no longer needed (i.e. only exist on the GPU)
Vehicle torque has been reduced slightly for better matching acceleration, albeit at a cost of top speed.
What's probably most exciting is that because the FSM parser has been cleaned up quite a lot, missions run very well now.
You can complete the training mission properly now (although that's not really setting the bar high)
The first trip mission can be progressed all the way to the point of having to rescue people. You will fail the mission if you don't stay close to Stampede, just like in the original game.
I'd say the only FSM logic that isn't quite right, excluding any unimplemented actions, is the distance checks - it appears the the distance units aren't 1:1 - e.g. in the first trip mission the camera switches about 2 seconds too early because the waypoint was reached.
Also of note is that there is only one data type that isn't parsed yet - the XDF type - which I know holds effect sprites (explosion sprites, etc.)
I might add some pictures to the pull request later, writing this well past midnight so it's a bit late for that now. I'd also like to cover some of the work involved from this on a blog at some stage which may be of interest.
A bit of a colossal update i.e. diff hell but it should hopefully provide to be a positive experience from the changelog:
Weapons
Entities / AI
FSM (State Machine)
Parsers
UI
Code
Misc
What's probably most exciting is that because the FSM parser has been cleaned up quite a lot, missions run very well now.
Also of note is that there is only one data type that isn't parsed yet - the XDF type - which I know holds effect sprites (explosion sprites, etc.)
I might add some pictures to the pull request later, writing this well past midnight so it's a bit late for that now. I'd also like to cover some of the work involved from this on a blog at some stage which may be of interest.