Commit Graph

205 Commits

Author SHA1 Message Date
Doyle Thai b3760aa3fc Re-enable collision and implement game lose screen 2016-12-18 19:48:14 +11:00
Doyle 386e94db91 Update readme.md with demo and revised milestones 2016-11-30 22:58:09 +11:00
Doyle Thai 2fc3a0a941 Add web assets for readme 2016-11-30 22:37:08 +11:00
Doyle Thai 35e0569f8d Add score multiplier into game 2016-11-30 21:21:28 +11:00
Doyle Thai fb254b06ec Add sorting of render groups by zdepth 2016-11-30 18:18:36 +11:00
Doyle Thai 68976bd6f8 Remove strings.[h|c] files. Combined into common 2016-11-29 01:44:03 +11:00
Doyle Thai 10891ab56e Add resolution changer in options menu 2016-11-29 01:41:33 +11:00
Doyle Thai eb4b0e1714 Rudimentary resolution changer, window icon 2016-11-28 19:11:38 +11:00
Doyle Thai aeeef1a60f Add state data buffer to hold generic configs
Add some system that allows us to automatically define and allocate different
application states at runtime without having to manually make the entries into
our game state structure.

It's basically an array of pointers determined by the app states defined in the
appstate enum. This is necessary since different modes, (start menu, options,
game world) have different data and we'd like to be able to define them
uniquely.
2016-11-28 17:47:15 +11:00
Doyle Thai 15b4ff59f7 Change start screen to pre-init the world 2016-11-28 16:11:53 +11:00
Doyle Thai 6df92e7aed Change naming convention, merge texture/shaders
Reduce the number of files in project by merging texture and shaders into
assets/renderer file. It's better to keep code local to where it is rather than
splitting them into "self-contained modules". It becomes easier to understand
reading top-to-bottom and there's is less jumping around which can increase the
difficulty of comprehending the code.

Convert names to use more of a <namespace>_<object><Action> format.
2016-11-27 21:16:12 +11:00
Doyle Thai 2fb2e6db5b Add basic start screen
Adding a start screen led to cleaning up some initialisation processes. Dengine
now formally initialises subsystems from the respective .h files instead of
ad-hoc from the main game file.
2016-11-27 20:13:33 +11:00
Doyle Thai c61b2022ce Add variable font size generation 2016-11-27 18:23:43 +11:00
Doyle Thai ad14d6d822 Introduce temp memory to free memory leaks 2016-11-27 17:26:23 +11:00
Doyle Thai 3729ddf164 Merge branch 'master' of https://github.com/Doy-lee/Dengine 2016-11-26 21:20:39 +11:00
Doyle Thai cdf0ed64bf Add particle emitter on asteroid destroy 2016-11-26 21:06:41 +11:00
Doyle Thai 9cfe60fcf8 Set up user interface integration 2016-11-26 14:11:59 +11:00
Doyle Thai 91cc891b36 Add guard against null-audio in init playback 2016-11-26 13:34:23 +11:00
Doyle Thai d49811358a Fix bullet rendering artifacts
On delete entity, old entries were not being cleared out causing bullets being
the most commonly spawned object to inherit unusual behaviour from "dead"
entities. Fixed by ensuring on entity delete the entity entry is cleared out.

Also add rendering guard against malformed vertex points. The renderer has
a strict requirement that all polygons passed in are CCW. Bullets were being
formed with the mindset of a triangle strip causing it to render incorrectly.

Now renderer checks ordering of polygons points and asserts if incorrect. It
works based off calculating the bounding area polygons, where in CCW order this
will produce a negative result and positive for CW order.
2016-11-25 20:43:43 +11:00
Doyle Thai 5bb7fa8c13 Improve input handling using state flags
Fix reading one shot inputs not working due to prematurely clearing out state
data tracking input changes between one frame and another. The transition count
used to track this now stores difference between each frame in the input flags.

