https://github.com/TheInnerLight/tiki-tech/assets/13356716/e8bd86a2-f193-4102-9ffe-be06a42fcfdd
Tiki Tech is a football simulation engine/game that attempts to simulate the game of football from first principles. That is to say that this project begins with a representation of the physics of the motion of players and the ball and hope that, when coupled with an understanding of how to play the game and any relevant tactics, something that resembles the game of football will emerge.
The idea of this project is to be a testbed for implemeting a wide variety of football tactics and experimenting with how they might interact on the pitch. Here I some things I'd like to capture:
Tiki Tech uses a number of concepts to capture elements of the game.
Behaviours (Football.Behaviours.*)
These are actions that the players can perform such as and contain implementation describing how such behaviours are performed.
Intentions (Football.Intentions.*)
Determines how the players decide what their objectives are. Players will intend to perform one of the above behaviours. The implementation in these modules determines what behaviours they will decide to perform based on the phase of play and state of the game.
Understanding (Football.Understanding.*)
Determines how the players understand their game. It provides information such as:
Match Engine (Football.Match.Engine)
An implementation of the Match typeclass, it iteratively updates the game for each timestep, moving the ball and players according to their equations of motion and causes the players to decide upon and enact their next actions.
The match engine makes heavy use of STM to handle atomic updates of the match state in a multithreaded execution context.
It is recommended to get started using Nix - this will give you all the tooling and dependencies you need to run this locally.
experimental-features = nix-command flakes in ~/.config/nix/nix.conf or /etc/nix/nix.confnix develop in the repo root folder to get a development shell with all the tooling.60 commits
1 commits
Haskell
80.2%
C
19.1%
https://github.com/TheInnerLight/tiki-tech/assets/13356716/e8bd86a2-f193-4102-9ffe-be06a42fcfdd
Tiki Tech is a football simulation engine/game that attempts to simulate the game of football from first principles. That is to say that this project begins with a representation of the physics of the motion of players and the ball and hope that, when coupled with an understanding of how to play the game and any relevant tactics, something that resembles the game of football will emerge.
The idea of this project is to be a testbed for implemeting a wide variety of football tactics and experimenting with how they might interact on the pitch. Here I some things I'd like to capture:
Tiki Tech uses a number of concepts to capture elements of the game.
Behaviours (Football.Behaviours.*)
These are actions that the players can perform such as and contain implementation describing how such behaviours are performed.
Intentions (Football.Intentions.*)
Determines how the players decide what their objectives are. Players will intend to perform one of the above behaviours. The implementation in these modules determines what behaviours they will decide to perform based on the phase of play and state of the game.
Understanding (Football.Understanding.*)
Determines how the players understand their game. It provides information such as:
Match Engine (Football.Match.Engine)
An implementation of the Match typeclass, it iteratively updates the game for each timestep, moving the ball and players according to their equations of motion and causes the players to decide upon and enact their next actions.
The match engine makes heavy use of STM to handle atomic updates of the match state in a multithreaded execution context.
It is recommended to get started using Nix - this will give you all the tooling and dependencies you need to run this locally.
experimental-features = nix-command flakes in ~/.config/nix/nix.conf or /etc/nix/nix.confnix develop in the repo root folder to get a development shell with all the tooling.60 commits
1 commits
Haskell
80.2%
C
19.1%