Skip to content
RetroPlusPlusPublic

About

A simple action-adventure style game for the Polyrhythm platform to demonstrate its usage

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

32 Commits

Folders and files

Repository files navigation

Zorlduh

A top-down action-adventure built on the Polyrhythm engine, and the start of a library of reusable components for it.

Polyrhythm gives a game low-level primitives — tiles, palettes, sprites, layers at depths — and a frame that is described whole, as data, every tick. Zorlduh builds the layer above those primitives: the pieces nearly every game of its kind needs, each written as a self-contained component that can leave this repository and be used by another game on the engine. The game is where those components are proven.

It runs at Game Boy Color resolution (160×144) on a 60 Hz tick, in a world of areas of any size, each its own map, grouped into layouts — an overworld, a dungeon — and joined by the doors, stairs and open walls between them, with a camera that follows the player through them.

Status: early. The build stands up and opens the game's window, the layer kit that every on-screen component goes through is in place and tested, the placeholder art and maps load at startup, and the player walks an overworld of five areas, a dungeon of five rooms and a forest of seven: through doors, which scroll the next area in; down stairs, which fade to the next; and across open walls, where the next room is simply there and the player walks on — in the forest from room to room, each one a different case of how the camera follows. Areas are drawn in layers: the player walks along a path, under a forest canopy and into the shade of a cave mouth. The HUD strip shows the current area's name, typed out letter by letter each time the player enters an area. A wooden sign in the meadow and a stone rock beside the dungeon door can be read: their messages type out in a box framed in wood or stone that grows out of its middle and shrinks back into it, a page at a time, while the world holds still. In the shrine, six signs each open their message box in a different way: growing, clipped, squashed, faded, slid up from below, or standing still. The game opens on a title screen with a menu, and Start pauses the world under another: options for how fast messages type and how the menus' windows open, nested a menu over a menu, and a list of every area, a page at a time, that puts the player in the one chosen.

Progress

  • Build — the engine as a submodule, a lean Release executable, a GoogleTest suite
  • Layer kit — sprite, tile, raster and image layers that gather components onto the screen (modules/LayerKit/)
  • Top-down movement — walking in eight directions, collision shapes and maps, facing, walk animations (modules/TopDownMovement/)
  • Text — fonts from glyph sheets, wrapped and typed-out text (modules/TextKit/)
  • Windows — boxes of any size from border sheets, opening and closing in five styles, message boxes (modules/WindowKit/)
  • Menus — menus as trees of items, a cursor on a grid that repeats while held, pages and scrolling, menus opening over menus, each in a window (modules/MenuKit/)
  • Scripts — scripts written in C++ as rules over programs, run a little each tick by a script processor that hands back what each one asks for, with typed values and commands the game handles (modules/ScriptKit/)
  • Camera — a camera value, the follow law, pans (modules/CameraKit/)
  • World — layouts of areas with their own maps and art, each area drawn in layers at depths the game gives with named slots for the things moving in it, openings that scroll, fade or join seamlessly to the next area, the camera within an area and across a seam, the world confined to its part of the screen (modules/WorldKit/)
  • Assets — generated placeholder art and the struct that loads it
  • Player — walking, collision, facing, animation
  • Areas — an overworld of five areas, a dungeon of five rooms and a forest of seven, joined by doors, stairs and open walls; the player goes between them, over a path, under a canopy and under the rock of a cave mouth
  • Signs — a sign and a rock read with Item, each in a border of its own
  • Title screen and pause menu — START, CONTINUE and OPTIONS; RESUME, OPTIONS, WARP and TITLE
  • Actors — spawning, stable identity, a wandering enemy
  • Combat — the sword, damage, invulnerability, death and restart
  • HUD and pickups — hearts and the heart pickup
  • Sound — a cue for every game event

Building

Requirements are the engine's: CMake 3.28+, a C++20 compiler (GCC 13+, Clang 16+, AppleClang 15+ or MSVC 19.38+), and the engine's build-time shader toolchain — see the engine's build guide. Python 3 is needed too: the test suite runs tools/placeholder_art.py --check to confirm the committed art is what the script writes.

git clone --recurse-submodules https://github.com/RetroPlusPlus/Zorlduh.git
cd Zorlduh
cmake -S . -B build
cmake --build build
ctest --test-dir build --output-on-failure
./build/zorlduh

The default build type is Release.

License

Zorlduh and every module under modules/ are licensed under the MIT License; each module carries its own copy so it can be taken on its own. The Polyrhythm engine they depend on is licensed separately — PolyForm Noncommercial, with a commercial license available — under its own terms in LICENSE and LICENSING.md. Nothing here runs without the engine, so using the modules means using the engine under its license.

Documentation

  • docs/DESIGN.md — what the project is, the screen and world model, the constraints every system keeps.
  • docs/FEATURES.md — every feature and its status.

About

A simple action-adventure style game for the Polyrhythm platform to demonstrate its usage

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages