PARKING STRUCTURE
Controls: Use the arrow keys to move.
Seven Day Roguelike (7DRL) competition entry. It's partially complete, in the sense that it's playable and you can win it, but it's more of a tech demo than a game. It's also very buggy. Sorry! But this was all I could do in a week.
Traditional roguelikes play out on flat 2D dungeon maps. These maps are connected sequentially through up- or down-stairway glyphs (usually '<' or '>' ) that are connected to each other on adjacent maps. The way that stairways work in traditional roguelikes ensures that the player experiences individual levels in the dungeon as distinct, atomized places separate from each other. It does not have to be this way, as my little contest entry demonstrates. In PARKING STRUCTURE the different dungeon levels have shared boundaries and it is possible to walk between them without having to use a stairway. The intent of this approach is to make exploring multidimensional spaces feel more natural and engaging by eliminating the hard change between levels. I'm not sure I succeeded or not.
The game achieves the (mostly) natural connection between layers by specifying some tiles as ramps that lead upward or downward. On one level there would be a set of down-ramps leading to the next level, and in the same place on adjacent squares in the next level there would be up-ramps leading back up. When the player steps onto a down-ramp, they are instantly teleported down a level. If they take a step backward, then they're standing on the up-ramp and are teleported back. That this appears mostly seamless requires two things:
1) That your line of sight algorithm knows how to handle the ramps.
2) That the dungeon layout on the two maps is identical in the area where the map transition occurs, so that the ramps leading upward and downward are placed correctly and sensibly, so that e.g. the player doesn't walk down a ramp and find themselves teleported into a wall.
I achieved #1 by writing new line of sight (LOS) code from scratch. The last time I wrote LOS code was in 2015 and when I was looking at it I realized that it couldn't be easily adjusted to work with multiple layers. I came up with a new algorithm that tracked and collected "beams" of light and determined when they interfered with (light-blocking) wall tiles. Whenever a beam of light would intersect with a ramp tile, the part intersecting with the ramp could be split off and moved to the new layer where it would be allowed to proceed. In this way the player can look "down" and "up" across different levels. I unfortunately spent all of my 7DRL time on Saturday and Sunday working on this code: it was conceptually simple but dealing with corner cases cost me a lot of time. It's still not perfect. As I work Monday through Friday Saturday and Sunday were my biggest days for working on the 7DRL.
I achieved #2 through a careful approach to the dungeon generation. On each level, I specified two adjacent "rooms" on the map to be part of the down ramp and copied these rooms to the next map. On the room boundaries I placed the ramps. To make sure that the rooms made topological sense I specified to the dungeon generator that the terminal areas of these rooms would not have any connections to the rest of the dungeon level. This created the illusion of a "tunnel" leading from one floor of the dungeon to the next.
Unfortunately, I made some poor choices when laying out my dungeon generation algorithm. The code is ugly and difficult to work with, which is why the dungeon generation part of the game took me the rest of the week. Even now there are some bugs; sometimes dungeon levels will be disjoint for reasons that I can't explain. If you do find yourself trapped on a dungeon level and not able to go any further hit reload and it'll probably work the second time.
As is, the dungeon isn't very fun to explore. I think it's because there isn't very much going on here. There's nothing to do in the game other than walk around, and it's not all that fun for the same reason that an infinite endless dungeon isn't fun. In a game where the level layout actually meant something to the player the ways that the level unfolded around itself might be really interesting. I wanted to put in a broken mine rail line running through the dungeon from top to bottom and the player would have to collect materials from the level to repair it, but I did not have time. Unfortunately, the game is as I'm going to have to leave it. I did not accomplish as much in a week as I would have liked. The ideas I was using seemed conceptually simple and easy to implement but I spent all my time chasing after bugs. There are still lots of bugs.
The game was made in Unity 3D, which I kind of like and kind of don't. Some of the art is from the Ultimate Roguelike Toolset by Oryx Design Lab.
Status | Released |
Platforms | HTML5 |
Rating | Rated 3.0 out of 5 stars (1 total ratings) |
Author | HiramSycamore |
Genre | Adventure |
Made with | Unity |
Tags | Seven Day Roguelike Challenge |
Comments
Log in with itch.io to leave a comment.
Super cool level generator. Reminds me of http://www.zincland.com/7drl/fodder/, but the color coding makes it easy to tell which level you are on.
Thanks! I haven't played Everything Is Fodder but I did really like Jeff Lait's earlier games Smart Kobold and Vicious Orcs, and reading through the source code for those games inspired me to make this one.
This is a really neat idea and execution -- it really captures the experience of trying to navigate a parking garage if, like me, you have terrible spatial skills. :)
Interested to see if it develops further!
Thanks! No plans on developing this in particular but I think the implementation could be useful in a game with hand-made instead of procedural levels: a top-down 2D game where you could enter caves and go underground organically, or walk all the way up to the top of a long spiral staircase without changing screens.