Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Topics - Quendus

Pages: [1]
1
7DRLs / 7DRL Success: Poachers Will Be Decapitated!
« on: March 17, 2014, 01:25:25 AM »
Windows download: https://bitly.com/1qzKCHO (dl.dropboxusercontent.com/u/6433222/PoachersWBD.zip)
Windows runtime requirement: http://www.microsoft.com/en-gb/download/details.aspx?id=40784 (32-bit x86 version, not 64-bit!)
Linux download: by request
Mac download: ask Cfyz
Source: coming soon



Quote
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!

The game is completely mouse controllable. Left/right click on abilities to select them, and click on the map to use them. Mouse over an enemy to see its stats and abilities.
Travelling is interrupted by enemies in view. You may want to use numpad, HJKLYUBN, or custom controls (see readme) to move more easily.
Your objective is to reach dungeon level 19 and kill the evil dragon Uozeni, who is responsible for the loss of your home and family. You do not currently have enough power to defeat Uozeni; you can gain power by upgrading your stats and taking items from the floor.
Upgrading your stats, as usual, requires you to slaughter dozens of other montsers. However, SCEDRIC is keeping track of how many monsters you kill. If you exceed the limit of 20, you will be branded a poacher and SCEDRIC will attempt to decapitate you.
Inventory interface is not fully implemented. You can pick up items and use them, but not choose what to equip or drop.
Character development is not fully implemented. You get a random stat boost when you upgrade.

