Sergi Colomer
Hi, I'm Sergi. I am a programmer and I mostly worked on the resource manager, the particle system and how to implement them on the game's scripts. I love programming from the moment I started, and this project put everything I knew to the test. I was already a bit familiar with particles and how they worked since I had done a project studying them in the degree from a past subject.
Background
About Me
Gamers can feel when developers are passionate about their games. They can smell it like a dog smells fear. Don't be afraid to hold onto your unique vision: just be aware that it may not turn out exactly how you envisioned.
- Scott Rogers, Level Up!: The Guide to Great Video Game Design
I have always loved video games ever since I got introduced to them. As I grew, my likes changed and shifted but there was always a constant: Video games. When I was in High School I leaned towards a more techological background. My favourite subjects always were maths, physics and techology. When the time to choose a degree came I felt very lost since I didn't know exactly where to go forward. I spent many days asking my friends, teachers, family and most of all myself for guidance, some sort of sign. And one day, while playing Age Of Empires with one of my friends it occurred to me. It had been in front of me the whole time. All these years. Right there. Since I loved so much videogames why not make them? When I said to my parents what I had thought they told me it would be very hard and different to just playing games. I asked teachers and they all said that most people are not made to create videogames and that since I didn't have any coding background I would even be at a disatvantage compared to others that chose this career. I spent a few days thinking about it and taking into consideration all the insight that they had provided me with. In the end I chose this career and swore to myself that I would work extra hard to make up for my lack of programming knowledge.
When I started the career I wasn't sure I would like it but I wanted to give it a shot. For my passion for games. And the truth is I am very grateful I did. My passion for videogames grew each year. And my passion for game making... What was just a spark of curiosity had become a firey passion I engulfed in and embraced every day. I am very grateful for being a programmer and having discovered this side of me I now would say is inseparable.
They say a person needs just three things to be truly happy in this world: Someone to love, something to do, and something to hope for.
- Tom Boddet
As for Project III, it is safe to say it has been the most difficult and challenging project I have ever made. It has been exhausting both physically and mentally but it has been worth it. I'm pretty sure this project has honned my skills as well as made me learn new ones.
Hard Skills
- C/C++
- Dart
- Lua
- Github
- HacknPlan
- Visual Studio Community
- Visual Studio Code
- Unreal Engine
- Unity
Soft Skills
- Straight forward
- Motivation
- Flexibility
- Problem-solving
- Organization
- Team work
- Cooperation
- Empathy
Contribution
Project Overview
For the project I was a programmer. I mostly focused on the resource manager and everything required to implement it and for it to be working and the particle system, creating all the particles and implementing them with the scripting.
Main Tasks
Importers & Resources
Along with Yeray Tarifa, we programmed the code for the the filesystem, importers, save & load and component serialization. The first two weeks we did a refactor of the importer. On the Alpha 1, I added some file discovering functions in the filesystem of the engine, we coded the serialization of all the components we had at that time and we created the resources main structure.
We had to create the importers and resources for:
- Materials
- Meshes
- Textures
- Scenes
Resource Manager
Continuing with Yeray Tarifa what we started, we coded the resource manager, resources files reading & updating using a workflow pairing them with .meta files. This was an enormous task that took a lot of time to complete fully. On the Alpha 2, we programmed the library map pairing with UID for the assets metadata, the resource map pairing with UID for the allocated memory and coded the custom file format and creation of resources for each asset type. We also started generating the .meta files for each supported asset and coded the save & load to support models. On the alpha 3, we created the resource manager window (showing all resources loaded and information on them), asset import, update & deletion at start time and storing needed resources once in a map. And some improvements thanks to our work were: reduced loading times in scenes and drag & drop from outside the program.
Particle System
With Albert Espinosa, we programmed the code for the particle system, both the functionally of it and all the customization needed in order to be able to make all kinds of particles. We also had to write the serialization and how to save & load any effects made by creating a .cookie file.
The customizations for each particle are:
- Timer between calling the particle spawning function
- Lifetime of a particle (can be randomized between a range)
- Particle cap for each emitter
- Number of particles spawning at a time
- Billboarding types
- Screen aligned
- World aligned
- X Axis aligned
- Y Axis aligned
- Z Axis aligned
- XY Axis locked (floor)
- Rotation of the texture (can be randomized between a range)
- Variation of size in time (can be constant and can be randomized between a range)
- Variation of color (give Color & %Lifetime) in time (interpolates between the given values)
- Initial position (can be randomized between a range)
- Initial direction (default forward & can be randomized between a normalized range)
- Initial velocity (can be randomized between a range)
- Initial acceleration (can be randomized between a range)
Secondary Tasks
CleanUp Reorder
Along with Telmo Beroiz, we reordered and reorganized all the CleanUps so the engine would have a better performance.
Animation Bugfixing
I helped Bosco Barber with a lot of big bugs and errors that made the component fail in many different ways.
Particle Creation
I created all particle effects for the game, some with the help of Albert Espinosa since we were both the most knowledgable and comfortable in this topic. The particle textures were provided by Guillem Àlava. Since we wanted very specific particle effects, Guillem created them himself for us.
Particle Implementation
I implemented all particle effects in the game's scripting. In order to do that I collaborated with Tomas Carreras and David Montufo to incorporate the various particle effects along the characters and enemies.
Enemy Scripting & Behaviour
Around the end of the project I was tasked with managing and bugfixing the enemy scripting and behaviour that had been done by Oscar Cuatrecasas.
Character - Enemy Interaction
Since I started implementing particles I was also tasked to help out and polish the interactions between enemies and characters. So I basically helped those in the Characters task and in the Enemies task.
Scene Creation
Along with David Montufo and Tomas Carreras I helped create the final scenes before any delivery (especially the 2 final ones).
Shadows
I helped Albert Espinosa in the implementation of the shadows and fixed some major bugs with him.
Memory Leaks
I did some memory leak fixing with Andres Sanchez since at that time we were having many problems not deleting variables and such when they should have been.
QA & General Bugfixing
I made some QA of the game, made sure all the particles were working perfectly and the enemies were behaving how they should be. I also did a lot of minor and major bugfixing all throughout the project in order to keep the engine as stable as possible.
Projects
Here you have some of my projects I have been in from university that I am most proud of.
Project: Apollo
This project was created along with Guillem Àlava and Sebastian Delgado for the Physics II subject to test our knowledge on fundamental game physics since we created a physics engine from scratch and then made a game from it. The engine main features are:
- Velvet integrator
- Circle & Rectangle intersection & collision handling
- Impulsive forces
- General & Orbital gravity
- Drag Force
- Buoyancy whenever on water
The game is about a spaceship, the Apollo, that must exit Earth's gravity, land properly on the Moon and come back to Earth and drop down on water to minimize damages all whist avoiding asteroids if in space. I was in charge of the gravity, buoyancy and circle & rectangle intersection & collision handling.
If you want to check it out for yourself, click here
Shattered Dreams
Shattered Dreams was created with the help of Guillem Àlava, Abraham Díaz, Aram Galarza, David Montufo and Arnau Lucena and myself and it's a turn-based RPG game created for the Project II subject. This game was aimed to learn how to make:
- A turn-based combat system
- A proper dialogue branching
- An inventory system
The game is about a 23 year old guy who lost control of his life and is now mired in depression. One night, in a dream he met his late grandfather who told him he would have to visit his most traumatic experiences. All of this in order to regain his happiness or... just let go of everything. I was in charge of all the combat system, collisions and items.
If you want to check it out for yourself, click here
Critical App
This app was created along with Aram Galarza and Arnau Lucena for the Mobile Devices subject. It's purpose was to make a app that we would use and that we were motivated by it. Use a lot discord to communicate both while working and gaming so we wanted to create a new discord/whatsapp with what we would have improved. This was my first time coding in flutter and I personally feel like I learned a lot and got to see some of what flutter has to offer. I was in charge of making the main messaging screen, using firebase to connect to a cloud (for the messages and images) and using custom widgets (drawer mechanic and an emoji manager to name a few).
If you want to check it out for yourself, click here