Archive for December, 2011

The Sacred Mechanisms

Posted in Dungeon Generation, Gameplay, Graphics, Rambling Tangent, Room Connectivity, Screenshots on December 5, 2011 by sfahy

At the moment I’m working on developing the basic combat system. Combat is largely predicated on player attributes and equipment, but I want to introduce a level of more immediate strategy. By allowing the player to execute resource limited special moves during combat, the focus is shifted towards the strategy employed in each encounter, rather than just a long term min maxing of stats.

Another area I’ve been doing a lot of work on recently, and am particularly excited about, is the variety of mechanical devices that will be littered about the dungeons.

The machines can be interacted with in different ways. For example, the Translocational Impeller pictured, at it’s most basic mode of interaction, teleports the player to a random location in the dungeon. More advanced modes of interaction are possible, such as teleporting an enemy, teleporting to a specified location, charging an item with a teleport spell and so on.

The advanced modes of interaction are opened up as the player’s character and the game progresses, and allow the dungeons to gradually increase their depth of interaction without dumping complexity on new players.

The machines create the potential for emergent interaction with the dungeon itself. For example, there could be machines that flood rooms with poison gas, or heal everyone in a certain radius, or enchant a weapon according to what item is fed into it, or really do anything that can be done within the bounds of the gameplay system.

The machines will also allow the game to add twists to existing mechanics, for example a machine that suppresses spell effects in a radius, that can be modified by the player to amplify them, or to only suppress enemy effects.

The temptation is to go full on dwarf fortress mode and create a vastly complex system with incredible depth that inspires fear and trembling in all who behold it, but I think that by gradually introducing new interactions with character progress, and above all presenting a clean and context aware interface, the depth can be captured without the complexity. I think the most important rule of thumb for this and all the gameplay systems is that the player should not need a wiki in order to use this.

Once gameplay becomes tied to specific areas in the dungeon, however, the danger arises that the player will attempt and fail to navigate. For example, with the spell suppressing machine example, an obvious strategy for a combat oriented character would be to lead spell-casting enemies to it and attack them. But the player doesn’t have the same high level overview of the environment as in a traditional roguelike, and the absolute last thing I want in the game is to have the player wander aimlessly through the level, endlessly searching for a visited area.

The level generation process uses square rooms as it’s unit of synthesis, maintains a directed graph of parent to child room relationships, and only connects, combines, populates and furnishes rooms once every room has been placed.

Structure could be introduced at the graph level, for example creating a chain of rooms with one entrance and exit at either end. At the moment, every room is connected to every room that shares a wall with it, which creates an environment that is relatively easy to navigate in any direction, but that is formless – It can be difficult to identify landmarks and backtrack.

A lower level solution is to attempt to introduce texture rather than structure.

2D Perlin noise is generated across the level and used to modulate the dimensions of any rooms generated at a given location. This results in a sort of compression and rarefaction of room size across the level, with smaller rooms clustering together and creating a kind of ambient structure in the level that makes orientation easier without attempting to impose rigid patterns.

A combination of both these approaches should hopefully make directed navigation  possible without encouraging it.

On the graphics side, I’ve been experimenting with the idea of using a simple directional shadow map that would anchor the scene together without being an accurate reflection of the lighting. This would save a lot of the resource and complexity overhead of omnidirectional shadows, but the downside is that it’s horrible and it looks horrible. Horrible.

I think after a lot of intense graphics programming I feel a lot more confident that I can get a decent implementation of dual parabaloid shadow mapping into the game. Light sweeping through doorways into the darkened rooms beyond is a really cool effect and adds to the vibe of being alone in a hostile environment. Also it resonates with the torchlight effect used in so many roguelikes, and if this game is about anything, it’s about heritage.

 

Advertisements