Welcome to Evoker Engine¶
Evoker Engine is a complete C# game engine with Vulkan rendering support using Silk.NET. It provides a powerful, modern framework for creating 2D and 3D games with extensive modding support.
Key Features¶
đŽ Complete Game Engine¶
- Application framework with window management and main loop
- Layer-based architecture for organizing game logic
- Comprehensive event system for input and window events
- Advanced time management with delta time and FPS tracking
đ¨ Modern Graphics¶
- Full Vulkan integration using Silk.NET
- Multi-platform support (Windows, Linux, macOS, iOS, Android)
- Automatic platform-specific Vulkan surface extensions
- Swapchain management and rendering pipeline
đšī¸ Rich Input System¶
- Keyboard and mouse input with polling support
- Complete gamepad/controller support with deadzone handling
- Hot-plug support for controllers
- Multiple controller support
đī¸ Entity Component System (ECS)¶
- Efficient entity and component management
- Built-in components for transforms, rendering, cameras, and inventory
- Scene management system
- Camera controls and projection matrices
đ¯ Game Systems¶
- Inventory System: Items, stacks, weight limits, rarity system
- Block System: Minecraft-style blocks with properties and events
- Crafting System: Shapeless, shaped, and smelting recipes
- Dimension System: Multiple worlds with custom properties
đ§ Powerful Modding¶
- Easy mod creation with lifecycle hooks
- Automatic mod discovery and loading
- Dependency resolution
- Comprehensive ModAPI for content registration
Quick Start¶
using EvokerEngine.Core;
using Silk.NET.Input;
// Create application
var app = new Application("My Game", 1280, 720);
// Add your game layer
app.PushLayer(new MyGameLayer());
// Run the application
app.Run();
// Custom layer implementation
class MyGameLayer : Layer
{
public MyGameLayer() : base("Game Layer") { }
public override void OnAttach()
{
Logger.Info("Game initialized!");
}
public override void OnUpdate(float deltaTime)
{
// Update game logic
}
public override void OnRender()
{
// Render game objects
}
public override void OnEvent(Event e)
{
if (e is KeyPressedEvent keyEvent)
{
if (keyEvent.KeyCode == Key.Escape)
{
Application.Instance.Close();
}
}
}
}
Getting Started¶
-
Quick Start
Get up and running in minutes with our quick start guide.
-
Game Development
Learn how to create 2D and 3D games with Evoker Engine.
-
Modding
Create mods and extend the engine with custom content.
-
API Reference
Explore the complete API documentation.
Platform Support¶
Evoker Engine runs on multiple platforms with unified API:
- â Windows - Full support with Win32 Vulkan surface
- â Linux - Full support with XCB Vulkan surface
- â macOS - Full support with Metal Vulkan surface
- â iOS - Mobile support with Metal Vulkan surface
- â Android - Mobile support with Android Vulkan surface
Architecture¶
The engine is organized into clean, modular namespaces:
EvokerEngine.Core/
âââ Core/ # Application, layers, logging, time
âââ Graphics/ # Vulkan rendering system
âââ Input/ # Keyboard, mouse, gamepad input
âââ Events/ # Event system
âââ ECS/ # Entity Component System
âââ Scene/ # Scene and camera management
âââ Resources/ # Resource management
âââ Inventory/ # Item and inventory system
âââ Blocks/ # Block system
âââ Crafting/ # Recipe system
âââ Modding/ # Mod support
âââ World/ # Dimension system
Community & Support¶
- đ Documentation
- đ Report Issues
- đŦ Discussions
- đ Contributing
License¶
This project is open source.