This also solves requiring at the end of the frame to update the transition
counts at the end of each update loop.
2016-11-25 18:03:25 +11:00
Doyle Thai d878cca8ab Children from destroyed are created with higher dP 2016-11-25 15:56:26 +11:00
Doyle Thai 6bc37dbe44 Add Asteroid sizing and asteroid split on destroy 2016-11-25 13:17:24 +11:00
Doyle Thai ea6ea02404 Add basic sound effects to game 2016-11-24 22:54:07 +11:00
Doyle Thai be1c009dfb Add asteroid collision handling 2016-11-24 21:05:14 +11:00
Doyle Thai 42ba86f05a Add ability to shoot and delete entities 2016-11-24 18:57:44 +11:00
Doyle Thai 6069ed8415 Fix interval overlap case for collision detection
If one interval were completely contained within another then the logic would
not correctly identify the overlap. Instead check the length of the intervals
and ensure the smaller interval of the two is compared against the larger one.
2016-11-24 00:27:24 +11:00
Doyle Thai 614fa53487 Fix broken t-strip rendering logic
Triangle strips were originally by chance were rendering correct for most cases
until collision detection was implemented. Incorrect assumptions about
specifying triangle strip winding order meant that on occasion the last triangle
in a polygon would not be rendered.

This has been amended by strictly ensuring that on rendering of polygon the
order is correct from the vertices that are passed in.
2016-11-23 23:47:23 +11:00
Doyle Thai 0c7824bf18 Move rotation step outside of inner rendering loop
We need to generate interim vertex points during the collision detection loop
that includes rotation to check for collision. During collision detection,
vertex points are rotated and positioned in placed for checking.

We also re-create this vertex list in the renderer suggesting that we could
cache the list in the entity or look at coupling rendering and collision
detection.
2016-11-23 13:42:46 +11:00
Doyle Thai 20749dd668 Fix entity origin and rotation about origin
Fundamental mismatch between rotation and offset of polygons. Polygons can be arbitrarily ordered in terms of vertices as long as they are in a CCW order.
However there should be no restriction on the starting vertex position.

Since this is the case, the entity offset for a polygon should offset from the
starting vertex to the perceived "entity origin". This entity origin is where
collision detection, rotation and movement is based off.
2016-11-19 16:42:13 +11:00
Doyle Thai 01f99dd0ca Add framework for SAT collision detection 2016-11-18 17:42:11 +11:00
Doyle Thai a4e5025dd4 Merge triangle rendering code to polygon code 2016-11-18 14:33:11 +11:00
Doyle Thai 68c0560b28 Refactor movement code into function 2016-11-18 13:43:50 +11:00
Doyle Thai 17dc6cc6fc Fix degenerate tris showing up in certain configs
Occasionally with the right orientation, degenerate triangles will appear as
they are no longer zero-area triangles which OGL can cull during rendering. The
issue comes from having to manually ensure each primitive in the rendering
pipeline sent to the render groups were correctly marked with degenerate
vertexes.

Instead, we can now just pass the vertex points straight through, using
a begin() and end() structure which will append the start and ending degenerate
vertexes for us.
2016-11-17 21:03:55 +11:00
Doyle Thai 064d17d34c Asteroid data merged to entity and display
Asteroids move and are a part of the entity sytem. Added some debug markers for
memory usage and fixed a bug in logic causing degenerate triangles to show up
depending on the angle of approach towards the origin.
2016-11-17 18:15:36 +11:00
Doyle Thai e49984b3d0 Add arbitrary asteroid polygon rendering 2016-11-17 00:50:49 +11:00
Doyle Thai b75d700dd6 Rename rect members from pos, size to min, max 2016-11-16 16:57:24 +11:00
Doyle Thai 21bf650298 Fix triangle rendering and wireframe 2016-11-16 13:00:59 +11:00
Doyle Thai 339ae38b38 Simplify shaders, enable coloring of primitives 2016-11-12 01:17:30 +11:00
Doyle Thai 981d87a2d7 Add proper wireframe mode, rotation to triangle 2016-11-12 00:22:09 +11:00
Doyle Thai 6d67485d49 Add primitive triangle rendering code 2016-11-11 21:43:03 +11:00
Doyle Thai 4795fe1cb1 Switch developing game to asteroids, start project
Switch to something of smaller scope in aim to be able to finish a project from
start to finish. Also allow refreshed eyes to review the existing API and see
what can be improved on after taking a short break from the project.
2016-11-09 22:36:41 +11:00
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