Shimmerfall Springs postmortem

This is a postmortem I did of my Skyrim level back in 2017 and I thought it would be a good blog post to get deeper into the technical details of the development of this level.

What went right

Utilizing NPCs to give character to the world

I wanted the bandits in the level to be doing interesting things or be part of events in the level that add to the story and I believe that this worked out well. Examples of this are:

  • Some bandits swimming in the hot springs with no armor or weapons on and encountering the player would cause them to flee and try to hide.
  • An area with a dog that has a bed of hay and patrols with the nearby bandits.
  • A bandit that raises a drawbridge if they detect the player, adding to an inconvenience to the player in a battle.
  • A cave in that releases some boulders that crash and kill some nearby bandits that were mining.
  • One of the boss bandits working at an alchemy table.
  • A hermit appearing in the end of the dungeon if the player revisits just to add to the continuity of the world and reward exploration. 
This cave-in triggers and kills the NPC if he is there while also opening a new path to exit the dungeon.

Giving Player choice

A big thing for me was to allow different kind of character builds to shine in the level and lead the player to multiple ways to solve an issue. In addition, I wanted the player to make unscripted emergent choices where it was not obvious that I planned for them to make those choices and reward them. I believe that these kinds of choices are the most satisfying RPG games in comparison to scripted dialogue choices because it gives the player a sense that they outwitted the game.

Some examples of reinforcing player classes are:

  • The locked gate that could be lock-picked open if the skill is high enough. If not, the player would have to branch to a side path and fight some spiders to get the key.
  • The level had tight environments with encounters that were great for melee characters and also large, open, areas that would give an edge to range characters. One area had bow snipers across a ledge that could only be accessed by a drawbridge which could be raised from detecting the player. If the player doesn’t have any range weapons, they would have to climb some crates to try to lower the bridge as they are getting fired at.
  • Some areas had traps that less cautious players would trigger. One hallway had a fortification of a bowman while the path leading to him had some well hidden trip wires.
Bandit on alert to raise drawbridge
If the drawbridge in the background is raised, the player then has to jump up some crates to get up while getting shot at with arrows.

As for emergent choices some events that I liked were:

  • A locked-up werewolf where you have to release him if you want to progress. Releasing him would lead to a fight but a sneaky character could pass by a bunch of bandits and then release the werewolf, which would lead the werewolf to attack the bandits. There is some lore added to these sequences too, where these bandits have been trying to figure out how to deal with the werewolf. I specifically tested the battle between these two groups as it was important for the werewolf to win this potential battle.  

Learning from Bethesda

Studying what tricks Bethesda used in their own levels is what allowed me to take my quality up a notch to create natural spaces in the caves and make the world feel lived in. One of the most important things I learned from their work was to not always follow the grid snaps for natural assets. You can achieve a much more natural shape in the environment if you do this and then cover up the seams with large rocks or cliffsides.

This cave exit was the last room I did and the natural curve and elevation change is much superior to the work at the start of the dungeon.

All throughout my development in the level I would compare my rooms to theirs as I wanted this level to feel seamless, like it was made by Bethesda themselves. I can see the improvement in the rooms that I first started with to the ones that I ended with, as they look much more naturalistic and interesting to move around in from the changes in elevation and less linear pathing.

Developing a story through the environment by having a clear vision

You have to really focus on what the story is going to be with RPG level design or else you will just be aimless and not be able to figure out what goes where. Because I had a clear direction in what is happening in this space and what has happened in this space, I was able to easily focus on what assets should be where, from the smallest food item to entire rooms and locations of NPCs.

This also let me tell a story in the environment too, which has always been something that I appreciate as a gamer when a video game does this well. I would get to know each character and what they prefer as I created the level. It let the level breathe and come to life and also prevented me from suffering with indecision on how to take things.

This odd scene with the dead body on the table and the bandit leader working at the alchemy station is meant to pique the player’s interest to read the journal nearby and find out what’s going on. I believe it is easy to guess what he is doing, the journal is for the why.

Working with what was provided

I didn’t want to voice act or spend time trying to find a voice actor and deal with recording, but I also find it’s awkward to have characters in Skyrim talk with just text and no voice to go along with it. So I instead worked with the voices that were provided in the game and managed to work out a simple conversation that gets the point across with the game boss. I then created a more detailed story with notes and journals found throughout the level. So I worked with the limitations and found creative solutions that satisfied my vision.

Journals became an important part of telling the story for players interested in lore, but I tried to also tell the story visually for players not interested in reading journals.

What went wrong

Leaving on a cliffhanger

I indented this to be a 3 part mod, with Shimmerfall Springs being part 1 and I thought that I left Shimmerfall Springs with a satisfying end with a boss battle, a special item that gives you a teleport ability (which would be used later on in the other levels), a secret exit at the back of the dungeon so no backtracking is needed, and a conclusion to the smaller story in that dungeon.

