Gav SarafianLevel & Narrative Designer


A short, dialogue driven experience with a fortune-telling robot in a neglected therapist's office. Engage in conversation with an ennui-filled machine, and leave with a prize!
Created with: Unreal Engine 4, 3DSMax, Substance Painter, Photoshop.

Creation time: Approx 3.5 months, over nights and weekends.

Videos: Gameplay

Level blockout (+ early dialogue)

What's this about?

Fortune is a short first-person level where you explore a small environment, have a conversation with a Fortune Teller robot, talk about existential subject matter, and end up with one of three rewards (plus colour tint and stat buff) based off how you answer its questions.

Created in Unreal Engine 4 over three months, Fortune was built to showcase skills with branching dialogue systems and scripting. All of the assets are entirely self-made (minus audio + base textures).

Designing Fortune started with a conscious effort to scope appropriately. I wanted to create a complete experience with a quick turnaround time, with an allowance for flexibility for unforeseen course corrections, as well as taking time required to learn and to debug into account. I made the level in passes to ensure I could focus my time effectively - starting with my intentions, features + sketches on paper; building a blockout with placeholder assets, and ensuring scripting + the moving parts of the level were functional before fleshing out the visual art elements.

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)


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'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.