Skip to main content

Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
TagsGame Engines

A skill/plugin for building modular UPM packages with ScriptableObject patterns

A topic by eyenpi created 72 days ago Views: 321 Replies: 2
Viewing posts 1 to 3
(+1)

I've been trying to get AI coding assistants to stop writing bad Unity architecture, and I think I've gotten somewhere. Curious how others handle this.

The problem: every time I use Claude Code or Cursor for Unity, the generated code defaults to singletons, god-class managers, tightly coupled everything. It compiles fine, The AI produces code that "works", but creates an architectural mess.

So I wrote a skill for it. Five docs that teach the agent how to think about Unity architecture before it touches code. The core of it is ScriptableObject-driven communication: event channels, runtime sets, scriptable variables.  If you've seen Ryan Hipple's Unite 2017 talk on game architecture with ScriptableObjects, it's that philosophy, but codified as instructions an AI agent can follow consistently.

On top of that, every system (inventory, combat, health, dialogue, etc.) gets structured as its own UPM package with assembly definitions and proper versioning. I also baked in some personal preferences like composition over inheritance, Unity 6+ / C# 11 patterns, and test assembly setup, because I got tired of fixing those by hand every time.

Works with Claude Code, Cursor, Copilot, and any agent that supports the SKILL.md standard:

GitHub: https://github.com/eyenpi/unity-systems-skills

Even if you are not into AI-assisted development, you can just read the documents and write what you think about this architecture. I care a lot about my projects' structure, so I'd love to hear how others reliably make these systems.

This is great! I personally have not gotten around to using Claude code, perhaps I should. At least to me, applying AI to game development feels particularly hard, especially because of how many systems often interact with one another, but I might give this a try and report back with results.

I have been using VS Code and its been really useful for me.