Hi, I'm Cinthia Cuza!

Game developer specialized

in Unity 3D Engine

WORK EXPERIENCE

COSMOX

September 2019

Domino cubacitas

August 2020

más allá del tarot

February 2021

DESTINO

June 2020

EL MUNDO DE WUMPUS

September 2018

COSMOX

Release: July 2021.

Studio: Vertex.

Platforms: PC | Mobile.

Team size: 4.

Project duration: From September 2019 to June 2022.

Responsibilities: Programming and Design

Tools: Unity 3D, C#, JetBrains Rider, GitLab, Mosquitto Server, Adobe Illustrator, Figma.

Cosmox is an online video games platform, designed specifically for the Cuban public.

  • My responsibility was developing video games for this platform, so I covered the entire development cycle of the games, allowing me to get experience in other roles and improving my communication skills towards team members on those roles.


  • I learned to adapt the development of my video game to the conditions that were required, such as the server and the use of common, generic functionalities for all the games on the platform.


  • Playing two roles at the same time, and the urgency of making full games by a deadline, improved my planning skills.

My video games in COSMOX

MEMORY

Chess

POKER

MONOPOLY

Memory

Memory game with cards. It can be played by up to 4 players.


  • On the screen are shown the cards turned over, the players and their scores.


  • The game includes background music and realistic animations to improve the user interaction.


  • Unexpected events and not allowed moves are informed via pop up messages.


  • Players' scores can decrease if they misplay repeatedly, or increase if they find more than three pairs in the same turn.

The player can exit or pause the game at any time.

The game ends if only one player has not left the game or if all pairs of cards have been found. The Game Over panel displays a list of players ordered by scores.

In response to user requests, the option to play by time is incorporated. If time runs out before finding all the pairs, the game ends and the one who has found the most pairs wins.

Implemented classes:


  • Main class: Manages the logic of the game, communicates with the other classes and establishes communication with the server when events occur.


  • Component representing the players: Stores and displays the player's name and his score on the screen. Also, it will execute the corresponding animation to the player on turn.


  • Cards: When starting the game, they are turned over and placed randomly. They are defined by an identifier, type and value, an image, and the player who owns it. Furthermore, cards are tied to click events which can be used to flip or move them.

Chess

Chess as video game.


  • The board, name and avatar of the players, and the options during the game are shown on the screen.


  • The pieces are arranged on the board from the perspective of each player and during the game the squares of the selected piece and its possible moves are highlighted, as well as the piece that moved previously.


  • To add realism, the camera simulates the player in a park sitting in front of the board placed on a table. The eaten pieces are located to one side.


  • If the king is in check or the player tries to make an illegal move, he will be notified on the screen.

The player who creates the game can select his pieces and the game mode.

The player can exit or pause the game at any time.

The board can be viewed from a 2D or 3D perspective at any time during the game.

The game can end by agreeing to a tie, by abandoning the game, or by having run out of time designated for each player.

Implemented classes:


  • Main class: Manages the logic of the game, communicates with other classes and establishes communication with the server when any event occurs.


  • Piece: defined by type, color, position, list of possible moves and name. It determines the possible moves for each piece based on the current position on the board.


  • Square: They are identified by the row and column where they are positioned. It stores the piece that is on that square and responds to the click event.

Poker

Typical poker video game, easy for users who know how to play or not.


  • The main idea was creating a version of the poker game easy to play with zero poker experience.


  • A clean interface is presented that shows only the information needed at that moment, to allow the user to concentrate on the most important aspects during the game.


  • They are admitted from 2 to 7 players, who watch the table from their respective perspective, simulating a real game.

For each player it is shown: name, avatar, money, if it is his turn and if he must do the small blind or the big blind.

The player in turn can see his options: increase bet, call it, exit the betting round or bet all his money.

As helper, there is an option from where the user can see a list of possible hands to form ordered by their value.

The Tutorial option shows detailed information on how to play and the rules of Poker.

The betting round ends if all 5 board cards have been placed, or if there is only one betting player left.

The game ends if only one player has not left the game or if only one has money at the end of the round.

