v0.0.7
GEngine v0.0.7 is here!
This release primarily focuses on enabling further advancement into the game. Additionally, various support systems have been worked on to various levels of completeness.
It is now possible to complete up to Day 2, 10AM timeblock. However, a new problem has arisen: you can now play the game long enough to run out of memory! Up to this point, I haven't focused at all on unloading assets once they're no longer used; that'll have to be a focus of an upcoming release.
Keep in mind: if you'd like to test certain locations or timeblocks, it's possible to use the SetTime or SetLocation commands in the in-game console to "warp" to different timeblocks or locations.
Engine
- Added IMGUI integration to help with implementing developer tools/UI.
- Press Tab to show "Construct" mode. Currently allows visualizing camera bounds, walker boundaries, and scene AABBs.
- SheepScript decompiler now properly writes out labels and gotos. The decompiler should now be fully functional.
- Added "debug flag" system from the original game. This is used to enable/disable certain debug and development tools.
- Added support for writing out RGBA Textures to BMP image files (only RGB was supported previously).
- Added ability to write out Audio data as WAV files.
- UI widgets now add themselves to canvases in their transform hierarchies (reduces boilerplate code when building UIs).
- Window management code has been separated from the Renderer (early step towards supporting other rendering APIs).
Game
- Day 1, 6PM can now be completed.
- Day 2, 7AM can now be completed.
- Day 2, 10AM can now be completed.
- Inspect/Uninspect buttons on the Action Bar are now functional.
- "Camera Glide" is implemented. This is used when you Inspect/Uninspect, as well as via the Sheep API for various cutscenes. This can be enabled/disabled via the options menu, and the preference is saved between runs of the game.
- Basic Sidney "Search" screen is implemented. Terms can be searched (which is required to complete Day 2, 7AM), but articles do not yet render.
- Basic Sidney "Email" screen exists.
- Sidney "Add Data" option is functional.
- Basic Sidney "Files" popup is implemented.
- Implemented different walk sound effects based on shoe type and walk surface.
- Added "animation parenting," which is occasionally used to have characters hold objects during animations.
- Implemented "SetWalkAnims" Sheep API function, which are used during maid sequence.
- Implemented GameTimer Sheep API functions (allow setting a timer and executing an Action when the timer expires).
- Added support for allowing/disallowing cancelling and dismissing the Action Bar (used during handshake segment).
- Added support for "ClearRegion" Sheep API function, which is used to get characters to move out of the paths of certain objects.
- Added support for blocking certain sections of the walk boundaries. Stops characters from walking through dynamic objects, for example.
- Added custom logic to disallow traveling to Larry's Place during Day 1, 6PM (to match original game).
Bug Fixes
- Fixed bug that stopped Day 1, 6PM from being completable. A cutscene would previously not complete. This was fixed by updating how SheepScript callbacks work when scene changes occur.
- Fixed captions sometimes using incorrect colors for the person who is speaking.
- Fixed captions sometimes disappearing too quickly.
- Fixed crash if Debug::DrawScreenRect is called before a Camera is assigned to the Renderer.
- Fixed issue with multi-line Fonts errantly detecting glyphs at ends of lines that didn't exist.
- Fixed issue with some Fonts not displaying correctly because alpha channels weren't being properly applied.
- Fixed bug that stopped textures from loading/displaying correctly if they had dots in their names.
- Fixed certain inventory items not having valid verbs (which made it impossible to "use" them).
- Fixed incorrect raycasting logic causing some scene objects to be unclickable.
- Fixed bug where objects meant to be stationary would move slightly during animations due to incorrect interpolation logic.
- Fixed bug where inactive/hidden objects would have their animations desynchronized when they were activated/unhidden.
- Fixed bug where 3D SFX would sometimes play at the wrong position, which made it seem like they were not playing at all.
- Fixed logic errantly detecting a location change due to case difference (e.g. locations "R25" and "r25" were not considered equal).
- Fixed bug where "init anims" would errantly change the state of unrelated models, rather than just initializing the specific model.
- Fixed bug where spamming walk actions would cause the walk animation to glitch out a bit or double up footstep sounds.
- Fixed crash when loading Chateau de Serras during Day 2, 12PM due to a SIF typo that wasn't accounted for by the parsing code.
Known Issues
- Various animations still act glitchy or weird. Walk animations are sometimes quite erratic. Not ideal, but makes for some funny situations.
- Captions sometimes do no wrap correctly, resulting in them going off-screen.
- It finally happened: you can play the game long enough for it to run out of memory! This happens because assets are loaded on demand, but never currently removed from memory. The original game appears to use some sort of reference counting scheme, which is probably the route I'll go too.