top of page
REBOUND CG
REBOUND CG
SYSTEMS AND INTERFACES PROGRAMMING
June - September 2020

CONTEXT AND MISSION

    I’ve worked at Rebound CG as a Programming Intern between my first and second year of Master. Rebound CG is a fresh game development studio, created in 2017 and based in Angoulême. It is characterized by a small development team, focused on the creation of Sport Management games, especially on Tennis


   The studio already released Tennis Manager 2020, a mobile game that goes beyond the hyper-casual industry and tries to offer a deeper experience on mobile. They are currently developing their next project, on which I had the chance to work in order to deliver the best possible experience for Games and Tennis lovers.


    As a fourth year student intern, my skills allowed me to understand the production process, and to work as any other developer of the team. My mission therefore was to join that production process in order to participate in the game production, working on various features the Game Designers needed to be developed in priority.

 

    I mainly worked on two type of features : Game Systems in C# and Game Visual Interfaces in XAML.

REBOUND CG - Work

MY WORK DURING THE INTERNSHIP

GAME SYSTEMS

 

    Since Management Games are pretty systemic, most of my internship was about developing the game systems, in order to nourish the Tennis World simulation. They were developed in C#, and based on various principles, such as the Framework / Client structure or Injections. Here are some examples of the systems I’ve worked on :

  • Surface Mastering System : Making the Tennis Players’ comfort on surfaces evolve, depending on their Matches and Trainings

  • Training System : Distributing training sessions to the Tennis Players, considering a large amount of parameters (player state, infrastructures levels, planning…), playing consequences of those trainings on the Players...

noun_Gear_3426112.png

WORKING WITH THE GAME DESIGNERS

 

    The first step before working on a feature was to get pitched by the Game Designers. My skills in both Programming and Game Design allowed me to quickly understand what the Designers wanted, translate it into an algorithmic system, and most of all anticipate the potential issues : performances hit, missing details about the system’s operation, impossibility to implement regarding the project hierarchy...

noun_team building_850702.png

SOURCE CONTROL AND CODE REVIEW

 

    Working with several other developers needed me to respect the development pipeline, including an important source control use. Most of all, in order to ensure the different development rules, Code Review was regularly done. By taking the time to do them scrupulously, I helped anticipate several issues, performances costs, and even correct implementations that were wrong regarding the Design.

noun_source control_1706593.png
noun_Find bug_2429040.png

GAME VISUAL INTERFACES

 

  Visual Interfaces are the other important aspect of a Management Game development : It is the way the player interacts with the simulation.

 

   I had to develop some of those interfaces, using the XAML language, and respecting the Model-View-ViewModel paradigm. The strength of that model was to be able to read and display large amounts of data in a personalized way.

 

     By respecting that model, I was able to create several complex interfaces and make them easily integratable for the Integrators.

noun_interface_2597589.png

FEATURE DEVELOPMENT

    After the Game Design briefing, I could freely work on the feature in order to implement it. Of course, that operation needed to respect a certain amount of rules to ensure both the game design essence and the project stability.

  • Respect the design : Some features can be pretty complex, but it is crucial to understand them entirely to deliver features matching the base design material. Dialog and Rigor are the only ways to ensure that.

  • Ensure project stability : A lot of features are interacting between each other, and carelessly implementing a feature can corrupt previously implemented features. To avoid that, having an overall knowledge of the project is a precious strength. Most of all, Unit Tests need to be generated in order to test all the expected behaviours and make sure everything is working properly.

  • Watch out for performance : Manipulating massive amounts of datas, the simulation needs to be optimized to generate acceptable process costs for the player. Optimizing code (by prioritizing cheap operations) as well as database queries (by creating cache, or making specific queries) is key to ensure performances.

noun_coding_3364211.png
REBOUND CG - Learnings

