# Seeding Planets

Seeding Planets (nom provisoire) est un jeu de gestion en Godot.

## Installation

### Outils à installer

#### [Godot](https://godotengine.org/fr/)

Moteur de jeu open source. L'[installation via steam](https://store.steampowered.com/app/404790/Godot_Engine/) est recommandée car elle permet une mise à jour automatique.

#### [VSCodium](https://vscodium.com/)

Éditeur de fichier texte (alternative : [VSCode](https://code.visualstudio.com/)). Optionnel si vous n'avez pas vocation à écrire/modifier du code.

#### [Git](https://git-scm.com/downloads)

Utilitaire de gestion de version. C'est un outil assez avancé donc il est recommandé de lire un [tutoriel simple](https://about.gitlab.com/fr-fr/blog/what-is-git/).

Par défaut, git s'utilise dans un terminal en ligne de commande, mais pour les débutants, une interface graphique est recommandée (comme [le plugin VSCode/VSCodium Git](https://open-vsx.org/extension/pinage404/git-extension-pack) ou [GitKraken](https://www.gitkraken.com/))

### Télécharger les sources

Avec git, clonez le dépôt à l'URL `https://git.zacharie-guet.fr/zacharie/seeding-planets.git` quelque part sur votre ordinateur (avec la commande `git clone` sur le terminal, ou sur votre interface graphique git).

### Configurer Godot

Après l'ouverture de Godot, choisissez importer et chercher l'emplacement ou vous avez téléchargé les sources, puis validez.

#### Godot et VSCode

Pour éditer le code du jeu avec VSCodium, allez dans les paramètres de l'éditeur de Godot (Éditeur en haut à gauche), puis cherchez la page "Éditeur de texte -> Externe". Ici, cochez la case "options avancées" (en haut à droite de la fenêtre) et remplissez les champs comme suit.

- Chemin d'exécution: `C:\Program Files\VSCodium\VSCodium.exe` (ou chemin de l'exécutable VSCode)
- Paramètre d'exécution: `{project} --goto {file}:{line}:{col}`
- Utiliser un éditeur externe: Activé

Pour une meilleure intégration de Godot avec VS:
- Aller dans l'onglet "Extensions" (colonne toute à gauche)
- Chercher et installer l'extension "godot-tools"
- Aller dans File > Preferences > Settings, chercher "editorPath.godot4" et dans la ligne "Path to the Godot 4 editor" mettre : "C:\Program Files (x86)\Steam\steamapps\common\Godot Engine\godot.windows.opt.tools.64.exe" ou là où est l'executable de votre godot (sur steam cherchez dans les fichiers locaux de l'application")

## Arborescence du projet

Les dossiers racines sont des rangements fonctionnels des différents objets du jeu. 

> Les fichiers et dossiers du jeu doivent être nommés en anglais, en minuscule et les mots séparés par des underscore "_" (exemple: `non_playable_character.gd`)

```
├── common/ # Utilitaires commun à plusieurs objets
├── entities/ # Entités (mobiles et/ou instanciables en plusieurs fois)
├── stages/ # Lieux (uniques)
├── Readme.md # Documentation
└── root.tscn # Scène principale
```

Puis, dans un dossier représentant un objet du jeu (`entities/player` par exemple), les sous dossiers rangent les différents objets techniques du jeu.

```
player/
├── assets/
│   ├── sprites/
│   │   └── robot.png
│   └── sounds/
├── scripts/
│   └── player.gd # Script attaché à l'objet
└── player.tscn # Scène de l'objet
```

Des sous dossiers peuvent également représenter plusieurs versions de l'objet.

## Contribuer au projet

Pour ajouter un ou plusieurs fichiers ou modifier du code dans le projet, suivez les procédures suivantes.

> Les termes "branches" et "commits" (ou "révisions") sont relatifs au fonctionnement de Git, et les "tickets" sont des tâches que l'on retrouve dans le [Gitea](https://git.zacharie-guet.fr/zacharie/seeding-planets/issues).

### Modification de fichiers textes ou rennomage de dossiers/fichiers

1. Placez vous sur la branche `main` (`git checkout main` ou interface git) et récupérez les modification (`git pull` ou interface git)
2. Créez une branche dont le nom résume la modification. Les branches sont nommés en minuscule et avec des tirets "-" (exemple: `edit-jump-action`)
2. Après chaque modification conséquente, créer un ou plusieurs commits. Les noms des commits sont écrits en français et peuvent commencer par l'identifiant du ticket concernant la modification (exemple: `#5 augmentation de la distance du saut`)
3. Pousser votre branche (`git push` dans un terminal ou via interface git)
4. Créer une demande de modification dans Gitea en suivant [ce lien](https://git.zacharie-guet.fr/zacharie/seeding-planets/pulls), cliquez sur Demande d'ajout et renseignez comme suit
	- Fusionner dans `main`
	- Tirer les modification depuis votre branche
	- Cliquez sur "Nouvelle Demande d'ajout"
	- Editer le titre de la demande d'ajout ou laissez comme telle
	- Cliquez sur sur "Créer une demande d'ajout"
5. Communiquez avec l'équipe sur cette demande d'ajout, et appliquer la si vous avez l'aval de tous le monde (ou du moins des concernés du changement), en cliquant sur "Rebaser et avancer rapidement"

> Pour actualiser votre dépôt local, replacez vous sur `main` et récupérer les nouvelles modifications

### Ajout de fichiers ou modification de fichiers binaires (image, son)

1. Placez vous sur la branche `main` (`git checkout main` ou interface git) et récupérez les modification (`git pull` ou interface git)
2. Après la modification conséquente, créer un commit. Les noms des commits sont écrits en français et peuvent commencer par l'identifiant du ticket concernant la modification (exemple: `#8 ajout des sprites des plantes`)
3. Pousser votre modification (`git push` dans un terminal ou via interface git)

### Règle de developpement

#### Nommage

1. Les variables et les fonctions sont nommées en minuscule avec les mots séparés par un underscore "_" (en snake case)
2. Les constantes sont nommées en majuscule avec les mots séparés par un underscore "_" (en upper snake case)
3. Les classes commencent pas une majuscule avec les mots séparés par une majuscule (en pascal case)
4. Les signaux sont nommés en snake case, et doivent avoir un verbe au participe passé (exemple: `energy_updated`)

> Dans Godot, les instances de nodes sont appelées en pascal case.

## Publier le projet sur Itch

Une fois l'export web réalisé dans le dossier `.export/web` dans Godot, il est possible d'exécuter le script `push-to-itch.sh` pour pousser directement les modifications sur itch. La version prise en compte sera celle renseignée dans les paramètres du projet Godot.

Les outils `zip` et (`butler`)[https://itchio.itch.io/butler] seront nécessaires à installer (n'oubliez pas de faire un `butler login`).

Pour exécuter le script sur Windows, vous pouvez faire :
```
powershell.exe .\push-to-itch.sh  
```

## Troubleshoot

### Sur Godot, fenêtre "File have been modified outside Godot"

Si une fenêtre apparait avec marqué "Les fichiers suivants sont plus récents sur le disque", la majorité du temps, il est plus sage de cliquer sur "Recharger depuis le disque dur".
