Battleships

Gameplay Programmer

March 2018 – April 2018

Battleships

Gameplay Programmer

March 2018 – April 2018

core responsibilities

  • Implementation of gameplay functionality like camera, units, user interaction and pathfinding.

Game Information

Battleships is a Strategy game where you and another human opponent’s fleet meet on the battlefield on the sea. Control your fleet and Guide them to victory by defeating the enemies and by doing so, conquering the seas. This game requires another opponent over LAN to play.

Project information

Battleships is a game created as a first year project within the IGAD course. This project has been made with three programmers in total. The purpose of the project is to create a game for hardware with limitations in which performance and optimization is key.

University
3
3 Weeks
Custom Framework
C++
Windows
Raspberry Pi

My Contribution

Pathfinding

Within battleships the units make use of a pathfinding system to traversal around in the world. Pathfinding is done with a pathfinding grid which is generated at the start of the game and creates non traversal nodes for static objects within the level.

The pathfinding system I’ve implemented generates a grid of nodes and uses A* algorithm to find the shortest path. Although this pathfinding is grid based, the end node contains free movement in a sense of where the user clicks the unit will stop. 

 

Unit Behavior and Interaction

One other responsible was the implementation for the unit behavior and interaction. Values which have been implemented are acceleration, top speed, de-acceleration and rotation speed.

Besides the behavior I also implemented the unit interaction from selection to ordering them around. Unfortunately due to time constraints we weren’t able to make use of it to implement different types of units.

Camera behavior

For battleships I also implemented the camera system. This system is generic in which multiple different camera behaviors and values can be defined.

There is a possibility to switch between different camera types which have different values. These values are basically the constraints in limitations of rotation and movement. This allows the user not to go outside the world and below a certain height as for example with the gameplay camera.