Mobile music arcade similar to OSU. I was responsible for implementing and maintaining the entire UI of the game.

I joined this project as part of my internship at DreamVR. After a short time, we planned a complete redesign of the UI, which also meant huge refactoring. So I was assigned to rewrite the UI subsystem while implementing new UIs.

UI design by Mikhail Sizov ✨

UI System I designed

System design was inspired by Lyra and the Common UI Plugin.

A UI system with these key characteristics was created:

  • Supports async actions
  • Is quickly and easily extensible 
  • Uses fewer hard dependencies 
  • Has a convenient and explicit way of controlling which widgets are shown at each moment and how they overlay with each other. There are no more 999 different hard-coded Z-orders.

Balance between C++ and BP

For our needs, we decided to have all functionality in CPP and use BP only for layout and insignificant visual-related code. BindWidget and BindAnimation meta modifiers are used to control BP components in C++.

However, I think this is not the best approach in terms of iteration speed and flexibility, especially when you are working under a deadline. If I were doing it now, I would look at MVVM architecture and Epic’s UMG MVVM plugin.

The experience I got:

  • Lots of work with UMG and Common UI
  • Teamwork, planning, and AGILE
  • Close work with a design team, rapid prototyping and iterating
  • Writing materials for UI’s needs
  • Precise mockup implementation, working with Figma
  • Writing documentation
  • Code reviews, both reviewing and being reviewed
  • Working with Plastic SCM, Playfab, DevToDev, Jenkins
  • Support of existing content during development. Dump cleaning