Skip to main content

Terrain Zigger

Project description

TerrainZigger: Procedural 3D World Builder

TerrainZigger

A lightweight, cross-platform 3D terrain generator and game engine built in Zig, with Python scripting for dynamic behaviors like NPC pathing, dialogues, and interactions. Powered by Raylib for rendering procedural worlds from noise to explorable scenes in minutes.

Why ZigTerrain?

  • Performance-First: Zig's safety + speed for real-time 3D.
  • Scriptable: Python integration via ctypes for AI, events, and mods.
  • Procedural Magic: Perlin/FBM terrain, foliage via Poisson Disk, and dungeons generated with wave function collapse.
  • Interactive: Raycasting, pathfinding, dialogues.

Features

  • Procedural terrain gen (noise, base maps, biomes)
  • Object spawning/movement (humans, birds, rain, beams)
  • User controls: Orbit/FPV camera, selection, spawning
  • Python hooks: Callbacks for clicks, chats, ticks
  • Exports: WASM-ready for web demos

Quick Start

Prerequisites

To build and run TerrainZigger, you'll need:

Build & Run

zig build run: Builds and runs the main game (walk.zig). zig build run-chat: Runs the standalone Chat UI test (chat.zig). zig build run-object: Runs the 3D Object/Primitive viewer (object.zig). zig build run-dungeon: Runs the Dungeon generation demo (dungeon.zig). zig build run-wasm: WebAssembly compilation of terrain.zig (demo index.html). pip install zigger: Python scripting (see below)

Usage Example (Python)

from zigger import Zigger

game = Zigger(size=terrain_size) 
game.load_map(get_base_map(terrain_size, 'N42W071')) # Procedural or real topo data
game.spawn(2, 20, 20)                                # Spawn object (house)
game.start()                                         # Start game

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

License

This project is open source and available under the Apache License 2.0.

Acknowledgments

  • Terrain generation algorithm inspired by Perlin Noise
  • 3D rendering made possible by Raylib

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

zigger-0.0.1a0.tar.gz (34.0 kB view details)

Uploaded Source

File details

Details for the file zigger-0.0.1a0.tar.gz.

File metadata

  • Download URL: zigger-0.0.1a0.tar.gz
  • Upload date:
  • Size: 34.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.8

File hashes

Hashes for zigger-0.0.1a0.tar.gz
Algorithm Hash digest
SHA256 2782358212f8f777bdb614b18f54b85b98377038f4b8e247f30065b4a9f2fcb2
MD5 426d20e42b6ffdfbb96e9c341cafecdf
BLAKE2b-256 318d1f1f267a890c0760f8a12a558667d480c8f93f6f1b0b6bd60ab4e621e994

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page