Shoals development from a Tiles perspective

As you might or might not know, the overall Shoals development happened with the speed of a glacier. First started during the development of 0.3.x, the beginning of the Shoals implementation, then codenamed Islands, roughly coincided with Enne Walker’s integration of tiles into Stone Soup. To me, it thus makes perfect sense to have a look at the relationship between Tiles and Shoals development.

Actually, the very first effect of the Shoals on the game had nothing to do with tiles and was quite indirect:
With the unexpectedly slow development of our first attempt at creating a new dungeon branch and the huge success of portal vaults, both of which were introduced around the same time, level designers were encouraged to implement their branch ideas in the form of portal vaults. One could say that indirectly, the Shoals’ repeated postponement resulted in a larger number of portal vaults than might otherwise have been the case.

A centaur battling harpies and merfolk in the Shoals

Shoals screenshot in DCSS 0.5.2 wizard mode

When I had my first look at the tiled version of Dungeon Crawl, around the release of 0.3.2, I believe it already had Denzi’s beautiful sandy floor tiles, but the Shoals didn’t have a unique monster set yet, instead drawing on centaurs, cyclopes and fish. During 0.4 development, Haran Pilpel changed the Shoals’ level generation to create a number of islands, the size of which decreased as their number increased the deeper you delved into the branch. We also added merfolk fighters and mermaids as well as the Shoals-only unique cyclops Polyphemus, but little else happened. 0.5 saw the addition of sirens, harpies, sharks and the unique merfolk sorceress Ilsuiw, but that was still by far not enough to declare the branch “ready for shipping”.

Sure, we were dreaming of plants and rocky island shapes, a greater merfolk variety, krakens and tides, but it all seemed so very far away.

Shoals screenshot in the 0.6 development version, showing new water and kraken tiles

Then, in 0.6, suddenly things picked up speed, as many developers chimed in so as to, this time, finally get the Shoals out of the door. First, the rock border was changed to “open sea”, both to slam down on the cheap trick of digging out the level border and for greater flavour. A while later, Denzi’s new water tiles were added, their wave like look considered perfect for a sea-based dungeon branch. Next came Adam Borowski’s implementation of the fearsome kraken, and, of course, the addition of the corresponding tiles, again courtesy of Denzi. The idea of krakens inhabiting the Shoals was actually a very old one, but it took a long time for us to work out how to handle its tentacles, now treated similarly to summoned monsters that disappear when they stray too far away from the kraken’s main body.

A few months later, Darshan Shaligram stepped in, and in a series of baffling commits greatly overhauled the Shoals’ level generation — and introduced tides! Without the islands’ previous strongly elliptic shape, the levels now look much more natural and the tides’ rising water gives a sense of urgency to exploring the branch, especially as the merfolk monsters, now of greater variety and more dangerous than ever before, feel very much at home there and don’t mind high tide in the least.

When I had a look at the new and improved Shoals, I couldn’t help thinking that the water tiles’ clearcut edges, while working okay for stagnant bodies of water, looked out of place with the rise and fall of the sea. Thus, the introduction of the tides prompted me to add transitional wave tiles between water and floor, something that incidentally would have been much harder to do without Denzi’s new tiles.

A player merfolk encounters Ilsuiw and entourage, as well as a snapping turtle

0.6 Shoals screenshot, featuring Ilsuiw and entourage, as well as a snapping turtle

Unfortunately, the overlays for monsters standing in water couldn’t cope with the new dynamically constructed water tiles, which is why Enne Walker rewrote the Tiles’ transparency calculations – twice! – so the overlays are displayed correctly for everyone. You see, one of the methods doesn’t work well for some systems, so we had to implement another, simpler way of doing overlays. The former method is nicer and can be enabled by setting the option tile_better_transparency = true. As it’s not entirely reliable we unfortunately can’t make it the default one.

Independently from that, we also modified the code to allow developers to assign weights to tile variants in a tileset, so they can have different probabilities of being used when chosen at random. Again, I mostly had the Shoals in mind when I did that because I felt that the more eyecatching “large rock” floor tiles shouldn’t be as common as the ones featuring pebbles or only sand, though it also came in handy for the animated water tiles as well as for a variety of wall types. The animations, incidentally, were not spawned by the Shoals but were originally supposed to be a mere debugging tool in tracking down the infamous Tiles’ lag. Then I liked the effect so much that I applied it whereever I could. :)

After December’s introduction of merfolk aquamancers, javelineers and impalers, in January, we got snapping turtles and alligators. While I was happy to see the Shoals becoming more and more interesting, the tiles developer in me grumbled quite a bit about the sudden demand for more and more new tiles. It was a similar frustration, actually, in response to the great number of tileless new uniques, which led me to create some public lists on the wiki covering missing tiles for 0.6 and elsewhere, which in turn resulted in us getting more tile submissions from players than we’d ever bargained for, including redesigns of old uniques and, of course, many tiles for new monsters and dungeon features. At the same time, my working method has always been to add tiles in two phases: first, a preliminary version that is workable and hopefully not too shabby, and later, an improved version thereof. This is why, all the while the other development took place, already existing tiles (and not only for monsters) were getting tidied up, modified to some degree, or replaced with new designs, some of them contributed by non-devteam members. Today, of the Shoals monsters, only the alligators are still lacking tiles.

0.5.2 Shoals monster tiles, plus first turtle version

0.6 Shoals monster tiles, now improved

Development of the Shoals continues, and overhauls of level generation have branched out to other sections of the Dungeon, such as the Lair, the Swamp, the Vaults. Meanwhile, the tile developers of the team like the transitional water tiles much more than we had anticipated and are by now planning to apply the new water tiles and wave transitions to the rest of the Dungeon as well. In the long run, we’d like to make levels look less grid-like, less “tiled” for lack of a better word, in general by also smoothening the transitions among other tile types, most prominently floor, and maybe also some of the more natural wall types. For 0.6, we regard the Shoals as some kind of testing ground where we can experiment with the goal of a smoother level layout.

A player merfolk surrounded by harpies, near a siren, ruins, and the open sea

0.6 Shoals screenshot, between ruins and the open sea

Just imagine the whole of the dungeon looking like that! I certainly like what I’m seeing and I hope you do, too.