{"id":21487103,"url":"https://github.com/sbarisic/raylibgame","last_synced_at":"2026-04-12T23:48:39.118Z","repository":{"id":55444484,"uuid":"325555078","full_name":"sbarisic/RaylibGame","owner":"sbarisic","description":"Game example using Raylib and C#","archived":false,"fork":false,"pushed_at":"2025-07-31T19:42:16.000Z","size":176573,"stargazers_count":1,"open_issues_count":2,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-07-31T19:53:49.033Z","etag":null,"topics":["csharp","raylib","raylib-cs","raylib-examples"],"latest_commit_sha":null,"homepage":"","language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sbarisic.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2020-12-30T13:15:47.000Z","updated_at":"2025-07-31T19:42:20.000Z","dependencies_parsed_at":"2025-07-31T18:25:48.689Z","dependency_job_id":null,"html_url":"https://github.com/sbarisic/RaylibGame","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/sbarisic/RaylibGame","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sbarisic%2FRaylibGame","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sbarisic%2FRaylibGame/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sbarisic%2FRaylibGame/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sbarisic%2FRaylibGame/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sbarisic","download_url":"https://codeload.github.com/sbarisic/RaylibGame/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sbarisic%2FRaylibGame/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269351910,"owners_count":24402678,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-08T02:00:09.200Z","response_time":72,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["csharp","raylib","raylib-cs","raylib-examples"],"created_at":"2024-11-23T13:26:31.947Z","updated_at":"2026-04-12T23:48:39.111Z","avatar_url":"https://github.com/sbarisic.png","language":"C#","readme":"[![Ask DeepWiki](https://deepwiki.com/badge.svg)](https://deepwiki.com/sbarisic/RaylibGame)\n\n# Aurora Falls - Voxelgine Engine\n\n**Aurora Falls** is a voxel-based sandbox engine and game written in modern **C# (.NET 9)**, featuring real-time 3D rendering with **Raylib-cs**, a modular entity system, client-server multiplayer (up to 10 players), and a fully interactive world.\n\nPlayers can explore, build, and modify a procedurally generated floating island environment, interact with blocks and entities, and use a variety of tools and weapons — alone or with others.\n\n![Screenshot 1](img/39Kudu88Xu.png)\n\n![Screenshot 2](img/5LoczCbPHp.png)\n\n---\n\n## Features\n\n- **Procedural World Generation** — Floating islands generated via simplex noise with grass, dirt, stone, sand, and water\n- **Block System** — Place, destroy, and interact with 20+ block types including transparent blocks (water, glass, ice)\n- **Dual-Channel Lighting** — Separate skylight and block light propagation with real-time updates\n- **Quake-Style Physics** — Strafe-jumping, bunny-hopping, air control, water swimming with buoyancy\n- **Client-Server Multiplayer** — Up to 10 players, server-authoritative with client-side prediction and remote player interpolation\n- **Entity System** — Networked entities with pickup items, NPCs with pathfinding, and interactive doors\n- **Combat System** — Server-authoritative weapon fire with raycast hit detection against world, entities, and players\n- **Player Health \u0026 Respawn** — Damage, death overlay, and timed respawn at spawn point\n- **Particle System** — Smoke, blood, fire sparks, and weapon tracer effects with depth-sorted rendering\n- **FishUI-Based GUI** — Custom inventory, item boxes, in-game menus, server connect/host dialogs\n- **Save/Load System** — GZip-compressed world and player state persistence\n- **Dependency Injection** — `FishDI` container with interface-based services (`IFishLogging`, `IFishConfig`, `IFishDebug`, etc.)\n- **Structured Logging** — `IFishLogging` with timestamped file output and console mirroring\n- **Hot-Reload Shaders** — Edit shaders at runtime for rapid iteration\n- **Frame Interpolation** — Smooth camera and position rendering independent of physics tick rate\n\n---\n\n## Architecture\n\n### Solution Structure\n\n```\nRaylibGame.sln\n├── Voxelgine/              # Main client project (Raylib rendering, GUI, gameplay states)\n│   ├── Engine/             # Core systems, player, entities, weapons, physics, server loop\n│   ├── Graphics/           # Chunk rendering, GBuffer, skybox, frustum culling\n│   ├── GUI/                # FishUI integration and custom controls\n│   ├── States/             # Game states (main menu, gameplay, multiplayer, NPC preview)\n│   └── data/               # Assets (textures, models, sounds, shaders)\n├── VoxelgineEngine/        # Shared library (Raylib-free: DI, physics, input, networking)\n│   └── Engine/\n│       ├── DI/             # FishDI container, service interfaces\n│       ├── Physics/        # AABB, PhysicsUtils, RayMath (pure math)\n│       ├── Animations/     # LerpManager, AnimLerp, easing functions\n│       ├── Input/          # IInputSource, NetworkInputSource\n│       └── Net/            # UDP transport, packets, reliable delivery, client/server\n├── VoxelgineServer/        # Dedicated headless server (CLI, no Raylib)\n└── UnitTest/               # Unit tests for core systems\n```\n\n### Core Systems\n\n| System | Files | Description |\n|--------|-------|-------------|\n| **Program** | `Program.cs` | Entry point, game loop with fixed timestep physics |\n| **GameWindow** | `GameWindow.cs` | Window management, render targets, state switching |\n| **GameState** | `States/GameState.cs` | Single-player gameplay state, world/player/entity management |\n| **GameSimulation** | `Engine/GameSimulation.cs` | Authoritative game state (`ChunkMap`, `PlayerManager`, `EntityManager`, `DayNightCycle`, `PhysData`) |\n| **MultiplayerGameState** | `States/MultiplayerGameState.cs` | Multiplayer client: connection, prediction, interpolation, remote players |\n| **ServerLoop** | `Engine/ServerLoop.cs` | Server game loop: input processing, physics, combat, world/entity sync |\n| **InputMgr** | `VoxelgineEngine/.../InputMgr.cs` | Input abstraction via `IInputSource` (local Raylib / network) |\n| **SoundMgr** | `SoundMgr.cs` | Positional audio, sound combos (randomized effects) |\n| **ResMgr** | `ResMgr.cs` | Resource loading (textures, models, shaders) with hot-reload |\n| **GameConfig** | `GameConfig.cs` | JSON-based configuration (resolution, vsync, sensitivity) |\n| **FishDI** | `VoxelgineEngine/.../FishDI.cs` | Dependency injection container (singleton/scoped/transient services) |\n| **FishLogging** | `VoxelgineEngine/.../FishLogging.cs` | Timestamped file + console logging via `IFishLogging` interface |\n\n### Graphics Pipeline\n\n| Component | Files | Description |\n|-----------|-------|-------------|\n| **ChunkMap** | `Graphics/ChunkMap.cs` | Spatial hash grid of chunks, world queries, lighting computation |\n| **Chunk** | `Graphics/Chunk.cs` | 16³ block storage, mesh generation, transparent face caching |\n| **PlacedBlock** | `Graphics/Chunk/PlacedBlock.cs` | Block type + dual light values (skylight/blocklight) |\n| **BlockLayout** | `Graphics/Chunk/BlockLayout.cs` | Face visibility and UV calculation |\n| **GBuffer** | `Graphics/GBuffer.cs` | Deferred rendering targets |\n| **Frustum** | `Graphics/Frustum.cs` | View frustum culling |\n| **Skybox** | `Engine/Skybox.cs` | Procedural sky rendering |\n\n### Entity System\n\n| Component | Files | Description |\n|-----------|-------|-------------|\n| **VoxEntity** | `Engine/Entities/VoxEntity.cs` | Base class with network ID, spawn properties, snapshot serialization |\n| **EntityManager** | `Engine/Entities/EntityManager.cs` | Entity spawning, physics, network ID tracking, authority flag |\n| **VEntPickup** | `Engine/Entities/VEntPickup.cs` | Collectible items with rotation animation |\n| **VEntNPC** | `Engine/Entities/VEntNPC.cs` | NPC entities with JSON model, pathfinding, animator |\n| **VEntSlidingDoor** | `Engine/Entities/VEntSlidingDoor.cs` | Interactive animated doors with network serialization |\n\n### Player \u0026 Physics\n\n| Component | Files | Description |\n|-----------|-------|-------------|\n| **Player** | `Engine/Player/Player.cs` | Player state, input, physics, inventory, health/respawn |\n| **PlayerManager** | `Engine/Player/PlayerManager.cs` | `Dictionary\u003cint, Player\u003e` with remote player tracking |\n| **RemotePlayer** | `Engine/Player/RemotePlayer.cs` | Client-side remote player with snapshot interpolation and humanoid model |\n| **FPSCamera** | `Engine/FPSCamera.cs` | Instance-based first-person camera with mouse look |\n| **ViewModel** | `Engine/ViewModel.cs` | First-person weapon/tool rendering |\n| **PhysicsUtils** | `VoxelgineEngine/.../PhysicsUtils.cs` | Pure math: ClipVelocity, acceleration, AABB creation |\n| **WorldCollision** | `Engine/Physics/WorldCollision.cs` | ChunkMap-dependent collision and movement |\n| **RayMath** | `VoxelgineEngine/.../RayMath.cs` | Ray-AABB intersection (slab method) |\n| **AABB** | `VoxelgineEngine/.../AABB.cs` | Axis-aligned bounding box (Raylib-free) |\n\n### GUI System\n\n| Component | Files | Description |\n|-----------|-------|-------------|\n| **FishUIManager** | `GUI/FishUI/FishUIManager.cs` | Main UI manager wrapping FishUI library |\n| **RaylibFishUIGfx** | `GUI/FishUI/RaylibFishUIGfx.cs` | Raylib graphics backend for FishUI |\n| **RaylibFishUIInput** | `GUI/FishUI/RaylibFishUIInput.cs` | Raylib input backend for FishUI |\n| **FishUIItemBox** | `GUI/FishUI/Controls/FishUIItemBox.cs` | Inventory slot with icon rendering |\n| **FishUIInventory** | `GUI/FishUI/Controls/FishUIInventory.cs` | Hotbar/inventory display |\n| **FishUIInfoLabel** | `GUI/FishUI/Controls/FishUIInfoLabel.cs` | Debug/info text overlay |\n\n### Animation \u0026 Effects\n\n| Component | Files | Description |\n|-----------|-------|-------------|\n| **AnimLerp** | `Engine/Animations/AnimLerp.cs` | Interpolation with 30+ easing functions |\n| **LerpManager** | `Engine/Animations/LerpManager.cs` | Global animation instance management |\n| **ParticleSystem** | `Engine/ParticleSystem.cs` | Billboard particles with depth sorting |\n\n### Weapons \u0026 Items\n\n| Component | Files | Description |\n|-----------|-------|-------------|\n| **InventoryItem** | `Engine/Weapons/InventoryItem.cs` | Base item with block placement logic |\n| **Weapon** | `Engine/Weapons/Weapon.cs` | Base weapon class |\n| **WeaponGun** | `Engine/Weapons/WeaponGun.cs` | Firearm with separated fire intent / resolve / effects (multiplayer-ready) |\n| **WeaponPicker** | `Engine/Weapons/WeaponPicker.cs` | Block picker tool |\n| **FireIntent** | `Engine/Weapons/FireIntent.cs` | `FireIntent`, `FireResult`, `FireHitType` structs for server-authoritative combat |\n\n### Networking\n\n| Component | Files | Description |\n|-----------|-------|-------------|\n| **UdpTransport** | `VoxelgineEngine/.../UdpTransport.cs` | Raw UDP socket wrapper with async receive loop |\n| **ReliableChannel** | `VoxelgineEngine/.../ReliableChannel.cs` | Reliability layer: sequence numbers, ACKs, retransmission |\n| **NetConnection** | `VoxelgineEngine/.../NetConnection.cs` | Per-connection state: reliable channel, RTT, timeout |\n| **NetServer** | `VoxelgineEngine/.../NetServer.cs` | Server: connection management, player IDs, broadcast |\n| **NetClient** | `VoxelgineEngine/.../NetClient.cs` | Client: connect, world loading, tick sync |\n| **Packet** | `VoxelgineEngine/.../Packet.cs` | 24 packet types with binary serialization |\n| **ClientPrediction** | `VoxelgineEngine/.../ClientPrediction.cs` | Prediction state buffer with server reconciliation |\n| **SnapshotBuffer** | `VoxelgineEngine/.../SnapshotBuffer.cs` | Generic ring buffer for remote entity interpolation |\n| **WorldTransferManager** | `VoxelgineEngine/.../WorldTransferManager.cs` | Server-side world data fragmentation and streaming |\n| **WorldReceiver** | `VoxelgineEngine/.../WorldReceiver.cs` | Client-side fragment reassembly with checksum verification |\n\n---\n\n## Controls\n\n| Key | Action |\n|-----|--------|\n| **WASD** | Move |\n| **Mouse** | Look around |\n| **Space** | Jump / Swim up |\n| **Shift** | Walk (slow) / Swim down / Ledge safety |\n| **C** | Toggle noclip mode |\n| **1-4** | Select hotbar slot |\n| **Left Click** | Use item / Break block |\n| **Right Click** | Place block |\n| **F1** | Toggle debug menu |\n| **F3** | Toggle debug mode |\n| **F5** | Quick save |\n| **Esc** | Return to main menu |\n\n---\n\n## Building\n\n### Requirements\n\n- .NET 9 SDK\n- Visual Studio 2022+ or VS Code with C# extension\n\n### Build \u0026 Run\n\n```bash\n# Clone the repository\ngit clone https://github.com/sbarisic/RaylibGame.git\ncd RaylibGame\n\n# Build and run the client\ndotnet run --project Voxelgine\n\n# Run a dedicated headless server\ndotnet run --project VoxelgineServer -- --port 7777 --seed 666\n```\n\n### Run Tests\n\n```bash\ndotnet test\n```\n\n---\n\n## Project Status\n\n| System | Status | Notes |\n|--------|--------|-------|\n| Core Engine | ✅ Complete | Window, input, audio, resources, DI, logging |\n| Graphics | ✅ Complete | Chunks, lighting, frustum culling, deferred rendering |\n| Voxel World | ✅ Complete | Generation, block types, dual lighting, block change tracking |\n| Player | ✅ Complete | Movement, physics, inventory, health/respawn, remote rendering |\n| Physics | ✅ Complete | Quake-style with water buoyancy, split into pure math + world collision |\n| GUI | ✅ Complete | FishUI-based menus, HUD, server connect/host dialogs |\n| Entity System | ✅ Complete | Networked entities with spawn properties, authority flag |\n| Weapons | ✅ Complete | Server-authoritative fire intent/resolve/effects pipeline |\n| Animation | ✅ Complete | Lerp system, NPC animator with walk/idle/attack |\n| Multiplayer | 🔶 Partial | Client-server authoritative, prediction, interpolation, combat — chat/UI/bandwidth pending |\n| Particles | 🔶 Partial | Smoke, blood, fire effects — spark type planned |\n| NPC/AI | ⬜ Planned | Entity + pathfinding exist, no behavior trees |\n| Mod System | ⬜ Planned | Tracked in [TODO_MODS.md](TODO_MODS.md) |\n| Scripting | ⬜ Planned | Stub exists |\n\n---\n\n## License\n\nThis project is for educational and experimental purposes.\n\n---\n\n## Screenshots\n\n![Screenshot 3](img/m2n3Uh6ucn.png)\n\n![Screenshot 4](img/r2g4zhselE.png)\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsbarisic%2Fraylibgame","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsbarisic%2Fraylibgame","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsbarisic%2Fraylibgame/lists"}