About

https://drive.google.com/file/d/1EbZos0xmiVUhDxLH93xnx4cKfz69BLS6/view

Kingship is a physics-based boat-building game made for HackUMBC 2026.

The original idea came from the Robots Roblox OA, which focuses on solving a problem by designing a system, testing it, seeing where it fails, and improving the design. We wanted to take that style of strategic problem solving and turn it into an actual game instead of a programming assessment.

The player builds a boat around a king and has to get him safely through a generated course. The king is the actual objective. The boat can take damage, lose parts, or barely survive as long as the king reaches the end.

For the building side of the game, we took inspiration from Bad Piggies and Build a Boat for Treasure. Players build freely from modular parts rather than choosing from preset boats. The design of the boat affects how it behaves once it is placed in the water, including its mass, balance, buoyancy, movement, and durability.

Gameplay

The basic loop is:

  1. Build a boat from parts
  2. Place and protect the king
  3. Launch the boat
  4. Navigate a randomly generated course
  5. Survive damage without losing the king
  6. Reach the next dock
  7. Earn money and improve the boat
  8. Continue into harder levels

Boat pieces have their own health and properties instead of the boat having a single health bar. Individual modules can be damaged and destroyed during a run, changing the structure and behavior of the boat.

Different parts also have different gameplay properties. Structural pieces provide buoyancy and durability, while other modules can affect things like forward speed or steering.

Building System

The ship is constructed on a 3D grid-based attachment system. Blocks snap to neighboring faces and the game verifies that the final structure remains connected.

The ship's Rigidbody is updated based on the number of attached blocks, allowing the layout and size of the player's design to affect its physics.

The builder supports:

  • Modular block placement
  • 3D grid snapping
  • Dragging and repositioning parts
  • Connected-structure validation
  • Different materials and module types
  • Per-module health and damage reduction
  • Movement bonuses from specialized parts
  • Placement of the king on the finished boat

Physics and Water

The game uses Unity physics for the boat, king, obstacles, and destructible modules.

The ocean is powered by a custom Unity URP port of GodotOceanWaves. The water simulation uses GPU compute shaders with a JONSWAP/TMA wave spectrum and a Stockham inverse FFT to generate displacement, normals, and foam in real time.

The project also implements custom buoyancy so player-built boats can react to the generated ocean instead of moving across a flat plane.

Two water simulation profiles are included, with a lower-cost runtime configuration and a higher-resolution profile for machines with more GPU headroom.

Procedural Levels

Levels are generated from reusable course chunks using a seeded procedural generation system.

A run seed and level number deterministically produce the same course, making generation reproducible while still allowing different runs to vary.

The generator uses:

  • Weighted chunk selection
  • Difficulty budgets
  • Level requirements
  • Entrance and exit lane compatibility
  • Repetition cooldowns
  • Increasing course length
  • Increasing obstacle density
  • Seeded randomness

Rather than placing everything completely randomly, obstacle layouts are authored as playable chunks and then combined procedurally. This gives the game variation without constantly producing impossible layouts.

The King

The king is an independent physics object rather than something permanently attached to the boat.

He has his own:

  • Rigidbody and collider
  • Health system
  • Collision damage
  • Boat support tracking
  • Death conditions
  • Integration with the voyage and UI systems

A boat is only valid for launch when the king is alive and properly supported by the structure.

Damage and Progression

Each boat module tracks its own health and damage reduction.

Damage is based on the part that is actually hit, and damaged modules can eventually break and disappear from the ship. Losing pieces can change the boat's mass distribution, buoyancy, movement, and ability to protect the king during the rest of the run.

The project also includes an economy system used by purchasing, rewards, repairs, and the shop. Players earn money from successful voyages and can spend it on improving their next design.

UI

The interface is built primarily with Unity UI Toolkit using UXML and USS.

The project includes UI for systems such as:

  • Main menu
  • Ship building
  • Shop
  • Economy
  • Death screen
  • Voyage flow

The death screen keeps the live game visible behind the interface so the remains of the player's boat become part of the final screen instead of cutting to a separate background.

Built With

  • Unity 6
  • C#
  • Universal Render Pipeline
  • Unity UI Toolkit
  • Unity Input System
  • HLSL
  • Compute Shaders
  • GPU FFT ocean simulation
  • Unity Rigidbody physics
  • Seeded procedural generation

The project currently uses Unity 6000.6.3f1 and URP 17.6.

Inspiration

  • Robots Roblox OA
    The main inspiration behind the project. We liked the idea of solving a problem by constructing a system, testing it, and iterating on the design.

  • Bad Piggies
    Inspired the modular vehicle construction and the idea that a player's design directly determines whether they succeed or fail.

  • Build a Boat for Treasure
    Inspired the freeform boat-building gameplay and the idea of putting a player-built structure through increasingly difficult challenges.

At its core, the game is about building something you think will work, launching it, watching it inevitably go wrong, and figuring out how to build it better the next time.

Built With

Share this project:

Updates

Submission history