建造根树已死

  • Game Information: "The Roottrees are Dead" was released on January 15, 2025. It received amazing reception, hitting 500 reviews on Steam in over a week and getting "Overwhelmingly Positive" status. Jason Schreier praised it as one of his favorite games of the year.
  • My Homelab Setup: Has a Linux server in the hallway closet with ZFS running SSDs and HDDs. Acts as a NAS and runs Gitea for version control of large files. Connected to a Windows 11 PC with an i9-13900K and RTX 4090 for development (overkill for game dev). Away from home uses a MacBook M1 Max connected via Tailscale.
  • The Game Engine: Developed with Godot, a free and open-source engine. It was chosen over Unity as the author was familiar with Godot and wanted to change the UI. The Steam version is a 100% rewrite with no shared code and took over a year to complete.
  • GDScript: At first, the invented language was off-putting, but it's close to Python with domain-specific enhancements. It's productive with optional typing and runs fast. Gripes include no Set primitive and primitives passed by value. There are proposals for these improvements.
  • Resources as a Database: Gameplay involves searching the Internet with a lot of text. A database is needed, and Godot's Resource concept is used. Custom SearchResult and SearchResultsList resources are defined. Data is populated from a Google Spreadsheet using Python scripts and a custom ImportPlugin.
  • 3D Assets: Made most assets in Blender for the 3D "Living Room" interface. Textures are painted in Substance Painter, which is expensive. Had to optimize texture resolution due to hardware limitations.
  • Viewports and Themes: In-game PC is a SubViewport. Godot's UI systems are pleasant with containers. The theming system is OK but misses some CSS-like features. There are 9 different Godot themes for different interfaces.
  • Rendering the Family Tree: Family tree is a 2D interface with scrolling and zooming. Uses 2 extra SubViewports for soft shadows and main living room rendering. Shadows are rendered with a custom shader.
  • The Highlighting System: Allows highlighting text and creating notes. Technically hard to build due to BBCode formatting. Wrote a GDScript BBCode parser which was fast but found bugs in Godot and contributed to the engine.
  • Unit Testing: Used Gut for unit testing. Useful for BBCode parser and family tree logic. Missed acceptance tests like in Ember.js.
  • The Character Portrait Tool: A standalone Godot tool to manage portraits. Records click areas and extraction boundaries. Creates a JSON file and a texture atlas. Saves time when replacing placeholder art.
  • Playing Cutscenes: Used Godot's AnimationPlayer system. Built own abstraction with the Command Pattern for more functionality like skippable dialogue and conditional logic.
  • Saving Games: Save game code from "The Secrets of Skellig". Uses a global Store object and background thread to write data to temporary files. Had rare reports of corrupt save files.
  • Final Thoughts: It's the first game shipped in 20 years. Found more work done upfront in game dev compared to web dev. Avoided creating new objects and preferred user input callbacks over default frame-based code. Planning to work on another game or prototype ideas.
阅读 7
0 条评论