Determine winning hand

To determine the best hand the HandEvaluator module was incorporated, which allows determining the value of each player's hand and, after comparing them, obtain the highest.

User loses connection

All games have a method that allows detecting when a user loses connection. This notifies the other players or ends the game if there are only two players in the match.

Implemented classes:


  • Main class: Manages the logic of the game, communicates with the other classes and establishes communication with the server when any event occurs.


  • Component that represents the players: Stores and displays the player's name, avatar, money, table position and their cards. It shows the player in turn, the one who makes the small blind and the one who makes the big blind.


  • Cards: At the start of each round, the cards are shuffled randomly and assigned to the players. The remaining ones are stored to be displayed consecutively on the table. Each cards present type, value and corresponding image.

Monopoly

Typical monopoly video game. Project in development.


  • Monopoly was my last project for the COSMOX platform, and despite not completing its implementation, I worked on the definition of the functionalities, made the complete design and implemented the most representative mechanics.


  • Because it is a game with a lot of information and rules, it is often difficult for players to understand. Therefore, I took into account to show the user various functionalities and thus facilitate the gameplay.


  • I used the classic Spanish board because it is the more suitable for Cubans, because of its language.


  • The game handles from 2 to 6 players. On the right, the avatar of each one is shown and the player in turn is highlighted. Pressing a player's info button displays their chip, name, money, and properties owned by him. The player can also see the properties and the money in the bank.

Other options

On his turn, the player can perform various actions related to the management of his properties: make a deal, mortgage, de-mortgage, sell, and build. Each of these options are displayed only if the player presents the conditions to perform them.

Mortgage: The possible properties to mortgage are those that do not present improvements. The player receives the value of the mortgage and this property is shown as mortgaged.


Unmortgage: The player will be able to unmortgage those mortgaged properties for which he can pay the amount and interest to the bank.

Build: To show the properties where improvements can be made, it is taken into account that the player must own all the properties of that color group and to have a second home, you must first build a house for each property.

Make Deal: The player to make a deal is selected and the properties of both players are displayed. The deal can be an exchange or a purchase and sale of property.

Sell: Only the properties that do not present improvements are shown on the screen. The sale of improvements to the bank is carried out in a staggered manner, similar to the method for building them.

Implemented classes:


  • Main class: Manages the logic of the game, communicates with the other classes and establishes communication with the server when any event occurs.


  • Component that represents the player: Stores avatar, name, token, amount of money and the component that shows the player's properties. Also, it identifies the player in turn by changing its color.


  • Squares: They store information about their position on the board, the number of chips they have and the property they represent.


  • Properties: They store the color, price, name, type, number of buildings, rental price, owner and if it is mortgaged or not.

DOMINO CUBACITAS

Release: Unpublished.

Company: Cubacitas.

Platforms: Web (WebGL) | Mobile.

Team size: 3.

Project duration: From August 2020 to May 2021.

Responsibilities: Programming and Design.

Tools: Unity 3D, C#, JetBrains Rider, GitHub, Adobe Illustrator, Figma, Photon Server.

Cubacitas is a Cuban dating app created in 2019 which became the number one dating site in Cuba with more than one hundred thousand registered users. Cubacitas Domino video game arises to provide one more element for the interaction among users.

My responsibility was the whole development of the game. Although its development was not continued by the decision of its creators, I managed to create an almost complete product and from which I learned a lot. I applied my APIs knowledge and practiced working with Facebook authentication service and Photon server.

Initial screens

Log in


The authentication flow works entering phone number and password or through the personal Facebook account in case the user has registered with this method in the application.


To access Facebook services, I incorporated the Facebook SDK component and used Facebook library. Because the Cubacitas app was already registered on Facebook, it was only necessary to add its data in Unity.

Menu


This screen serves as access to all the game options, as well as the screen where the domino rules are explained.

Create Game:

Create a game by inviting other users and setting up table positions.


Random Match:

Select an available online match to join.

Join with code:

Enter invitation code to access a game created by another user.


Play VS bots:

