Real life is a bit busy, so I’m putting off starting until the very last minute of Sunday. Not sure how much I’ll get done in the first half of the week, but I at least want to have display, basic monster behaviour, and a basic trait system working. I plan to make a reasonably generic trait/ability system like in Age of Wonders, where everything you need to know about an actor (except its basic numerical stats) is contained in a list of traits.
Some traits are abilities to activate (like being able to cast a spell), some are passive bonuses in special situations (like taking half damage from fire attacks), some are just information markers (like being undead, which makes an actor vulnerable to anti-undead abilities).
I’ll be using the Crawl tiles because I don’t like the Oryx or Dawnhack tilesets. And The Crawl tiles are CC0 which is a lovely license.
The amount of alcohol in currently in my bloodstream is not typical. A lot of piano came out of my fingers this evening.
Poachers Will Be Decapitated!
Decades of exploitation by “adventurers” have left many species such as Orcs, Kobolds, and Trolls in danger of extinction. The monstrous dragon Uozeni, who once burnt your family and your village to cinders, lurks at the bottom of a previously undiscovered cave.
Populations here are much stronger than elsewhere, and the Society for Conservation and Ecology of Dungeons are protecting the inhabitants in the hope that they can later be reintroduced to other locations. Adventuring is restricted by strict limits on killing and looting, which are enforced by the Rangers, Inspectors, and Castigators of SCED.
These kill limits aren’t nearly enough to sustain a traditional approach to dungeon adventuring. To avenge yourself on Uozeni, will you work within the rules, subvert them with stealth, or publicly flout them?
Remember: SCEDRIC decapitates poachers!
I’ll be writing in C++, using BearLibTerminal for display and my own library Griddle for back-end tasks like map topology, actor management, FoV, and pathfinding. I’ve written some experiments in map generation and general use of BearLibTerminal and Griddle, and a lot of their code will probably be used in the 7DRL. Source for the game will be released as usual.
Griddle is intended to be reusable in a wide variety of grid-based games, enabling effects like seamless travel between map chunks and rotation of player perspective. It makes heavy use of template metaprogramming and is currently a header-only library. Once it has a more stable and well-organised API I’ll try to release it as a compiled library that can be used from other languages. That way it can usher in a new golden age of ridiculously disorienting maps cobbled together from rectangles and glue. With a side order of smoke and mirrors.
Work began at 19:30 GMT on Saturday. I’ve recruited an artist and almost got terrain drawing correct (there are a few issues with corners). Currently focussing on getting the entity/event system running – this is one case where getting an @ walking around on the screen isn’t trivial.
Partly inspired by timerogue (a 2008 7drl that didn’t get very far), and Achron (a strategy game that lets units travel through time), this year I’m going to make an attempt at a roguelike with time travel-based gameplay. The player will pull off various bank/art gallery/museum robberies, until they get caught and some government people rope them into thwarting the plans of an evil genius in a volcano base.
Within the temporal bounds of each mission I’ll be aiming for total freedom in time travel – just decide to jump and set a time offset or absolute time, and you go there. Careful timing and flexible planning will be necessary to get around or defeat armed time travellers and guards. I’m not sure how much to reveal about the time travel mechanics at this early stage, but suffice it to say it will be easy to generate paradoxes (the simplest option being to take a step, go back 3 turns, and shoot your past self in the head), and I’ve spent a lot of time planning out how they should be dealt with (ie. not with immediate failure – some paradoxes may be desirable).
I’ll use SFML for display rather than libtcod, just because I haven’t had any difficulty with linking it on linux or windows. I’ll probably crib some display code from Surrounded.
For those curious, the Temporal Tumbledryer is a critical element in the cycle of stealing things, using the money to refresh supplies, and using the supplies to steal more valuable things. A very noble cause.
Well, there are lots of features I wanted that aren’t in it. But it’s playable, it’s very coffeebreaky, it can be very challenging, and it’s very prone to killing you just when you think you’ve won. Don’t let them get too close. Run away often. Use your explosives wisely.
I guess it turns out a worthwhile roguelike doesn’t have to have remote controlled brain slices.
Comments, feedback, bug reports, particularly along the lines of “Add in-game help as a bugfix or I refuse to play” can be posted here, or sent to quendus at google’s email domain. I’ll post to the newsgroup soonish.
Prerelease version. With 11 hours to go, any bug reports, complaints, flames, appreciation, comments, whatever would be appreciated. In particular, is there enough information in the interface to address the concerns previously expressed in comments?
Lots of progress. Scent generators do their jobs (when set on a timer), there’s a lot more information in the interface, the sound system is almost working (at the moment you can only hear explosions), holograms are almost working, monster info is displayed in a crude manner, and for the memory system to work I just have to hide the bits that are unknown. Messages and other big wodges of text behave nicely, there’s a speed system, both player and monsters can run, subject to the constraints of stamina (and running speed decreases as stamina is depleted). Screenshot and second prerelease will appear sometime-ish.
gradated sensitivity to scent for monsters
correct sound sensitivity (explosions make you deaf for too long, footsteps are inaudible)
critical hit system
option to pick up/put down/hide/activate/configure items (at the moment only throwing works)
Winning is now a bit too easy, because high explosives kill things very reliably. I’ll crank up the monster spawn rate when all the player’s nice toys are implemented.
It’s playable, it’s winnable, it’s losable. There are invisible explosions. There are also lots and lots of missing features. But any bug reports or complaints or recommendations would be appreciated! I’m particularly interested in how fast you move when you hold a key down, because scent maps take a lot of processing and some of the intended features will require more scent maps.
Long messages and descriptive text don’t behave nicely
On my monitor, blue on black is really difficult to read (any suggestions for alternative colour schemes?
Memory is not bounded by number of monsters and items that exist, but by number of monsters and items that have existed in that run. I die or win before this becomes a problem, and the number of corpses you can make is bounded by your finite ammunition.
It is not fun to have to inspect a monster by targeting it and pressing ‘i’ to find out how dangerous it is.
Explosions are implemented but buggy, monsters can follow your scent, monsters spawn, you start in a ship, tab targets a visible monster, the objective (which I haven’t written down yet) is almost accomplishable but not quite with the present equipment (I tend to die with the exit in sight), and I’m marginally less hamstertastic than yesterday.
Urgh. There were some issues with a drill and some anaesthetic and I spent yesterday evening unable to concentrate on coding. So, little progress again. Things can be thrown, set to activate on a timer, and registered to the remote control but not activated using it. Hopefully today will be more productive, since I have an excuse to sit around all day. Hamstertastic.