74 lines
1.7 KiB
Markdown
74 lines
1.7 KiB
Markdown
# Onyx Engine
|
||
|
||

|
||
|
||
**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
|
||
|
||
``` |