Skip to content

Kookooligit is a volcano in Alaska. It has nothing to do with this project.

Notifications You must be signed in to change notification settings

not-napoleon/Kookooligit

Repository files navigation

Kookooligit

Kookooligit is a volcano in Alaska. It has nothing to do with this project.

http://en.wikipedia.org/wiki/Kookooligit_Mountains

Operation "Let's get drunk and build a rougelike"

Following http://roguebasin.roguelikedevelopment.org/index.php?title=How_to_Write_a_Roguelike_in_15_Steps here's the initial master TODO list:

  • 1 - Decide to write a game (Completed 2013-03-15)

  • 2 - Provision an environment and write Hello World (Completed 2013-03-16)

  • 3 - "@" walking around demo, screen layout, keyboard input, message printing (Completed 2013-03-24)

  • 4 - Map display, wall detection, look command

    • 4.1 - Basic map generation

    • 4.2 - Infinite (non-persistent) map

    • 4.3 - Smooth map scrolling

  • 5 - Saving & Loading, read map from a file, config files

    • 5.1 - Convert to SDL 2

    • 5.2 - Sprite system

    • 5.3 - Read key mappings from a file

    • 5.4 - Show commands for current mode

    • 5.5 - Clean up message list stuff (cap size, use utlist)

    • 5.6 - Basic player object - Turn counter & distance counter

    • 5.7 - Show something in the status window in normal mode

    • 5.8 - Isolate SDL logic - basically, there should be no .h files that import it

    • 5.9 - Save file. For now, just save the player object (turns & distance)

  • 6 - Monsters & Time, one monster moving around, dumb AI, turns, time

    • 6.1 - Creature type model

    • 6.2 - Creature instance model

    • 6.3 - Creatures showing up on the map

    • 6.4 - Player can't walk through creatures, combat hooks, etc

    • 6.5 - Placeholder for combat, death handlers for creatures

    • 6.6 - Death handler for player, multiple game exit routes (save, quit, die)

    • 6.7 - Deal with cleaning up unreachable (off dead map sections) creatures

    • 6.8 - Creature info shows up on look mode (and not tile info)

    • 6.9 - Creatures move

  • 7 - Interaction, stats, basic combat, Pac-man level AI (move towards the player)

  • 8 - Data files for creatures, maps, etc

  • 9 - Items, item stats, inventory system, stacking, containers

  • 10 - Magic, item effects, monster specials, etc

  • 11 - Simple hard coded game, playtest, show it to people

  • 12 - Levels, map generation, saving inactive levels, monster & item placement

  • 13 - Experience, character classes, skills, races, advancement

  • 14 - Citizens, NPCs, shops, non-combat interactions

  • 15 - Cool and unique features, congratulations you have a game

Game concept

Kookooligit is a sci-fi (or perhaps more accurately space opera - there's technology is the point) rougelike. The idea is very roughly inspired by Greg Bear's novel Eon, which (Spoiler Alert from 1985) involves a space-time anomaly in the form of an infinitely long corridor some kilometers wide extending off beyond the end of the universe in some as yet unnamed direction. I'm doing a bad job of describing it; if catstrophic cold war politcs aren't a trigger point for you, go read the novel, it's good.

That said, in Kookooligit, the player has entered such a corridor at a random place. It twists and winds away in either direction in some non-euclidian way. For our purposes, that means the player can't backtrack very far, which we're modeling by capping how many "frames" of map are saved at a given time. As of this point, there's no reason for why the player is in this situation or what their objective is. I have a few directions I might go in with that, but I'm waiting till I get further in before making a decision. For now, it's a pure exploration motive.

I want to emphisize ranged combat, and in particular not limit the player to eight directional fire for weapons. I'm imagining something where the player picks a specific enemy to fire at, or potentially just a random point on the map. When I get to step 6 on the above list, I'll prototype that and hopefully it'll be clearer.

The other centeral concept is the skill system. Rather than being attribute focused like, e.g., nethack, I want to focus on skills the PC learns during the game. These should impact lots of things - e.g. instead of having an identify spell, you id things based on how skilled you are with the relevant technology. There will need to be a good system for defaulting or failing over a skill you don't have to one you do. I'm also thinking auto-leveling through use. I might include some kind of "perks system" for players to have something to pick as they level, to give a bit more direction.

Toolchain

language Classic C, like God intended

operating system OS X for now, since that's what I have. Cross compliers later.

source control Git & github

doucmentation Currently, basically just inline comments. Eventually - RST via Sphinx, probably need doxygen & possibly breathe later http://stackoverflow.com/questions/11246637/using-sphinx-apidoc-to-generate-documentation-from-c-code

other libraries

compiler clang, make, etc

task tracking flat file for now (you're looking at it)

Design Choices

Randomized Map

I've decided to embrace the random map design. This is in part a technical choice, so I don't need to deal with saving maps (they can get pretty big!) and partly a design choice. It fits with the feel of the setting, such as it is.

About

Kookooligit is a volcano in Alaska. It has nothing to do with this project.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published