2022 February
- Generate particles on GPU to allow for particle re-spawning
- Expose data-driven particle creation pipeline
- Add particle manager & support for multiple active particle systems
- Snap preview item placement to ground
- Smoothen item preview placement
January
- Replace per-texture samplers with a handful of global ones
- Slim down GameObjects (424 to 360 bytes each)
- Unify GameObject creation
2021 December
- Optimize Transform class (cut size from 256B to 120B)
- Make miner's inventories accessible
November
- Add keybinding for dropping items (V)
- Add speaker object which can play positional audio and be toggled by the player
- Add support for positional audio sources & configurable reverb
- Add mineral deposits & miners
- Fix prefab creation/deletion/duplication/renaming
- Auto detect modifications of textures/prefab/meshes/audio files
October
- Allow player to wear certain items (headlamp)
- Track and optimize GPU memory usage
- Improve startup times by lazily loading textures/materials/descriptor sets
September (0.8.7)
- Display wires as simulated soft body tube
- Refactor transform system & game loop (add fixed update)
August
- Show preview item placement
- Support holding an item in each hand
- Serialize player inventory
July
- Rewrite terrain generator to use marching cubes algorithm
June
- Replace home-brewed profiler with palanteer
- Port terrain generation to GPU (async compute)
- Make shader compilation async again
May (0.8.6)
- Begin adding support for terrain biomes & blending between
- Add support for calling functions with arguments & non-void return types from in-game command line
- Add support for calling C++ functions from script
- Add support for binding function pointers
April
- Display interactive inventory screen (tab)
- Add basic UI framework based on Rect Cuts
- Add support for area lights (using Linearly Transformed Cosines)
- Add support for function calls in scripting language
- Support hot reloading externally-edited terminal scripts
- Support reading terminal scripts from file
- Add shader include support
- Add collision to terrain (active zone moves with player)
March
- Refactor graphics pipeline & descriptor set creation to be much more efficient
- Optimize & multithread terrain generation
- Make road meet terrain smoothly
February
- Add support for road generation
- Add sounds for vehicle motor
January
- Add vehicle camera
- Add vehicles
- Reduce memory usage of dynamic uniform buffers by allowing lazy initialization
- Define prefabs using "template" game objects
2020 December
- Add StringID (hashed string)
- Add GameObjectIDs (GUID)
- Add ResourceManager
- Add first pass at vehicles
- Various editor improvements (scene/object creation/duplication etc.)
November
- Add mesh target based coil springs
- Dynamic buffer fixes
- Add soft body type that can be initialized from mesh
- Add first position-based dynamics solver
- Add keybinding editor
- Add plugables system to connect computers to peripherals
October (0.8.5)
- Further work on compiler
September
- Further work on compiler
August
- Improve scripting language infastructure (diagnostics, intermediate representation)
July
- Add mesh drag-drop import support (glb/gltf only)
- Add support for having multiple specialization constants per stage
- Optimize text rendering by keeping text vertex buffer resident
- Move most generated files to FlexEngine/saved/
June
- Improve shader/material UI windows
- Add mipmapping support
- Fix font SDF rendering
May
- Add wireframe shader
- Add tesselation & sampling LOD levels to water mesh
- Make water generation infinite & vastly more optimial (utilize SIMD & multithreading)
April (0.8.4)
- Fix water generation & center around camera
- Add directory watch to auto-recompile shaders on file modification for lightning-fast iteration times
- Add more granular shader compilation using shaderc library
- Add basic terrain generation/streaming
March
- Finish implementing edior gizmos (translate, rotate, scale)
- Finish linux port
- Remove glad
- Add support for 64 bit compilation
- Add volk to handle Vulkan loading
February
- Fix remaining linux compilation errors/warnings
January
- Fade out gizmos when facing head-on
2019 December (0.8.3)
- Add support for multiple material IDs per mesh
- Add unit test framework
- Start porting to linux
November
- Add compute-based GPU particles
- Calculate render pass image transitions automatically (mini render graph)
October (0.8.2)
- Wrap render passes in abstraction
- Improve scene management
- Improve TAA implementation
September
- Improve RenderDoc API integration
- Improve editor sprite rendering (fade when close, fix billboard issue)
August
- Add GPU timings via timestamps
July
- Lots of cleanup of Vulkan renderer
- Add first pass of TAA (temporal anti-aliasing)
June
- Add Vulkan debug markers
- Add debug preview of cascades
- Add cascaded shadow mapping to GL & Vulkan
- Lots of cleanup, refactoring, and bug fixing
May
- Add shadow mapping to Vulkan
- Add screen-space ambient occlusion to Vulkan & OpenGL
- Remove world position from GBuffer, reconstruct from depth instead
April (0.8.1)
- Add async Vulkan shader compilation on bootup (based on shader file checksums)
- Add shader hot-reloading support to Vulkan
- Add font metadata viewer
- Track memory allocations via custom new/delete/malloc/free/etc.
- Batch render objects (editor/gameplay > deferred/forward > shader > material)
- Use negative viewport heights in Vulkan to avoid negation in shader
- Add SDF font generation & rendering support to Vulkan
- Switch to using reverse Z depth buffers
March
- Add asynchronous vulkan shader compilation using a shader file contents checksum to only recompile when changes have been made
- Add console command support and several commands (reload scene, reload shaders, ...) (accessed via ~ key)
- Get Vulkan renderer mostly back up and running
February
- Add Gerstner waves
- Add abtract syntax tree generator/evaluator
- Add tokenizer
- Add many text editor features
- Add terminals & terminal camera
- Add support for world-space text rendering
January (0.8.0)
- Add basic keymapping UI (Window > Key Mapper)
- Allow callbacks to be given a priority
- Add input event callbacks
- Add callback functionality
- Add input binding file (
saved/config/input-bindings.ini
) - Improve compile times (full build: ~45s -> ~25s)
- Add engine carts which drive cart chains
- Make carts that bump into each other connect up into a chain
- Markup OpenGL render passes for easier debugging in RenderDoc
- Save console output to FlexEngine.log periodically
- Replace Assimp with tinygltf
2018 December (0.7.0)
- Add carts that ride along tracks (create with C, place onto nearest track with SPACE)
- Add RenderDoc API integration to allow capturing frames with a keypress (F9)
- Add support for time dilation
- Add support for pausing and single stepping simulation
- Allow player to edit tracks
- Save track data to file
- Save bootup times to file (
saved/bootup-times.log
) - Fix player direction handling at junctions
November
- Allow screenshots to be taken in-game (using numpad 9 key)
- Add basic controls to allow player to place tracks (Y to enter placement mode, RT to place, LT to finalize, X to lock in/out, LT/RT to move along track)
- Add basic keyboard movement inputs
- Bring up rename UI on F2
- Heavily optimize debug rendering
- Add basic sound synthesis (play notes using 4-9 keys)
- Add ability to change overhead camera zoom level (L & R joystick press)
- Improve "overhead" camera to follow player position & rotation
- Allow player to switch direction on a track by holding right joystick in a direction
October
- Add tracks (Bezier Curves which the player can move along for speedy travel) (X button to connect/disconnect)
- Separate depth-aware editor objects from depth-unaware
- Triplanar mapping shader
- Prevent input handling when window doesn't have focus
- Add first person controller (with separate pitch for look dir & capsule)
- Add track junctions to handle switching tracks
- Improve transform gizmo implementation (namely rotation & scale)
- Fade out axes when facing head-on
Feb 2017 - Sept 2018
- Unaccounted for 🤷