A 2D/3D game engine
Go to file
2024-06-02 14:29:59 +01:00
doc Add test models and try to improve player controller 2024-03-14 19:37:44 +00:00
include rename some symbols 2024-06-02 14:29:59 +01:00
res/engine formatting 2024-05-29 17:05:31 +01:00
screenshots add screenshots 2024-04-02 13:45:00 +01:00
src rename some symbols 2024-06-02 14:29:59 +01:00
test rename some symbols 2024-06-02 14:29:59 +01:00
vendor Finish organising libraries 2024-06-02 12:55:04 +01:00
.clang-format Begin refactor (broken builds) 2024-06-01 23:03:39 +01:00
.gitattributes upload blender files with git lfs 2023-05-29 15:55:33 +01:00
.gitignore ignore aps files 2023-02-19 18:29:25 +00:00
.gitmodules tidy up libraries 2024-06-02 11:49:09 +01:00
CMakeLists.txt Finish organising libraries 2024-06-02 12:55:04 +01:00
CODE_STYLE.TXT Begin refactor (broken builds) 2024-06-01 23:03:39 +01:00
config.h.in begin changing style 2023-04-29 15:22:25 +01:00
README.md update readme 2024-05-04 01:25:35 +01:00
Rendering Plan.txt optimise ecs; build static mesh render lists 2023-08-22 23:41:08 +01:00

engine v0.2.0

a random game engine thing. Now finally with ECS!

TO DO LIST

High priority (tomorrow)

  • Support dynamic shadow mapping (at least for shadows cast from the scene's sun)

Medium priority (next week)

  • UI generator exposed at the Application level (Scene UI Systems could use this to draw menus every frame)

  • Proper IBL with an irradiance map

  • Multiple lights (dynamic and static; do not need to be shadow casting)

  • More accurate raycast collision detection (Perhaps only sphere, capsule, OBB colliders. Mesh collision is probably unneccesary.)

Low priority (next month)

  • Explicit post processing pass exposed by the GFXDevice that can be used for bloom, AA, etc

  • Audio!!

  • Support animations (skinned meshes / morph targets)

  • Game controller support (controller detection, input, feedback etc in window.cpp; integration with input_manager.cpp)

DONE

For mesh rendering, give every mesh-renderer a ShaderMaterial which, depending on the shader, defines how the mesh reacts to light and also stores a reference to its texture(s). -- Also make a model loader that works with multiple meshes (by creating many objects).

The engine needs an event/message system, this will be helpful for collision detection. Also helpful for general gameplay logic.

The entire vulkan backend needs redesigning without so many classes

Place all instances of a particular component in contiguous memory: I.e., a scene holds many std::vectors, one for each type of component. These vectors are looped through every frame. This should optimise things by improving the memory layout of the program, significantly reducing cache misses.

Implemented glTF file loader

Added a PBR shader with albedo, normal, metallic, roughness, and AO textures

Added the BVH AABB tree made in Summer to start a much better Collision system.

The CameraControllerSystem now uses raycasting to enable FPS-style player movement.

Added static soft shadows.

Sort out LOG_X calls and ensure DEBUG, TRACE, INFO, etc are being used appropriately

Screenshots

A screenshot