1 of 14

Procedural Chunk Generation

Endless Runner Game in Godot

CSGY-GD-5 Team • Game Development

2 of 14

Game Overview

  • Auto-running platformer with increasing speed
  • Dynamic chunk generation system
  • Player must navigate gaps, ramps, and platforms
  • Speed-based difficulty progression

3 of 14

PCG System Architecture

  • ChunkGenerator: Selects and spawns chunks
  • ChunkData: Resource files with metadata
  • ChunkBase: Base class for all chunks
  • GameManager: Manages generation triggers

4 of 14

Chunk Selection Algorithm

Weighted probability with speed filtering and repeat avoidance

5 of 14

Weighted Selection Process

Example: Easy chunk (weight=3.0) vs Hard chunk (weight=0.5)

6 of 14

Initial Spawn Tile

To avoid limiting ourselves creatively and to give the player breathing room at the start, we always start with the same tile

7 of 14

Current Chunk Types

Flat Ground

Safe recovery areas

Small Gaps

Basic jump challenges

Long Jumps

Require precise timing

Ramps

Elevation transitions

Extreme Gaps

High-speed challenges

8 of 14

Speed-Based Difficulty

  • Each chunk has min/max speed requirements
  • Easier chunks at low speeds
  • Harder chunks unlock at higher speeds
  • Ensures appropriate challenge level

9 of 14

Chunk Connection System

Ensures smooth platform transitions without impossible jumps

10 of 14

Dynamic Generation Triggers

Memory-efficient infinite terrain generation

11 of 14

Collectible Spawning

Coins guide players through optimal jump paths

12 of 14

Key Technical Features

  • Resource-based chunk loading system
  • Weighted random selection algorithm
  • Real-time difficulty scaling
  • Automatic chunk cleanup

13 of 14

Future Enhancements

  • Additional chunk variety (11+ types planned)
  • Enemy spawning integration
  • Biome-based visual themes
  • Adaptive difficulty tuning

14 of 14

Thank You!

Questions?