A couch Co-Op 2D top-down stealth rogue-like game.
- C++
- SFML
- CMake
- Basic 2D geometry added to the world.
- Basic player controls.
- Ability to push and move objects in the world.
- Introduction of entity memory pooling.
I did not take screenshots during this period.
Not a huge amount of time was spent working on the project during this period due to work and with the Christmas holidays. However, I did start a separate branch on the project for building my own line segment intersection algorithm.
The goal with this was to add a visibility system to the game so we could determine what is visible to a given entity.
This went through many changes as a result of the wrong strategy being used. The initial implementation worked for a set of rays in a radial pattern around the player entity. However, when joining these rays with a TriangleFan there was a lot of jagged edges, flickering and clipping over the corners of other world entities. Eventually, I managed to succeed in getting this to work.
Here are the changes summarised during this period:
- Visibility System with Line Segment Intersection
- The pinky block represents our player and light source.
- The yellow area represents the region the player can see.
Haven't had much time to work on this project over the last month, but except for one notable fix:
- Fixed a bug where the light rays would flicker when pushing entities in the game world.
- Added tiling to the world with single tileset.
- Add spawn point (blue tile)
- Add end zone (green tiles)
- Maintain performant visibility system without ray casting to each tile vertex.
- Arrow blocks can be pushed
- Add visibility system blend (sf::Multiply) for the background tiles to still remain visible while lit.
- Added a new tileset to game world (purple-dungeon-brick)
- Add spawn tiles
- Add end tiles
- Add patrolling guards (No guard texture, just a patrolling brick texture)
- Merged with existing tileset from Entry #4 (See the spawn zone and end zone)
- Add lower level for player-2 for Couch Co-op. (An idea I think I want to toy with is if one of the two player's is caught, the other player can additionally complete the opposing section of the map to beat the stage.)
- Catacomb asset texturing to world applied
- Enable multiple tile layers in world file to stack correctly.
- Enable multiple tile sets across multiple tile layers to render as expected.
- Guard pathing updated to patrol around catacombs.
- Update player spawn location(s)
- Update lighting approach to use polygons rather than rects. This greatly improves performance from the reduction in vertices.
- Update collision logic to be based on polygons and polylines rather than at the tile level.
- Add end zone to the stage that the player must reach to complete the stage.
- Add overlays to darken map and a lighter ellipse to give more visibility around player. This is done through blending ([multiply] and [add] respectively).