Exploring raycasters and possibly make a little "doom like" game based on it.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 
Zed A. Shaw 0cbe20af35 Fix up the colors and rendering so that tilemap just uses components::Tile all the time. Need to load all of the config data from json one time on system start instead of constantly, although constantly does make debugging live easier. 4 weeks ago
amt The tracy directory now has an experiment in getting Tracy to work. It's _not_ as easy as it is touted to be. 2 months ago
assets Fix up the colors and rendering so that tilemap just uses components::Tile all the time. Need to load all of the config data from json one time on system start instead of constantly, although constantly does make debugging live easier. 4 weeks ago
magick Some quick hacks that do the seamless texture splits. 2 months ago
scratchpad Now the sprites are rendered in the 3d scene with just SFML sprites. 2 months ago
scripts Tweaking the build to turn on various debug options in GCC and enable -Wall -Werror on only our executable configs because turning them on globally causes most of the dependencies to fail. One thing to note is if you try to move the -D_GLIBCXX options from the project() to the executable() then you get segfaults inside the libc++ and other places. This is because the ABI changes when you enable these options, so you have to recompile _all_ dependencies with these options. 2 months ago
shaders Sprites now have a distance lighting calculation that's the same as the raycaster using a shader. 1 month ago
tests Game now builds and is using the new dynamic component loading but enemies do not spawn in and device events are really working. Also inventory is a giant bag of fail and needs a rewrite. 4 weeks ago
tracy The tracy directory now has an experiment in getting Tracy to work. It's _not_ as easy as it is touted to be. 2 months ago
wraps We now have a full map that's basically the same mapping system from Roguish. There's a bug right now where it needs you to move once to calc the light and it's not being centered, but it does work. 4 weeks ago
.gdbinit My gdb debug thing. 2 months ago
.gitignore First build that actually works. SDL_main errors before but didn't figure out the cause. 2 months ago
.vimrc_proj First build that actually works. SDL_main errors before but didn't figure out the cause. 2 months ago
Makefile We now have a full map that's basically the same mapping system from Roguish. There's a bug right now where it needs you to move once to calc the light and it's not being centered, but it does work. 4 weeks ago
README.md A quick warning in case people are funding the thing. 1 month ago
animator.cpp Tiles now record their textures and this is loaded from the map then converted to an indexed integer on the fly. 1 month ago
animator.hpp Implement a little junk camera on its own that we can use later for movement and views. 1 month ago
ansi_parser.cpp We now have a full map that's basically the same mapping system from Roguish. There's a bug right now where it needs you to move once to calc the light and it's not being centered, but it does work. 4 weeks ago
ansi_parser.hpp We now have a full map that's basically the same mapping system from Roguish. There's a bug right now where it needs you to move once to calc the light and it's not being centered, but it does work. 4 weeks ago
ansi_parser.rl We now have a full map that's basically the same mapping system from Roguish. There's a bug right now where it needs you to move once to calc the light and it's not being centered, but it does work. 4 weeks ago
camera.cpp FINALLY fix that stupid bug. The cause was two-fold: I was giving every 'enemy' a sprite, but that automatically included the player in the list of enemies, which meant that I was rendering the player's sprite while moving. Then in the sprite casting loop I was rendering things at 0. 1 month ago
camera.hpp FINALLY fix that stupid bug. The cause was two-fold: I was giving every 'enemy' a sprite, but that automatically included the player in the list of enemies, which meant that I was rendering the player's sprite while moving. Then in the sprite casting loop I was rendering things at 0. 1 month ago
color.hpp We now have a full map that's basically the same mapping system from Roguish. There's a bug right now where it needs you to move once to calc the light and it's not being centered, but it does work. 4 weeks ago
combat.cpp Game now builds and is using the new dynamic component loading but enemies do not spawn in and device events are really working. Also inventory is a giant bag of fail and needs a rewrite. 4 weeks ago
components.cpp Fix up the colors and rendering so that tilemap just uses components::Tile all the time. Need to load all of the config data from json one time on system start instead of constantly, although constantly does make debugging live easier. 4 weeks ago
components.hpp Fix up the colors and rendering so that tilemap just uses components::Tile all the time. Need to load all of the config data from json one time on system start instead of constantly, although constantly does make debugging live easier. 4 weeks ago
config.cpp Amit's code mostly converted to use the new texture.hpp but there's an error on line amt/pixel.hpp:472 2 months ago
config.hpp Finished the first pass of moving everything around and cleaning up as much as possible. 2 months ago
constants.hpp We now have a full map that's basically the same mapping system from Roguish. There's a bug right now where it needs you to move once to calc the light and it's not being centered, but it does work. 4 weeks ago
dbc.cpp Fixed that crash and cleaned up more variables for some study next. I might also try out my debug macros. 2 months ago
dbc.hpp First cut at a replica of the python raycaster. Left side almost works the same but have to sort out math differences. 2 months ago
dbg.h Fixed that crash and cleaned up more variables for some study next. I might also try out my debug macros. 2 months ago
devices.cpp Game now builds and is using the new dynamic component loading but enemies do not spawn in and device events are really working. Also inventory is a giant bag of fail and needs a rewrite. 4 weeks ago
dinky_components.hpp Fix up the colors and rendering so that tilemap just uses components::Tile all the time. Need to load all of the config data from json one time on system start instead of constantly, although constantly does make debugging live easier. 4 weeks ago
dinkyecs.cpp Game now builds and is using the new dynamic component loading but enemies do not spawn in and device events are really working. Also inventory is a giant bag of fail and needs a rewrite. 4 weeks ago
dinkyecs.hpp Game now builds and is using the new dynamic component loading but enemies do not spawn in and device events are really working. Also inventory is a giant bag of fail and needs a rewrite. 4 weeks ago
events.hpp Brought over a bunch of code from the roguelike and now will use it to generate a random map. 1 month ago
fsm.hpp Trying out an FSM for controlling the main loop. 1 month ago
gui.cpp Fix up the colors and rendering so that tilemap just uses components::Tile all the time. Need to load all of the config data from json one time on system start instead of constantly, although constantly does make debugging live easier. 4 weeks ago
gui.hpp We now have a full map that's basically the same mapping system from Roguish. There's a bug right now where it needs you to move once to calc the light and it's not being centered, but it does work. 4 weeks ago
inventory.cpp Game now builds and is using the new dynamic component loading but enemies do not spawn in and device events are really working. Also inventory is a giant bag of fail and needs a rewrite. 4 weeks ago
inventory.hpp Game now builds and is using the new dynamic component loading but enemies do not spawn in and device events are really working. Also inventory is a giant bag of fail and needs a rewrite. 4 weeks ago
levelmanager.cpp Game now builds and is using the new dynamic component loading but enemies do not spawn in and device events are really working. Also inventory is a giant bag of fail and needs a rewrite. 4 weeks ago
levelmanager.hpp Game now builds and is using the new dynamic component loading but enemies do not spawn in and device events are really working. Also inventory is a giant bag of fail and needs a rewrite. 4 weeks ago
lights.cpp Brought over a bunch of code from the roguelike and now will use it to generate a random map. 1 month ago
lights.hpp Game now builds and is using the new dynamic component loading but enemies do not spawn in and device events are really working. Also inventory is a giant bag of fail and needs a rewrite. 4 weeks ago
main.cpp We now have a full map that's basically the same mapping system from Roguish. There's a bug right now where it needs you to move once to calc the light and it's not being centered, but it does work. 4 weeks ago
map.cpp Brought over a bunch of code from the roguelike and now will use it to generate a random map. 1 month ago
map.hpp BROKEN: Big refactoring happening, so it compiles but game does not run and the tests fail. 4 weeks ago
matrix.cpp Brought over a bunch of code from the roguelike and now will use it to generate a random map. 1 month ago
matrix.hpp Brought over a bunch of code from the roguelike and now will use it to generate a random map. 1 month ago
meson.build Game now builds and is using the new dynamic component loading but enemies do not spawn in and device events are really working. Also inventory is a giant bag of fail and needs a rewrite. 4 weeks ago
meson.options Add the tracy wrap and meson options. 2 months ago
panel.cpp We now have a full map that's basically the same mapping system from Roguish. There's a bug right now where it needs you to move once to calc the light and it's not being centered, but it does work. 4 weeks ago
panel.hpp We now have a full map that's basically the same mapping system from Roguish. There's a bug right now where it needs you to move once to calc the light and it's not being centered, but it does work. 4 weeks ago
pathing.cpp Brought over a bunch of code from the roguelike and now will use it to generate a random map. 1 month ago
pathing.hpp Brought over a bunch of code from the roguelike and now will use it to generate a random map. 1 month ago
point.hpp BROKEN: Big refactoring happening, so it compiles but game does not run and the tests fail. 4 weeks ago
rand.cpp Brought over a bunch of code from the roguelike and now will use it to generate a random map. 1 month ago
rand.hpp Brought over a bunch of code from the roguelike and now will use it to generate a random map. 1 month ago
raycaster.cpp Maps are back and have color now. TileCell needs a rework. 4 weeks ago
raycaster.hpp Sprites now have a distance lighting calculation that's the same as the raycaster using a shader. 1 month ago
render.cpp We now have a full map that's basically the same mapping system from Roguish. There's a bug right now where it needs you to move once to calc the light and it's not being centered, but it does work. 4 weeks ago
render.hpp We now have a full map that's basically the same mapping system from Roguish. There's a bug right now where it needs you to move once to calc the light and it's not being centered, but it does work. 4 weeks ago
save.cpp BROKEN: Big refactoring happening, so it compiles but game does not run and the tests fail. 4 weeks ago
save.hpp BROKEN: Big refactoring happening, so it compiles but game does not run and the tests fail. 4 weeks ago
shiterator.hpp Brought over a bunch of code from the roguelike and now will use it to generate a random map. 1 month ago
spatialmap.cpp More cleanup of the raycaster, finally removed the window as a dependency but I went against making it an sf::Drawable since that had a lot of code quality problems. 1 month ago
spatialmap.hpp Raycaster now controls the sprite locations with SpatialMap rather than the old way. Quick hack job in main.cpp that shows how they can move too. 1 month ago
stats.cpp Bring in the gnu omni font for text, and rewrite my stats code to use c++ and then use that to calc FPS stats for an FPS display on the left. Debug build gets about 48, release gets about 500fps. Amit's code will probably do even better. 2 months ago
stats.hpp Bring in the gnu omni font for text, and rewrite my stats code to use c++ and then use that to calc FPS stats for an FPS display on the left. Debug build gets about 48, release gets about 500fps. Amit's code will probably do even better. 2 months ago
systems.cpp Fix up the colors and rendering so that tilemap just uses components::Tile all the time. Need to load all of the config data from json one time on system start instead of constantly, although constantly does make debugging live easier. 4 weeks ago
systems.hpp We now have a full map that's basically the same mapping system from Roguish. There's a bug right now where it needs you to move once to calc the light and it's not being centered, but it does work. 4 weeks ago
texture.cpp Raycaster now controls the sprite locations with SpatialMap rather than the old way. Quick hack job in main.cpp that shows how they can move too. 1 month ago
texture.hpp Sprite is no more, now using the position from the level's world. 1 month ago
tilemap.cpp Fix up the colors and rendering so that tilemap just uses components::Tile all the time. Need to load all of the config data from json one time on system start instead of constantly, although constantly does make debugging live easier. 4 weeks ago
tilemap.hpp Fix up the colors and rendering so that tilemap just uses components::Tile all the time. Need to load all of the config data from json one time on system start instead of constantly, although constantly does make debugging live easier. 4 weeks ago
worldbuilder.cpp Game now builds and is using the new dynamic component loading but enemies do not spawn in and device events are really working. Also inventory is a giant bag of fail and needs a rewrite. 4 weeks ago
worldbuilder.hpp Game now builds and is using the new dynamic component loading but enemies do not spawn in and device events are really working. Also inventory is a giant bag of fail and needs a rewrite. 4 weeks ago

README.md

Simple Raycaster Study

This is a study project for me to learn the raycasting technique. It's an older technique that's not really used much but I'm learning game dev historically and it's definitely been used in the past (Doom).

Don't Study This Code

This code is mostly a tech study and demo, not an actual game. It could be a game but it will require a significant cleanup to improve the layout and design. It's also the culmination of studying about 6 different tutorials on raycasting so it has a weird mix-match code style as I brought ideas over from other tutorials.

Eventually this will be more understandable, but for now just browse it casually and ignore the inconsistent style and kind of stupid structure.