site templates free download

UI from born to dead

Julià Mauri Costa

PROGRAMMER

Project overview

Hi! I'm Julià Mauri and I've been one of eight programmers in this project. Due to the moderated size of the programming team I oversaw all UI assets; this includes engine implementations and scene assembling. I have been in the UI scrum throughout all the project and was the go-to man for any UI related problems.

Engine Features


UI SYSTEM

  • Adaptable: the user can work with UI Components as screen elements or world-view elements.
  • Optimized Draw: the engine loads UI data to the graphics card to speed up the drawing process. Shaders use static buffers for UI elements that don’t move in the scene and dynamic buffers for UI animated elements. 

Canvas

Mobirise

For every canvas (root of UI Tree), a game object with UI. The use can change it to the world or screen.
UI Gameobjects are stored as canvas childs. The canvas sets the drawing process for its childs and can be swapped to print in screen or world space. 

Rect Transform

Mobirise

The Rect Transform holds the positions and sizes of the UI gameobjects. Their rendering target is preserved when changing from screen to worlds space and back; and even if the window rendered changes size. 

Image

Mobirise

Image Component combines a texture with a color vector. It can use masks to crop textures rendered. 

Button

Mobirise

The button track mouse interactions and change their states based on them. It can store up to 3 textures and automatically swap between. Moreover, Jonathan implemented the OnClick functionality.

Slider

Mobirise

The Slider use 2 textures that the first one maintain the current Rect Transform and the second use the mask with a percentage to show the quantity.

Animation

Mobirise

With Guillermo we made the component, this save positions in keys and then interpolate positions and furthermore interpo


GAME BUILD

Mobirise

I create a practical way to do a built the game and it was implemented together with Jonathan.

Problems

Every time we wanted to make a build of the game involves:
- Compile an executable of game mode.
- Move some assets that are required at the library.
- Create and organize the build folder.

Solution

- For each release of the engine, leave an executable of game mode compiled.
- There is a Build button that automatically generates a build and library folder with all the necessary elements.


What i learn

Shader memory

To allocate memory structures in a shader with the purpose to optimize the performance. 

Upload info

We sent information to the shader to be read. In the UI case, the position of static elements.

Graphic cards control

Since this technology uses shader extensions, I made an app (GetOpenGLInfo) to collect the information and the control of it. Having two shaders for compatibility with other computers that can not support it.

Consider applying to the engine 

Guillem and I consider applying this technology to the engine, but turned out that it was not going to improve the performance either, so it kept implemented in the UI.

Mobirise

Problems with the resolution


Among the initial planning of the UI system, I did not think the correct way to use different resolutions in the system. Therefore, to achieve the final result, we had to many problems, but we manage to reduce almost all the mistakes. 

How it was made

The Rect Transform only saves the initial global current position.

Use a percentage of different distances with respect to the father.

What causes

When saving the variable cause, it was reflected when it is changed, causing a precision loss in the Rect Transform when recalculates several times the resolution change.

The percentages are float variables and if it were to close to the father did not have enough precision for a less resolution. When changes lots of resolution and recalculates, everything was dismantled.


Game Features


In alpha 2, I finished my main tasks of creating a solid functional UI system. My work became to make solutions to bugs that eventually come up and implementing tools that designers ask for. 


Montage

Mobirise

Minimap

The minimap logic is made by scripting, it marks the Alita’s position through the calculation of Alita’s position in the world and the Rect Transform of the window, respecting a similar proportion. The art was made by Victor Masó.

Mobirise

Save & Load between scenes

To keep the information of the game state between scenes, I created and worked on the loop with saving and loading logic of values between scenes. So we know what information Alita has if change the level or die.

Mobirise

Auto Skill Bar

When Alita equipped with an item that gives some special skill, it automatically shows on the hod according to its appearance order.

 UI Elements that I Animated

Mobirise

Main Menu

Fade logo to menu

Mobirise

HUD Elements

Stats | Pasive Tree | Inventory


Suporting

  • Keep the control on the UI logic by Script. 
  • Side by side with the designers - I have been working with Ruben and Sito, main designers of the UI, resolving their doubts, informing about bugs, giving them the tools that they need. 
  • Report to Victor Masó if a new UI texture asset was required or to modify an existing one and Oriol with audio.
  • Give support to other work colleges with problems that come up if I am able to manage them. 

Conclusions


Personal evolution

Previous experience

With previous proyects i had comunication problems with the team, due to my own social skills difficulties.

How was my experience in the project 

I knew how to keep a fluid and permanent communication throughout the project with lots of motivation.

To improve

I used to dedicate too many hours to the project and usually forgot to give time to my self. I was BurnOut at some point, but I did not jeopardize the time, I even kept working highly motivated.


About the UI scrum


I am the only member of the team that have been involved in every and each part of the game phaces at the UI scrum. I was the scrum master of Vertical Slice 1, Alpha 3 and Gold. That is why a will make a short resume of how the scrum has envolved. 

Scrum phases

From the beginning 


to Alpha 1

UI system implementation

The UI system had to be created from zero, and during this time it is being complemented with a solid base while the UI was put into the game.

Alpha 2

Communication problems

In this phase it had to be restructured a big part of the UI code in the engine, to minimize the problems related to the resolution changes.

We had to build the UI with the specified goals, but at the moment of put it together with the scene more communication problems came out with other implemented elements, causing that UI did not appear in the delivery.

Alpha 3

How to fixed

After Alpha 2, the members of the scrum identified the problem, we found a lot of dependencies with the other scrums, due to UI interprets the information it receives from the game.

From the beginning, we connected with the other scrums to identify which dependencies and to keep the communication, also to an emphasis on accomplishing the deadlines, so as not to delay other dependencies.

Beta to Gold

UI final montage

We focused on built scenes, solve bugs and check the final result on the build.

It was remade the most part of the art, also some elements were brang to life with the UI animation component.

Alita Unbreakable Warrior