Game engine for Gabriel Knight 3

4 months ago 13

G-Engine v0.3.0 is here!

This is an exciting release, as the game is now completable, and all 965 points are obtainable! There are still plenty of bugs, wonky behavior, and missing polish. However, the "broad strokes" of implementing gameplay logic for all timeblocks is finally complete. It represents a huge milestone for the project - I hope you enjoy!

Here's a more detailed breakdown of what's changed since the last version:

Game

  • All timeblocks are completable, and it is now possible to obtain all 965 points.
  • Added Anagram Parser interface to Sidney. It can be used to solve part of the LSR puzzle.
  • Added various missing logic and score events when performing actions in Sidney.
  • Added logic to complete remaining LSR map steps.
  • Added logic for showing some new Driving Map locations during Day 3 timeblocks.
  • Added "Match Analysis" logic for matching unknown fingerprints to suspects.
  • Binocs system is a lot more polished. Scenes can be zoomed to, they look as expected, and characters in the scenes animate and act pretty similarly to the original game.
  • Added GPS system. On occasion, Grace can use the GPS to help pinpoint a location of interest.
  • Improved Fingerprint interface, including adding support for retrieving the three fingerprints from the manuscript during Day 3, 12PM timeblock.
  • Added custom logic for the various death trap puzzles in Day 3, 9PM: Giant Chessboard, Pendulum, Hexagram Room, and Invisible Bridge.
  • Added "Radio Grace" button to the Options Bar, which is only used during the Day 3, 9PM timeblock.
  • Improved skyboxes; added skybox rotation (azimuth) in some scenes. Added skybox raycasting, which allows you to interact with the skybox in some scenes.
  • Added missing blob shadows under characters.
  • Added caption support for videos.
  • Added Death Screen, with retry support.
  • Made some decent improvements to pathfinding and walking logic. Pathfinding is now more efficient, and paths are usually more intelligent.
  • Improved "turn to model" and "walk to see" walk approaches. This makes Gabe/Grace act a bit more intelligently when approaching objects in the scene before interacting with them.

Engine

  • Added a "LateUpdate" callback to Actors. This is used occasionally where an Actor/Component needs to do some update work after all other Actor/Components have updated. One notable use is to ensure parented animated objects (such as Gabe's Mic in Day 3, 9PM) are positioned correctly after all animations have been sampled for the current frame.
  • Game timers now persist across scenes. It appears that the Day 3, 6PM timeblock actually relies on this logic to function correctly.
  • Added support for Animation files running at a different FPS. This is rarely used, but is needed in a few key instances (such as video subtitles).
  • Added additional texture manipulation functions (flip horizontal, rotate clockwise or counter-clockwise).
  • Improved logic for detecting glyph sizes in fonts, which fixes a few fonts that previously wouldn't load correctly.
  • The Action system now allows starting/ending "manual" actions. This is for when you don't have a concrete action to execute, but you still want the game to act like a hands-off cutscene is occurring.
  • Added helper to UIText to resize its RectTransform to fit the current text.
  • When a ScrollRect calculates its size, it will now ignore inactive children.
  • Raycasts against MeshRenderers now ignore transparent pixels.
  • Added automatic type ID generation (based on class name hash) for reflection system.
  • Identified and resolved a fairly massive memory leak. This should enable completion of much more (or even all) of the game in a single sitting.

Tools

  • Fleshed out the Assets Tool: you can now see a full accounting of which Assets are loaded at what times while playing the game. This is most helpful to identify Assets that may be errantly loaded in memory when they aren't needed.
  • Fixed a crash when viewing an Actor in the Scene Hierarchy that has an Asset hookup exposed.
  • Added names to a number of Actors throughout the game, which helps to more easily identify specific Actors in the Scene Hierarchy Tool.
  • When the tools menu is opened, you can now always move the in-game camera, even if the game is otherwise in hands-off mode. This provides a way to investigate the scene state when bugs occur, even if the game is otherwise in a non-interactive state.
  • In addition to providing a full save file path, saves can now be loaded by name too.

Bug Fixes

  • Fixed scenes rendering with incorrect textures for a single frame on scene load.
  • Fixed actors/props rendering with incorrect lighting for a single frame on scene load.
  • Fixed billboard props (such as trees) facing the wrong direction for a single frame on scene load.
  • Fixed a possible crash if you spam-click the floor, causing the Walker system to recalculate walk paths in rapid succession.
  • Fixed a possible softlock when multiple overlapping dialogues have finish callbacks defined. Only one of the dialogue callbacks would be called.
  • Fixed button hover states still rendering when buttons were not interactive (such as when loading icon is up).
  • Fixed possibility to spam-click Sidney buttons, sometimes causing some buggy results.
  • Fixed tooltips appearing when hovered button is not interactive, or has disappeared.
  • Fixed in-game console not rendering over videos.
  • Fixed a softlock when pressing ESC to skip a playing video.
  • Fixed playing a video not actually showing the video UI for one frame, causing the underlying 3D scene to be visible briefly.
  • Fixed in-game actions with "talkto" attribute defined not opening the topic bar once the action completed.
  • Fixed parsing INI file float values with leading decimals. Something like "0.95" would be errantly interpreted as "95".
  • Fixed a bug where internal audio settings were causing some SFX to play too quietly.
  • Fixed several instances where UIs were not layered correctly. The most notable instance was Sidney's menu bar appearing above inventory screens.
  • Fixed instances where the game's internal logic evaluation for whether an action is allowed was incorrect. This fixes various instances where you should be able to perform an action, but couldn't. A good example is knocking on Mosely's door during Day 1, 2PM: you should be able to, but the game might errantly choose the default "I don't have anything to say to him" option instead.
  • Fixed a bug where "exit region" code would cause characters to move, even if they already weren't in the affected region. In practice, this would cause Gabe/Grace to walk to random spots at seemly random moments in some scenes.
  • Action bar now stays in the same spot when it reappears after a cutscene, rather than always jumping to your cursor's current position. This more closely matches the behavior in the original game.
  • Fixed PDB files being accidentally included in Windows build distribution zip file.

Known Issues

  • Though pathfinding and walking have been improved in this release, there's still a lot of work to do. Characters still walk too close to objects in some cases, or clip into level geometry. They don't always stop walking at the exact right spot. Some walkers still barely work.
  • The "skip walk path before view frustum" logic is currently too aggressive, so you'll get some moments where Gabe/Grace suddenly "pop in" to view when you tell them to walk somewhere in the scene.
  • Text in UIs, especially scroll lists in Sidney, may appear blurry at certain screen positions.
  • The cursor may act "jittery" in the Fingerprint screen. Some logic related to how cursors display needs to be overhauled.
  • Custom UI layouts required for a few emails in Sidney haven't yet been implemented.
  • The demon in the final scene of the game acts very erratically. However, if you know what to do, and fiddle with it a bit, you can get through it.
  • The LSR map is slightly incorrect compared to the original game.
  • Madeline is sporting some under-eye face paint due to some recent changes to how eyes are added to face textures. This'll be fixed in the next release.
  • Linux builds still have pretty terrible FPS and some graphical artifacts/glitches. Apologies again, and this will become more of a priority to review/resolve after cross-platform bugs have been resolved.
Read Entire Article