rayman-slides

module
v0.0.0-...-a5b18d1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 1, 2026 License: MIT

README

rayman-slides

An open-source 2D side-scrolling platformer inspired by the classic Rayman 1 (1995), developed using Claude Code.

Quick Start

# Clone and build
git clone https://github.com/andersfylling/rayman-slides.git
cd rayman-slides
make build

# Run the game
make run

# Controls: WASD to move, J to attack (hold to charge), Q or Esc to quit
Requirements
  • Go 1.22+
  • Wayland or X11 display server

About

This project recreates the gameplay and feel of Rayman 1 using entirely custom, AI-generated assets. No original game data is used—all sprites, music, and level designs are original creations that evoke the whimsical fairy-tale aesthetic of the source material.

Key Features
  • Limbless character with progressive ability unlocks (telescopic fist, grappling, helicopter hair, running)
  • Charge-release attack mechanic (hold J to charge, release to fire fist)
  • 6 thematic worlds mixing natural and imaginary landscapes
  • Collectible-based progression (free all caged creatures to unlock the final world)
  • Boss battles at the end of each world
  • Swappable "Profiles" (asset packs) for different visual themes
  • Gio-based rendering - Native Wayland support, GPU-accelerated
Why "Slides"?

The project uses a "profile" system allowing different skins/asset packs to slide in and out, keeping the core mechanics while enabling visual customization.

Project Structure

cmd/
  rayman-gui/     # Game client (Gio)
  rayserver/      # Dedicated multiplayer server
  lookup/         # Room code discovery service

internal/
  game/           # ECS world, components, systems
  collision/      # Tile-based + AABB collision
  render/         # Gio GPU rendering
  input/          # Keyboard capture, intent mapping
  client/         # Client-side prediction
  server/         # Authoritative game server
  network/        # Client-server transport
  sync/           # State synchronization
  lobby/          # Room codes for multiplayer
  protocol/       # Wire format, messages

docs/             # Documentation
  sprites.md      # Sprite specifications
adr/              # Architectural Decision Records

Development

# Build all binaries
make build

# Run tests
make test

# Run the client
make run

# Run the dedicated server
make server

# Format code
make fmt

# Clean build artifacts
make clean

Architecture

See the adr/ folder for architectural decisions:

Documentation

Contributing

See CONTRIBUTING.md for guidelines.

Tech Stack

  • Language: Go
  • ECS: mlange-42/ark
  • Rendering: Gio (native Wayland, GPU-accelerated)

Status

Early development - movement, collision, and charge-release attack working.

License

See LICENSE

Directories

Path Synopsis
cmd
issue-bot command
Command issue-bot is an autonomous GitHub issue resolver using Claude Code.
Command issue-bot is an autonomous GitHub issue resolver using Claude Code.
lookup command
Command lookup is the room code lookup service.
Command lookup is the room code lookup service.
rayserver command
Command rayserver is the dedicated game server.
Command rayserver is the dedicated game server.
sprite-debug command
Command sprite-debug generates a debug GIF showing all sprite regions.
Command sprite-debug generates a debug GIF showing all sprite regions.
internal
client
Package client implements the game client.
Package client implements the game client.
collision
Package collision implements collision detection.
Package collision implements collision detection.
game
Package game defines ECS components and game logic.
Package game defines ECS components and game logic.
lobby
Package lobby handles game discovery and joining.
Package lobby handles game discovery and joining.
network
Package network implements client-server communication.
Package network implements client-server communication.
protocol
Package protocol defines shared types and version constants for client-server communication.
Package protocol defines shared types and version constants for client-server communication.
render
Package render provides game rendering functionality.
Package render provides game rendering functionality.
server
Package server implements the authoritative game server.
Package server implements the authoritative game server.
sync
Package sync handles state synchronization between server and clients.
Package sync handles state synchronization between server and clients.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL