Onyx-Engine/README.md

74 lines
1.7 KiB
Markdown
Raw Permalink Normal View History

2025-05-18 18:32:39 +00:00
# Onyx Engine
![Onyx Banner](.github/Banner.png)
**Onyx** is a modern, modular, and fast C++ game engine built for real-time 2D applications.
---
2025-05-18 18:33:05 +00:00
## 🧩 Features
2025-05-18 18:32:39 +00:00
- 🔧 **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.
2025-05-18 17:24:00 +00:00
2025-05-18 17:26:46 +00:00
## 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
2025-06-03 21:20:15 +00:00
# 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
```