This time around, let’s look into the challenges and innovative approaches of working with Fortnite’s Verse and Unreal Engine for Fortnite (UEFN).
Kamil Rehor, a game development student from Metropolia University of Applied Sciences, shares insights from the groundbreaking project with the Finnish National Gallery – Art Heist on Fortnite, exploring Verse programming, prototype development, and the integration of historical art into modern virtual environments.
A player’s avatar escaping from a virtual art gallery with stolen art in the gameplay of Art Heist. Image for the Art Heist marketing campaign by Kansallisgalleria | Finnish National Gallery.
Text by Kamil Rehor
My name is Kamil Rehor. I’m a computer science engineering student at Metropolia University of Applied Sciences, specializing in game development using Unreal Engine, and a trainee at the Helsinki XR Center.
When I was first introduced to the possibility of working on a project in Fortnite for the Finnish National Gallery as a part of the Virtual Creation Core initiative, I was as excited as I was intrigued. I have a long background working with Unreal Engine projects since the first open release of the UDK for Unreal Engine 4 back in 2014. Since then, I have made many small game projects using Unreal Engine, and it drove me to apply to Metropolia University of Applied Sciences to study game development. As a fourth year student nearing the end of their studies, presented with a unique opportunity to learn something new, I was ready to challenge myself and to see this project through.
Project Overview: Merging Art and Virtual Reality
The basic premise of the project was fairly simple: create an experience in Fortnite using the Fortnite creative platform, also known as Unreal Engine for Fortnite (UEFN). The purpose of this project was to test how historical art could be integrated into a modern virtual experience on an existing and popular platform to reach a younger audience that is more engaged in these virtual environments. The project comes as a follow-up on previous projects done by the Finnish National Gallery, that were done in other virtual platforms such as Roblox.
The Virtual Creation Core at the Helsinki XR Center, in collaboration with the Finnish National Gallery and Adventure Club held a workshop where we came up with a simple concept: an art heist game, where players would steal artworks and hang them in galleries, and create an environment that would correspond to the themes in the artworks featured in it that were selected from the Finnish National Gallery collections.
A collaborative workshop led by the Virtual Creation Core to brainstorm the core concept of the game. Image by Helsinki XR Center.
My task was simple: find out what sort of game mechanics would be technically possible and resource wise feasible to create for the project and to create a prototype to test the concept before handing the project over to a different development team to finish development of the actual project. My main challenge was that I had never used UEFN before, and I had to quickly learn how different it would be to using Unreal Engine.
Adapting to New Tools: Learning Verse and UEFN
To describe UEFN in simple terms, it is a restricted version of Unreal Engine that integrates nearly all content available in Fortnite, and it uses a new scripting language developed by Epic Games; Verse instead of C++ or Blueprint. To learn how to use this more restricted tool set, I first dove into the documentation of UEFN to find out how Epic Games wants to teach new users about their platform. I tried following some of the official tutorials, but they were too general to really help me find an approach to building this heist game prototype. Then I started dabbling in Verse, a programming language developed by Epic Games for use in UEFN and other future Epic Games projects and tools, and reading up on its documentation, specifically on the kind of API access that Verse had available to use all the different functionality available in Fortnite, as that was the fastest way to build functionality and mechanics, without spending too much time on building bespoke solutions every problem.
Screenshot of prototype test map for testing functionality of gameplay mechanics. Image by Kamil Rehor.
I quickly realized that the integration of Verse into UEFN was a very experimental feature, that had been heavily restricted. Verse doesn’t work like any other scripting system that I am familiar with. Instead of attaching logic to game objects with C# like in Unity or Blueprint like in Unreal Engine, to use Verse, you need to create a Verse device object, that inherits most of its functionality from a parent creative device object from Fortnite. There were only a handful of libraries available to use in Verse for coding bespoke logic, and most of it was about mathematics and Fortnite devices. As I kept testing different solutions, it became clear that the approach I had to take was to utilize as many of the available Fortnite devices as possible and link their functionality together, using Verse to create the desired game mechanics for the prototype.
Challenges and Solutions: Developing the Game Prototype
To learn what devices I needed to use was quite an arduous process, made difficult by the fact that there are very few good learning resources available for Verse in UEFN and I would mostly have to figure things out myself. The one good thing on my side was that due to the restricted and experimental nature of Verse’s integration to UEFN, there weren’t that many ways I could go about building what I was after. I would start by searching the UEFN Verse API documentation to learn what functionality in all the different Fortnite devices I had access to. I would look for a device that seemed like it would work for my purpose, and check what aspects of the device I could manipulate or use in Verse. Furthermore, I would build a simple solution using what I had found, test it and iterate based on what problems the solution had, change the devices I was using, change my code and keep going until I had found something that could work.
After this first iteration of finding the best tools that were available to me in UEFN, I had to start learning how to manipulate those tools in Verse, so that I could get a consistent outcome from testing the game mechanics that we needed for the project. This would require learning more of the basic ins and outs of Verse as a coding language. One of the baseline principles that Verse was built on is that it is supposed to be a universal language for creating “metaverse” experiences, that could be shared on any platform. This means that the code has to be very safe and quite strict about how it does things to avoid creating unnecessary problems and errors, to make the metaverse as stable as possible across many different devices and platforms that users would experience the metaverse through. One way this can be seen when writing Verse, is that it almost forces you to write error handling into your code, whether you want to or not. This approach to coding that is forced on the coder by Verse can be frustrating, when you are constantly fighting against it, but once you start embracing it instead, writing the code to be inherently less error-prone and more robust from the start, you realize it makes writing working code easier over time. Fixing problems is easier, as there are very few unpredictable aspects in your code that could go wrong.
Screenshot of test project made for testing Fortnite devices and Verse code interactions and possibilities. Image by Kamil Rehor.
Verse code example that takes Fortnite devices from an array and stores them inside custom wrapper objects that are then stored in a different array. The purpose of this is to connect a device object and a prop object to each other. Image by Kamil Rehor.
Throughout this process, I found one avenue of thinking that really helped me internalize new concepts of the Verse language faster. My prior understanding of coding theory. I realized that simply trying to read documentation without a baseline of knowledge about code theory and computer science makes learning these new concepts more difficult, as very often different languages differentiate themselves from each other by doing essentially the same things in different ways depending on what the developers of the language deem most important. By understanding fundamental concepts of coding theory and computer science, you are able to see what the language’s features are attempting to do. In the same vein, my understanding of fundamental game design concepts helped me grasp UEFN and the tools that are available in it. This is why learning theory and fundamental concepts of any very sophisticated field of study and skill is the most powerful tool to keep advancing in that field.
Reflections on Learning and Adaptation
Doing this type of more experimental projects can be a very fruitful exercise in learning new things. I learned what Epic Games had done with UEFN and how they seem to expect people to use it and what they want to do with it in the future. UEFN to them is a testing platform of Unreal Engine features that they have not yet released to the full editor and a more deeply integrated platform for creating bespoke Fortnite content that gets them closer to the goal of having Fortnite as a part of the larger metaverse idea. I learned to understand what knowledge was most helpful to me in learning a new coding language and a new platform for game development. Fundamental theory and understanding is key to unlocking the deeper knowledge of any new system or language you are trying to learn, so remember to listen during those boring theory lessons.
The scene of the Valley of Flames in the final Art Heist game, with the work of the Finnish painter Eero Järnefelt’s “Under the Yoke (Burning the Brushwood)”. Image by Kansallisgalleria | Finnish National Gallery.
In summary, learning new things is always a difficult process that rewards perseverance and previously acquired deep fundamental understanding. To learn how to use something new, like UEFN, try to first understand what it is and what it’s trying to do on a fundamental level. Through the lens of this understanding, it becomes easier to learn to master this new thing with far less effort.
To see previous news about our trainees’ projects, head over to the Trainee news section.
Follow us on social media for more posts: Facebook | LinkedIn | Twitter | Instagram