Offline game where the opponents are bots and the number of players is selected.

Photon Server

I selected this server due to the need of completing this product in the shortest possible time and to make it feasible for the customer. Photon integrates with the project, provides example demos, uses Photon Cloud to reduce latencies, and presents acceptable payment plans that can be changed based on customer needs.

Implemented classes for initial screens:


  • Main class: Manages all the logic of the game, communicates with the other classes and allows user interaction.


  • Games with vacancies: Individually represents each of the games with vacancies. They are defined by the name, avatar and points of the creator of the game.


  • Multiplayer functionalities: It communicates with the server and uses its methods and attributes. Some of the functions it performs are creating games with specific properties, joining users to games and displaying them on the configuration screen, updating the list of games with vacancies, and closing games once started.

Game screens

The tiles are numbered from 0 to 6. The initial output is made with the highest score tile.


Once a player places a tile on the table, or he has no tiles to place, the turn goes automatically to the next player.


The game consists of five rounds, in each one the lowest score wins. The player or the pair with the most rounds won, is the winner.

Each user has a score that increases when they win a game and when they get bonuses. This view reflects the data related to scoring and bonuses.

For each opponent, the following is displayed: avatar, name, number of tiles he has and if it is his turn or if he is the next to play.

On the player's turn, all placeable tiles are highlighted.

The current round number and the number of rounds won are displayed in the menu. The player can turn on and off the music and sound effects, view the game rules, leave the game, and view its bonuses.

In the domino games, the players reveal their tiles at the end of the game to count the points of each one and determine the winner. This will be possible in the same way in this game. At the end, the user will be able to exit to the main menu or play again.

Play VS bots

In this game mode, the chat option is unavailable, and each user is represented by a bot. To provide more realism, a space of time is respected between the plays. Each bot selects the tile with the lowest score from among the possible ones to play, thus having a better chance of winning the game.

Implemented classes for the game scene:


  • Main class: Manages the logic of the game and ensures the interaction of the interface with the user by communicating with other classes and with the Photon server. Assigns the tiles to each player randomly and makes the first move.


  • Players component: Updates player information at turn change and displays it on the screen, taking the player's perspective into account.


  • Tiles: Represented by the player who owns it, the number of points and its position. They respond to the click event and determine the location of the tile next to it on the board.


  • Chat: Manages the chat view by using the Photon functionalities. It guarantees not to affect the aesthetics of the messages, taking into account their length. Also, notifies when receiving a new message.

MÁS ALLÁ DEL TAROT

Release: May 2021.

Studio: Yoi Talent.

Platforms: Web (WebGL).

Team size: 4.

Project duration: From February 2021 to May 2021.

Responsibilities: Programming.

Tools: Unity 3D, C#, JetBrains Rider, GitHub, Figma, Jira.

Más allá del tarot was born thanks to the good results obtained with the Destino project. It was an evolution of it, where the goal was creating a product easy to white labeling and suitable to several customers.

Currently, the client does not present the game accessible, but in the following video you can see the product:

API comunication

Authentication:

The system is based on a token authentication. Initially, the client authenticates with username and password and receives an encrypted string (token). In subsequent API queries, the client will be able to inform the server that it has already authenticated.

Queries:


The UnityWebRequest object allows communication with web servers, through its GET and POST methods, the API queries were made.

Show mini-games

The main change made for this project was to display only the mini-games requested by the client on the screen. So when starting the game, it checks which mini-games to display based on the authentication credentials.

Data capture

To not generate errors in the data capture, it was taken into account detecting if the API does not present data to be displayed and thus inform the user. The structure of the text string obtained in each case is also analyzed to determine the data to be used and the non-necessary characters.

Load Image:


The UnityWebRequestTexture module introduces the DownloadHandlerTexture class that allows downloading textures, so the image corresponding to each card is obtained.

Obtain and store information:


Unity's JsonUtility class allows reading the string containing the JSON object received in queries and then store it in the form of attributes.

DESTINO

Release: December 2020.

Studio: Yoi Talent.

Platforms: Web (WebGL).

