Design Intentions
My goals were to build and demonstrate skills with scripting and implementing a complex interaction with an NPC, complete with menus and a branching dialogue system. I wanted to show that I understand how to design an immersive space, all within a bite-sized experience that leaves players wanting to know more about the world.
In order to keep scope small, I inteded to leverage assets from the Unreal Marketplace to fill out the space. However, in order to keep the level web-friendly, my target filesize had to be around 200mb or less. This meant requiring optimized, budget-conscious assets, a bar which unfortunately many ready-made assets did not meet. This meant expanding my scope - which had the side-effect of allowing me greater control over the thematic mood of the environment. I love environmental storytelling, so this ended up being a positive (despite pushing my original scope).
Intentionally making a level with a small footprint meant that I could focus on details - I wanted to make the space feel like it had a history; a reliquary of sorts for the Fortune Teller. Adding visual effects like distance fog, dust mote particles, and an ambient audio track were simple but extremely effective. (Fun fact: to keep the filesize down, the background track is externally stored on my website and referenced when the level loads)
Challenges
Distributing content (especially playable game levels) can be a huge challenge, as having any sort of bar like having to download a package will turn away some players.
My initial plan was to leverage itch.io's ability to play HTML5 games in browser, since Unreal 4 can make HTML5 packages... however, this turned out to be a bigger challenge than anticipated. Certain features (like audio and visual effects like decals and particles) do not work on mobile. Support for HTML5 packages is also depricated, which meant having to use an older build of the engine.
Implementing a dialogue system took a lot of trial and error. While I could have bought a ready-made system from the Unreal marketplace, I chose the opportunity to craft my own. While it definitely taught me a lot about how Unreal scripting works, it also taught me that ensuring your systems can be easily modified and edited is extremely important. I ended up with a system that works under the hood, but is also unwieldy and difficult to make large changes with. A big win here was taking the time to learn how to import dialogue from a .csv file, which allowed me to iterate on the NPC's dialogue, despite the bottleneck of the dialogue system.
Production Sketches
I tend to work on paper before committing anything to my levels, since it's a cost efficient way to problem-solve and work out solutions.