Onyx-Engine/README.md
2025-06-03 21:20:15 +00:00

74 lines
1.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Onyx Engine
![Onyx Banner](.github/Banner.png)
**Onyx** is a modern, modular, and fast C++ game engine built for real-time 2D applications.
---
## 🧩 Features
- 🔧 **Onyx Engine** The core runtime, managing rendering, layers, and systems.
- 🖥️ **Obsidian Editor** A standalone GUI editor powered by ImGui and Onyx for scene editing, live profiling, and asset management.
- 💡 **Glint Lighting Engine** A flexible and performant 2D dynamic lighting system.
## Project Layout
'uaid':
Unique asset ID: example: 12345678901234567890123456789012
it's 32 chars long and is unique for every loaded asset.
The Engine will auto create everything. Im debating between a unity asset system, where the actual data and metadata
are packed into one file. the other option is to have a system like Hazels, where you import a file and it will
create a file like a Hazel asset that links to an image file or a 3d model.
```yaml
# This file is sored in a folder of the same name
# ./MyGame/MyGame.onx
# will set project root as ./MyGame/MyGame
# then will load all assets inside the ./MyGame/MyGame/Assets/MyGame.oxpk
# MyGame.onx
project:
name: MyGame
version: 1.0.0
description: A top-down RPG made in the Onyx Engine
author: <Author name>
assets:
- type: texture
uaid: <len 32 int>
path: res://assets/textures/player.png
uid: player_texture
- type: audio
uaid: <len 32 int>
path: res://assets/sounds/theme.ogg
uid: theme_music
scenes:
- id: main_menu
uaid: <len 32 int>
file: res://scenes/main_menu.yaml
- id: level1
uaid: <len 32 int>
file: res://scenes/level1.yaml
settings:
resolution: [1920, 1080]
fullscreen: false
vsync: true
language: en-US
```