Skip to content

donaldfilimon/nyon-game

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

77 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Nyon Game Engine

Unleash Your Creativity: The Future of Game Development is Here!

A blazingly fast, minimal Zig-based game engine that empowers developers to build stunning 3D worlds with unprecedented ease. Featuring cutting-edge raylib integration, an intuitive node-based geometry editor, and a revolutionary plugin system that adapts to your wildest imagination.

πŸš€ Revolutionary Features That Set You Free

  • ⚑ Lightning-Fast Cross-Platform Power: Seamlessly deploy to desktop (Windows/macOS/Linux) and the web with WebAssembly - reach players everywhere!
  • 🎨 Intuitive Immediate-Mode UI: Revolutionary F1 edit mode lets you customize your interface on-the-fly with drag-and-drop panels and persistent JSON layouts
  • 🌍 Immersive 3D Sandbox: Dive into creative freedom with free-fly camera controls, instant block manipulation, and persistent world saving
  • 🧠 Node-Based Geometry Wizardry: Craft procedural masterpieces with our powerful geometry nodes system - no coding required!
  • 🎭 Professional Asset Management: Industry-grade material system with hot-reloadable textures and advanced material management
  • βͺ Time-Travel Development: Undo/Redo system with full serialization support - experiment fearlessly!
  • πŸ”Œ Plugin Architecture Revolution: Extend the engine infinitely with custom materials, geometry nodes, game modes, and UI panels
  • πŸ“Š Performance Mastery: Built-in profiling tools and real-time performance monitoring keep your games running at peak performance

🎯 Getting Started - Your Journey Begins Now!

Prerequisites

  • Zig 0.16.x or later - The language that's revolutionizing systems programming
  • For WebAssembly builds: Emscripten toolchain - Bring your games to the browser!

Quick Start - Launch into Creativity!

# Clone the revolution
git clone <repository>
cd nyon-game
zig build

# Experience the magic
zig build run

# Unleash your inner creator
zig build run-editor

# Ensure perfection
zig build test

Build Targets

  • zig build: Build the main game executable
  • zig build run: Build and run the game
  • zig build run-editor: Build and run the editor
  • zig build example-file-browser: Build file browser example
  • zig build example-drop-viewer: Build file drop viewer example
  • zig build wasm: Build for WebAssembly
  • zig build nyon-cli: Build CLI helper tool
  • zig build test: Run all tests
  • zig build test -- <path/to/test.zig>: Run specific test file

Project Structure

nyon-game/
β”œβ”€β”€ build.zig                 # Build configuration
β”œβ”€β”€ src/
β”‚   β”œβ”€β”€ root.zig             # Public API re-exports
β”‚   β”œβ”€β”€ main.zig             # Game demo entry point
β”‚   β”œβ”€β”€ editor.zig           # Editor entry point
β”‚   β”œβ”€β”€ main_editor.zig      # Editor main loop
β”‚   β”œβ”€β”€ engine.zig           # Core engine systems
β”‚   β”œβ”€β”€ scene.zig            # Scene management
β”‚   β”œβ”€β”€ rendering.zig        # Rendering pipeline
β”‚   β”œβ”€β”€ ui/                  # User interface system
β”‚   β”‚   β”œβ”€β”€ ui.zig
β”‚   β”‚   └── status_message.zig
β”‚   β”œβ”€β”€ nodes/               # Node graph system
β”‚   β”‚   └── node_graph.zig
β”‚   β”œβ”€β”€ game/                # Game-specific logic
β”‚   β”‚   β”œβ”€β”€ sandbox.zig
β”‚   β”‚   └── worlds.zig
β”‚   β”œβ”€β”€ io/                  # File I/O utilities
β”‚   β”‚   β”œβ”€β”€ file_detail.zig
β”‚   β”‚   └── file_metadata.zig
β”‚   └── [other modules...]
β”œβ”€β”€ examples/
β”‚   └── raylib/              # Raylib integration examples
β”œβ”€β”€ saves/                   # Game save data
└── AGENTS.md               # Development guidelines

