The Solution To Gamedev | Horse Game 2 Devlog ep04

#gamedev #gamedevelopment #gamedesign #godotengine #sologamedev Hello Tylenol Guzzlers! Welcome back to another narcissistic, ego-driven, self aggrandizing yap session where I wax poetically about the endless toil within my infinite autism spaghetti kingdom! This is Episode 04 of my series of devlogs covering the development of Horse Game 2! This episode was written and started earlier in the year, when I was still getting used to my current identity as an internet micro-celebrity / delusional game designer, so I begin by talking about the concept of representational identity and its transient nature. ➤Catch my LIVE: https://www.twitch.tv/nameshiftgames ➤Patreon: https://patreon.com/nameshift ➤Check out my other games: https://nameshift.itch.io/ ➤All my links: https://linktr.ee/Nameshift _____ ➤COOLCATS: https://thecoolcats.itch.io/ ➤Supermixup: (Play for FREE) https://thecoolcats.itch.io/supermixup ➤Out Of Order: (Play for Free) https://thecoolcats.itch.io/out-of-order-ccgj-2024 ____ timestamps: 0:00 (intro) 1:01 (preamble) 3:13 (chapter 1 - Inventory GUI Revamp) 4:29 (chapter 2 - Correcting Mistakes) 6:50 (chapter 3 - Refactoring Dialogue System) 9:35 (chapter 4 - Spells) 10:44 (chapter 5 - Real Talk) 11:46 (chapter 6 - Evil Game Design) 14:52 (chapter 7 - Temper The Insanity) 16:05 (Outro & Conclusions) Tracklist in order: SSBM OST - Menu (https://www.youtube.com/watch?v=8Z2iqjzGFww) FF7 OST - Anxious Heart (https://www.youtube.com/watch?v=FUkgnLzQcY8) SSBM OST - Hyrule Temple (https://www.youtube.com/watch?v=wR38ursk6xU) Dark Souls OST - Character Creation Theme (https://www.youtube.com/watch?v=TIDShT8cb4g) Rukunetsu - VINTAGE MONTAGE (https://soundcloud.com/rukunetsu/vintage-montage-ac3-r-mix-2023) Halo CE OST - A Walk in the Woods (https://www.youtube.com/watch?v=vDVDwgCQ6Qo) Halo CE OST - Perilous Journey (https://www.youtube.com/watch?v=0obow-wqPb0) Animal Crossing OST - Nook's Cranny (https://www.youtube.com/watch?v=o-cIK0VJZ8s) Stardew Valley - Spring Wild Horseradish Jam (https://www.youtube.com/watch?v=7WuKj7a3ces) Shenmue OST - Secret Of A Warehouse (https://www.youtube.com/watch?v=ZoE13rlz7CI) wev - wyd? (https://soundcloud.com/worldwidewev/wyd) Shenmue OST - Working Man (https://www.youtube.com/watch?v=yfIgJP_nssQ) Lilypad Project - December Morn (https://www.youtube.com/watch?v=msYVE-4dGUI)

Channel: Horse DevGenerated by anonymousDuration: 17mPublished Nov 14, 2025
Thumbnail for The Solution To Gamedev | Horse Game 2 Devlog ep04 ▶ Watch on YouTube

Video Chapters

Original Output

0:05 An Existential Crisis
1:55 The Problem with "HorseDev"
3:00 Introducing... Nameshift
4:45 That Time I Was Wrong About Godot
6:10 The Power of Godot's [Resource] System
7:10 Overhauling the Dialogue System
9:20 What's Coming to Horse Game 2?
10:10 Speaking to Horses with the Charm Spell
11:30 My Solution: "Evil Game Design"
16:20 Final Thoughts & Thank You

Timestamps by StampBot 🤖
(357-the-solution-to-gamedev-horse-game-2-devlog-ep04)

Unprocessed Timestamp Content

