This game was developed from scratch in a C++ custom environment. The project consisted on developing a 3D engine that could support all the features that the game would need, and later developing the said game. It was conducted as a Junior project by 8 engineers and the development lasted near 10 months.
Crash N’ Burn ( or Brum Brum Piu Piu ) was conceptually based in a spaceship-like Mario Kart that combined features of classical racing games with a more battle royale oriented gameplay. It gives the oportunity to explore 6 different scenarios with completely customizable ship setups. In the same way it is perfect to play solo or with friends, thanks to our local multiplayer system that allows up to 4 players to compete.
C++ Custom engine
The most challenging part of these projects is to develop an engine capable of supporting all the features that the game is going to need. Starting the architecture of such a tool is by no means an easy task, since many subsystems need to be designed, planned and developed in parallel. Physics systems, object managing, graphics pipeline, I/O and parsing… All these features pose a challenge and need time to be properly built and tested. However we completed the task and developed an engine that was versatile, robust and supported many different features. We integrated all the systems that we had developed in an editor that allowed us to design and build scenarios for later testing the product.
In what my job is concerned I was in charge of developing part of the backbone and planning the architecture. During this part of the project I was technical lead, which meant that the design and execution of the engine was my job. In the same way, I developed part of the resource manager and was in complete charge of the physics system and collision system. Apart from this I operated as a generalist programmer during the integration to the editor. I created tools that were later used to debug, pause and see physical information of the components.
Given my role I also needed to be in touch with all the engine programmers and oversee their work, helping in any area that they needed. During the second part of the project I became Producer of the project, which meant that I had to supervise not only this apart, but all the other ones.




customizable ships
One of the most intersting features of our project is the full customization that the ship system offers. With this system we divide each ship into three pieces: the front, the middle and the back. Each part gives 3 options with different charactersitics that in total provide 27 possible combinations to choose. These parts not only change the physical characteristics of the ships, but also the abilities that they use.
My work in this area consisted mainly on planning and taking production decisions. Being the producer I did not have much to do in this area since it was competence of the designers. However, I made sure that the work done was following the lines that we estipulated, while making code of good quality and helping where needed.
World & ai interaction
To give a sense of reality to the game we tried to immerse the player with the highest degree of interactability possible. Collisions, jumps, splines, fire, watermelons( yes, it has watermelons )… All of these provides a sensation of immersion that gives the game a great atmosphere. In the same way, the AI is fully interactive and adaptive, which makesthe races extremely fun. During the races the agents adapt to the player’s velocity and style seeking the highest degree of interaction possible between people and AI.
My job in this area was mainly to develop the way in which the players would interact with the world. Collision System, Physics System, Spline System… All of these were developed based on each other and planned to be combined. This posed a great challenge, since collisions are complex and take a lot of the CPU. I had to optimize the system various times and use space partitioning algorithms to make it faster, while creating a spline system that did not depend on “real” physical collisions. For this I developed height nodes that maintained the ship in a levitating state inside of a given altitude, which prevented the ships from going under the floor texture ( yes, it just an image, and no, it did not have physical properties ). Regarding the physics system I used a simple Euler Integration Algorithm that approximated the dynamics of objects while integrating their properties on the RigidBody component.





great variety of content
Although the mechanics are foundational in gaming, variety of content is equally important. Thinking about this we created the different attacks and abilities that ship parts provided. On the same note, we designed and built 3 scenarios with two variants, comprising a total of 6 scenarios to race. Finally, to spice things up, we developed two racing modes that changed the gameplay significantly.
My job in this area consisted on creating and later polishing the scenarios, implementing the world interaction with them and supervising the work of the group. This part was specially hard for our designers and our team in general because searching, generating and placing the assets took a lot of time. The scenarios were extensive and complex, with lots of different objects and graphics effects and ultimating all the details required a lot of extra work.
Great multiplayer experience
Given the type of game that we were producing we thought that a local multiplayer experience would be really fun to play. However, this posed quite a challenge since the logic needed to be duplicated for each player. More inputs, more interactive physics, more targets for the enemy agents… In the end we implemented an optimized system that used the resources carefully for each mode, and we ended up supporting 1, 2 and 4 player modes.
My job in this area was mainly to optimize every system that could be a toll for the multiplayer, which trust me, they were a lot. I optimized the physics system treating objects with certain logic differently. I also made use of the space partitioning and the bounding volumes of the objects to sort them in the physical objects that we used for collision and polished some of the logic that was used in these systems. After this we touched the inheritance and the object managing, reaching the sufficient level of optimization that we required.
