v0.0.6
GEngine v0.0.6 has been released!
This release is primarily focused on fixing bugs and implementing functionality that is required to proceed further into the game. It is now possible to complete the first four timeblocks.
Engine
- Split Sheep API into separate .h/.cpp files based on category. This is primarily an internal organization change (it's nice to not edit one giant thousand-line file), but it does also prove out how the base SheepScript API system could be extended for other games or purposes by adding more APIs outside the core library.
- Scene loading is now more resilient to missing assets. It is now possible to load scenes that have few or no assets available (this would crash previously).
- Scene loading now provides a callback for when the scene is loaded.
- UI buttons can now play sound effects when hovered.
- Various systems were updated to use case-insensitive maps/sets where possible. This is less error-prone to capitalization discrepancies, and also a bit more efficient.
- Initial game load time was decreased by reducing amount of file reading/seeking being done. Some data (like compressed asset size) is now only read when the asset itself is needed at runtime.
- Executing SheepScripts can now be associated with tags that control the lifetime of the script's execution. A concrete use of this is to stop executing SheepScripts when changing a scene.
- Blocked/waiting SheepScripts now use a "NotifyLink" system, which resolves a problem: if a blocked SheepScript is stopped prematurely, how do you stop the wait callback from executing? This seems to be how this problem was solved in the original game.
- Fixed some syntax issues with decompiled SheepScript.
- Added single pixel buffer between lines of the in-game console. Makes it easier to read.
- AABBs can now be visualized at runtime by pressing F5.
Game
- The Driving Screen is now implemented! It is possible to use this screen to travel to new locations on the motorcycle. You can also follow NPCs in some cases.
- The Caption/Subtitle overlay is now implemented. This can be toggled on in the options, and the preference will be saved between runs of the game.
- "Action Skip" (pressing ESC to skip a cutscene or dialogue) is now a lot faster. Also fixed some edge cases that could cause Action Skip to soft crash the game.
- Overhauled how Actions from NVC files are evaluated for display at runtime. This causes the action/topic bars to behave much more closely to how they did in the original game. This fixes a bunch of interaction issues.
- Calculations for character height/feet positioning has been updated. The new logic seems to work a lot better, and fixes a bunch of issues where characters would sink into the ground in strange ways.
- "Walk To See" behavior is less buggy. Characters will actually stop walking when an object comes into clear view of their line-of-sight, and headings when approaching such objects look more natural.
- Changed how Character Configs & Face Configs are loaded. This fixes some issues with faces not animating in some cases (Lady Howard, for example).
- If an inventory item is added while the inventory is visible, the screen now refreshes to show the new item right away.
- The last added inventory item now automatically becomes the "active" inventory item for the character.
- Draw orders of various UIs have been modified to more closely match the original game.
- Location of the player's motorcycle is now tracked/updated internally. Fixes issues where the motorcycle was missing in the scene in some cases.
- Players can now proceed up to (Day 1, 6PM) before encountering an unavoidable showstopper.
Bug Fixes
- Fixed some animation bugs. For example, Gabriel can now actually walk up the steps to the museum in Rennes-le-Chateau.
- Fixed a bug where "move" animations were not properly flagged as such, resulting in some weird behavior.
- Fixed a bug where generating a Heading from a Quaternion would not always give the correct result.
- Some GK3 INI files actually have typos in them. Associated parsing code has been tweaked to still work despite this problem.
- Fixed a bug where a disabled button would still cause the cursor highlight to change.
- Fixed a bug where very large meshes with more than 64 submeshes would cause the game to crash. The code making this assumption (related to submesh visibility) will now assume any mesh beyond this limit is always visible.
- Fixed a bug where the game would crash if the console's scrollback buffer got larger than 1000 lines.
- Fixed a bug where inventory items with no associated Actions (such as the Spray Bottle) would cause an index out-of-bounds crash.
- Fixed a bug where scene interaction raycasts would sometimes report the wrong object.
- Fixed a bug where absolute positions in init-anims were not being applied.
Known Issues
- Decompiled SheepScript does not properly insert labels and gotos yet. I think this is the last thing to do before SheepScripts can be fully decompiled.
- Animations continue to be problematic. A lot of them work correctly, but you'll still see plenty of scenarios where animations are glitchy or weird.