8000 GitHub - stojanov/prism: A hobby 3D game engine · GitHub
[go: up one dir, main page]

Skip to content
{"props":{"color_mode":"dark","logged_in":false,"marketing_page":false,"home_path":"/","login_path":"/login?return_to=https%3A%2F%2FGitHub.com%2Fstojanov%2Fprism","signup_path":"/signup?ref_cta=Sign+up\u0026ref_loc=header+logged+out\u0026ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E\u0026source=header-repo\u0026source_repo=stojanov%2Fprism","signup_enabled":true,"is_signup_controller":false,"show_search_and_nav":true,"hide_search":false,"private_mode_enabled":false,"should_use_dotcom_links":true,"auth_hydro_click":"{\"event_type\":\"authentication.click\",\"payload\":{\"location_in_page\":\"site header menu\",\"repository_id\":null,\"auth_type\":\"SIGN_UP\",\"originating_url\":\"https://GitHub.com/stojanov/prism\",\"user_id\":null}}","auth_hydro_click_hmac":"f30cf6f2d780b928dbf062eeb74c832b699c38c3540f1f6632d46619ceec666f"}}
stojanovPublic

About

A hobby 3D game engine

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Repository files navigation

Prism Game Engine

Prism Logo

Description

My take on a 3D game engine, something i have been working on for quite a while as a hobby project also as a school assignment. Mainly working on it to learn game engine development and modern c++ techniques. Key focus being rouge like mechanics. The current version is very barebones and more like a OpenGL wrapper, the key tasks other than planned features would be:

  • Better error handling and asserts on the release build
  • Rditor and engine separation
  • Scene graph
  • ECS integration

Planned Features

  • Major rewrite/redesign planned

  • Scene Renderer
  • Deffered Shading
  • Shadow Mapping
  • Post Processing (AO, Bloom, ect...)
  • Multithreaded Game Event System
  • Multithreaded Rendering Queue
  • Procedural Level/World Generation
  • Audio Engine (OpenAL)
  • Networking Layer (Asio)
  • Embeded Scripting Language probably lua

Getting Started

Clone the repository and get all the submodules

git clone --recursive https://github.com/stojanov/prism
cd prism

It is ment to but run directly into an IDE that supports the cmake system, you can also try to generate the project files manually

# Unix
cmake ./
# Windows
cmake -G "Visual Studio 16" -A "Win64" ./

Once you compile you will be ready to peek around the source code, the best way to start is of course main.cpp found under src/game/main.cpp:

Prism::Application app(1280, 720, "Prism");
	
app.CreateLayer<Prism::Examples::VoxelExample>("Voxel Example");
	
app.Run();

Here we can attach a layer/state to be run on the engine, create a layer and plug it into the Prism::Application, that should fairly simple just follow the interface src/prism/Interfaces/ILayer.h which contains the base methods for running a layer.

Keep in mind that every layer should have a constructor that recives a Ref<Core::SharedContext> and a name, you can check out some of the src/prism/Examples for implementing a layer.

Built in systems

  • Voxels
    Screenshot
    • Voxel mesh generation based on a height map(Perlin Noise) and infinite world generation
    • All of the voxel modules can be found under the src/prism/Voxels
    • Chunk mesh generation only supports generating a mesh for a height map but will add more features in the future
    • Chunk mesh generation offloaded into a background thread via a thread pool can be found in src/prism/Voxels/ChunkManager.cpp

Work in Progress

  • Major Refactor/Restructure
  • Camera System/Controller Rework
  • Entity Component System
  • Base Editor Controls
  • Better documentation

Changelog

  • Added a base entity component system (The system part is still under development)
  • Added phmap as a module

Credits

TheCherno ChiliTomatoNoodle TheThinMatrix Hopson for the inpiration

License

GPL

About

A hobby 3D game engine

Topics

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

0