Skip to content

Latest commit

 

History

History
90 lines (66 loc) · 2.18 KB

File metadata and controls

90 lines (66 loc) · 2.18 KB

Nelson Engine logo

Nelson Engine

A lightweight C++ game engine and editor for rapid prototyping.

Built with OpenGL, CMake, and an intentionally small, portable codebase.

Overview

The editor/runtime follows a lightweight ECS-style flow with JSON scene I/O.

Nelson Architecture Diagram

Features

  • Load and display 3D models
  • Basic scene management with load/save support
  • Simple editor UI for scene properties
  • Real-time rendering with OpenGL

Requirements

Currently supports macOS and Debian-based Linux distributions.

  • C++17 compiler (g++ or clang++)
  • CMake 3.1 or newer
  • OpenGL development libraries

Dependencies

Most dependencies are vendored directly in the repository:

  • GLEW for OpenGL extension loading
  • GLFW for windowing, input, and context creation
  • GLM for math utilities
  • SOIL2 for texture and image loading
  • Dear ImGui for the editor UI
  • tinyobjloader for OBJ and MTL model loading

Scene serialization currently uses an internal parser/writer:

  • src/SimpleJson.h for lightweight JSON parsing and writing without an external JSON dependency

Project Layout

Project-specific content lives under projects/<project-name>/:

projects/
  default/
    project.json
    scenes/
      default.scene.json
    assets/
      models/
        sponza/

Shared fallback assets remain in res/ for common shaders, images, and legacy scenes.

Quick Start on Linux

Install system packages:

sudo apt install cmake build-essential libglew-dev libglfw3-dev libglm-dev libgl1-mesa-dev libxinerama-dev libxcursor-dev libxi-dev

Configure and build:

mkdir -p build
cd build
cmake ..
make

Run from the project root:

./Nelson

Run with an explicit startup scene JSON:

./Nelson projects/default/scenes/default.scene.json