Dependencies:
* BearLibTerminal ( foo.wyrd.name/en:bearlibterminal )
* Griddle ( https://github.com/essarrdee/griddle )
* Picojson ( https://github.com/kazuho/picojson)
* Linux: C++11 compatible compiler
* Python: http://python.org

Enjoy! :)

2
7DRLs / Poachers Will Be Decapitated: 7DRL progress reports
« on: March 05, 2014, 01:11:10 AM »
Quote
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 cross-post updates here, on my blog (kleinroguelikes.blogspot.com), and at 7drl.org.

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. 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.

3
Programming / Generating well-connected maps
« on: February 21, 2014, 03:17:38 PM »
A lot of roguelikes, especially 7DRLs using libtcod's built-in BSP dungeon generator, have very badly connected maps. Typically the rooms will be connected in a tree-like structure. This has some unfortunate consequences:
  • There's only one route between two locations.
  • Fully exploring the level means backtracking a lot.
  • A hazard blocking one corridor can interdict half of the level.
Some very rushed roguelikes even have dungeons with disconnected sections; the disadvantages are clear enough in that case.

I've written a small Python module that alters maps to make them 2-connected. That means:
  • Blocking one tile can never prevent access to any region of the level.
  • Explorers can clear a level much more efficiently than in a basic BSP dungeon.
  • There are more tactical options, especilally when fleeing or avoiding a monster.

The code (public domain) can be found at https://www.dropbox.com/s/kjwnidb3h6q8nc0/biconnect.py. You can test it online at http://ideone.com/9B12Dn. Here's an example use case:
Code: [Select]
import biconnect
my_width = 80
my_height = 40
# The module still uses some ugly global variables.
# These can be factored out into a class.
biconnect.width = my_width
biconnect.height = my_height
# Format: list of lists of bools
# True: Floor, False: Wall
# eg. [[False,False],[True,False]]
my_map = [[False]*my_width for y in range(my_height)]
# ... add some floor tiles ...
# or generate a random selection of disconnected rooms
my_map = biconnect.disconnected_map(12)
biconnected.render(my_map)
my_map = biconnect.biconnected_map(my_map)
biconnected.render(my_map)

Here's some sample output (with the source maps for reference). I used plain rectangular rooms, but the algorithm can handle any input map with more than one floor tile.
Code: [Select]
################################################################################
################################################################################
################################################################################
################################################################################
###########........#################################################.......#####
###########........#####################......######################.......#####
###########........#####################......######################.......#####
###########........###....#####...######......######################.......#####
###########........###....#####...######......######################.......#####
###########........###....#####...######......######################.......#####
###########........###....##############......######################.......#####
####################........###########.......######################.......#####
####################........###########.......###################........#######
#################...........###########.......###################........#######
#################..........######################################........#######
#################..........######################################........#######
#################..........######################################........#######
#################..........######################################........#######
#################.....########################....##########################....
########################........##############.......#######################....
########################........##############.......#######################....
########################........##############.......#######################....
########################........##############.......#######################....
########################............##########......########################....
########################............##########......########################....
########################............############################################
########################............############################################
############################........###############......#######################
############################........###############......#######################
############################........###############......#######################
###################################################......#######################
###################################################......#######################
###################################################......#######################
###################################################......#######################
###################################################......#######################
#############........###########################################################
#############........###########################################################
#############........########################################.....##############
#############........########################################.....##############
#############........########################################.....##############


################################################################################
################################################################################
################################################################################
################################################################################
###########........#################################################.......#####
###########........#####################......######################.......#####
###########........#####################......######################.......#####
###########........###....#####...######......######################.......#####
###########........................................................#............
###########........###....#####...######......####################.#.......####.
###########........###....##############......####################.#.......####.
############.#######........###########.......####################.#.......####.
############.#######........###########.......###################........######.
############.####...........###########.......###################........######.
############.####..........######################################........######.
############.####..........######################################........######.
############.####..........######################################........######.
############.####..........######################################........######.
############.####.....########################....##########################....
############.###########........##############.......#######################....
############.###########........##############.......#######################....
############.###########........##############.......#######################....
############.###########........##############.......#######################....
############.######.................................########################....
############.######.####............##########..................................
############.######.####............###########################.################
############.######.####........................................################
############.######.########........###############......######.################
############.######.########........###############......######.################
############.######.########........###############......######.################
############.######.###############################......######.################
############.............................................######.################
###################.###############################......######.################
###################.###############################......######.################
###################.###############################......######.################
#############........##########################################.################
#############........##########################################.################
#############........########################################.....##############
#############........########################################.....##############
#############.....................................................##############

################################################################################
################################################################################
###########################################################################...##
###########################################################################...##
###########################################################################...##
###########################################################################...##
################################################################################
######..........#################...############################################
######..........#################...######################.......###############
######..........#################...######################.......###############
######..........#################...######################.......###############
######..........#################...######################.......###############
######..........#################...######################.......#######...#####
########........##########################################.......#######...#####
#############################################...##########.......#######...#...#
#############################################...##########.......#######...#...#
################################.........####...########################...#...#
################################.........###################################...#
################################............################################...#
###################################.........#......#########################...#
###################################.........#......########....#############...#
#########################################...#......########....#################
#############################################......########....#################
###########################################################....#################
###########################################################....#################
################################################################################
#########################################################......#################
#########################################################......#################
#########################################################......#################
#########################################################........###############
####################.....################################........###############
####################.....################################........####.......####
####################.....############################################........###
#####################################################################........###
#####################################################################........###
#####################################################################........###
#####################################################################........###
#####################################################################........###
########################################################################.....###
########################################################################.....###


################################################################################
################################################################################
###########################################################################...##
##########################################################....................##
##########################################################.################...##
##########################################################.################...##
##########################################################.#################.###
######..........#################...######################.#################.###
######..........#################...######################.......###########.###
######..........#################................................###########.###
######..........#################...######################.......###########.###
######..............................######################.......###########.###
######..........#################...######################.......#######.....###
########........###################.######################.......#######...#.###
##########.########################.#########...##########.................#...#
##########.########################.#########....................#######...#...#
##########.#####################.........####...################.#######...#...#
##########.#####################.........######.################.###########...#
##########.#####################............###.################.###########...#
##########.########################.........#......#############.###########...#
##########.########################.........#......########....#.###########...#
##########.#############.......................................#.############.##
##########...............##########.#########......#######.....#.############.##
########################............######################.....#.############.##
########################.##########.######################.......############.##
########################.##########.######################.##################.##
########################.##########.#####################......##############.##
########################.##########.#####################......##############.##
########################.##########.#####################......##############.##
########################.##########.#####################........############.##
####################.....##########.#####################.....................##
####################.....##########.#####################........####.......####
####################................#################################........###
###################################.#################################........###
###################################..........................................###
#####################################################################........###
#####################################################################........###
#####################################################################........###
########################################################################.....###
########################################################################.....###
The generator takes a few seconds to run (not too bad for a process that runs once per level), but it is in highly unoptimised python. If it's too slow, there's still a lot of room for profiling and optimisation. Running in pypy or translating to a more performant language would no doubt reduce the time to less than a second.
It takes about half a second to run on the examples here.

4
Traditional Roguelikes (Turn Based) / [ARRP] Encircled (with tutorial)
« on: September 16, 2012, 11:02:08 PM »
Encircled is here!

Unlike every other roguelike around, in Encircled actors' ability to do damage is dependent on the terrain surrounding them and their foes. The objective is to survive through 16 dungeon levels, killing a certain number of boss monsters on each one. Several less significant monsters will do their best to hinder and kill the player along the way. As the player goes deeper into the dungeon, enemies will get tougher and deadlier, but the choice of weapons on the floor will allow the player to fight through them better.

Changes:
* Menu system, including online help
* 6 play modes: standard, tutorial (complete and highly recommended), two quick modes, unlimited mode, and munchkin mode
* Much more interesting level generation
* Offer to dump (very minimal) character stats on death/victory
* Flash damage amounts (like in Sil), remaining HP, and culprit of each attack.
* Option to change animation delay for damage flashing.

Download from dropbox.

Screenshot of the new dungeon generation:

More  screenshots to follow.
Development thread: http://roguetemple.com/forums/index.php?topic=2625.0
Roguebasin: http://roguebasin.com/index.php/Encircled
Blog: http://kleinroguelikes.blogspot.co.uk/2012/09/arrp-encircled-and-mutant-aliens-update.html

5
Early Dev / Encircled
« on: August 25, 2012, 03:48:46 AM »
Download: http://dl.dropbox.com/u/6433222/encircled.zip
Roguebasin: http://roguebasin.com/index.php/Encircled

Just finished this 60-hour roguelike. Unlike every other roguelike out there, you can only attack if the terrain surrounding you matches a pattern on your weapon, and you can only hurt someone if the terrain surrounding them matches a pattern on your weapon. All the enemies have the same restrictions.

Slightly inspired by rogue rage, you automatically attack every turn if you can. All you have to worry about is where to go and whether to pick up a different weapon off the floor.

Objective is to slay a certain number of boss enemies on each level. All the other enemies can be ignored, but they'll do their very best to hinder and hurt you.

The dungeon is initially just a random mess of walls and floors, but as you play a level it gets restructured by whoever stands on a terrain alteration button - as long as someone does that, the dungeon will change so that their weapon patterns are more prevalent.

Screenshots:




6
There was a brief discussion in the IRC channel yesterday about the necessity of procedural content in roguelikes. As a result I set myself the challenge to write the best deterministic roguelike without PCG that I possibly could in 7 hours, based on the code for my 7DRL. 7 hours was way too short, so I made it a 24HRL instead. The result is

MUTANT ARISTOCRATS!

It can be downloaded at https://github.com/downloads/essarrdee/mutantaliens/mutantaristocrats.zip
(Windows exe + *nix source, uses curses).

It's rather difficult, but it can be won on all four settings (thanks, Derrick). The objective is to kill the Alien Emperor, in order to have the legal authority to tell the rest of the Aliens to go away. Since there is *no* use of any random function (there are some pseudorandom functions dependent on game variables), the same sequence of moves will always result in the same outcome.

This is quite a difficult game, so like most roguelikes you will need the knowledge that you can get from your history of deaths. Since the level is invariant, it's possible to draw a map of your characters' discoveries (or look at the level files, which I wouldn't consider cheating).

Anyway, roguelike or not I hope you find it enjoyable!

(I'd be interested to know whether you think it's a roguelike or not)


If you'd rather play something with procedural content and stochastic dynamics, then you'd probably better play Mutant Aliens! instead (http://roguebasin.com/index.php/Mutant_Aliens!)

Edit: It turns out the win message doesn't display, although the game does stop and expect a Q keypress. I can fix this if you feel cheated by the lack of congratulation.

7
Traditional Roguelikes (Turn Based) / [ARRP] Mutant Aliens! update 4
« on: March 20, 2012, 04:06:11 PM »
Updated for ARRP 2012!

In this game, your ship gets a bit confused about some radio transmissions, lands you on an unexplored planet, opens the doors, and refuses to shut them. Your only option, of course, is to pick up all your radio, guns, explosives, and miscellaneous devices, and go destroy the transmitter. Hopefully your ship will let you close the doors and get to your intended destination once you've accomplished that.

Of course, this being an unexplored planet, it's full of alien monsters that want to claw out your spleen and eat it. Hence all the firearms.

Direct download: http://dl.dropbox.com/u/6433222/mutantaliens_update4_arrp.zip (win/linux/mac)
Source code: https://github.com/essarrdee/mutantaliens (linux/mac)
Roguebasin: http://roguebasin.roguelikedevelopment.org/index.php/Mutant_Aliens!
7drl announcement: http://7drl.org/2012/03/17/mutant-aliens-7drl-winner/
ARRP announcement: http://kleinroguelikes.blogspot.co.uk/2012/09/arrp-encircled-and-mutant-aliens-update.html
Video: 1 2 3 4
Let's Play: by Game_Hunter
Reviews: English, by cratuki, Polish, by Irinka

There are *lots* of big changes for ARRP, and there will probably be another updatesince I was concentrating on Encircled ad didn't make half the changes I wanted to.

Screenshot of ARRP version:


Changes for ARRP update:
* Draw bright colours for visible things
* Stop drawing things that are in LoS but out of visual range
* Don't generate aliens with identical representations
* Completely prevent player from being "trapped" (escape was still easy with explosives) when the ship crashes into a building (previous fix only prevented most such cases)
* Fix autotargetting so that it doesn't get confused when the previous target is alive and out of sight
* Allow player to close the door (but not fly away) when the transmitter is destroyed and an alien is in the ship
* Notify player when hit by an explosion
* Don't allow explosions at the corners of the map to break the program
* Choose transmitter location more carefully
* Notify when an explosion happens
* Monsters no longer spawn in player's visual range :3
* Ask for device time and delay before targetting throws
* Put transparent windows in buildings, make doors opaque, randomly turn some doors into floors
* Overhaul terrain destruction - different terrain types take different damage amounts
* Cannon shots can destroy walls and windows (walls unreliably)
* Add critical hits (shoot a monster several times to figure out where it's vulnerable)
* Hologram, sound, scent, and brain devices all give LOS to the player, so they now function as spy cameras as well as distractions
* Overhaul message display to allow partial messages in the message log.
* Include monster health/stamina descriptions, sense descriptions (don't need to be discovered) and finer stat descriptions from Mutant Aristocrats!
* Alter sound levels to allow movement to actually be heard
* Make monsters screech 75% less often
* Make monsters' decision about whether to run slightly more sensible
* Draw running monsters with capitals, draw near-death monsters in red

Here's me almost winning on difficulty level 6:

Here's me winning on difficulty level 7 (I think I just got lucky)


Full details in the README file, but Features:
* Randomised monster stats
* Monster memory system to automatically record the player's observations
* Player-chosen difficulty settings. Level 0-5 are reliably winnable (6-7 are with some difficulty/luck), levels 8 and 9 are murderous
* Running mode (press R) and stamina for both players and aliens - As stamina decreases, the running speed decreases to the walking speed.
* Standardised, reliable equipment for the player (f to fire):
** Pistol (X to select, low damage)
** Assault rifle (Y to select, medium damage)
** Plasma cannon (Z to select, high splash damage, don't get caught in the blast)
** 6 different devices (t to throw them) which can be set on a timer (0 to 9 seconds):
*** (a) Low explosives
*** (b) High explosives
*** (c) Hologram generators, to distract aliens with good vision
*** (d) Noise generators, to distract/scare/deafen aliens with good hearing (and oneself)
*** (e) Scent generators, to distract aliens with a sense of smell
*** (f) Brain slices, to distract psychic aliens. Yeah.
* No health regeneration, no health pickups, no ammunition pickups - you need to escape quickly or run out of resources
* Radio receiver to guide the player to the objective (r to check signal)
* Tab to autotarget when firing or throwing
* Game style that varies with the alien species generated - lots of huge aliens means a game of running away and trying not to get surrounded, lots of small aliens means a shooting gallery, lots of medium-sized aliens could mean anything, and an even mix could mean big trouble.

Bug reports here, or by email (quendus at google's email domain), or on either of the two RGRDs.

8
Hi everyone,
Two weeks ago I started a 7DRL project. After a week I'd made more progress than ever before on a roguelike (I hadn't completed a roguelike before), but not made a playable game. I decided to try making the project as a 14DRL instead, and the result is KleinRL!

Reasons you should play KleinRL:

* Chainsaws.
* Thievery.
* Knitting.
* Bizarre geometry.
* Dropping pieces of wall in the way of your pursuers.

Download link
The game requires python and curses bindings. The file to run is kleinrl.py, but have a glance at rtfm.txt first. Actually, I'll reproduce it here:
Code: [Select]
To run the game, cd into the kleinrl folder and do:

python kleinrl.py

or:

./run.sh

if you have python and curses working properly, that should work.

kleinRL is set on the surface of a klein bottle,
which is rather different from a torus.
kleinRL requires python and a python curses module.

'd'iggers like to move the walls around; they can cause inconvenience.
'z'ombies just walk around randomly; they're annoying.
'h' is supposed to be running away from you, but can be vicious when cornered.
'B' and 'D' want to kill you!
all of these might have picked up nice equipment from the floor.
equipment is green, consumables are blue.
better equipment will generally have a cooler name.

you can walk with vi keys or number keys. you can only rest with 5.

press 'p<dir>' to 'p'ick up a piece of the wall and do the same again to drop it in an empty space.
press 'w[-](0-9)' to 'w'ear/'w'ield a piece of equipment from inventory or floor (no rings on toes or other silliness)
press 'g(0-9)' to 'g'et an item from the floor (identifier required if there's more than one item)
press 'd[-](0-9)' to 'd'rop an item from inventory or equipment (free action)
press 'e' to list current 'e'quipment
press 'i[-](0-9)' to 'i'nspect items in inventory/equipment. Only really useful in debug.
press 't(0-9)' to 't'ake off equipment
press 'q[-][(0-1)' to 'q'uaff a potion from inventory or floor
press 'r[-][(0-1)' to 'r'ead a scroll from inventory or floor
press 'x<dir>*' to e'x'amine tiles
press '{[-](0-9)' to inscribe an item (overwriting previous inscription)
press '}[-](0-9)' to uninscribe an item from inventory or equipment
press 'P' to pray for potentially useful effects (or a smiting)
press 'Qy' to quit


Advice, comments, criticism, berations welcome (but be gentle, this is my first completed RL)

Pages: [1]