Skip to content
A basic roguelike built in C
C C++ Other
Branch: master
Clone or download

Latest commit

Fetching latest commit…
Cannot retrieve the latest commit at this time.

Files

Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
.vscode [Day 48] Dec 3, 2017
sdl2 Day 1 commit Sep 14, 2016
.gitattributes 💥🐫 Added .gitattributes Sep 3, 2016
.gitignore [Day 24] Implementing the combat system! Making players attack. Dec 12, 2016
.ycm_extra_conf.py Added YouCompleteMe file for coding delight. May 26, 2018
LICENSE Create LICENSE Feb 28, 2018
Makefile [Offstream] Fixing memory errors. Jan 25, 2017
README.md Create README.md Sep 7, 2016
SDL2.dll Day 1 commit Sep 14, 2016
String.c [Day 49] Dec 17, 2017
String.h [Day 39] Adding more depths to the dungeon! Apr 30, 2017
build.bat Day 2 Sep 15, 2016
config.c [Day 49] Dec 17, 2017
dark.c [Day 50] Dec 31, 2017
font10x10.png [Offstream] Added view_new helper method. Jan 28, 2017
fov.c [Day 45] Finishing up the Hall of Fame Jul 9, 2017
game.c [Day 50] Dec 31, 2017
gameover.png [Day 33] Adding Endgame screen Feb 23, 2017
graphic16x16.png [Day 50] Dec 31, 2017
hashmap.h [Offstream] Finished Hashmap implementation. Oct 16, 2016
hof.cfg [Day 50] Dec 31, 2017
items.cfg [Day 47] Nov 26, 2017
launch.png [Offstream] Adding a graphical launch screen (for now) Feb 11, 2017
levels.cfg [Offstream] Generalizing some monster functions so we can use them fo… Mar 14, 2017
list.c [Day 49] Dec 17, 2017
map.c [Day 49] Dec 17, 2017
monsters.cfg [Day 48] Dec 3, 2017
screen_end_game.c [Day 50] Dec 31, 2017
screen_hof.c [Day 50] Dec 31, 2017
screen_in_game.c [Day 50] Dec 31, 2017
screen_launch.c [Day 50] Dec 31, 2017
screen_win_game.c [Day 50] Dec 31, 2017
scrollBackground.png [Offstream] Tweaking bg image Apr 17, 2017
stb_image.h Day 2 Sep 15, 2016
terminal16x16.png Day 2 Sep 15, 2016
ui.c [Day 50] Dec 31, 2017
util.c [Day 43] Fantasy name generation May 31, 2017
you_won.png [Day 48] Dec 3, 2017

README.md

DarkCaverns

A basic roguelike built in C

What's this all about?

The goal of this project is to build a classic roguelike game using the C language. A secondary goal is to do this with minimal dependence on pre-built libraries - we're going to be building most of the stuff that we need in our roguelike ourselves. We'll use the SDL library to give us cross-platform video support and input event handling, but we'll be building all the game-related code ourselves.

Why C?

C is a great language for learning the nuts and bolts of what is happening on your computer. It respects you, the developer, by giving you total control over what is happening with your data and your code. Plus, it's a small language - and therefore relatively easy to keep in your head.

Some people are frightened of C because it uses pointers and forces you to think about memory management, but it is my hope that at the end of this series, you will realize that all that stuff isn't as scary as is sounds, and by learning about it, you will become a better programmer. Even if you choose to do your next project in another language, you'll know a lot more about what's going on under the hood.

Why aren't you using a library like libTCOD or something to make things easier?

While using a library such as libTCOD would certainly make some aspects of our game development easier, we end up trading control and understanding for ease of use. If we build all aspects of the game ourselves from scratch, we gain true understanding of how everything fits together, and that's the real point of this exercise.

Once you understand the underlying algorithms, they become less intimidating, and you'll hopefully gain the confidence to tweak the existing algorithms or create new ones to achieve unique effects in your own game.

You can’t perform that action at this time.