LEARNINGS AND TAKEAWAYS

    My Internship at Rebound CG is probably the most important I’ve made so far, because it is the first one I’ve made in a video game company. It gave me the opportunity to learn a lot about development in a team, about tools and workflows I’ve never used before, about working as a developer in a small studio. It also gave me insights about what kind of Programmer I'd like to be in the future.

PROGRAMMING SKILLS

  • Working almost exclusively with C# highly enhanced my global skills with that language

  • Working on a management game gave me insights about Programming Hierarchy (Framework / Client, Injections, Important Patterns)

  • Testing code through Unit Tests taught me how to use that powerful tool

  • Manipulating large amount of datas through complex operations sensitized me to Algorithmic Optimization 
     

  • Furthermore, that taught me a lot about Databases (in SQLite) and Linq

  • Developing Visual Interfaces taught me how to use XAML

    Most of all, I worked during the whole internship with tools, methods and languages I wasn’t comfortable with (or didn’t even know) in the first place (Unit Tests, Database, XAML, Framework / Client). Being able to work in this environment proved that I’m able to adapt quickly to new development tools, languages and methods.

KeyIcon.png
noun_working together_3430356.png
noun_working together_3430356.png

TEAMWORK SKILLS

  • Working with Game Designers enhanced my ability to translate design to programming and vice versa

  • Using Source Control on a daily basis helped me be more comfortable with source control tools

  • Going through Code Review increased my programming rigor and taught me a lot about working with a team of several developers

KeyIcon.png

  Most of all, I discovered that my spontaneity and rigor are appreciated within a development team, whether it is to anticipate issues or correct the existing ones.

    Beyond all those skills enhancements, that internship also gave me insights about the kind of programmer I’d like to be in the industry. I discovered a real interest for systems programming, and realized that a small development team can suit me well. However, I’d still like to try to work with a bigger team to have a clue about which kind of industry would suit me best.

REBOUND CG - Credits

CREDITS

Studio : Rebound CG

Tutor : Thorvald Ter Meer (Lead Game Developer)

FREELANCE
FREELANCE INTERNSHIP
GAMEPLAY, SYSTEMS AND TOOLS PROGRAMMING
August - September 2019

CONTEXT AND MISSION

    Between my Bachelor and Master, I worked for 2 months on a freelance project. I spent 1 month in Metz, living with the development team, and 1 month in remote. It was a game development project, driven by Stéphane Hilbold, a professional Game Designer of the industry who wanted to revive a saga.


   Fond of retro video games, his will was to create a new opus of the Gauntlet saga, closer to its original material, the famous dungeon crawler game. Therefore, he needed to develop a demo that he could show to the owners of the saga to get the rights and funds to develop the whole game. The project was named "Gauntlet Phoenix".


   As the main programmer of the team, my mission was to develop the intention prototype, by implementing the main gameplay features, systems and tools needed to create the game. The project was developed using Unity and programming in C#.

GauntletOriginal.png

The original Gauntlet game, main reference of the project

FREELANCE - Work

MY WORK DURING THE INTERNSHIP

MAIN SYSTEMS OF THE GAME

 

      Except for the basic collisions system, which was developed by an external programmer, I developed all of the gameplay and systems of the game.

 

      The most important ones were the movement system, allowing players and AI to move with specific tweaking, the damaging system, used to create damage sources and receivers to enable fighting, and local multiplayer, handling inputs from several controllers.

CHARACTERS, WEAPONS AND SKILLS

 

   Four different characters are playable within the game, including a whole set of unique weapons and skills.

 

       To create these characters, I had to develop a weapons and skills usability system, including features like cooldowns, reloading, charging… Dashes, melee and range weapons, defensive skills were developed thanks to this system, as well as weapon selection and skills upgrades.

ATTACKS : MELEE, PROJECTILES AND MODIFIERS

 

    Developing the weapons and skills also required to work on a melee and range attacks system. Furthermore, some attacks are able to apply specific effects to entities, such as slow downs or damaging over time.

  • Melee weapons : I developed a melee combo system able to play single or chained attacks, swings or instant hits…

  • Range weapons : I developed the projectiles shooting system and behaviour, including shooting rate, special projectile trajectories...
     

  • Modifiers : I developed a lot of specific modifiers, applicable to both melee and range weapons. Some will affect the attack behaviour (bouncing or piercing shots), but most of them will apply effects to the hit target (poison, stun, knockback…)

BASIC AI AND SPAWNING SYSTEM

 

    In order to test the different weapons and skills, I developed some basic AI, able to use the movement system as well as the weapons systemEnemies can be melee or range opponents, or even both, depending on their distance from the players’ characters.

 

     I created different kind of enemies, such as ghosts, soul-sucking demons, range enemies who can throw projectiles over walls and flee if the player gets too close...

TOOLS FOR WEAPONS, SKILLS AND MODIFIERS

 

    Since a lot of weapons, skills and modifiers are required for the game, a high level of tweaking was involved. I developed several tools to allow a quick content creation process and a high level of detail regarding the tweakable parameters.

  • Weapons and Skills editors : I developed an editor giving access to all the important parameters (damages, cooldown...), and allowing for modifiers application. Some parameters can be affected to specific levels, allowing parameters to change depending on the charging level of an attack, the level of the skill...

  • Modifiers editors : Modifiers were developed the same way, and when applied to a weapon, the modifier can be directly modified from the weapon editor, by a system of cascaded editors.

FREELANCE -Learnings

LEARNINGS AND TAKEAWAYS

     Sadly, as the intention prototype was mostly produced by students, we couldn’t finish it before going back to our studies, and the project is now completely paused. However, working almost alone on a whole dungeon crawler / hack’n’slash prototype was a great opportunity to enhance my gameplay, systems and tools programming skills, and to experiment freelance development.

PROGRAMMING SKILLS

  • Developing the core gameplay of the game taught me how to generate flexible systems, allowing polyvalent usability as well as easy modification

  • Working on a project with a large variety of weapons and skills pushed me to create tools allowing for a quick creation process and a high level of tweaking

  • Developing enemies gave me insights about ways to implement AI able to use the same systems as the playable characters

     As I was almost alone on the prototype, with nothing to base the project on, I had to think about the programming hierarchy all by myself. It was a great occasion to use the C# functionalities and learn how to come up with a hierarchy able to support all the game design features.

KeyIcon.png

SOFT SKILLS

  • Working in close collaboration with the main game designer taught me how to work in that kind of duet, and made me develop my design-to-programming translation

  • Working and living a whole month with the development team gave me insights about what it’s like to live and work in the same environment
     

  • Working a month in remote, away from my tutor, also gave me insights about what remote looks like in the video game industry

noun_Thinking_75480.png
noun_Thinking_75480.png
KeyIcon.png

     This project was a unique opportunity to experiment freelance development before entering the video game industry. It taught me how to organize my work and set my own goals when there’s nobody to decide it for me.

    Working as a freelancer was a great experience because I probably never would have tried it elseway. I realised that I rather work within a more organized environment. Also, working on a project base hierarchy is something I rather do with other developers, instead of deciding it all by myself.

FREELANCE - Credits

CREDITS

Tutor : Stéphane Hilbold (Game Designer)

Other Students : André Rizkallah (Environment and Props Artist) ; Laurène Savary (Character Artist) ;

Léo Marambat-Pattinote (Physics Programmer)

ALTIMANCE
GAMIFICATION AT ALTIMANCE
GAMEPLAY AND SYSTEMS PROGRAMMING
July - August 2018

CONTEXT AND MISSION

    My first internship took place at Altimance. It was between my second and third year of Bachelor, as I was still a Game Design student with very basic programming skills. Altimance is not a video game company, but a services center that provides technical support to other companies that are less comfortable with new technologies.


   The company was founded in 2017, and now gathers 250 collaborators. Their mission is to provide the best support to their partners, like equipment orders, troubleshooting, or even technical watch to prepare them for next technologies. As their work can sometimes be pretty repetitive, managers wanted to create a nice work environment.


  My mission was to ludify the work environment, by suggesting a technical solution. With 4 other students from my school, we worked on a serious game prototype that would give collaborators in-game objectives and rewards, without requiring them to work more (we didn’t want to create a system that would push them to overwork).

 

     The game was developed using Unity with C#.

