Ce programme est une implémentation du jeu Ğeconomicus pour jouer par Internet en client-serveur.
Ce programme est une implémentation du jeu Ğeconomicus pour jouer par Internet en client-serveur (et éventuellement un peu en P2P).
Ceci est la partie serveur, en python3.
Un logiciel client sera implémenté aussi, probablement en JavaScript pour être plus facile d'utilisation (pas d'installation pour le joueur).
Le serveur permettra d'héberger plusieurs parties, afin d'épargner aussi aux animateurs l'installation. Les parties pourront être crées à distance, depuis le client.
(Si vous voulez m'aider pour la réalisation du client, ça serait avec grand plaisir !)
N'hésitez pas à me contacter si vous avez des idées ou des critiques concernant le principe ou ma manière d'implémenter, de coder... Il faut adapter les règles du jeu au support informatique, ce qui nécessite de faire des choix (par exemple, j'ai décidé de remplacer le système de billets par une valeur numérique, mais je garde le roulement des valeurs).
...
...
@@ -62,7 +63,8 @@ Les données JSON comprennent un champ "error".
54: Game error: that player does not exist
55: Game error: wrong player password
56: Game error: miss player password
57: Game error: miss exchange data
57: Game error: miss exchanges data
58: Game error: invalid exchange data
128: Server error: source not available
Exemple de paquet valide :
...
...
@@ -71,9 +73,25 @@ Exemple de paquet valide :
#### Échanges
**(Non implémenté)**Un échange de valeurs et/ou d'argent entre joueurs nécessite l'accord de tous les joueurs devant fournir de la richesse.
Un échange de valeurs et/ou d'argent entre joueurs nécessite l'accord de tous les joueurs devant fournir de la richesse.
Pour proposer un échange, les joueurs négocient entre eux (en P2P) les conditions. Quand ils sont en accord, ils envoient chacun au serveur les données de l'échange, contenant la liste des transactions. Le serveur valide les transactions dès qu'il a reçu la confirmation de tous les joueurs impliqués (devant donner quelque chose).
{ "exchanges": {
"player_uid": player_uid,
"player_psw": player_psw,
"exchanges_data": [
[
[from_player_uid, to_player_uid, amount],
...
],
...
]
}
# (int) amount: monnaie
# (iterable) amount: valeurs (liste de taille N_VALUES)
# "exchanges_data": liste des échanges.
# Un échange est une liste de transactions d'un joueur vers un autre.
> You should have received a copy of the GNU Affero General Public License
> along with Pygeconomicus-server. If not, see <https://www.gnu.org/licenses/>.
La GNU AGPL impose de publier les sources d'une instance publiquement accessible de ce logiciel, si celles-ci sont modifiées. Pour faciliter cela, le serveur pourra générer et fournir une archive de son propre code source au client si celui-ci en fait la requête.
La GNU AGPL impose de publier les sources d'une instance publiquement accessible de ce logiciel, si celles-ci sont modifiées. Pour faciliter cela, le serveur peut générer et fournir une archive de son propre code source au client si celui-ci en fait la requête.
Si vous hébergez une instance modifiée de ce logiciel accessible publiquement, vous devez juste vérifier que tous les fichiers du logiciel soient également accessibles, donc si vous ajoutez des fichier il faut actualiser la liste `SOURCE_FILES` dans `utils.py`. Cela est aussi valable pour les bibliothèques utilisées, qui doivent être open-source. En cas de doute, vous pouvez chercher dans la FAQ de GNU ou me demander.
## Contact
Contactez-moi via le site de ZettaScript : https://zettascript.org
Contactez-moi via le site de ZettaScript : https://zettascript.org/contact.php
Page du projet : https://zettascript.org/projects/geconomicus/