Skip to content

Latest commit

 

History

History
108 lines (99 loc) · 4.84 KB

todo.md

File metadata and controls

108 lines (99 loc) · 4.84 KB

Lornock

Todo:

  • Make billboarding work on a per face basis
  • Refactor camera into camera struct
  • Have things on the world which change over time
  • Hot reloading for assets
  • Create "assets" memory pool which can dynamically grow, and will release files when they're not needed
    • Change loadFromFile interface to load file into provided data
  • Remove all references to transient arena, instead access through TempArena
  • FIX THE FUCKING QUAT FROM PITCH YAW ROLL FUNCTION!
  • Refactor code to use Quaternions 100% of the time
  • Create UI for time jump
  • Rewrite UI system so that it is more general purpose and can handle the semi-complex layouts I desire

In progress:

  • Create star system
  • Simple particle system
    • Implement basic dust cloud system
    • Have multiple cloud textures, vary particle szie
    • Spawn dust particles within ellipsoid
    • Fade alpha from center of cloud with x^2/a^2 + y^2/b^2 + z^2/c^2 formula
    • Add ability to have multiple clouds
    • Profile code and determine if I need to optimise the particles
      • Stop sorting each frame
      • Use GPU instancing
      • Simulate particles on the GPU
    • Use MemoryArenas to have a dynamic set of shit.
  • Remove cmake
    • Create non-cmake build script for Windows
    • Create non-cmake build script for Linux
  • Fix the whole billboarding/camera rotation shenangian
    • HOLY FUCK I'VE SPENT LIKE A WEEK ON THIS SHIT.
    • Refactor code into self contained chunks
    • Create player as a "point" which can traverse the chunk
    • Display the player quad the correct orientation (perpendicular to the face it's on, face towards the camera)

Done:

  • Create more cells in the world
  • Create basic UI toolkit
    • Render rectangle
    • Render icons
    • Create toolbar
    • Render text
  • Add items to the world which can be picked up and placed in inventory
    • Create serializer, with easy way to swap out implementations (ie. binary vs debug plaintext)
    • Create "world info" structure, which gets serialized, loaded etc.
      • Serialize camera position and rotation
      • Serialize initial state of the environment
    • Add ability for player to interact with environment put this into timeline
    • Create player inventory
  • Fix number keys not triggering input events
  • Windows support
    • Split linux platform code into separate file
    • Create "interface" which needs to be implemented by new platforms
    • Get windows compiling
    • Write win32 platform code
  • Store a MemoryArena inside a Timeline struct, and actually use it
  • Create assert alternative ensure, which will make a SDL pop up window occur.
  • Make time jumps not have to access the disk.
    • Write ActionChunks into a temporary arena
    • Then copy back into ActionArena once complete
    • THEN when the user ACTUALLY wants to access the disk, serialize and dump everything
  • Lighting
    • Add super basic lighting
  • Add OBJ file loader
  • Create a temporary memory pool / arena which can be used to allocate memory which will be cleared after a frame.
  • Fix the weird wrong face bug
  • Refactor TimeBox back into GameState
    • Create a MemoryArena for storing this memory, and an ActionPool struct to put in MemoryBlocks
    • Refactor TimeBox to use MemoryArena for it's actions instead of re-parsing at runtime
    • Ensure the TimeBox is GOOD CODE.
      • Make TimeBox stateless, parse in TimeBoxIndex to the functions to control where it searches from
  • Begin work porting time travel code over
    • Create Action datastructures
    • Parse timeline file
    • Plan how LARGE timelines will be handled (at least initially)
    • Play basic timeline file
    • Write basic timeline file
    • Have timelines be both playing back and written (ie. bring back to feature parity with original codebase)
  • SWITCH TO -Wall -Werror

Dev tooling:

  • Create dev.sh (and dev.bat) environment with edit, build, and run macros
  • Create script which will list all TODOs and FIXMEs

Eventually:

  • Pretty pixel art effect skybox generation
  • Create a platform side "renderer", and have the game just send commands to it
    • I need to experiment with what lornocks renderer "is" until I can actually do this though. No point making some obtusely generalised thing which I don't reaaaallly need
  • Run on OSX

Manifesto

  • Game is going to be voxel-driven 3D with 2D billboarded characters
    • Environment is easy to pixel-voxel
    • Characters are easy to animate
  • Will be made in C style C++
    • avoid STL
    • Maybe use MemoryArenas
    • uintX typedefs
    • dynamic arrays (maybe use delix's?)
  • Will create an anonymous union'd command buffer renderer
  • Focus on splitting "platform layer" from "game" in order to hopefully promote clean code
  • Use HandmadeMath and GLAD
  • Fast iteration with low compile time