Team size: 4.

Project duration: From June 2020 to December 2020.

Responsibilities: Programming.

Tools: Unity 3D, C#, JetBrains Rider, GitHub, Jira.

Centro Esotérico Destino is a Spanish company with 25 years of experience in the esoteric field. Yoi Talent is a Spanish company that develops applications and web pages for customers, in this case: Destino. The Destino video game is accessed from the Centro Esotérico Destino website.


This project gave me teamwork experience, collaborating with other roles from my programming role.


I dabbled in WebGL game development and its interaction with an API.


I learned the importance of management tools in planning and carrying out projects with multiple members and dependencies between their responsibilities.

Responsive template

Since Unity's default template is not responsive, I used "A Better Unity WebGL template", an effective and easy alternative to integrate with the project. The game is created for portrait view on mobile devices, so if you go out of this view, a message is displayed for the player to rotate the screen.

Optimization

In WebGL video games, it is important to achieve a good optimization of both visual and programming elements. So I considered reducing the size of images and reusing them with atlas and prefabs, creating common methods that avoid repetitive calls, as well as checking file sizes using the Unity editor log.

Mini-games within Destino video game

Tarot


Through the tarot cards, it reveals the state of the person in terms of love, work and present. It also provides a message that advises the user about their current life and decisions to make.

Initially, the data of each card is accessed, then the image corresponding to the four selected cards is loaded and, finally, the result of the selection is consulted. This avoids slowing down the game with unnecessary data loading.


Each card presents a class in charge of defining them and determining their states so that they can be selected, slid or flipped by the player.

Horoscope


Shows all the information related to the selected zodiac sign. To avoid unnecessary API calls, the information in the initial components is fixed, and only the data for the selected sign is queried.

Name


Shows information corresponding to the typed name and if it is not found in the database, the user is informed.


The game has an image of each letter of the alphabet that is used to represent the name that appears on the last screen.

Numerology


Based on the user's date of birth and gender, they are given a number that shows their positive and negative aspects. The zodiac sign is obtained from the date of birth and, in this way, the sign information is directly accessed.


The data entered is validated taking into account that a month has up to 31 days and the date must be a maximum of one hundred years old.

Floating letters and numbers

Name and Numerology mini-games feature a particle system that generates numbers and letters that float in the background of the scene. When the user types a number or letter, to obtain a more interactive effect, the corresponding particle lights up, and stops lighting if the user deletes it.

Dices


The game consists of throwing two dice and making a reading depending on the number obtained on each one.


The dice are 3D objects with a texture and are moved by a force effected with a random magnitude at a specified range and direction.


Around it, a sparkle image particle provides a more magical effect.


When the data is thrown, it rotates for a certain time and stops in a random position, leaving only one face visible.

EL MUNDO DE WUMPUS

Release: June 2019.

Studio: Computing Sciences University.

Platforms: PC.

Team size: 1.

Project duration: From September 2018 to June 2019.

Responsibilities: Programming and Design

Tools: Unity 3D, C#, JetBrains Rider, Adobe Illustrator, Autodesk Maya, MakeHuman, Visual Paradigm.

In my last year as student, I was focused on the research for my degree thesis. The foundation of that work was the gathering of good practices when using artificial intelligence in video games. To encourage the application of those practices and put them in use, I developed the video game The Wumpus World, which showed the behavior of an intelligent agent in an environment.

Principal screen

From the main screen the player can start the game, watch the Agent Mode, adjust the volume of music and sounds, view the credits or exit the game. You can also access the Help option, in which the following information is explained:

Mission and objectives


The mission is to prevent the expansion of the Wumpus, terrible beasts that have increased its power in different fortresses. For this, the player must look for a potion and throw it at him. The second mission is to get the treasure hidden in one of the rooms.

Possible ways to die


The player can die by entering the Wumpus's room before the potion has been thrown at it, or if he throws the potion in a room where the Wumpus is not present. He can also die if he falls off a cliff or if the fortress guardian finds and kills him.

Ground rules


