Andreu Rojas Barrera


Programmer

My Job:

My job was mainly to create the main UI system, its rendering pipeline, components and resources.

Also the input system inspired by the system proposed by Unity in this link, the idea that raises is that we can create groups of inputs of specific actions (such as the inputs used by the UI, or the player) and group them, that way we can deactivate or activate if we want.

UI System

Component Interactive

They have a Navigation system that allows to move from one interactive component to another in a strict or automatic way (that last was finish by Joan Pareja).

Two transitions modes, Color transition and Sprite transition for all the 4 states that we manage (Idle, Highlighted, Pressed, Disabled)

The Button and Check Box have a Onclick functionality that allows to communicate with the scripts made in C # at first it only called a fixed virtual function but with the help of Elliot the system was extended to have a similarity to the OnClick () Unity functionality

From the interactive components I create the main interactive component, the button component, the connection of the inputs and this components and I help Marc Fabian to create the check box and slider component

Component Graphic

Supports normal or filled render, the normal system generates a Quad per image, the filled mode allows to be used horizontally, vertically or 360

The Image Component support texture, color and alpha and the Text Component Support fonts, color and alpha

From the graphic components I create the main graphic component, the image component (render and 360 filled mode) and the text component (resource font included)

Component Canvas Render

Canvas calls this component to render the mesh it has inside

The CanvasRender had the functionality of creating the mesh of the graphic component of the gameobject (only you can have 1 image component or 1 text component on the same Game Object)

Component RectTransform

Inherits the functionality of the transform component but includes important functionalities for the UI such as width, height and anchor point

Of the RectTransform I Create the component and implement the width and height functionalities, the part of anchor point was done by Pere Rifa.

Component Canvas

Stores all the graphic components of the scene and is responsible for its rendering and its scaling depending on the screen

Of the Canvas component I done the part of the rendering part, the rescaled system was done by Pere Rifa

UI Animation System

The 2d animation system allows you to preserve certain UI components and perform animations.

Of this system I create the base class that allows you to edit key and activate the animation in a generic way so that other components can make it work and I made it work with the RectTransform component

Because in the last this system is not used currently is deprecated and not work in the engine. The images below were the last iterations

Input System

Key Bind

Database that connects all the inputs of SDL (control, keybinding and mouse) and we add our own information, such as which device is part and a name that will show on screen

Created by Nicolas Babot and then edited by me to add small features to differentiate keys by device

Player Action

Player Action is a class that stores Input Managers (explained below) managing them and updating their status

Player Action updates the inputs managers in a hierarchical way and if an input managers receives an input that it can use, it consumes it, preventing others from using it, that allows controlling the inputs giving preference depending on which input is higher in the hierarchy

Player Action allows you to activate and deactivate inputs managers or make it possible to block inputs to prevent them from passing to the inputs below the hierarchy

It also allows to search within an input managers if a key has been pressed, maintained or released. In case you want to know your Axis we can also ask for it

Input Manager

The input manager is a class that stores groups of input actions. Its functionality is to create an input action, and link a key with an action, for example we can link the key "Space" with "Interact"

We can link the same action to other key allowing to use the same action with controller and keyboard for example

From the Input Manager I create the UI interaction and the conexion with the Player Action, and Nicolas Barbot create the connection between the Input Manager and the Input Action

Input Action

The Input Action class its on we store the basic data of the keybinding (action name, key name, device type) and the state of that action (is pressed, axis value, etc) the Input Manager gets this Input Action to send his information by request of the Player Action

The Input Action can store two keys, one is the positive key, that key reacts to press event and axis events, and the negative key, that one only reacts to axis events

Created by Nicolas Babot and then edited by me to add negative key feature

Ingame Key Binding

I implemented a ingame key binding editor, you can change the keys and save the changes or return them to a default state

Controller Support

I implemented a simple joystick control system that allows to send signals to the controller to activate the vibration, deactivate and activate the controller in run time, finally the game shows the information for controller if it is being used