Skip to content

Latest commit

 

History

93 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Nova

Nova is a lightweight 2D game development framework written in C++20 using OpenGL 3.3. It's designed to make building simple games and applications easier and more straight-forward.

Currently, Nova has been tested only on Windows and Linux.

✨ Features

While still in the early stages of development, Nova provides the following features:

  • Texture loading and management
  • Shader abstraction and usage
  • Mouse and Keyboard input handling
  • Integration with Dear ImGui for building UIs
  • Basic Asset Manager for streamlined resource handling
  • Modular Scene System with functions for lifecycle management (Start, Update, Draw, ImGuiDraw, etc.)
  • Spritesheet support
  • Entity Component System (ECS) based on entt

🔮 Roadmap

Planned features coming soon:

  • 🔊 Sound support
  • Event system (input dispatch, custom events)

📦 Dependencies

Nova uses the following libraries:

🚀 Getting Started

🛠 Requirements

  • OpenGL 3.3+ compatible GPU
  • CMake 3.12+
  • C++20-compatible compiler

Running the sandbox project

In order to run the sandbox project (in the sandbox directory), follow these steps:

  1. Clone the repository:
git clone https://github.com/landiluigi746/Nova.git
cd Nova
  1. Build Nova and the sandbox project:

💡 You can also use your favourite IDE to build the projects and run the sandbox

# you can set BUILD_TYPE to one of "Debug", "RelWithDebInfo" or "Release"
cmake -S . -B build -DCMAKE_BUILD_TYPE=Debug
cmake --build build
  1. Run the sandbox project:
# or the build type you chose
cd bin/Debug
./sandbox
  1. Have fun using Nova!

Using Nova with CMake

The suggested way of using Nova in your own CMake project is to use FetchContent.

include(FetchContent)

FetchContent_Declare(
    Nova
    GIT_REPOSITORY https://github.com/landiluigi746/Nova.git
    GIT_TAG master
    GIT_SHALLOW TRUE # make sure to use a shallow clone, you don't need the full repo history
)
FetchContent_MakeAvailable(Nova)

Now you can access the exposed target Nova in your CMake project.

# in your CMakeLists.txt (example)
add_executable(MyProject main.cpp)
target_link_libraries(MyProject PRIVATE Nova)

📝 License

Nova is licensed under the MIT License.

📝 Acknowledgements

Huge shoutouts to youtubers TheCherno and Low Level Game Dev for their amazing tutorials and projects, which served as a great inspiration for this project.

👥 Contributing

Contributions are welcome! If you find any bugs or have any suggestions, please open an issue or submit a pull request. Contributing guidelines will be added soon.

Drop a ⭐ if you like this project!

About

Nova is a lightweight game development framework written in C++20 using OpenGL 3.3. It's designed to make building games easier and more user-friendly.

Topics

Resources

Stars

5 stars

Watchers

0 watching

Forks

Contributors

Languages