finds.dev← search

// the find

ATHellboy/SampleProject-FightingGame

★ 35 · C# · MIT · updated Jul 2025

A sample project designed to demonstrate advanced C# coding practices and architectural expertise in Unity. This showcase serves as a practical example of my ability to build scalable and maintainable gameplay systems using SOLID principles and key design patterns.

A Unity 2D fighting game used as an architecture showcase — two characters (Bunny and Kitty), each with distinct attack behaviors, wired together with VContainer for DI and MessagePipe for events. The target audience is Unity developers who want to see SOLID patterns applied to gameplay code rather than the usual MonoBehaviour spaghetti.

VContainer + MessagePipe is a genuinely good choice here: VContainer's LifetimeScope model fits Unity's scene lifecycle better than Zenject ever did, and MessagePipe keeps character systems from calling each other directly. The three-tier state machine (Main, SecondaryMovement, Combat running in parallel) is the right call for a fighter — it avoids the combinatorial explosion you get trying to encode jump+attack as a single state. Attack behaviors as ScriptableObject assets means designers can swap and tune without touching code. The custom ScriptableObjectDropdown attribute is a small but real quality-of-life contribution that the author also released as a standalone tool.

This is a one-scene demo with two characters — the architecture hasn't been stress-tested against a real roster, and it's not obvious the LifetimeScope hierarchy would scale cleanly when you add 10+ characters with shared global state. There's no networking consideration at all, which for a fighting game is the elephant in the room; none of the event or state abstractions are written with rollback in mind. The repo is more a portfolio piece than a reusable template — there are no tests, no CI, and the input system is old Unity Input Manager rather than the new Input System, which is a meaningful gap for anyone building on top of it.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →