Skip to content

LeoTTV21SA/UnEngine

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

48 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

UnEngine

UnEngine is a primarily 2D game engine made from scratch. It is built on a custom implementation of Entity Component System (ECS).

Features:

Building

After cloning the repo update the submodules:

git submodule update --init

Then generate the CMake project for your preferred build tool. Works with CMake > 3.20 and < 4. Tested with GCC, Clang and MSVC, requires C++17 or higher.

To build the example projects, set the UNENGINE_BUILD_EXAMPLES=ON CMake option.

Linux specific

For Debian & pals you need to install a few libraries:

sudo apt install libwayland-dev libxkbcommon-dev xorg-dev

TODO

Required

Improvements

  • Move to new repo
  • Add linux build compatibility
  • Update all dependencies
  • Refactor to h + cpp
  • Unify model, sprite, text, tilemap, and primitive renderers
    • Improve tilemap rendering
    • Fix sprite scaling
  • Redo camera for ecs
  • Redo UI system
    • How do we handle scaling?
  • Redo window and context system

New Features

  • Implement UPnP for automatic port forwarding
  • Add Hexagonal tilemap support
  • Implement enet (was already implemented)
  • Component serialization support

High Priority

Improvements

  • Fix tilemap collision
  • Update the vector library
  • Expand and improve the timing system
  • Improve resource loading and management
  • Add an option to change the transform pivot
  • Improve animation system
  • Rethink the transform hierarchy
  • Fix text resolution scaling
  • Fix sound bugs
  • Better integrate sounds with ecs
  • Fix tilemaps with multiple tilesets

New features

  • Add debug tools
    • Camera
    • Frame advance
    • Better Logging
    • Info
  • Add animation support to tilemap
  • Add TOML or similar config support
  • Add multi camera support

Low Priority

Improvements

  • Improve model loading and rendering
  • Add transparency to model rendering
  • Redo lighting system
  • Fix physics fps bugs
  • Fix primitive rendering
  • Update documentation
  • Fix shader and renderer destructors
  • Serialization of all engine components
  • Investigate compatibility modes for older hardware

New Features

  • Create a particle system
  • Add 3D animation support
  • Add multithreading support
  • Copy entity function
  • Add angular momentum
  • Add restraints
  • Add joints
  • Add raycasting
  • Add quaternion support
  • Add anti-aliasing
  • Add extrapolation functions

Idea for new UI system

Rip off unity again, we have a ui component and ui canvas:

struct UIComponent
{
    UICanvas*
    ...
}
struct UICanvas // not a component
{
    enabled
    size //relative to viewport
    offset //relative to viewport
    rotation 
}

All ui elements will be transformed using a canvas instead of the camera's view, still have to figure out what to do about projection, probably just use ortho. This means the UI elements will use standard coordinates relative to the canvas instead of ndc like it was. Makes it easier to position things, make menus, simplify code, and hide/show things, also unifies ui element implementation instead of it being renderer specific.

About

A primarily 2D game engine build on ECS

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C 88.1%
  • C++ 11.9%