diff --git a/README b/README index d093e19..b31df39 100644 --- a/README +++ b/README @@ -14,9 +14,12 @@ _________________ .. 1.2 License .. 1.3 File format specifications ..... 1.3.1 Entity -..... 1.3.2 Configuration Variables a.k.a cvars +..... 1.3.2 Configuration Variables a.k.a cfg-vars ..... 1.3.3 Keybindings ..... 1.3.4 Level/Scene +..... 1.3.5 Materials +..... 1.3.6 Mesh/Geometry +.. 1.4 Notes on entity Systems 2 Things TODO .. 2.1 DONE Input .. 2.2 DONE Shaders @@ -40,79 +43,108 @@ _________________ .. 2.20 DONE Camera .. 2.21 DONE Test render .. 2.22 TODO Bounding Boxes -.. 2.23 TODO File extension checking for asset loading -.. 2.24 DONE Materials -.. 2.25 DONE Mesh/Model -.. 2.26 TODO Add modifiers to input maps to enable combinations for example, c-x, m-k etc -.. 2.27 DONE Heirarchical Transforms -.. 2.28 DONE Materials with textures -.. 2.29 DONE Lights! -.. 2.30 DONE Fix problems with texture units -.. 2.31 CANCELED Draw light volumes -.. 2.32 DONE Fix problems with frustrum culling -.. 2.33 TODO 2d drawing routines -.. 2.34 DONE Gui -.. 2.35 CANCELED Image based lighting? -.. 2.36 CANCELED Deferred rendering? -.. 2.37 DONE Fix mouse bugs on windows -.. 2.38 TODO Configuration/Settings load/save handling -.. 2.39 DONE Fix mousewheel bugs and gui not responding to mousewheel input -.. 2.40 TODO Ability to mark meshes for debug rendering with possibility of different color for each? -.. 2.41 TODO Setup cross compilation with mingw or stick to msvc? -.. 2.42 TODO Add marking or queuing up custom meshes for debug render with particular transform and color for rendering bounding spheres for example -.. 2.43 DONE Toggleable debug drawing for meshes -.. 2.44 TODO Interleaved vbos for meshes and changes to blender exporter accordingly -.. 2.45 TODO Enumerate and save all the uniform and attribute positions in shader when it is added and cache them in shader object? -.. 2.46 TODO Physics/Collision detection in 2d -.. 2.47 TODO Complete gui integration -.. 2.48 TODO Allow passsing base path as commandline argument? -.. 2.49 DONE Add strings and booleans to variant types -.. 2.50 DONE Fix Key release not being reported -.. 2.51 TODO Better handling incase assets folder is not found? -.. 2.52 DONE OpenAL not working in releasebuilds -.. 2.53 DONE 3d sound using OpenAL -.. 2.54 TODO Ogg format loading and playback -.. 2.55 TODO Sound streaming -.. 2.56 TODO Implment missing sound source properties (inner/outer cone, getting sound source data) -.. 2.57 TODO Ingame console and console commands etc -.. 2.58 TODO Allow binding/unbinding input maps to functions at runtime, for example if input map "Recompute" is triggered, it would call some function that can recompute bounding spheres. -.. 2.59 TODO Better handling of wav format checking at load time -.. 2.60 TODO Array-based Hashmaps -.. 2.61 TODO Sprite sheet animations -.. 2.62 TODO Replace orgfile with simple text readme and reduce duplication? -.. 2.63 TODO Ray picking -.. 2.64 TODO Shadow maps -.. 2.65 TODO Log output to file on every run -.. 2.66 TODO Print processor stats and machine capabilites RAM etc on every run to log. -.. 2.67 TODO Milestone: Pong! -.. 2.68 TODO Do input maps really need to be queried by their string names? -.. 2.69 TODO Reloading shaders? -.. 2.70 TODO Separate Debug/Editor camera from the active camera in the scene that can be switched to at any time -.. 2.71 DONE Live data views in editor -.. 2.72 DONE Camera resize on window reisze -.. 2.73 DONE Resizable framebuffers and textures -.. 2.74 DONE Support for multiple color attachments in framebuffers? -.. 2.75 TODO Multisampled textures and framebuffers -.. 2.76 DONE Better way to store and manage textures attached to framebuffers -.. 2.77 TODO Validate necessary assets at game launch -.. 2.78 TODO Gamma correctness -.. 2.79 DONE Variant type -.. 2.80 TODO Log and debug/stats output in gui -.. 2.81 TODO Editor -.. 2.82 TODO Event Subsystem -.. 2.83 TODO Keybindings for gui? -.. 2.84 TODO Textual/Binary format for data serialization and persistance -.. 2.85 TODO Better logging -.. 2.86 TODO Hatching/Ink rendering style -.. 2.87 DONE Fix frustum culling sometimes not working -.. 2.88 DONE Compile and test on windows -.. 2.89 TODO Array based string type comptible with cstring(char*) -.. 2.90 DONE Fix mouse bugs -.. 2.91 DONE Fix -.. 2.92 DONE issues with opengl context showing 2.1 only -.. 2.93 TODO Improve this readme -.. 2.94 TODO ??? -.. 2.95 TODO Profit! +.. 2.23 DONE Fix input lag and other framerate related issues +.. 2.24 TODO File extension checking for asset loading +.. 2.25 DONE Materials +.. 2.26 DONE Mesh/Model +.. 2.27 DONE Add modifiers to input maps to enable combinations for example, c-x, m-k etc +.. 2.28 TODO Only allocate hashmap bucket when required +.. 2.29 TODO Mapping actions to keybindings, for example map action "Jump" to Space key etc +.. 2.30 DONE Heirarchical Transforms +.. 2.31 DONE Materials with textures +.. 2.32 DONE Lights! +.. 2.33 DONE Fix problems with texture units +.. 2.34 CANCELED Draw light volumes +.. 2.35 DONE Fix problems with frustrum culling +.. 2.36 TODO 2d drawing routines +.. 2.37 DONE Gui +.. 2.38 CANCELED Image based lighting? +.. 2.39 CANCELED Deferred rendering? +.. 2.40 DONE Fix mouse bugs on windows +.. 2.41 DONE Configuration/Settings load/save handling +.. 2.42 DONE Fix mousewheel bugs and gui not responding to mousewheel input +.. 2.43 TODO Ability to mark meshes for debug rendering with possibility of different color for each? +.. 2.44 TODO Switch to completely static allocation of entites i.e. have a static array of MAX_ENTITIES size. This way we can store pointers to entites and they'll still be in an array and fast to process. +.. 2.45 DONE Setup cross compilation with mingw or stick to msvc? +.. 2.46 TODO Add marking or queuing up custom meshes for debug render with particular transform and color for rendering bounding spheres for example +.. 2.47 DONE Toggleable debug drawing for meshes +.. 2.48 TODO Interleaved vbos for meshes and changes to blender exporter accordingly +.. 2.49 TODO Enumerate and save all the uniform and attribute positions in shader when it is added and cache them in shader object? +.. 2.50 TODO Physics/Collision detection in 2d +.. 2.51 TODO Complete gui integration +.. 2.52 TODO Allow passsing base path as commandline argument? +.. 2.53 TODO Remove components and switch to "Fat Entities" i.e. one entity struct contains all combinations +.. 2.54 TODO Use variants for material params +.. 2.55 TODO Improve Material Parameters/Pipeline Uniforms/Instance Uniforms are handled +.. 2.56 TODO Fix light rotation/direction bugs +.. 2.57 DONE In second refactor pass, use entities everywhere, no need to pass in transform and model separately for example since they're both part of the same entity anyway +.. 2.58 DONE Show SDL dialogbox if we cannot launch at all? +.. 2.59 DONE Writing back to config file +.. 2.60 DONE Reading from config file +.. 2.61 DONE Variant -> String conversion procedure. Use in editor for debug var slots +.. 2.62 DONE Add strings and booleans to variant types +.. 2.63 DONE Fix Key release not being reported +.. 2.64 TODO Better handling incase assets folder is not found? +.. 2.65 TODO Write entity to/from file +.. 2.66 DONE OpenAL not working in releasebuilds +.. 2.67 DONE 3d sound using OpenAL +.. 2.68 TODO Ogg format loading and playback +.. 2.69 TODO Stick with OpenAL or switch to SoLoud + SDL for sound? +.. 2.70 TODO Sound streaming +.. 2.71 TODO Implment missing sound source properties (inner/outer cone, getting sound source data) +.. 2.72 TODO Ingame console and console commands etc +.. 2.73 TODO Allow binding/unbinding input maps to functions at runtime, for example if input map "Recompute" is triggered, it would call some function that can recompute bounding spheres. +.. 2.74 TODO Better handling of wav format checking at load time +.. 2.75 DONE Fix frustum culling bugs +.. 2.76 DONE Array-based Hashmaps +.. 2.77 TODO Sprite sheet animations +.. 2.78 DONE Fix bugs with heirarchical transformations +.. 2.79 TODO Replace orgfile with simple text readme and reduce duplication? +.. 2.80 TODO Ray picking +.. 2.81 DONE Remove reduntant "settings" structures and move all configuration stuff to config variables +.. 2.82 TODO Shadow maps +.. 2.83 DONE Log output to file on every run +.. 2.84 TODO Print processor stats and machine capabilites RAM etc on every run to log. +.. 2.85 TODO Milestone: Pong! +.. 2.86 TODO Do input maps really need to be queried by their string names? +.. 2.87 TODO Reloading all the things! (textures/shaders/models/settings/entities etc) +.. 2.88 TODO Separate Debug/Editor camera from the active camera in the scene that can be switched to at any time +.. 2.89 TODO Make logging to file and console toggleable at complie-time or run-time +.. 2.90 DONE Add option to specify where to read/write files from instead of being hard-coded assets dir +.. 2.91 TODO Add default keybindings +.. 2.92 TODO Write default config/keybindings etc to file if none are found in preferences dir +.. 2.93 DONE Fix input map bugs +.. 2.94 TODO Wrap malloc and free calls in custom functions to track usage +.. 2.95 TODO Flatpak packaging for linux releases +.. 2.96 TODO Use hashmap for debugvar slots in editor +.. 2.97 TODO Use hashmap to store input maps +.. 2.98 DONE Live data views in editor +.. 2.99 DONE Camera resize on window reisze +.. 2.100 DONE Resizable framebuffers and textures +.. 2.101 DONE Support for multiple color attachments in framebuffers? +.. 2.102 TODO Multisampled textures and framebuffers +.. 2.103 DONE Better way to store and manage textures attached to framebuffers +.. 2.104 TODO Validate necessary assets at game launch +.. 2.105 TODO Gamma correctness +.. 2.106 DONE Variant type +.. 2.107 TODO Log and debug/stats output in gui +.. 2.108 TODO Editor automatic window layout adjusting to the current window resolution +.. 2.109 DONE Editor +.. 2.110 TODO Event Subsystem +.. 2.111 TODO Keybindings for gui? +.. 2.112 TODO Textual/Binary format for data serialization and persistance +.. 2.113 TODO Better logging +.. 2.114 TODO Hatching/Ink rendering style +.. 2.115 DONE Fix frustum culling sometimes not working +.. 2.116 DONE Compile and test on windows +.. 2.117 TODO Array based string type comptible with cstring(char*) +.. 2.118 TODO Separate game, engine and assets into different repositories. Combine as sub-repositories +.. 2.119 DONE Fix mouse bugs +.. 2.120 DONE Fix +.. 2.121 DONE issues with opengl context showing 2.1 only +.. 2.122 TODO Improve this readme +.. 2.123 TODO ??? +.. 2.124 TODO Profit! 1 Project Symmetry @@ -137,30 +169,88 @@ _________________ 1.3.1 Entity ------------ - // Comment, Sample entity definition in file, paremeters left out are - set to defaults // Empty line at the end specifies end of entity - definition entity: "Something" position: 0 0 0 scale: 1 1 1 rotation: - 0 0 0 1 model: "suzanne.pamesh" material: "blinn_phong" diffuse_color: - 1 0 0 1 diffuse_texture: "checkered.tga" specular: 0.55 + entity: "Something" position: 0 0 0 scale: 1 1 1 rotation: 0 0 0 1 + model: "suzanne.pamesh" material: "blinn_phong" diffuse_color: 1 0 0 1 + diffuse_texture: "checkered.tga" specular: 0.55 + - Add to_string functions for major structs like transform, model etc + to ease in conversion? -1.3.2 Configuration Variables a.k.a cvars ------------------------------------------ - // Comment render_width: 1024 render_height: 1024 fog_enabled: 1 - fog_color: 0.5 0.2 0.2 1 // There can be comments or empty newlines in - between unlike entity definitions +1.3.2 Configuration Variables a.k.a cfg-vars +-------------------------------------------- - ambient_light: 0.1 0.1 0.1 1 msaa: 1 msaa_levels: 8 + render_width: 1024 render_height: 1024 debug_draw_enabled: true + fog_color: 0.5 0.2 0.2 1 + + ambient_light: 0.1 0.1 0.1 1 msaa: true msaa_levels: 8 1.3.3 Keybindings ----------------- + Move_Forward: W + + Move_Backward: S,Down + + Quit: Left Ctrl-Q + + Sprint: Left Shift + 1.3.4 Level/Scene ----------------- + - Binary format with header attached at the top + - Save child entities first + - Copy paste all entites in the file one by one. Since the entites all + look the same in memory and are made up of tagged unions, a simple + memcpy approach should suffice. The problem is entity + heirarchies. There are multiple approaches to solve this problem. + -- Save a sorted list of entites to file i.e. before saving create a + new list that does not have the empty array slots in the entity list + and then just copy and paste. This is the simplest way to solve the + problem as we don't have to worry about indexes of parent/child + entites in heirarchy. We can take the whole array and paste it to + the file but creating a copy of entity list for this purpose only + would be slow and consume a lot of memory. -- Instead of creating a + copy of the entity list for sorting and saving, sort the actual + entity list and update all references as necessary then save the + array to file. -- Just write the name of the parent entity as + parent. Make sure that all entity names are unique. + + +1.3.5 Materials +--------------- + + +1.3.6 Mesh/Geometry +------------------- + + +1.4 Notes on entity Systems +~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + - Fat entites with all related properties, i.e. position, mesh etc in + them. Easy to serialize, memory friendly, simple to implement but + would require significant changes to the current codebase. e.g. + struct Entity { int type; char* name; struct Transform {....}; + struct Camera {....}; + + // Separate properties unique to entity types by using unions struct + Renderable { struct Model {....}; union { struct Player { int score; + int bullets; }; + + struct Enemy { int target; }; } } }; + - Change component implementation by using anonymous unions to + simulate interfaces. e.g struct Component { int type; union { struct + Transform {....}; struct Model {....}; struct Camera {....}; } } + - Use handles for assets + - Use something similar to Variant to use as entity, not sure what or + how + - Don't forget to think of the actual use-case and usage when coming + up with a solution, don't build castles in the air! + 2 Things TODO ============= @@ -300,134 +390,159 @@ _________________ - Recalculated bounding boxes for rotated meshes? -2.23 TODO File extension checking for asset loading +2.23 DONE Fix input lag and other framerate related issues +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + - State "DONE" from "TODO" [2017-05-07 Sun 18:40] + + +2.24 TODO File extension checking for asset loading ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -2.24 DONE Materials +2.25 DONE Materials ~~~~~~~~~~~~~~~~~~~ - State "DONE" from "TODO" [2015-10-13 Tue 19:38] -2.25 DONE Mesh/Model +2.26 DONE Mesh/Model ~~~~~~~~~~~~~~~~~~~~ - State "DONE" from "TODO" [2015-10-13 Tue 19:38] -2.26 TODO Add modifiers to input maps to enable combinations for example, c-x, m-k etc +2.27 DONE Add modifiers to input maps to enable combinations for example, c-x, m-k etc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + - State "DONE" from "TODO" [2017-05-20 Sat 21:54] + + +2.28 TODO Only allocate hashmap bucket when required +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -2.27 DONE Heirarchical Transforms + +2.29 TODO Mapping actions to keybindings, for example map action "Jump" to Space key etc +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +2.30 DONE Heirarchical Transforms ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -2.28 DONE Materials with textures +2.31 DONE Materials with textures ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - State "DONE" from "TODO" [2015-10-15 Thu 21:21] -2.29 DONE Lights! +2.32 DONE Lights! ~~~~~~~~~~~~~~~~~ - State "DONE" from "TODO" [2017-03-14 Tue 00:31] -2.30 DONE Fix problems with texture units +2.33 DONE Fix problems with texture units ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - State "DONE" from "TODO" [2016-05-30 Mon 00:57] -2.31 CANCELED Draw light volumes +2.34 CANCELED Draw light volumes ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - State "CANCELED" from "TODO" [2017-02-26 Sun 15:39] Deferred rendering on hold for now. -2.32 DONE Fix problems with frustrum culling +2.35 DONE Fix problems with frustrum culling ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - State "DONE" from "TODO" [2017-03-26 Sun 01:33] -2.33 TODO 2d drawing routines +2.36 TODO 2d drawing routines ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - Sprite batching -2.34 DONE Gui +2.37 DONE Gui ~~~~~~~~~~~~~ - State "DONE" from "TODO" [2017-03-15 Wed 23:41] -2.35 CANCELED Image based lighting? +2.38 CANCELED Image based lighting? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - State "CANCELED" from "TODO" [2017-03-14 Tue 00:31] Not a requirement for current project -2.36 CANCELED Deferred rendering? +2.39 CANCELED Deferred rendering? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - State "CANCELED" from "TODO" [2017-02-26 Sun 01:49] Sticking with forward rendering for now and focusing on tools etc. -2.37 DONE Fix mouse bugs on windows +2.40 DONE Fix mouse bugs on windows ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - State "DONE" from "TODO" [2017-03-25 Sat 17:27] -2.38 TODO Configuration/Settings load/save handling +2.41 DONE Configuration/Settings load/save handling ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + - State "DONE" from "TODO" [2017-05-20 Sat 21:54] + -2.39 DONE Fix mousewheel bugs and gui not responding to mousewheel input +2.42 DONE Fix mousewheel bugs and gui not responding to mousewheel input ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - State "DONE" from "TODO" [2017-03-19 Sun 01:31] -2.40 TODO Ability to mark meshes for debug rendering with possibility of different color for each? +2.43 TODO Ability to mark meshes for debug rendering with possibility of different color for each? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -2.41 TODO Setup cross compilation with mingw or stick to msvc? +2.44 TODO Switch to completely static allocation of entites i.e. have a static array of MAX_ENTITIES size. This way we can store pointers to entites and they'll still be in an array and fast to process. +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +2.45 DONE Setup cross compilation with mingw or stick to msvc? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + - State "DONE" from "TODO" [2017-05-20 Sat 21:55] + - Done, going with mingw for now. -2.42 TODO Add marking or queuing up custom meshes for debug render with particular transform and color for rendering bounding spheres for example + +2.46 TODO Add marking or queuing up custom meshes for debug render with particular transform and color for rendering bounding spheres for example ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -2.43 DONE Toggleable debug drawing for meshes +2.47 DONE Toggleable debug drawing for meshes ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - State "DONE" from "TODO" [2017-03-18 Sat 16:18] -2.44 TODO Interleaved vbos for meshes and changes to blender exporter accordingly +2.48 TODO Interleaved vbos for meshes and changes to blender exporter accordingly ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -2.45 TODO Enumerate and save all the uniform and attribute positions in shader when it is added and cache them in shader object? +2.49 TODO Enumerate and save all the uniform and attribute positions in shader when it is added and cache them in shader object? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -2.46 TODO Physics/Collision detection in 2d +2.50 TODO Physics/Collision detection in 2d ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -2.47 TODO Complete gui integration +2.51 TODO Complete gui integration ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ x Font selection x Font atlas proper cleanup @@ -435,91 +550,167 @@ _________________ - Custom rendering for gui -2.48 TODO Allow passsing base path as commandline argument? +2.52 TODO Allow passsing base path as commandline argument? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -2.49 DONE Add strings and booleans to variant types +2.53 TODO Remove components and switch to "Fat Entities" i.e. one entity struct contains all combinations +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +2.54 TODO Use variants for material params +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +2.55 TODO Improve Material Parameters/Pipeline Uniforms/Instance Uniforms are handled +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +2.56 TODO Fix light rotation/direction bugs +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +2.57 DONE In second refactor pass, use entities everywhere, no need to pass in transform and model separately for example since they're both part of the same entity anyway +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + - State "DONE" from "TODO" [2017-05-31 Wed 21:44] + + +2.58 DONE Show SDL dialogbox if we cannot launch at all? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + - State "DONE" from "TODO" [2017-05-26 Fri 00:41] + + +2.59 DONE Writing back to config file +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + - State "DONE" from "TODO" [2017-05-08 Mon 00:57] + + +2.60 DONE Reading from config file +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + - State "DONE" from "TODO" [2017-05-07 Sun 23:52] + + +2.61 DONE Variant -> String conversion procedure. Use in editor for debug var slots +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + - State "DONE" from "TODO" [2017-05-07 Sun 18:43] + + +2.62 DONE Add strings and booleans to variant types ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - State "DONE" from "TODO" [2017-03-29 Wed 00:23] -2.50 DONE Fix Key release not being reported +2.63 DONE Fix Key release not being reported ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - State "DONE" from "TODO" [2017-03-26 Sun 01:16] -2.51 TODO Better handling incase assets folder is not found? +2.64 TODO Better handling incase assets folder is not found? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -2.52 DONE OpenAL not working in releasebuilds +2.65 TODO Write entity to/from file +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +2.66 DONE OpenAL not working in releasebuilds ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - State "DONE" from "TODO" [2017-03-25 Sat 02:06] -2.53 DONE 3d sound using OpenAL +2.67 DONE 3d sound using OpenAL ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - State "DONE" from "TODO" [2017-03-23 Thu 01:43] -2.54 TODO Ogg format loading and playback +2.68 TODO Ogg format loading and playback ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -2.55 TODO Sound streaming +2.69 TODO Stick with OpenAL or switch to SoLoud + SDL for sound? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +2.70 TODO Sound streaming ~~~~~~~~~~~~~~~~~~~~~~~~~ -2.56 TODO Implment missing sound source properties (inner/outer cone, getting sound source data) +2.71 TODO Implment missing sound source properties (inner/outer cone, getting sound source data) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -2.57 TODO Ingame console and console commands etc +2.72 TODO Ingame console and console commands etc ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -2.58 TODO Allow binding/unbinding input maps to functions at runtime, for example if input map "Recompute" is triggered, it would call some function that can recompute bounding spheres. +2.73 TODO Allow binding/unbinding input maps to functions at runtime, for example if input map "Recompute" is triggered, it would call some function that can recompute bounding spheres. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -2.59 TODO Better handling of wav format checking at load time +2.74 TODO Better handling of wav format checking at load time ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -2.60 TODO Array-based Hashmaps +2.75 DONE Fix frustum culling bugs +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + - State "DONE" from "TODO" [2017-05-31 Wed 23:38] + + +2.76 DONE Array-based Hashmaps ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + - State "DONE" from "TODO" [2017-05-07 Sun 18:42] -2.61 TODO Sprite sheet animations + +2.77 TODO Sprite sheet animations ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -2.62 TODO Replace orgfile with simple text readme and reduce duplication? +2.78 DONE Fix bugs with heirarchical transformations +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + - State "DONE" from "TODO" [2017-06-01 Thu 00:20] + + +2.79 TODO Replace orgfile with simple text readme and reduce duplication? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -2.63 TODO Ray picking +2.80 TODO Ray picking ~~~~~~~~~~~~~~~~~~~~~ -2.64 TODO Shadow maps +2.81 DONE Remove reduntant "settings" structures and move all configuration stuff to config variables +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + - State "DONE" from "TODO" [2017-06-05 Mon 02:25] + + +2.82 TODO Shadow maps ~~~~~~~~~~~~~~~~~~~~~ -2.65 TODO Log output to file on every run +2.83 DONE Log output to file on every run ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + - State "DONE" from "TODO" [2017-05-26 Fri 00:41] + -2.66 TODO Print processor stats and machine capabilites RAM etc on every run to log. +2.84 TODO Print processor stats and machine capabilites RAM etc on every run to log. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -2.67 TODO Milestone: Pong! +2.85 TODO Milestone: Pong! ~~~~~~~~~~~~~~~~~~~~~~~~~~ - In order to put things into perspective and get a feel for what @@ -529,140 +720,191 @@ _________________ - Makefile additions. Try to compile game as a dynamically loaded library with ability to reload on recompile - Separation between game and engine base - - Game .so with init, update and cleanup functions - - Configuration files and "cvars" load/reload - - Keybindings in config - - Log output on every run. + ? Game .so with init, update and cleanup functions x Configuration + files and "cvars" load/reload x Keybindings in config x Log output on + every run. + - Implement entity load/save to file + ? Prefab load/save to file -2.68 TODO Do input maps really need to be queried by their string names? +2.86 TODO Do input maps really need to be queried by their string names? ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -2.69 TODO Reloading shaders? -~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +2.87 TODO Reloading all the things! (textures/shaders/models/settings/entities etc) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -2.70 TODO Separate Debug/Editor camera from the active camera in the scene that can be switched to at any time +2.88 TODO Separate Debug/Editor camera from the active camera in the scene that can be switched to at any time ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -2.71 DONE Live data views in editor +2.89 TODO Make logging to file and console toggleable at complie-time or run-time +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +2.90 DONE Add option to specify where to read/write files from instead of being hard-coded assets dir +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + - State "DONE" from "TODO" [2017-05-24 Wed 17:12] + + +2.91 TODO Add default keybindings +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +2.92 TODO Write default config/keybindings etc to file if none are found in preferences dir +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +2.93 DONE Fix input map bugs +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + - State "DONE" from "TODO" [2017-05-31 Wed 23:19] + + +2.94 TODO Wrap malloc and free calls in custom functions to track usage +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +2.95 TODO Flatpak packaging for linux releases +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +2.96 TODO Use hashmap for debugvar slots in editor +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +2.97 TODO Use hashmap to store input maps +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +2.98 DONE Live data views in editor ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - State "DONE" from "TODO" [2017-03-22 Wed 02:14] -2.72 DONE Camera resize on window reisze +2.99 DONE Camera resize on window reisze ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - State "DONE" from "TODO" [2017-03-20 Mon 15:22] -2.73 DONE Resizable framebuffers and textures -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +2.100 DONE Resizable framebuffers and textures +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - State "DONE" from "TODO" [2017-03-16 Thu 22:50] -2.74 DONE Support for multiple color attachments in framebuffers? -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +2.101 DONE Support for multiple color attachments in framebuffers? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - State "DONE" from "TODO" [2017-03-16 Thu 22:51] -2.75 TODO Multisampled textures and framebuffers -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +2.102 TODO Multisampled textures and framebuffers +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -2.76 DONE Better way to store and manage textures attached to framebuffers -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +2.103 DONE Better way to store and manage textures attached to framebuffers +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - State "DONE" from "TODO" [2017-03-16 Thu 22:51] -2.77 TODO Validate necessary assets at game launch -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +2.104 TODO Validate necessary assets at game launch +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -2.78 TODO Gamma correctness -~~~~~~~~~~~~~~~~~~~~~~~~~~~ +2.105 TODO Gamma correctness +~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -2.79 DONE Variant type -~~~~~~~~~~~~~~~~~~~~~~ +2.106 DONE Variant type +~~~~~~~~~~~~~~~~~~~~~~~ - State "DONE" from "TODO" [2017-03-22 Wed 02:14] -2.80 TODO Log and debug/stats output in gui -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +2.107 TODO Log and debug/stats output in gui +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -2.81 TODO Editor -~~~~~~~~~~~~~~~~ +2.108 TODO Editor automatic window layout adjusting to the current window resolution +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -2.82 TODO Event Subsystem -~~~~~~~~~~~~~~~~~~~~~~~~~ +2.109 DONE Editor +~~~~~~~~~~~~~~~~~ + - State "DONE" from "TODO" [2017-06-20 Tue 01:12] -2.83 TODO Keybindings for gui? -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +2.110 TODO Event Subsystem +~~~~~~~~~~~~~~~~~~~~~~~~~~ -2.84 TODO Textual/Binary format for data serialization and persistance -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +2.111 TODO Keybindings for gui? +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -2.85 TODO Better logging -~~~~~~~~~~~~~~~~~~~~~~~~ +2.112 TODO Textual/Binary format for data serialization and persistance +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -2.86 TODO Hatching/Ink rendering style -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +2.113 TODO Better logging +~~~~~~~~~~~~~~~~~~~~~~~~~ + + +2.114 TODO Hatching/Ink rendering style +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -2.87 DONE Fix frustum culling sometimes not working -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +2.115 DONE Fix frustum culling sometimes not working +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - State "DONE" from "TODO" [2017-03-25 Sat 19:10] -2.88 DONE Compile and test on windows -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +2.116 DONE Compile and test on windows +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - State "DONE" from "TODO" [2017-03-14 Tue 00:32] -2.89 TODO Array based string type comptible with cstring(char*) -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +2.117 TODO Array based string type comptible with cstring(char*) +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -2.90 DONE Fix mouse bugs -~~~~~~~~~~~~~~~~~~~~~~~~ +2.118 TODO Separate game, engine and assets into different repositories. Combine as sub-repositories +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + + +2.119 DONE Fix mouse bugs +~~~~~~~~~~~~~~~~~~~~~~~~~ - State "DONE" from "TODO" [2017-03-01 Wed 00:45] -2.91 DONE Fix -~~~~~~~~~~~~~ +2.120 DONE Fix +~~~~~~~~~~~~~~ -2.92 DONE issues with opengl context showing 2.1 only -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +2.121 DONE issues with opengl context showing 2.1 only +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ - State "DONE" from "TODO" [2017-03-19 Sun 14:03] - State "DONE" from "TODO" [2017-02-26 Sun 15:39] -2.93 TODO Improve this readme -~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +2.122 TODO Improve this readme +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ -2.94 TODO ??? -~~~~~~~~~~~~~ +2.123 TODO ??? +~~~~~~~~~~~~~~ -2.95 TODO Profit! -~~~~~~~~~~~~~~~~~ +2.124 TODO Profit! +~~~~~~~~~~~~~~~~~~ diff --git a/orgfile.org b/orgfile.org index f54f26d..ac799ad 100644 --- a/orgfile.org +++ b/orgfile.org @@ -206,6 +206,7 @@ Sprint: Left Shift ** DONE Fix mousewheel bugs and gui not responding to mousewheel input - State "DONE" from "TODO" [2017-03-19 Sun 01:31] ** TODO Ability to mark meshes for debug rendering with possibility of different color for each? +** TODO Switch to completely static allocation of entites i.e. have a static array of MAX_ENTITIES size. This way we can store pointers to entites and they'll still be in an array and fast to process. ** DONE Setup cross compilation with mingw or stick to msvc? - State "DONE" from "TODO" [2017-05-20 Sat 21:55] - Done, going with mingw for now.