Astute

An astute networking tanks game client.

View project on GitHub

Game Architecture

Layers

The game consists of different layers serving different functionalities.

TCP Input Layer

Handles input from tcp connection and provides received data as strings.

Parser Layer

All strings are parsed and, message objects corresponding to each string received via TCP Input Layer are created.

Logic Layer

Messages and the current state of the world (which consists of tanks, water, brick walls, stone walls etc.) are merged in such a way that the new state of the world is created.
The new state and the received message and the events happened in the history are combined to produce an output to be sent to the Game Server.

Serialization Layer

Output message is converted to a string using the notation recognizable by the server.

TCP Output Layer

The processed string is sent to the server via TCP.

File I/O Layer

This layer is used to load/save the configuration file via file IO.

Configuration Layer

This layer is used to convert the configuration file to/from an object. i.e.: Serialize configuration in order to save it into a file; Deserialize configuration from a file and provide a simple interface to be used by the rest of the program.
This layer is accessible by all other parts of the Astute client.

UX Layer

Graphical user interface and the processing that is needed to render the grid and etc. are provided by this layer.

Logging Layer

Provides basic functionality for logging everything for the sake of debugging.

Layers