The rooms adjacent to the Wumpus are affected by a terrible stench, and those adjacent to a cliff present a strong breeze. Knowing those rules allows the player to advance to safe rooms, avoiding his death.

Screen information


On the game screen, the fulfillment of the objectives are shown, as well as if the player has already obtained the potion. At the top is the life bar and the Menu option. The player's location on the map is displayed at the bottom.

Controls


To move around, the player can use the up, down, left, and right arrow keys, or the W, S, A, and D keys respectively. It can press the space bar or the left mouse click to shoot. The camera is controlled with the mouse.

Agent mode

  • This mode consists of simulating the game through an intelligent agent.


  • The player has a passive role in this mode, since the objective is to observe the intelligent agent.


  • Maps play a very important role here. The map on the left reflects actual terrain information and the map on the right, in addition to showing the agent's location, reflects the real-time analysis performed by the agent.


  • The screen shows the fulfillment of the objectives to be achieved, whether the potion was obtained, the maps and the Menu option.


  • The AI techniques implemented were the knowledge representation, learning, the treatment of uncertainty and the reasoning.

ABOUT

Education

I graduated as a computer engineer from the Computing Sciences University in Cuba; it was a big campus connecting students and workers, so that you could study and be part of productive projects at the same time. Over the third year, I started my practical studies in VERTEX, the center specialized in video games development. In 2019, I presented as my bachelor thesis the video game "The Wumpus world", based on artificial intelligence techniques. By then, I already had remarkable skills in design tools and the Unity 3D game engine.

Work

After graduated, VERTEX (now Interactive Technologies Center) hired me as a game developer. During the last three years, I worked developing and designing games for COSMOX, a Cuban multiplayer video game platform. Looking for more experiences, I did some freelance works: two versions of a video game for the company Yoi Talent and a multiplayer game based on the Cuban game Domino.

Me

When I'm not developing video games, I love spending time with my husband visiting new places, watching movies and working out. I also enjoy spending time alone reading a book, planning my day and my new goals, or making a new recipe. Playing video games gives me a lot of satisfaction. I am blown away by all the great ideas and creativity that can be found in games.

RESUME

Work experience

Game developer and game designer at the Computing Sciences University, Havana, Cuba (09/2018 - 06/2019)

  • Game development and design of The Wumpus world game for desktop.
  • Implementation of artificial intelligence techniques.
  • Documentation of the development process to present it as bachelor's thesis (pdf).

Game developer and game designer at the Interactive Technologies Center from the Computing Sciences University, Havana, Cuba (09/2019 - 06/2022)

  • Game Development and design of the games: Chess, Memory and Poker for the Cuban multiplayer video game platform Cosmox.
  • Deployment of the platform for desktop and mobile devices.
  • Usage of Mosquitto server.

Game developer for the Spanish company Yoi Talent, Havana, Cuba (06/2020 - 12/2020)

  • Development of the game Destino.
  • Deployment for web platform (WebGL).
  • Data consumption of the API implemented for the system.

Game developer and game designer for Cubacitas social network, Havana, Cuba (08/2020 - 01/2021)

  • Development of a multiplayer Domino game for Cubacitas social network. (Play demo)
  • Deployment for browsers and mobile devices.
  • Data consumption of the Cubacitas API.
  • Usage of Photon server and the Facebook login service.

Game developer for the Spanish company Yoi Talent, Havana, Cuba (02/2021 - 05/2021)

  • Development of the game Más allá del tarot for the web platform (WebGL).
  • Data consumption of the API implemented for the system.
  • Creation of a generic format to adapt the game to clients demands.

Publications

Co-author of the book Applications of Artificial Intelligence (2021)

The last of four books whose main objective is to encourage the incorporation of general concepts and ideas about Artificial Intelligence (AI) in schools, families and communities. I took care of the compilation, summary and organization of the information to be exposed in the book. (Link to book)

Education

Technical experience

Languages

  • Spanish (Native)
  • English (Professional)

CONTACT

Address

Hamburg, Germany

Email

cinthiacuzasoca@gmail.com

Phone

(+49) 1745719313

linkedin
Github