Mutant Aliens! 24 hour report

The gvi-piev gently shakes you!
24 hours and all I've got is a silver golem

The randomly-named aliens (which don’t yet have very interesting random stats other than hp and damage) can chase and kill the player, the player can shoot the aliens and turn them into corpses, the human’s scent probably diffuses (but no-one reacts to it), there’s line of sight, and exploration, and it compiles on windows and linux.


Mutant Aliens!


My previous completed roguelike, KleinRL, took 14 days, so this time I’m taking heavy advantage of the time available before the contest to make plans. Mutant Aliens! (or whatever I end up calling it) should have these features (in approximate order of importance, or reverse order of remorse if it has to be cut):

  1. Several procedurally generated species of unfamiliar hostile aliens in each game [would have preferred more variation – at the moment all that really matters is size]
  2. Standardised, reliable equipment for the player (including guns, this is cheap sci-fi after all)
  3. Varying AI for the aliens, based on preferred senses (monsters that can see, hear, or smell you, some that can sense where your brain is >:3 ) [same AI, same order of checking the senses, but different sensitivities to the senses. Overall effect is not that interesting)
  4. Hologram projectors, noise generators, scent generators, cultured brain slices to confuse monsters that rely on vision, sound, smell, or psychic powers to find the player [they work, but the player can’t see the evidence of them working unless the player wants to waste time and die (or is playing easy mode)]
  5. Ability to activate these devices (and explosives) by remote controls and timers, and to throw or hide them [timers go up to 9 walking-speed steps, I don’t feel bad about that]
  6. Largish finite wilderness map with a few (multilevel?) buildingsplayer’s ship claims based on radio transmissions to have landed safely at a space station, landscape and hungry aliens suggest otherwise :] [I heart the map generation. Even the “bug” of the ship overlapping a building could be explained as the ship crashing into and demolishing the building…]
  7. Finite ammo, no regeneration, finite medkits [no medkits. if I put in medkits I’d just have to rebalance and increase the spawn rate. It’s already balanced, so there’s no point]
  8. Finding the objective location by trilateration from a noisy radio. Lazy players can blindly search the wilderness/jungle/whatever and run out of ammo (or not) if they want [exactly what I wanted]
  9. Config file to edit controls [this is a 7drl, sorry. If you can use neither hjklyubn *nor* numpad, then you’ll have to email me with a proposed alternative (which I will happily implement), or just get a keyboard with a numpad]
  10. In-game tutorial driven by events [no, this is a 7drl]
  11. Automatic Angband-style monster memory system so that the player doesn’t have to write down everything they ever discover about a species [not as verbose and a lot less precise as angband’s, but useful]
  12. A few scraps of non-procedural plot to introduce and conclude the game [You don’t get much more than in crawl]
  13. Weak points for some alien species, discoverable randomly on every shot and automatically targeted thereafter (thus making the finite ammo a resource which can be used more efficiently as the game progresses) [was going to implement this on the last day, spent the time polishing and balancing instead. I still think this feature would be a worthwhile addition, though – it would mean that the lack of ammo on high difficulty settings is less of a problem, and it would give an actual reason to use the pistol (this very feature is why I thought the pistol was worth including!)]
  14. Speed system, with running ability for player and aliens? [yep, works very nicely. Adds at least as much to the game as the weak points]
  15. Presenting the plot stuff at the beginning and end using events in the game engine, rather than walls of boring text? [hah, no. 7drl]
  16. Flavour text describing the aliens that isn’t horribly beige?? [not a chance]
  17. Interesting interactions between aliens??? [There is one – the screeching is their signal “follow me, I know where the evil alien invader with the guns is!”. I was intending something a bit more elaborate, but 7drl]
  18. Stats for the player that vary at the start of the game???? Health for more HP, xenobiology for more chance to find weak points, accuracy, speed… [no. would have been trivial to implement, but would add nothing. Maybe once weak points were implemented there would be some meaningful choices, but whatever.]

With all the question marks this was probably ambitious, but without the question-marked things this was just about doable in 7 days (Including some long train journeys). I crossed out the features as they got implemented (lies, I crossed them out *some time after* they got implemented).

Things I expect to take a significant amount of time:

  • Coding an AI flexible enough to deal with different attack ranges, ability to run, 4 different ways to detect the player, contingency plans for when the favourite sense doesn’t detect the player, sufficiently entertaining responses to confusion devices… [Yeah, this took a while]
  • Procedural flavour text to go with procedural alien species [you’re joking, right?]
  • *Balancing* [a day of playtesting, culminating in “this needs user-choosable difficulty”]
  • The whole timer/remote control/activate-immediately thing, combined with dropping devices, hiding them, throwing them. Complete standardisation of the inventory will help – there are only 6 devices, which can be in 3 states (on timer, on remote control, neither), and ammo for 3 guns makes the inventory 21 integers, and far fewer than 21 letters will be needed. The flowchart of keypresses I need to untangle to make this user-friendly will likely be awkward, though. [I didn’t do most of this. I implemented a framework strong enough to cope with these features, but without any remote controls, dropping, or picking up, it became completely unnecessary. So I just glued a black box on top and made the interface a lot simpler. The inventory isn’t a bunch of integers, but it’s presented as one.]
  • Config file parsing, unless I find it prewritten
  • Monster memory didn’t take long at all]
  • The plot stuff, if I try to make it fit in the game engine
  • The tutorial, if it’s to be useful

Things I naïvely expect to take not very long:

  • Inventory. It’s just 21 integers, right? [No, it’s not. But it is done.]
  • Combat mechanics, which will be nowhere near as involved as KleinRL’s
  • Map generation (drop some trees everywhere, make some buildings out of rectangular rooms, done)
  • The radio (take inverse square of distance, add noise, map to description)
  • The scent map (no more than the Laplacian matrix, right?)
  • Stats (Just another thing to put in the engine formulae, but it wasn’t worth the 30 minutes it would have taken)

I plan to do this in C++ with pdcurses and ncurses for great portability. There’s not enough time for me to learn libtcod concurrently with writing this.