~/projects / seven-divines
paused 2026—

Seven Divines - 2D Metroidvania Action Platformer

— A 2D Metroidvania action platformer built with Unity 6 (URP 2D), featuring a behavior state machine architecture and locomotion executor engine. Implements composable action systems (walk, run, jump, dash, roll) and knowledge-based progression locks. Developed by a 4-member team.

A 2D Metroidvania action platformer built with Unity 6 (URP 2D), featuring a behavior state machine architecture and locomotion executor engine. Implements composable action systems (walk, run, jump, dash, roll) and knowledge-based progression locks. Developed by a 4-member team.

STATUS
paused

Overview

Project Introduction

Seven Divines is a 2D Metroidvania action platformer built with Unity 6 (URP 2D), developed by the four-member U-E-Production team. Players control Novia, a mechanical girl created by researcher Raxical, as she is put through a series of test arenas. It is scoped as a small practice project focused on behavior state machine and locomotion engine design.

Core Philosophy

  • High-quality movement feel: precise platforming and technical play are the foundation of the project

  • Knowledge-based progression: players advance by understanding mechanics rather than simply collecting ability unlocks

  • Composable actions: basic moves combine into advanced techniques, such as dash into jump for momentum transfer

  • System-oriented architecture: the state machine decides, the executor acts, with clear separation of concerns


My Responsibilities

As team lead and primary developer, I am responsible for:

System Architecture Design

  • Designed the character control architecture where PlayerStateMachine decides and LocomotionExecutor executes

  • Planned a three-layer behavior system: Override / Combat / Locomotion

  • Built the input abstraction layer, input buffering and resource management

  • Defined the project folder structure and froze the top-level layout in Sprint 0

Project Management

  • Established the Git Flow branching strategy, code review rules and collaboration guidelines

  • Set up GitHub Actions workflows that create tags, releases and changelogs from version bumps

  • Wrote the architecture document, testing, production and debugging guidelines


Core Features

1. Behavior State Machine

  • All character states and transitions are managed by the state machine, while the executor handles physical movement

  • Input is sampled once inside the state machine to avoid double updates

2. Locomotion Executor

  • Basic moves: walk, run, jump, crouch, roll

  • Advanced moves: ground dash and air dash

  • Feel details: coyote time, jump handling and corner correction, all tuned through a MovementConfig asset

3. Input System

  • Action Maps on the New Input System, supporting keyboard & mouse, gamepad, touch and XR

  • Input snapshots and input buffering are covered by EditMode unit tests

4. Knowledge-Lock Design

  • Every level is a test arena designed by Raxical, teaching through the environment instead of text tutorials

  • Advanced techniques come without hints and are discovered through experimentation


Technologies Used

Engine & Rendering

  • Unity 6: game engine

  • URP 2D: 2D render pipeline, with pixel art at 32 PPU and point filtering

Core Packages

  • New Input System: cross-platform input mapping

  • 2D Animation / Aseprite Importer: sprite animation and asset import

  • 2D Tilemap: level construction

  • Unity Test Framework: EditMode tests

Development Tools

  • C#: primary scripting language

  • GitHub Actions: CI/CD and version automation

  • OpenAI API: changelog generation from commit history


Project Status

Current Version: v0.0.1-alpha (Paused)

  • ✅ Core state machine and locomotion executor architecture

  • ✅ Input abstraction layer with cross-platform mappings

  • ✅ Walk, run, jump, crouch, roll, ground dash and air dash

  • 🔄 The first Vertical Slice (a single test level with no enemies and no text tutorials) is still in progress

  • 🔄 Only the Locomotion layer is implemented; Combat and Override layers are still planned


Development Challenges & Achievements

1. Sticky Movement Feel

Challenge: stopping and starting felt noticeably sticky, and turning left occasionally misfired.

Solution: traced it to three root causes in the deceleration curve, the no-input grace period and a zero-direction check, and fixed each of them, markedly improving the stop-to-start time ratio.

2. Separating Decision from Execution

Challenge: a character can be moving, dashing and airborne at once, and mixing decisions with physics quickly gets out of hand.

Solution: the state machine only decides what to do next, and the executor only decides how to move, so every action can be tuned and tested on its own.


Future Roadmap

  • Complete the first Vertical Slice test level

  • Implement the combat layer and the first enemy type

  • Expand knowledge-lock puzzles and an interconnected area map


Tech Stack: Unity 6 (URP 2D), C#, New Input System, 2D Animation, Tilemap
Team Size: 4 (U-E-Production)
Genre: 2D Metroidvania action platformer

Related Projects