Lounge.png
ALTIMANCE - Work

MY WORK DURING THE INTERNSHIP

ONLINE ACCOUNTS MANAGEMENT

 

  The first step of the game is to create an account. Each collaborator owns an avatar that is linked to his account, with all the datas it contains : avatar datas, inventory, quests completion… 


  I settled the accounts system using Playfab, created a connection menu with an account creation wizard, and handled the loading and saving of all those important datas in runtime, as collaborators play the game, complete quests, win items…

Menu Principal.png

BASE GAMEPLAY AND NAVIGATION

 

    As I worked on the base gameplay of the game, navigation was one of the most important things. Collaborators’ avatars needed to be able to move in the game space with a single click, so I implemented a pathfinding system


    All collaborators are able to see each other while being in the main lounge, so I also implemented real-time multiplayer using Photon, considering the customization of each avatar.

Lounge.png

WORK RECORDING AND QUESTS SYSTEMS

 

    The main feature of the game is to record the collaborators’ work as they are treating demands of their partners’ companies. Each “work ticket” completed grants an in-game reward


      In addition, each collaborator receives 3 in-game daily quests, completed with certain types of tickets. Completing those quests will grant collaborators special rewards, including more items, and temporary access to a special game zone


     I developed the ticket manual recording system, as well as the quests distribution and completion systems, distributing them following special rules (potential clients, tickets type...)

Quêtes.png

INVENTORY AND AVATAR CUSTOMIZATION

 

    When creating their account, collaborators can customize their avatar, by choosing the face, skin color and pilosity. Once in game, customization is also allowed by the different items, such as special shirts, pants and shoes. All those items are stored in an inventory, linked to the collaborator’s account.


   I implemented all customization systems, as well as the inventory management, including items reception, destruction and sorting.

ALTIMANCE - Learnings

LEARNINGS AND TAKEAWAYS

    Sadly, the project never came to term. The other students and I were the only people working on the game, and since our internship only last 2 months, we weren’t able to implement all the functionalities we would have wanted. Furthermore, the fact that Altimance is not a game company didn’t gave me any insight about working in the video game industry. However, this first professional experience was a great opportunity to think about games differently, discover new things about game development and enhance my programming skills.

PROGRAMMING SKILLS

  • Working on a real-time online game introduced me to networking development

  • Setting up accounts with data management gave me insights about how to implement this kind of structures

  • Developing the main features of the game (quests, inventory, customization) taught me how to develop important features that are pretty common in video games

   Being able to focus on a single development project during 2 months gave me the opportunity to strongly enhance my development skills, especially regarding C# basic features such as classes parenting, polymorphism, generics...

KeyIcon.png

SOFT SKILLS

  • Developing a serious game project made me develop another kind of game design skills, focused on experience and rewarding

  • Working on a project “ordered” by clients (the company managers) taught me how to organize my work in that kind of contexts (goals, reports…)

noun_Thinking_75480.png
noun_Thinking_75480.png
KeyIcon.png

   Most of all, that first experience in a professional environment gave me insights about how that kind of environment works, and how I’m supposed to behave within it.

    Working in a non-gaming company and experiencing gamification was great, but it made me realize that I’m more interested in “normal games" development. Furthermore, I liked to work on development and programming during those 2 months, this is why I decided to focus on that part of game creation and become a Game Programmer.

ALTIMANCE - Credits

CREDITS

Company : Altimance

Other Students : André Rizkallah (Characters and Items Artist) ; Hugo Strobbe (Props Artist) ;

Lila Grimaldi (Game Designer and UI Artist) : Alexis Jouanneau (Game Designer and Programmer)

bottom of page