Skip to main content

Introduction

Welcome to the Synthergy developer guides! This page is designed to help you get started on contributing to the project.

Architecture Overview

Synthergy consists of the following components:

  • synthergy-client: The web application serving as the frontend client for human players.
  • synthergy-server: The game server responsible for carrying out the game logic and managing incoming connections.
  • synthergy-ai: The AI server responsible for creating and managing the AI players.
  • synthergy-db: The Firebase database for handling user authentication and storing game saves.
  • synthergy-docs: The documentation homepage for the project (made with Docusaurus).

See the diagram below for an overview of the project's architecture:

Architecture Overview

The game server serves as a central 'hub' for the game, managing multiplayer connections between all clients via Socket.io websockets. Both human and AI players connect to the game server over this interface, meaning they can interact with each other in real-time and all have access to the same game state.

The AI server also hosts a small Flask API of its own, which is used by the game server to summon AI players to games as needed. Once these AI players have been created however, they communicate directly with the game server over the same Socket.io interface as human players.

The Firebase database is only used to store persistent information, such as user authentication details and game saves. It is not used for real-time communication and does not store any information about games in progress.

Joining the Project

To contribute to the project, you will need to join the synthergy-game organization on GitHub. Once you have been added to the organization, you will be able to access all of the project's repositories linked above.

In addition to containing the project's code, the organization also hosts our scrum boards via GitHub Projects. These boards are used to track the progress of the project and assign tasks to contributors.

Next Steps

At this point, you should be ready to start contributing to the project! Head to the guide for the component you're interested in working on to get started: