home

Arduino's Revenge

Personal Project

After several years waiting for an opportunity to try out Unreal Engine's UMG interface layout system, I finally got impatient and created my own.

What started as a simple layout exercise quickly grew into something much bigger, learning about UMG animation, blueprint scripting, and managing data within Unreal. It also provided a great playground to learn about using various AI generation tools to develop demo content.

Demo Design

Step one was designing a good test drive for Unreal's UI capabilities. These screens include typography, buttons, meters (both horizontal and radial), selectable widgets, scrolling panels, and lots of dynamic layout considerations. I stuck with a minimal visual style to avoid getting bogged down in creating actual assets for the game.

Working with AI tooling on the content, a fiction about a robot uprising was top of mind. What kind of game is Arduino's Revenge, actually? I have a few hypotheses, but don't know for sure myself.

Learning Unreal

My first area of exploration was basic UI layout and anchoring, learning the components. Unreal's anchoring system is nearly identical to Unity's, but the layout component model is much more rigid, and took some getting used to. I was initially resistant to what felt like an overbearing system, but came to enjoy it over time.

The UMG screen scaling solutions also work very similar to Unity's, ensuring the project would look good across aspect ratios and device types. The layouts are based upon a 16:9 aspect ratio, and add horizontal pixels for widescreen devices (like most modern phones), and vertical pixels for narrow devices like tablets.

UI Animation was not something I had intended to learn going in, but bringing the screens to life was just too tempting. The timeline is similar to Unity or After Effects, with a powerful and graph editor as well for controlling easing curves more precisely.

Arduino's Revenge includes ambient animation to keep each screen feeling lively, interactive animations to enhance the feeling of responsiveness and introduce an element of intrinsic delight, and screen transitions to create a fluid flow and reinforce the progression between screens.

Working with Blueprints was unexpectedly fun. Being proficient in C# in Unity, I didn't initially understand the appeal of managing a big web of nodes. Through the course of development I came to realize the ways it brought the focus onto pure logic, removing the burden of learning the syntax and quirks of a programming language.

Another aspect that stood out to me was the power of utilizing blueprint logic in UI visual pipelines, allowing a cleanly defined avenue for additional visual control without awkwardly getting into the underlying code of the project.

The entire demo is populated dynamically via data. All of the information on the screens comes from several of Unreal's Data Table objects. I found these tables and the corresponding Data Structures to be particularly intuitive, user friendly ways to quickly establish placeholder content.

AI Investigations

Another unintended area of exploration was AI tooling. It turns out a demo like this needs content, and that provided a great, low-stakes project to see what I could accomplish with a couple promising tools.

ChatGPT was remarkable useful at helping generate ideas for level names and descriptions, as well as the "protocol" difficulty modifiers and their behaviors. I had a heavy hand in curating and editing, but it helped amplify the theming behind the project without it becoming a major time sink.

I see massive potential for using ChatGPT as a creative aid, for drafting copy, and for reprocessing information.

For visuals, I used Midjourney, which was a real mixed bag. It can make visually stunning and unexpected images, but it has real creative limitations, and generating usable, consistent content is a challenge.

After many hours and several hundred image prompts, I was still unhappy, but reluctantly settled with a few images. Pairing utility issues with the fact that it's morally dubious (directly recombining the work of human artists without consent), and non-copyrightable, my outlook is limited. I see strong opportunities for concept generation, but major factors prevent it from currently being a viable production tool.

The final product

And here it is!

I come away impressed with Unreal. I'd love to work professionally on a project and really get into it.

I also have a desire to figure out what kind of game Arduino's Revenge actually is. At present, it's either a narrative-based Match-3, or a hack-n-slash roguelite in my mind.


Check out my professional work.

And a few personal projects.