0:00 Cone-head guy debates using horse mask as his avatar
0:05 Character struggles with identity, questioning "What even is this?"
0:10 Intro to Horse Game 2, devlog update, Nameshift Games, rel. 2025
0:15 Character expresses confusion about his "cone-head" avatar
0:20 Character states horse makes sense for a horse game
0:25 Character questions why he is not a "horse-dev"
0:30 Character ponders the meaning of "NameShift"
0:35 More self-reflection on his identity as a game developer
0:40 Character finds reassurance in eventually finishing Horse Game 2
0:45 Character asks himself if he will truly finish the game
0:50 Character hesitates to confirm he will finish the game
0:55 New devlog update for the funny horses, identity crisis resolved
1:00 Horse Game 2 gameplay: customizing horses and exploring nature
1:05 Preamble: Nameshift's diverse online presence and identity journey
1:10 Nameshift Games: previous monikers and current brand identity
1:15 Nameshift's brand name transition and its significance
1:20 Nameshift's evolving identity and online persona as a game developer
1:25 Past projects and the challenge of finding a cohesive identity
1:30 CovalentBonds: The previous random name that "never felt right"
1:35 The quest for a "workable" online identity for game devlogs
1:40 Past YouTube channel: "Dick Beanus" and random video ideas
1:45 American Dad! video and other nonsensical content
1:50 HorseDev: a panicky, split-second decision for channel name
1:55 The realization that "HorseDev" was limiting for future projects
2:00 "HorseDev" was a temporary, project-specific identifier
2:05 Horse Game 2: not the sole focus, future projects await
2:10 Identity beyond one project, avoiding dependency on "HorseDev"
2:15 Seeking a translatable and shareable online identity
2:20 Nameshift: signifying shapelessness, change, and indefinable form
2:25 The struggle to find a name that "felt comfortable embodying"
2:30 Past projects: "Out of Order" and "Supermixup" in action
2:35 "Supermixup" gameplay showcasing level design
2:40 "Ignition Point" gameplay with new character avatar
2:45 Discovering references to "shapelessness" and "change" resonates with me
2:50 Mercuriality: the essence of Nameshift, reflecting constant change
2:55 Nameshift: my form is ever-changing, indefinable, and fickle
3:00 Announcing YouTube channel name change to Nameshift
3:05 Hope for a lasting identity in the future: "still Nameshift"
3:10 Okay, great, now let's talk about what I've been working on
3:15 Inventory UI revamp: fixing bugs, improving usability, and style
3:20 Polishing inventory UI and dialing in functionality for games
3:25 Wagon Game: sandbox for UI implementation, learning new techniques
3:30 Bringing UI lessons from "Wagon Game" into "Horse Game 2"
3:35 Inventory UI: basic templates, player item viewing, early stages
3:40 First inventory iteration: only player items visible, no interactions
3:45 Expanded inventory: trading between player, NPC, and containers
3:50 Components for tradability, persistence across scenes and saves
3:55 Interaction components for GUI, persistence for inventory objects
4:00 Usability: modal window for bulk item exchange quantity selection
4:05 Detailed control over item quantity with keyboard modifiers
4:10 Keyboard modifiers: Shift, Alt, Ctrl for precise quantity adjustments
4:15 Control key for max trade, skipping the quantity modal entirely
4:20 Review of keyboard modifiers for efficient UI interactions
4:25 More keyboard modifiers for skipping quantity modal on trade
4:30 Inventory system design discussed in original Horse Game video
4:35 Analyzing previous poor design choices and arising problems
4:40 Addressing a particular mistake in the previous devlog video
4:45 "Something I got wrong": clarifying a misstatement about "Resource"
4:50 Yes, that's right, "I got something wrong," hard to believe
4:55 Humorous self-deprecation about being an "infallible" entity
5:00 More metaphysical absurdity about being a "tainted spawn"
5:05 Embracing the role of a "duplicitous simulacra" in game development
5:10 Clarifying "poor choice of words" rather than being completely wrong
5:15 Context of the "resource-based inventory system" video from 2023
5:20 The term "resource" was used generically, not as a Godot Engine specific term
5:25 Realization that "Resource" is its own entity in Godot Engine
5:30 Clarifying generic "resource" vs. Godot's capital-R Resource
5:35 Used "resource" generically, similar to Packed Scene or Prefab
5:40 Godot's [Resource] class for custom data containers, not general assets
5:45 Godot's [Resource] as "scriptable objects" in Unity, very powerful
5:50 [Resource]s are extremely powerful and useful for custom data
5:55 Godot's [Resource]s: perfect for items and inventory systems
6:00 [Resource]s are analogous to ScriptableObjects in Unity
6:05 Extremely powerful for data management in Godot, many uses
6:10 The takeaway: maintain separation between data and instantiated objects
6:15 Decoupled design: item data vs. inventory GUI vs. equipped object
6:20 Modular design in object-oriented programming, Single-Responsibility Principle
6:25 Godot's [Resource]s are great and useful for game development
6:30 Yes, resources used for item system, and also dialogue system
6:35 Horse Game 2 dialogue system refactor: from JSON to resources
6:40 Dialogue manager "Meow" using JSON and a custom template
6:45 Initial Meow plugin: JSON for dialogue, customizable display
6:50 The complexity of parsing linear JSON into branching dialogue
6:55 Graph traversal logic and edge cases in dialogue handling
7:00 Early flowchart editor for dialogue, but JSON still in use
7:05 Realization of overhead in maintaining parallel JSON and flowchart systems
7:10 Decision to ditch JSON for dialogue, using flowchart editor exclusively
7:15 Benefits of resource-based dialogue: functional blocks, no parser needed
7:20 Dialogue blocks and timelines are now branching linked list resources
7:25 Cleaner, less buggy, easier to maintain and extend dialogue system
7:30 JSON okay for prototyping, but resources are better for robust systems
7:35 ResourceSaver and ResourceLoader singletons for saving/loading resources
7:40 Benefits of Godot's [Resource] over JSON for game data
7:45 Item data defined in JSON, migrating to a resources-first philosophy
7:50 Refactored inventory and item system to be resource-based
7:55 Item class properties: name, description, value, scale, tags
8:00 Tags using "export enum" for controlled list of hint strings
8:05 Array of tags: assigning multiple attributes from a consistent set
8:10 Level one precursor to more advanced functionality for tags
8:15 All item record resources collected into an ItemCollection resource
8:20 ItemDB singleton: loads resources into memory for easy interaction
8:25 `@tool` keyword for editor access to game items at runtime
8:30 Building editor tools that interact with created item resources
8:35 InventoryComponent: setting initial items using ItemEntryTagFilter
8:40 ItemEntryTagFilter: selecting tags and filtering item dropdowns
8:45 Final system: ItemRecord, ItemCollection, ItemDB and @tool for items
8:50 Reaction to the successful implementation of resource-based system
8:55 Critique: using a giant dropdown for item selection is a bad idea
9:00 Problem: Huge dropdowns become unmanageable with many items
9:05 Solution: Multiple ItemCollection resources (furniture, fish, etc.)
9:10 Aggregating multiple ItemCollection resources into ItemDB
9:15 Wrapping up the devlog, ran out of time for more features
9:20 Next time: fishing, horse genealogy, hats, accessories, customization
9:25 Next video: comprehensive tutorial for the dialogue system
9:30 Tutorial benefits: documentation for team, future reference
9:35 Core game feature: spells to interact with the world and horses
9:40 Player unlocks various spells for interacting with horses
9:45 First spells: Punch and Lasso, simple and straightforward
9:50 Lasso spell: taming horses with a progress bar and sound effects
9:55 Charm spell: refactoring and understanding its mechanics
10:00 Game design ideas from a wizard through cryptic fever dreams
10:05 Wizard communicates through cryptic fever dreams from a mystical mountain
10:10 Charm spell mechanics: communicating with horses in their native tongue
10:15 Horse personality: generated temperament affecting reactions to moods
10:20 Horse temperament: set of reactions to moods affecting relationship changes
10:25 Horse interactions: maintaining relationships and gaining "pep"
10:30 Horse social dynamics: relationships, taming, and control
10:35 The capacity to interact with, tame, and control horses
10:40 Dressage: a new interaction with horses, building relationships
10:45 "Real Talk": Did everyone watch the Incrementals video?
10:50 Problem from previous video: indexing script properties like an enum
10:55 Goal: create ways to target properties in the Inspector for tools
11:00 Hacky solution: creating an actual enum for each property
11:05 Result: it worked, kinda, but wasn't liked
11:10 Audience input: no good ideas, everyone is "stupid" (joke)
11:15 Crushing reality: everyone is as "stupid" as me (self-deprecating humor)
11:20 Mostly my fault: audience didn't understand the problem (poor explanation)
11:25 Theory: secrets to success in `_get_property_list()` function
11:30 Found a way: "dark magic" for evil game design
11:35 Showcasing "evil game design" with `_get_property_list()`
11:40 Item data in JSON, migrating to "resources-first" philosophy
11:45 Refactored inventory and item system to be resource-based
11:50 Item class properties: name, description, value, scale, data, tags
11:55 "Export enum" for tags: controlled list of hint strings
12:00 Assigning multiple tags as an array, advanced functionality
12:05 Item records collected into an ItemCollection resource
12:10 ItemDB singleton: loads resources into memory for easy interaction
12:15 `@tool` keyword for editor access to game items at runtime
12:20 Building editor tools that interact with created item resources
12:25 InventoryComponent: setting initial items using ItemEntryTagFilter
12:30 ItemEntryTagFilter: selecting tags and filtering item dropdowns
12:35 `_get_property_list()` function used to build enumeration of fish tags
12:40 Creating ItemEntryTagFilter resource for fish pool selection
12:45 Explanation of `emit_changed()` signal and `_get_property_list()` function
12:50 `_init()` function connects `emit_changed()` to `ItemDB` update method
12:55 `ItemDB` updates running dictionary with volatile item data
13:00 Changes to ItemRecord or ItemCollection trigger updates in ItemDB
13:05 `@tool` keyword for ItemRecord and ItemCollection, enabling editor tools
13:10 Building editor tools that interact with created item resources
13:15 InventoryComponent: setting initial items using ItemEntryTagFilter
13:20 ItemEntryTagFilter: selecting tags and filtering item dropdowns
13:25 `_get_property_list()` function used to build enumeration of fish tags
13:30 Creating ItemEntryTagFilter resource for fish pool selection
13:35 Explanation of `emit_changed()` signal and `_get_property_list()` function
13:40 `_init()` function connects `emit_changed()` to `ItemDB` update method
13:45 `ItemDB` updates running dictionary with volatile item data
13:50 Changes to ItemRecord or ItemCollection trigger updates in ItemDB
13:55 `@tool` keyword for ItemRecord and ItemCollection, enabling editor tools
14:00 Building editor tools that interact with created item resources
14:05 InventoryComponent: setting initial items using ItemEntryTagFilter
14:10 ItemEntryTagFilter: selecting tags and filtering item dropdowns
14:15 `_get_property_list()` function used to build enumeration of fish tags
14:20 Creating ItemEntryTagFilter resource for fish pool selection
14:25 Explanation of `emit_changed()` signal and `_get_property_list()` function
14:30 `_init()` function connects `emit_changed()` to `ItemDB` update method
14:35 `ItemDB` updates running dictionary with volatile item data
14:40 Changes to ItemRecord or ItemCollection trigger updates in ItemDB
14:45 `@tool` keyword for ItemRecord and ItemCollection, enabling editor tools
14:50 Building editor tools that interact with created item resources
14:55 InventoryComponent: setting initial items using ItemEntryTagFilter
15:00 ItemEntryTagFilter: selecting tags and filtering item dropdowns
15:05 `_get_property_list()` function used to build enumeration of fish tags
15:10 Creating ItemEntryTagFilter resource for fish pool selection
15:15 Explanation of `emit_changed()` signal and `_get_property_list()` function
15:20 `_init()` function connects `emit_changed()` to `ItemDB` update method
15:25 `ItemDB` updates running dictionary with volatile item data
15:30 Changes to ItemRecord or ItemCollection trigger updates in ItemDB
15:35 `@tool` keyword for ItemRecord and ItemCollection, enabling editor tools
15:40 Building editor tools that interact with created item resources
15:45 InventoryComponent: setting initial items using ItemEntryTagFilter
15:50 ItemEntryTagFilter: selecting tags and filtering item dropdowns
15:55 `_get_property_list()` function used to build enumeration of fish tags
16:00 Creating ItemEntryTagFilter resource for fish pool selection
16:05 Explanation of `emit_changed()` signal and `_get_property_list()` function
16:10 `_init()` function connects `emit_changed()` to `ItemDB` update method
16:15 `ItemDB` updates running dictionary with volatile item data
16:20 Changes to ItemRecord or ItemCollection trigger updates in ItemDB
16:25 `@tool` keyword for ItemRecord and ItemCollection, enabling editor tools
16:30 Building editor tools that interact with created item resources
16:35 InventoryComponent: setting initial items using ItemEntryTagFilter
16:40 ItemEntryTagFilter: selecting tags and filtering item dropdowns
16:45 `_get_property_list()` function used to build enumeration of fish tags
16:50 Creating ItemEntryTagFilter resource for fish pool selection
16:55 Explanation of `emit_changed()` signal and `_get_property_list()` function
17:00 `_init()` function connects `emit_changed()` to `ItemDB` update method
17:05 `ItemDB` updates running dictionary with volatile item data
17:10 Changes to ItemRecord or ItemCollection trigger updates in ItemDB
17:15 `@tool` keyword for ItemRecord and ItemCollection, enabling editor tools
0:05 Cone-head guy debates using horse mask as his avatar
0:20 Character struggles with identity, pondering "What even is this?"
0:50 Character hesitates to confirm he will finish the game
0:57 Horse Game 2 gameplay: customizing horses and exploring nature
1:05 Preamble: Nameshift's diverse online presence and identity journey
1:20 Nameshift's evolving identity and online persona as a game developer
1:40 Past YouTube channel: "Dick Beanus" and random video ideas
1:55 The realization that "HorseDev" was limiting for future projects
2:10 Identity beyond one project, avoiding dependency on "HorseDev"
2:30 Past projects: "Out of Order" and "Supermixup" in action
2:45 Discovering references to "shapelessness" and "change" resonates with me
3:00 Announcing YouTube channel name change to Nameshift
3:15 Inventory UI revamp: fixing bugs, improving usability, and style
3:45 Expanded inventory: trading between player, NPC, and containers
4:05 Detailed control over item quantity with keyboard modifiers
4:25 More keyboard modifiers for skipping quantity modal on trade
4:45 Addressing a particular mistake in the previous devlog video
5:00 More metaphysical absurdity about being a "tainted spawn"
5:20 The term "resource" was used generically, not as a Godot Engine specific term
5:45 Godot's [Resource] as "scriptable objects" in Unity, very powerful
6:10 The takeaway: maintain separation between data and instantiated objects
6:30 Modular design in object-oriented programming, Single-Responsibility Principle
6:50 Decision: use [Resource]s to refactor the dialog system
7:10 Initial Meow plugin: JSON for dialogue, customizable display
7:35 Realization of overhead in maintaining parallel JSON and flowchart systems
8:00 Decision to ditch JSON for dialogue, using flowchart editor exclusively
8:25 "Meow 2.0": dialogue blocks and timelines are now linked list resources
8:50 Godot's [Resource] is better than JSON in most cases (except web apps)
9:10 NPC interactions and initial quest implementation in tutorial area
9:25 Next video preview: tutorial for the new dialogue system
9:40 Player unlocks various spells for interacting with horses
10:00 Game design ideas from a wizard through cryptic fever dreams
10:15 Horse personality: generated temperament affecting reactions to moods
10:35 The capacity to interact with, tame, and control horses
10:50 Problem from previous video: indexing script properties like an enum
11:10 Audience input: no good ideas, everyone is "stupid" (joke)
11:30 Theory: secrets to success in `_get_property_list()` function
11:45 Showcasing "evil game design" with `_get_property_list()`
12:00 Refactored inventory and item system to be resource-based
12:20 "Export enum" for tags, providing controlled list of hint strings
12:45 Item records collected into an ItemCollection resource
13:10 Example: creating a drop table for fish in a water source
13:30 `_get_property_list()` function used to build enumeration of fish tags
13:55 `_init()` function connects `emit_changed()` to `ItemDB` update method
14:15 Changes to ItemRecord or ItemCollection trigger updates in ItemDB
14:40 Building editor tools that interact with created item resources
15:05 Problem: Long, disorganized dropdown becomes a "pain in the ass" for selection
15:20 Solution: Multiple ItemCollection resources (furniture, fish, etc.)
15:45 Final concern: ItemCollection - one gigantic unsorted list
16:10 Next time: fishing, horse genealogy, hats, accessories, customization
16:20 Call to action: like, share, comment, reads every comment, especially mean ones
16:40 Stream game development on Twitch (twitch.tv/nameshiftgames)
17:00 Patreon benefit: immortalized as an NPC in the game forever
17:10 Call to action: subscribe, follow, support, thank you

Timestamps by StampBot 🤖
(357-the-solution-to-gamedev-horse-game-2-devlog-ep04)