Castle Veiledge: A Soulsborne level
On the edge of the abyss, there once was a city dedicated to studying the heavens. Such studies are considered heretical, but they had the might to keep themselves safe, until something from within caused them to shut their gates for decades. Now the gate has opened, explore this Souls-like castle and find out what madness has gripped the people of Veiledge.
Create an expansive fortress to explore.
Build pathways that loop back on itself with shortcuts
1 hour of engaged exploration
A density of content where it feels like there is always something new around every corner.
6 weeks half-time
Created using Unreal Engine 4
Assets used from:
Player Character: Created by Alexander Sjöberg
Image source: Elden Ring
The 25th of February
That is the date that Elden Ring released. Over a decade after Dark Souls 1, the game that first put me on the tracks to eventually wanting to become a level designer.
And somehow I was brought back in time, to those days where I was starting my friendship with my now best friend as we struggled through Dark Souls 1, as we followed every early game tip to gain any advantage we could against the unforgiving worlds of Anor Londo and the Undead Burg.
A journey that on several occasions had us shocked when we realized that we were yet again back at Firelink Shrine.
When we found ourselves spending 6 hours in Stormveil Castle, and still had not found everything that place was hiding.
Thats when I knew, I knew that I had to make my main portfolio piece a Souls-like castle, it was pre-ordained and could never have gone any other way.
Image source: Chateau de Coucy
Key features I want to re-create
Natural ways the levels loop back and short-cuts back on it self.
The way elevation is used, specifically that it builds layers on top of itself, rather than just having areas next to each other at different elevations.
A willingness to purposefully exaggerate to establish the mood and player experience they intend.
Figuring out the Scope
I like to start by figuring out the boundaries and elevation of what is to become my level. Deciding on the starting point and where I want the level to culminate, to know what everything is building towards.
I planned to populate distinct districts with at least 1 unique and tall building, that connects to the surrounding walls with arch supported path ways. I want to create an imposing castle.
I wanted to figure out my pipeline for this project, as I adapt it for the work load I have in front of me.
To do this I focused in on the introductory area and decided to flesh it out, get it to the level I wanted everything to be at the end.
For this project my goal being a nice clean refined blockout.
So I start building
To practice on the loopback / shortcut unlocking design of Dark souls I decided I wanted as few bonfires as possible for the first section, and I managed to get it all the way down to 1 singular bonfire for this entire section.
I've scoped WAY TOO MUCH.
I had now used up about 33% of the time I had available for this project, and I knew it would not be possible to realize my ambitions if I kept this pace. This meant something had to change, the obvious solution was to lessen my scope, but the grandiosity and excess is in my opinion a core aspect of the souls-like experience I am trying to emulate.
So I started looking at my workflow, and tried to make it more efficient.
I knew what a construction script was, but I had not ever really considered what it could do for my work flow, until now.
I started by dividing up my towers into "Floors" and created individual actors for each, then I created a master Blueprint that would spawn them in using the construction script graph, and with an accompanying Data Structure I've set to "Instance Editable" I could now add and remove floors as I wanted, open up door ways and even obstruct floors to restrict player paths.
A castle boundary in a (half) day
About performance in a large level
So after having only built the boundaries of my castle the frame-rate had dipped down into unacceptable levels and I was physically getting sick working in it. After some testing I figured out the big bad wolf was DRAW CALLS.
The ways I tackled this problem
To get rid of the drawcalls I remade the biggest offenders to use Hierarchical Static Meshes instead
I also designed areas that would naturally block views of different zones, so they can be Occlusion Culled
When I finish a building I can select my actors and merge them to create a new singular mesh
Where I could, I used scaling instead of spawning extra actors
I divided up the level into sub-levels to make it possible to stream in & out different portions, this could further be divided
Adding gameplay a classmate created
Alexander Sjöberg that is the name of a classmate that had decided to create a short, but complete Souls-like experience, and with a focus on making the systems versatile.
So I simply asked him if I could get a version of his project to migrate over his player character and boss, and with some minor adjustments it worked flawlessly!
Finding Inspiration In the player character
Thanks to the newly added boss, and its weapon, I finally had a more concrete idea of what the boss in the castle will be.
I always knew that some world building of military might would be relevant, but now I had a sword, a design to build off of, so I started incorporating statues of both the boss and the sword to give a preview of what's to come.
Every day I get better ever so slightly
Through this pre-prod I had gotten a new insight into how scary draw-calls can be, and ways that I can combat them with Instanced meshes.
I have increased my efficiency when blocking by experimenting with automating the process of re-creating similar, but not exact copies, structures with the help of construction scripts.
I had finalized the details of what the level is building towards, with the help of Alexander Sjöbergs gameplay. And had figured out a plan for what the next level is and how it will connect.
And I can see through my own spaghetti, I can draw lines on a screenshot and see all the possible shortcuts, and that helps a whole lot when trying to pick out the ones that are right for the part of the level they are in.
First rough overview
LEVEL DESIGN SELECTIONS
Obvious Items, Obscure Routes
A classic way to encourage exploration is to promise a reward in a very clear manner, and then have the path obscure.
The player will know that they have not finished exploring if they have not gotten that very obvious item visible from the main room, and are therefore enticed to stay in the area longer.
Enemy Spacing, Good Shortcuts
A shortcut is a good shortcut when it allows the player the save time on their next attempt to reach the next point of progression.
To design with this in mind I've made sure to leave space around my enemy clusters along the main path to allow for the player to comfortably take the shorter path (when they have unlocked it).
Level Looping, Back Again
There is a building tension as you explore further and further away from you last checkpoint, away from the known.
This can be eased by letting a player return to an area they've already been through before, an area the player feels a sense of mastery over.
But if I plan it correctly I can keep the tension building until the very last moment, like a door opening and the player not being certain it will open back to the start of the level.
Grandeur befitting the finale, the boss
To both have time to unload the rest of the level and to create a funnel before revealing the boss arena to create a Kuleshov effect, making the already impressive arena feel even more impressive.
The boss was initially supposed to just be in an arena on top of the castle, but the more I built and the more I played my reference, Elden Ring. The more I felt like the original plan was just lacking the scale in presentation I was trying to emulate.
So the castle got a connection to a structure of several cathedrals above n abyss.
This helped with unloading every other level, and as such ensured solid performance during the boss fight.
The world outside Castle Veiledge
The world is set on an island, upon which an Abyss into the depths has opened up. My level is built upon its edge (hence the name) but the rest of the world will always keep its presence.
I use this to also have a singular object of focus that is visible from nearly anywhere you find your self outside a building, the Lighthouse Above the Abyss.
Ambition has humbled me, and taught me a lot
I am very satisfied with what I have achieved here. The level loops back in ways even I find surprising. There are shortcuts and doors to open that feel like perfect medium term goals. There is a true sense of grandeur when you gaze upon the structure in its entirety. There are consistent use of small design motifs. The design is optimized for performance.
And I would love to work more on this project, because it is not finished. That is my big regret with this, the time I built my self into performance problems and had to spend time figuring out how to fix it. It meant that now at the end the level is only partly taken to the level I wanted.
But I know for certain now that I love building spaces for levels to take place in, and if I can say so my self, I have found a mindset for creating winding and criss-crossing paths.
Thank you for reading this far down, have a great day!