Commit Graph

164 Commits

Author SHA1 Message Date
Doyle Thai ed6b961b61 Update readme to include features of engine 2016-09-24 15:11:34 +10:00
Doyle Thai 332888f3b5 Switch mem allocation to custom memory block
No longer repeatedly invoke malloc for retrieving memory. Some operations still
leak memory (notably audio streaming). We introduce notion of Transient and
Permanent storage. Transient memory is used for data in memory that is
temporarily allocated (i.e. graphics for that frame's output), and permanent as
more like game state storage.

We now give out pointers from a pre-allocated block of memory, so we have no
allocation cost and benefits of reduced memory leaks. The transient block gets
reset every frame. Any memory allocated within is cleared at no cost simply by
rearranging the base pointer of the memory block.
2016-09-24 14:43:59 +10:00
Doyle Thai 85b757aaa7 Update debug display for render groups 2016-09-23 21:15:22 +10:00
Doyle Thai 82421ca64c Improve performance by swapping render groups
Last used render groups are brought to front of render list when searching for
valid group- as per- recently used items are likely to be used again.
2016-09-23 19:36:18 +10:00
Doyle Thai 72d30b6320 Restore color modulation in render groups 2016-09-23 19:19:47 +10:00
Doyle Thai 3894d33485 Fix rotation on render, change rendering code
Premultiply transformation matrix onto vertices before sending onto GPU to
preserve transformation properties of entities before being batched into
a general group. This removes the model matrix from the shader pipeline- instead
in rendering code we deal in world space (which works out to be more intuitive).
Only in the last step in GLSL we convert back to normalised coordinates.
2016-09-23 18:02:53 +10:00
Doyle Thai 88ce511f2b Entity rendering now uses rectangle rendering code 2016-09-22 19:00:44 +10:00
Doyle Thai 23720fae19 Fix batch-render of strings, fix group logic
Incorrect assumption that strings only needed degenerate vertexes at the start
and end of each string instead of characters causing render "wings" between
separate strings.

Fix render-group not switching to next group if current group is full.
2016-09-22 18:46:53 +10:00
Doyle Thai ebe09bd345 Improved render groups, use degenerate triangles
Degenerate triangles allows a single triangle strip call to be called on
multiple independent triangles without "connecting" strips inbetween the
triangles.
2016-09-22 02:16:14 +10:00
Doyle Thai ec7a9e41ff Begin draft imeplementation of batched rendering
Render all entities with the same texture in one call. Currently only
implemented for humanoid entities. Since we are rendering using triangle strips,
between entities there is invalid rastered data between entities. Using
degenerate triangles this may be mitigated, by indicating to OGL which triangles
it can skip in the rendering process.
2016-09-21 19:21:27 +10:00
Doyle Thai 7cb13b3cf8 Add additional entity struct data
Attempting to add child weapon data to an entity has revealed the need for an
entity origin to which children start transformations from. Worth exploring
scene graphs in the future.
2016-09-15 03:20:13 +10:00
Doyle Thai 5c4f493979 Add support for more attack-animations
Exploratory code to determine how to architect the engine for increasing
requirements in game play.
2016-09-14 01:34:57 +10:00
Doyle Thai fc6f6e086f Add child entity to projectiles 2016-09-13 13:35:16 +10:00
Doyle Thai 1f799302c1 Fix sign multiplication error for projectile 2016-09-13 12:57:17 +10:00
Doyle Thai 8ddac9c110 Add projectile attack skill 2016-09-13 00:53:25 +10:00
Doyle Thai 5b682ddcf6 Add draft better string library implementation 2016-09-07 23:33:01 +10:00
Doyle Thai da07ce3f75 Fix memory leak not freeing stb_decode ptr 2016-09-01 02:53:17 +10:00
Doyle Thai 4c38abc672 Integrate sfx audio into battle 2016-09-01 02:18:43 +10:00
Doyle Thai 5cccd3ebe8 Switch audio to hash table implementation 2016-08-31 19:59:56 +10:00
Doyle Thai f6943e5efb Const asset and entity functions, minor clean up 2016-08-31 16:40:41 +10:00
Doyle Thai e9db7b0570 Convert subtextures to use hash tables
Also clean up and add some block comments to aid code separation mainly in
AssetManager.
2016-08-30 18:42:37 +10:00
Doyle Thai 8b0f2f93e3 Use better generic hashtable implement. for assets 2016-08-30 14:19:18 +10:00
Doyle Thai c93e6ca37c Pull out xml loading to assetmanager code 2016-08-30 00:11:00 +10:00
Doyle Thai 1d09bdfa20 Draft implementation of hash tabled textures 2016-08-27 04:15:13 +10:00
Doyle Thai 4c0c2808ca Load terrain image into game 2016-08-27 03:37:56 +10:00
Doyle Thai aa8590d585 Clean up memory usage of XML loading 2016-08-26 02:59:28 +10:00
Doyle Thai 17cc6063a3 Restore battle system using hash data structs 2016-08-25 18:29:36 +10:00
Doyle Thai 7ca42f781a Start merging hash table access into assets
Basic implementation with many pre-existing features disabled untill all
parts of the system that interact with the assets transitions over.
2016-08-25 02:06:32 +10:00
Doyle Thai b43754986f Load sprite sheet into new atlas structure 2016-08-24 18:31:26 +10:00
Doyle Thai 84a2c5e382 Implement common_atoi and add unit tests 2016-08-24 15:25:58 +10:00
Doyle Thai 1f2c2082a0 Add framework to parse xml tree into game data 2016-08-23 18:20:20 +10:00
Doyle Thai 2c1d3f9593 Build XML tree from XML tokeniser, print xml tree 2016-08-23 15:19:03 +10:00
Doyle Thai a1ff789485 Basic XML tokeniser for reading spritesheet xml 2016-08-23 02:40:38 +10:00
Doyle Thai 4d7025876f Reorganise, separate motion from input parsing
Parse input was computing irrelevant data. The function has been inlined
and extraneous computations in the function has been moved to the
appropriate locations.
2016-08-22 23:13:44 +10:00
Doyle Thai 42a004e6e3 Align debug window to corner 2016-08-22 20:18:55 +10:00
Doyle Thai ca415619dd Fix window logic to stop stealing scrollbar focus 2016-08-22 18:05:10 +10:00
Doyle Thai 4e585a4939 Move ui element rendering to window rendering 2016-08-21 15:19:11 +10:00
Doyle Thai 70a3032155 Add debug window, parent buttons to debug window 2016-08-21 00:21:50 +10:00
Doyle Thai aa34bbefc3 Refactor window data to struct 2016-08-20 22:30:02 +10:00
Doyle Thai 1df75c54fc Add moveable window UI element 2016-08-20 18:41:17 +10:00
Doyle Thai cc874888cc Add spacing in debug display stack, center all button text 2016-08-20 14:24:42 +10:00
Doyle Thai 801107908a Add toggle debug display button and config entry 2016-08-20 14:18:05 +10:00
Doyle Thai 6ec92358b2 Add audiostate field and audio toggle ui button 2016-08-19 00:56:02 +10:00
Doyle Thai 90068d2c64 Add string length in pixel func, add button label 2016-08-19 00:25:43 +10:00
Doyle Thai c33b37b0ea Render battle damage on screen, draft implementation
Crudely done to get an understanding of the kind of storage needed to
store UI on screen that may have a limited life time.
2016-08-17 20:37:56 +10:00
Doyle Thai e90b31de55 Separate UI code into own file 2016-08-17 18:04:51 +10:00
Doyle Thai 5cd7239c8a Switch rendering to xy bottom left, zw top right 2016-08-17 17:35:31 +10:00
Doyle Thai cb857cfaa6 Reassign debug keys, backspace on textfield added 2016-08-17 15:57:42 +10:00
Doyle Thai 8aa23b7cfc Add delayed key repeat 2016-08-17 15:29:14 +10:00
Doyle Thai 80b35d404d Add better input parsing with key repeat tracking 2016-08-17 02:21:02 +10:00