Clean-up and README
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -2,7 +2,7 @@
|
||||
.venv/
|
||||
.python-version
|
||||
__pycache__/
|
||||
uv.lock
|
||||
*.lock
|
||||
|
||||
# Save/Load files for testing
|
||||
*.json
|
||||
38
README.md
38
README.md
@@ -1,13 +1,15 @@
|
||||
# Wyvern&Castle
|
||||
Projet de NLP 2025-2026. Modèle MCP de D&D.
|
||||
Ceci est un projet de **modèle MCP** ([Model Context Protocol](https://modelcontextprotocol.io/docs/getting-started/intro)) pour le cours de **Natural Language Programming** de l'année 2025-2026.
|
||||
|
||||
L'objectif du projet a été de concevoir une **version simplifié du jeu Donjon & Dragon** avec un LLM capable de générer des parties et des scénarios qui n'ont de limite que votre imagination (et celles du LLM aussi!).
|
||||
Le projet contient un serveur (`server.py`) qui intéragit avec notre API de jeu (`game.py`).
|
||||
|
||||
|
||||
# Initialisation du jeu
|
||||
## Initialisation du projet
|
||||
Pour lancer une partie de notre jeu, nous vous conseillons d'installer **[Claude Desktop](https://claude.com/fr-fr/download)** (disponible sur Windows
|
||||
et Mac) qui va servir de LLM. Nous n'avons pas essayé mais il serait aussi possible d'utiliser la **version Desktop de ChatGPT**
|
||||
|
||||
Pour lancer la partie il faut tout d'abord installer [Claude Desktop](https://claude.com/fr-fr/download) (disponible sur Windows
|
||||
et Mac).
|
||||
|
||||
## Installer l'utilitaire python UV :
|
||||
1. Installer l'utilitaire python UV :
|
||||
```bash
|
||||
# Mac/Linux
|
||||
curl -LsSf https://astral.sh/uv/install.sh | sh
|
||||
@@ -15,14 +17,14 @@ curl -LsSf https://astral.sh/uv/install.sh | sh
|
||||
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
|
||||
```
|
||||
|
||||
## Initialiser le dossier pour l'installation
|
||||
2. Initialiser le dossier pour l'installation
|
||||
Creer un dossier et cloner le projet :
|
||||
```bash
|
||||
uv init wyvern-castle
|
||||
cd wyvern-castle
|
||||
mkdir wyvern_castle
|
||||
cd wyvern_castle
|
||||
git clone "https://gitea.galaxynoliro.fr/KuMiShi/Wyvern-Castle.git"
|
||||
```
|
||||
## Creation de l'environnement virtuel
|
||||
3. Creation de l'environnement virtuel
|
||||
```bash
|
||||
uv venv
|
||||
```
|
||||
@@ -35,18 +37,24 @@ Windows
|
||||
.\.venv\Scripts\activate
|
||||
```
|
||||
|
||||
## Installation du client mcp
|
||||
4. Installation des dependances/requirements
|
||||
```bash
|
||||
uv add mcp[cli] httpx
|
||||
# Synchronise l'environnement virtuel du dossier avec les dependances du projet
|
||||
uv pip sync pyproject.toml
|
||||
|
||||
# Si cela ne fonctionne pas correctement, vous pouvez le générer un fichier de dependances avec la commande suivante à partir du .toml:
|
||||
uv pip compile --upgrade pyproject.toml -o uv.lock
|
||||
# Puis synchroniser à nouveau (avec le nouveau fichier cette fois)
|
||||
uv pip sync uv.lock
|
||||
```
|
||||
|
||||
## Changement de la config de Claude Desktop
|
||||
5. Changement de la config de Claude Desktop
|
||||
Modifier le fichier `claude_desktop_config.json`
|
||||
|
||||
```json
|
||||
{
|
||||
"mcpServers": {
|
||||
"weather": {
|
||||
"wyvern_castle": {
|
||||
"command": "uv",
|
||||
"args": [
|
||||
"--directory",
|
||||
@@ -59,3 +67,5 @@ Modifier le fichier `claude_desktop_config.json`
|
||||
}
|
||||
```
|
||||
|
||||
## Utilisation
|
||||
Le projet est assez simple d'utilisation car une fois le serveur lancé, il vous suffit d'écrire des prompts à l'aide de votre application Desktop de LLM. Il est aussi possible d'avoir accès à une aide de génération de prompt intégrée.
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
# Game imports
|
||||
from serializable import Serializable
|
||||
from items.item import Item
|
||||
from utils.serializable import Serializable
|
||||
from utils.item import Item
|
||||
|
||||
# Native imports
|
||||
import uuid
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
# Game imports
|
||||
from entities.entity import Entity
|
||||
|
||||
class NPC(Entity):
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
# Game imports
|
||||
from entities.entity import Entity
|
||||
|
||||
class Player(Entity):
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# Game imports
|
||||
from serializable import Serializable
|
||||
from utils.serializable import Serializable
|
||||
from entities.entity import Entity
|
||||
from turn import Turn, TurnAction
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# Game import
|
||||
from serializable import Serializable
|
||||
from utils.serializable import Serializable
|
||||
|
||||
# Native imports
|
||||
from enum import Enum
|
||||
|
||||
@@ -1,11 +1,13 @@
|
||||
# Game imports
|
||||
from serializable import Serializable
|
||||
from dice import Dice
|
||||
from events.event import Event
|
||||
from entities.player import Player
|
||||
from entities.npc import NPC
|
||||
from items.item import Item
|
||||
from utils.item import Item
|
||||
from events.turn import TurnAction
|
||||
|
||||
# Native imports
|
||||
from enum import IntEnum
|
||||
|
||||
class Stat(IntEnum):
|
||||
@@ -1,10 +1,11 @@
|
||||
from typing import Dict
|
||||
# Game imports
|
||||
from serializable import Serializable
|
||||
|
||||
# Native imports
|
||||
import uuid
|
||||
|
||||
class Item(Serializable):
|
||||
def __init__(self,name:str, description:str, stat_modifier:Dict[str, int]):
|
||||
def __init__(self,name:str, description:str, stat_modifier:dict[str, int]):
|
||||
super().__init__()
|
||||
self.id = str(uuid.uuid4())
|
||||
self.name = name
|
||||
@@ -1,3 +1,4 @@
|
||||
# Native imports
|
||||
import json
|
||||
from typing import Any, Dict, List, Type, TypeVar
|
||||
|
||||
Reference in New Issue
Block a user