πŸ—οΈ Architecture of Innovation

Core Systems - Engineered for Excellence

  • πŸš€ Engine: Ultra-flexible backend abstraction supporting Raylib, GLFW, and cutting-edge WebGPU
  • 🎭 Scene: Sophisticated entity-component system with seamless hierarchical transforms
  • 🎨 Rendering: Professional material-based rendering pipeline with stunning post-processing effects
  • πŸ’« UI: Revolutionary immediate-mode interface with intelligent persistent layouts
  • πŸ“¦ Assets: Lightning-fast texture/material management with instant hot reloading
  • πŸ”„ Undo/Redo: Bulletproof command pattern ensuring your creative flow never breaks

Editor Features - Where Magic Happens

  • πŸ” Property Inspector: Intuitive component editing that makes complex objects feel simple
  • 🌟 Geometry Nodes: Revolutionary procedural geometry creation - sculpt worlds from pure imagination
  • 🎨 Material Editor: Professional-grade texture and shader management at your fingertips
  • 🎬 Animation System: Powerful keyframe-based animation tools that bring your creations to life

πŸ› οΈ Development - Crafted by Visionaries

Coding Conventions - Excellence Through Discipline

Follow the battle-tested guidelines in AGENTS.md:

  • πŸ“š Imports: Strategic organization - std β†’ external β†’ local with crystal-clear descriptive aliases
  • 🏷️ Naming: PascalCase types, camelCase functions, ALL_CAPS constants - consistency that scales
  • πŸ›‘οΈ Error handling: Robust custom error sets with try/catch for bulletproof reliability
  • πŸ“– Documentation: Comprehensive //! module docs and /// API docs for crystal-clear understanding
  • πŸ§ͺ Testing: Embedded tests with std.testing.allocator ensuring rock-solid stability

UI Customization

  • Press F1 to enter UI edit mode
  • Drag panel title bars to reposition
  • Use resize handles for sizing
  • Ctrl+S to save layout to nyon_ui.json
  • Drop JSON files to load custom layouts

Key Bindings (Game)

  • WASD: Move
  • Q / E: Move down/up
  • Right Mouse: Look around
  • Left Click: Place block
  • Ctrl + Left Click: Remove block
  • Tab: Cycle block color
  • R: Reset camera
  • Ctrl + S: Save world
  • F1: Toggle UI edit mode
  • F2: Settings panel

Key Bindings (Editor)

  • Ctrl+S: Save project
  • Ctrl+D: Debug print node graph
  • Mouse: Select and manipulate nodes

Examples

File Browser

zig build example-file-browser

Lists directory contents with metadata display.

Drop Viewer

zig build example-drop-viewer

Demonstrates drag-and-drop file handling with size display.

Contributing

  1. Follow coding conventions in AGENTS.md
  2. Add tests for new functionality
  3. Update README.md for new features
  4. Run zig build test before submitting

πŸ—ΊοΈ Roadmap - The Future We're Building

  • Complete undo/redo serialization - βœ… Revolutionary time-travel development achieved!
  • Expand geometry node library - Crafting an infinite palette of creative possibilities
  • WebGPU backend implementation - Next-gen graphics performance for the modern web
  • CI/CD pipeline with headless testing - Automated excellence ensuring perfect releases
  • Additional asset types (models, audio) - Complete your multimedia masterpiece
  • Plugin API documentation - Empowering developers worldwide to extend the revolution

🌟 Vision: Democratizing Game Development

Nyon isn't just an engine - it's a movement. We're breaking down barriers, eliminating complexity, and giving every developer the tools to create extraordinary experiences. From indie dreamers to AAA innovators, Nyon adapts to your vision and scales with your ambition.

Join the revolution. Build the impossible.

License

See LICENSE file for details.

About

Unleash Your Creativity: The Future of Game Development is Here | A blazingly fast, minimal Zig-based game engine that empowers developers to build stunning 3D worlds with unprecedented ease. Featuring cutting-edge raylib integration, an intuitive node-based geometry editor, and a revolutionary plugin system for your sandbox or servers to live ...

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors