Page 1 of 1

The Abyss

PostPosted: Sunday, 29th May 2011, 10:29
by brendan
I'm cross-posting this from C-R-D, seeking additional feedback. The plan is to make the Abyss a more interesting place to visit. What would you like to see out of the Abyss?

---

The biggest change I've made is to level generation. Current Abyss
level generation works by creating a feature vector and then uniformly
sampling from the vector to populate the dungeon. I've retained the
vector, but replaced replaced the sampling step with Worley noise -- a
coherent noise* function based on a fast Voronoi decomposition of 3D
space. Terrain type is determined by the distance from the nearest
point in the decomposition, as well as a unique ID assigned to each
cell. A wobble is introduced to provide variety within a cell. (*A
major advantage of using coherent noise is that we can seamlessly
morph the abyss over time. If the player decides to stand still and
"wait things out" the abyss could undulate around our hapless hero in
a sensibly abyssal way!)

The result is that we find small pools of water, and lava. Metal walls
appear next to other metal walls, and so forth. Open areas are seeded
with wall-tile columns at a low rate The terrain is certainly less
"random" than the uniformly distributed abyss, but retains a
disordered feel. It is my belief that the result is a better play
experience.

My second change is to banishment behavior. Currently, the Abyss is
the Abyss regardless of where the player was upon banishment. With
this patch, the area that the player is banished to resembles a
corrupt version of the player's location prior to banishment. The
probability that a tile is copied into the abyss is inversely
proportional to its distance from the player. The tiles are cleaned up
(traps removed, stairs converted to arches, etc.) and pushed into a
vector, so they're available for reuse if we want to build exit
vaults! I think this still needs some purple smoke effects before it
feels right.

Before Banishment: http://i.imgur.com/mv0Jb.png
After Banishment: http://i.imgur.com/mojJb.png
You might recognize part of the Orb Chamber: http://i.imgur.com/ARgwb.png

I've posted a patch to Mantis: https://crawl.develz.org/mantis/view.php?id=3939
My branch is available on github: http://github.com/bhickey/crawl
Abyssal Knight spawning is a bit dodgy at the moment.

There are still a number of features I'd love -- screaming dungeon
monsters popping into sight in translocational clouds, the abyss
getting harder as a function of:

  • Absolute depth at time of banishment
  • Time spent in the abyss
  • Translocation use and glow
  • How much Lugonu (dis)likes you

Re: The Abyss

