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 video games in COSMOX
Memory
Memory game with cards. It can be played by up to 4 players.
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:
Chess
Chess as video game.
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:
Poker
Typical poker video game, easy for users who know how to play or not.
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:
Monopoly
Typical monopoly video game. Project in development.
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:
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:
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:
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
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 developer and game designer at the Interactive Technologies Center from the Computing Sciences University, Havana, Cuba (09/2019 - 06/2022)
Game developer for the Spanish company Yoi Talent, Havana, Cuba (06/2020 - 12/2020)
Game developer and game designer for Cubacitas social network, Havana, Cuba (08/2020 - 01/2021)
Game developer for the Spanish company Yoi Talent, Havana, Cuba (02/2021 - 05/2021)
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