However, I got many complaints from players frustrated with the ending, because it teased a door that you can’t go through. These complaints make sense to me in hindsight because players typically play Skyrim not for all the goodies and beating bosses but the exploration and conclusion of a story. The ending was unsatisfying in my case because they could not explore further and also did not get a satisfying end to the story introduced.

Leaving the dungeon with a room like this was quite a tease that would work well in a completed piece, but frustrating when unreachable.

Solutions for next time: Ideally I would make a level that wraps itself up as a contained miniature story that satisfies all the story arcs but has small hints of things to come next, like what is done in episodic TV series.

Working against the engine

The boss in this level is a character that could teleport and dual wield two blades with masterful skill. I wanted this to be a fast-paced, close combat battle where it felt like you just made it by the skin of your teeth. I also choose to introduce a surprise in the middle of the boss battle with a raid of enemies that will attack the boss and you. I intended this to cause confusion in the middle of an already hectic moment, leaving the player to ask why that just happened and to believe that they wouldn’t have survived if that phantom raid did not also attack the boss.

The challenge though, is the Creation Engine is just not designed for that sort of gameplay, so I ended up spending way too much time in proportionate of other development in the level to try to get that boss battle just right. To add to the challenge, I would also have to account for different classes that could make this battle too hard or too easy and also some gameplay mods that could affect the balance so much that the boss dies in just a couple hits.

I did find some solutions to this issue, such as scripting that he will teleport away when hit and then try to teleport behind you and having him teleport to other enemies randomly throughout the battle but I still was unable to achieve exactly the kind of experience that I wanted to see from a lack of direct control in his actions. The biggest issue was teleporting him would reset his regular “hard-coded” AI and he may change targets or take a while to attack, this made the battle slow down more than what I intended and there wasn’t a way that I knew of to solve it.

I wanted a fast, unpredictable and hectic boss battle, like Maria in Bloodborne, but the engine just wasn’t designed for that.

Solutions for next time: I should do more prototyping tests of my battle ideas both on paper and in engine to quickly test what can work and not get too attached to an idea. I should also study more boss battles in Skyrim before working on a boss to get an idea on what they saw as a good fit for the engine and gameplay in Skyrim.

Not focusing on optimization throughout development

There were a few instances where I would put a lot of effort in an area and then find that it brings up a whole bunch of warnings that this will be a laggy area, from too much shadowed lights in close proximity to too much “portals” in a single area (portals are a specified room entrance marker to help with managing object culling). This caused me to have to shift areas around or compensate with a less pretty area just so the level can stay optimized. Doing this later in development while many assets were in place made the process much more time consuming too.

This area and some rooms around it used to have more lights but I had to trim it down for optimization reasons. I toned down the lighting in this room as a solution because it suited the look the most and was a simple area to navigate.

Solutions for next time: I would plan ahead on areas that are must haves for shadowed lights and test out the area before adding too much. With the portals, I would utilize more L hallways and try to spread out branching paths in the level instead of having a large amount in a main room. I also should have looked into the requirements for optimization more early on in development.

Pathing and AI issues

Some encounters were too close to other encounters which would trigger both groups to become hostile and mess up the whole encounter set up that I designed. This eventually can ruin the pace as one encounter leads to the next and so on, making the level feel more like running a gauntlet. I started to reduce this by further spreading out encounters and in extreme circumstances I would make different encounter groups neutral with the player until they get in range. There still could be circumstances though where the AI gets hostile to early.

Navigation sometimes was an issue as some room transitions, especially caves were too tight and NPCs would have trouble getting through. Sometimes even the follower NPC would get completely confused and try to find an alternate route. It can also be a time consuming process of tweaking the static meshes and the navmesh to then test the AI in game just to find out if they are capable of moving through.

I heavily focused on the visual storytelling here and was quite proud of the image of the bandits digging through a cave to eventually bash through a brick wall that opens to this room. However, that entrance to the right of the torch was confusing for the AI to get through and needed many tweaks to get working.

Solutions for next time: I would work with an early draft navmesh and basic static mesh room transitions to see if there are any AI issues before adding too much detail. I would also lessen the use of the small cave tunnels as those were the typical cause of the the problems, instead I could use the medium assets and make them smaller by adding in other cave props as needed. I could also use the small ones in areas where it is unlikely for a bunch of NPCs to be in the area. Finally, I would populate the level with a basic idea of the encounters that I’m going for to see how the AI moves around and find any issues that arise early on.

Concluding

I think that overall the level was a success and I was able to learn and correct many things along the way. The level turned out well for something that I initially was freely making without too much set in stone, as I primarily wanted to learn and experiment with the engine first.

Many of the challenges that I faced were because I didn’t take the usual approach to design the level on paper and plan out all the rooms before even starting, and test for issues early in development. Next time if I make a Skyrim level, I would plan and map out all the rooms while considering issues of too much branching paths in one area, complicated AI navigation, too close encounters, or lighting conflicts (and this is something that I’ve already started on when working on the second part of the series).

If you are interested in playing this level, please check it out at Nexus Mods!