PostPosted: Sunday, 29th May 2011, 12:41
by dolphin
From just reading it, that sounds absurdly fantastic (however, I'm no mathematician, nor am I a programmer). But everything that I read and understood, (Corrupt Branch and move out into Abyss, incomplete randomness - structures and pools and whatnot, Abyss getting harder for a variety of reasons, Banished monsters occasionally appearing) I loved. I cannot wait to try this out in Trunk.

Re: The Abyss

PostPosted: Sunday, 29th May 2011, 13:27
by ClawlessVictory
Fantastic ideas. This proposed design is much more interesting and creative than it's current form. Really looking forward to seeing this implemented.

Re: The Abyss

PostPosted: Sunday, 29th May 2011, 18:10
by omndra
I didn't understand 80% of the proposal but it sounds like it sounds like it took a whole lot of work.
Overall i really like it.
However i'm a little bit against having the abyss change in difficulty depending on how far down you've gotten, but i'd be ok with that.

Another thing i've been thinking about is having the Swamp, snake, or shoal branch that doesn't show up in lair pop up in the Abyss or Pan
Only its been corrupted and is much more difficult.
(Imagines fighting off a swarm of Demonic Hydras, and you need cold branded weapons to successfully decapitate them)
Sorry for going off topic XD

Re: The Abyss

PostPosted: Sunday, 29th May 2011, 20:23
by Galefury
Sounds really cool, but I cant try it without compiling crawl, which means I wont. Damn my laziness. :(

I'm hoping the devs will look at it, and if it is as cool as it sounds we might see it in trunk soon. The totally random terrain is quite defining for the current abyss though, so keeping this at least for some areas might be nice. Strongly varying coherence length between areas could produce some fairly ordered areas, and some that are almost like the current abyss, with fluid change between those extremes in between. The arrival point after banishment being based on current surroundings sounds awesome too.

Scaling abyss difficulty comes up every once in a while. IIRC this is generally desired, because currently looking for the abyssal rune is a boring grind, and abyss being easy and infinite equals scummable.

Re: The Abyss

PostPosted: Sunday, 29th May 2011, 22:08
by brendan
Galefury wrote:Sounds really cool, but I cant try it without compiling crawl, which means I wont. Damn my laziness.


I run a server with my latest build: ssh://crawl:crawl@ch4n.org -- I'm not running GDL so it will only accept one player at a time. The level builder is presently bugged for Abyssal Knights, so either wait or enter wizmode straight away.

Galefury wrote:I'm hoping the devs will look at it, and if it is as cool as it sounds we might see it in trunk soon. The totally random terrain is quite defining for the current abyss though, so keeping this at least for some areas might be nice. Strongly varying coherence length between areas could produce some fairly ordered areas, and some that are almost like the current abyss, with fluid change between those extremes in between. The arrival point after banishment being based on current surroundings sounds awesome too.


I'll restore the fully random terrain in patches. You're right about it contributing to the feel of the Abyss. With some very modest increases in level builder complexity I think I can achieve the effect you're describing. I'll also look into pulling the entire level (the parts that have been seen) into the Abyss. This might be nice for self-banishment, or just yank it in with some low probability.

Galefury wrote:Scaling abyss difficulty comes up every once in a while. IIRC this is generally desired, because currently looking for the abyssal rune is a boring grind, and abyss being easy and infinite equals scummable.


I'm entirely opposed to the Abyssal rune as it is. I strongly believe that it should never appear on the floor and should instead always appear in a rune vault. For example, Kilobyte has snagged the Abyssal rune at levels 1, 2, and 3. One player managed to grab the rune at XL 11 and went on to win. This is fundamentally broken.

Re: The Abyss

PostPosted: Sunday, 29th May 2011, 22:44
by Regnix
I think this is a great idea, especially the Abyss representing the level you were banished on. However, this would require tweaking of the "flavour", as the Abyss is currently meant to be "formless".

Re: The Abyss

PostPosted: Sunday, 29th May 2011, 23:41
by brendan
Galefury wrote:The totally random terrain is quite defining for the current abyss though, so keeping this at least for some areas might be nice.


I've implemented this.
For a "sensible default", between 1/6th and 1/8th of the Abyss is generated this way. We can tune it as appropriate. :mrgreen:

Re: The Abyss

PostPosted: Monday, 30th May 2011, 08:27
by galehar
brendan wrote:I'm entirely opposed to the Abyssal rune as it is. I strongly believe that it should never appear on the floor and should instead always appear in a rune vault.

We already have 11 abyss rune vaults with monsters. I'm not sure about their difficulty, but maybe this is enough to stop generating the rune without defence. More rune vaults (and exit vaults) are always appreciated.

Re: The Abyss

PostPosted: Monday, 30th May 2011, 11:20
by joellercoaster
I've just spent maybe twenty minutes wandering around brendan's new Abyss in Tiles mode, and I think it's a great piece of work.

It can feel a bit like a cave system a lot of the time. Not all the time mind you - there are some nice chaotic open spaces, and some twisty dead ends - but it still feels like it could be a bit more featureful. Also wondering if you could somehow use the Abyssal vaults that appear as materials seeds too? I know part of the point of Vaults is recognising them from the outside, but it would stop them feeling (as they sometimes do now) that they've just been plonked down, rather than being part of it.

The pools on the floor are cool, and the way the wall materials cohere is interesting. The banishment-point resemblance is actually quite eerie... "Oh crap, the walls just turned to wax. I'm in trouble, aren't I?"

It is my belief that the result is a better play experience.


Just one guy's opinion, but I definitely concur.

Re: The Abyss

PostPosted: Monday, 30th May 2011, 15:50
by galehar
I've tested it and it looks really great. Looking forward to see the morphing in action :)

Re: The Abyss

PostPosted: Thursday, 9th June 2011, 01:20
by dolphin
Is this gonna go in trunk soon?

Re: The Abyss

PostPosted: Saturday, 18th June 2011, 13:37
by ryak
If it isn't, it really should be.

Re: The Abyss

PostPosted: Saturday, 18th June 2011, 18:43
by Bim
Reallllllllllllly should be implemented! Great work with this, I wasn't too keen on the 'random' look of it before, It just seemed a bit messy most of the time (I know its supposed to be unformed, but still...) and having Lug making it easier/harder would be a nice addition, as at the moment he doesn't really do much in the Abyss (if that makes sense).

Great work!

Re: The Abyss

PostPosted: Monday, 20th June 2011, 17:21
by mumra
This sounds amazing, I love seeing creative mathematics in action :)

To me the idea of "unformed" implies something at unknown (and fluxing) state somewhere between fully-formed and non-existent. The changes this thread describes capture that perfectly.

Re: The Abyss

PostPosted: Wednesday, 6th July 2011, 07:19
by brendan
I updated my branch last night. I think I've finished off the important bits, last thing I need to do is serialize the abyss state across saves. Here's to hoping it can make it into trunk ahead of the tournament.

Features:
  • New Abyss terrain based on 2-octave Worley Noise. Look ma', no RNG invocations.
  • The abyss morphs rather than popping! Monsters are intelligently shoved out of the way. Occasionally a monster will be dragged back into the abyss if it can't be placed.
  • When you're banished, the abyss resembles your surroundings.
  • Vaults are stable islands within the abyss. They eventually decay into their surroundings, taking their contents with them.
  • The Abyss is mappable a la the Labyrinth. Maprot has been changed to be less player hostile. Lugonu worshippers rot less in the Abyss.
  • Abyssal Knights are no longer encased in stone tombs!

Re: The Abyss

PostPosted: Wednesday, 6th July 2011, 09:46
by joellercoaster
This is really awesome. I'm having a problem with the game hanging when I kill things (often but not always, seems to need to be something worth more than a few XP), but it doesn't just happen in the Abyss.

The terrain morphing seems quite quick? A couple of times I was able to just wait a few turns when my way was blocked, which has been one of the really tense Abyss situations for me - getting trapped by water or lava when being chased, and having to weight up burning that potion of levitation or turning to fight.

I think if this makes it into 0.9, it's the most exciting addition so far. And I love Octopodes :)

Re: The Abyss

PostPosted: Wednesday, 6th July 2011, 10:00
by absolutego
if you're on trunk and like 4 hours behind, update, because there have been a flurry of commits pertaining to the new skill system and a few of them were bugfixes.

Re: The Abyss

PostPosted: Wednesday, 6th July 2011, 10:10
by joellercoaster
I think that's what is going on - maybe brendan's branch merged from trunk when the latter was in a buggy state? I have a pure-trunk build of extreme recency that seems happy.

Re: The Abyss

PostPosted: Thursday, 7th July 2011, 06:28
by brendan
I believe everything was made right in the universe with regards to the hang. I've decreased the rate at which the minor noise octave transitions, which should eliminate most of the annoying thrashing. It also looks like kilobyte has merged my changes into trunk!

Re: The Abyss

PostPosted: Thursday, 7th July 2011, 06:45
by Grimm
I am actually looking forward to my next involuntary trip to the Abyss.

Re: The Abyss

PostPosted: Thursday, 7th July 2011, 07:35
by joellercoaster
brendan wrote:It also looks like kilobyte has merged my changes into trunk!


Yeehaw! :mrgreen:

Re: The Abyss

PostPosted: Thursday, 7th July 2011, 08:18
by galehar
brendan wrote:It also looks like kilobyte has merged my changes into trunk!

No he didn't. I'm not sure what git magic he applied to the branch, but it's not merged yet.

Re: The Abyss

PostPosted: Wednesday, 31st August 2011, 21:42
by Galefury
Reviving this thread because new abyss is in trunk, and it's awesome. The map feels a lot more organic, and the morphing is great. Patches of walls, water or lava expand, contract and move, and passages open or close in front of you. Sweet stuff. Every bit as cool as I imagined.

Re: The Abyss

PostPosted: Wednesday, 31st August 2011, 21:59
by mumra
Just mentioned this on ##crawl-dev but thought I'd post it here in case brendan sees -

The one thing that doesn't change in the Abyss is the tileset - it's selected at random upon banishment and never changes no matter how long you're there.

Wouldn't it be awesome if the tileset actually morphed at the same time as everything else? I think the tileset is the one thing that's still kind of uniform about the Abyss right now.

Anyway, yeah the morphing looks great. Have you tried ramping up the speed in Wizmode? It'll be even better once variable speed is in there.