Networking

Networking

This project was a turn-based combat game set in a light tone fantasy setting and was developed as a group of four. The game involved classes and could be play online. Unfortunately, I struggled to know what the game was in the beginning due to poor health making it impossible for me to make it into meeting with the team but did provide alternative means of communication. The game itself was similar to that of the new south park games in regards to the combat system, so players can move their people a set amount in a turn and can also attack using predetermined areas, e.g. three ahead of the player.

For this task I oversaw the development of the combat system, abilities and development of the core gameplay loop. I developed an ability system that allowed for quick development and creation of new abilities in the way that the area of attacks (aoe) and directions systems were developed as attachable functions to abilities which took variables. All logic was handled within these. The system also interfaced with the entities within the game allowing for quick and easy effects to be built upon it, such as healing, movement of them (like a push back) as well as buffs. Due to changes in the plan this system ended up being removed as this part of the game was scaled back.

The character class used polymorphism to allow for different classes to have different attacks, this worked by having an ‘attack’ function that would have an id for what kind of attack they could do for example ability 1 for a mage would be fireball. The definition of the ‘fireball’ attack was then contained with the ability class. With the removal of the ability system this system also didn’t work due to the fact that they were so tightly coupled. This was replaced down the line.

I rewrote the basic grid system the game had which involved each of the entities having to store their data themselves. This seemed an impractical method as testing data involved running through all entities to find out who is near who etc. I wrote a system that held pointers to each of the entities so these sorts of tests became easier to run which I found greatly useful for the development of the ability systems. I also with the rewrite restructured most of the code base to remove repeated code and improve readability as this was lacking in some places. I then developed a ‘tile’ object that contained the code for the visual representation of a single tile within the grid and these were stored in a vector, which when the grid was made got dynamically resized. This system allowed everything to be more streamlined and centralized. For example, for the grid to show where the player could attack, move and heal all the coder would had to do is call a function within the grid to achieve this. Collisions also got streamlined and gave a more appropriate interface which allowed for a ‘GameObject’ to be passed in, instead of getting six different variables.

Overall the project went well and I wish I didn’t have the health issues I had earlier on in this project as this has a major effect on the group dynamics and caused some issues. The project did turn out to be successful but the input I had on the actual end product seems to be limited in scope as parts I did develop were mostly removed to go in a different direction.

Foundations

Networking is built in

  1. C++
  2. Custom Engine

Project Details

Date: Apr 23, 2018

Author: Isaac Mulcahy

Categories: C++, Basic Games

Tagged: C++, Basic Game, Development

Client:

Website:

Related Works.

About

Those who can do and those who can't teach games design.

Our Bunker

University of the West of England,
Frenchay Campus, Bristol, BS16 1QY,
United Kingdom.