Skip to content

[FR] Guide pour modder le jeu

Jérôme Leclercq edited this page Apr 16, 2021 · 3 revisions

Burg'War est un jeu massivement porté sur le modding, envie donc de tweaker (modifier les réglages) de quelques entités ? D'ajouter une nouvelle arme, ou encore de faire votre propre mode de jeu ? Vous êtes à la bonne place !

Comment fonctionne le jeu ?

Le jeu est programmé principalement sur deux couches :

  • Un noyau (core), en C++.
    Le rôle du noyau est de s'occuper de toutes la partie "fixe" du jeu, comme la façon dont des joueurs sont synchronisés sur un serveur, le téléchargement des ressources manquantes lors de la connexion à un serveur, la manière dont il faut afficher du texte, des images à l'écran, etc. Bref, beaucoup de choses indispensables pour jouer. C'est du code compilé (traduit en langage machine) avant distribution du jeu et stocké dans les .dll/.exe accompagnant le jeu.

  • Le gameplay, en Lua.
    Le rôle de la couche gameplay est d'apporter du contenu au jeu (entités, armes, modes de jeu, etc.) en utilisant des fonctionnalités exposées par le noyau. Toutes les entités (burger, monde, passages secrets, grappin) du jeu en font partie. Contrairement au noyau, ce code n'est pas traduit en langage machine avant le lancement d'une partie en jeu.
    Cette subtilité vous permet de la modifier pour qu'elle soit prise en compte dans vos parties, et si vous hébergez un serveur multijoueur, cela fonctionnera même chez les joueurs le rejoignant sans la moindre action de leur part !

Quelques notions importantes

BurgWar est un jeu conçu sur le modèle du multijoueur, cela signifie que l'intégralité de sa programmation est séparée entre le serveur et le client.

Le serveur représente toute la logique de jeu, c'est-à-dire le déplacement des entités, la gestion des dégâts, de la physique, etc.
Le client lui représente essentiellement la partie visuelle, c'est-à-dire la façon dont sont affichées les entités, ainsi que les sons qu'elles peuvent émettre.
Néanmoins, il faut savoir que le client effectue ce qu'on appelle de la prédiction, c'est-à-dire qu'il va exécuter une partie de la logique du serveur pour prédire le déroulé de certaines actions de votre joueur avant d'avoir confirmation de la part du serveur. C'est ce mécanisme qui vous permet de ne pas avoir de latence entre l'appui sur une touche de déplacement et le déplacement de votre hamburger, par exemple. Pour plus de détails sur la façon dont le réseau du jeu fonctionne, vous pouvez lire la page d'explications à ce sujet.

Les scripts gameplay sont donc exécutés côté serveur et côté client, bien qu'une grosse partie du code puisse être commune, certaines fonctions ne sont accessibles qu'à l'un des deux côtés, les scripts sont donc souvent séparés en partie client (cl_.lua), partie serveur (sv_.lua) et commun (sh_*.lua).
Il existe donc des variables globales pour déterminer de quel côté un script est exécuté :

  • SERVER: true si le script est exécuté côté serveur, false sinon.
  • CLIENT: true si le script est exécuté côté client (ou éditeur de map), false sinon.
  • EDITOR: true si le script est exécuté par l'éditeur de map (pendant l'édition), false sinon.

Où trouver le code gameplay et comment le modifier

Actuellement le code gameplay se situe dans le dossier scripts, séparé en plusieurs sous-dossiers :

  • scripts/autorun : Code de base exécuté au lancement d'un match, c'est là que sont définis des types comme Circle, Vec2 et certaines fonctions simples à utiliser. Vous n'avez à priori pas besoin de toucher à ce dossier.
  • scripts/entities : Contient toutes les entités de base du jeu, c'est là que sont définies des entités comme entity_burger, entity_sprite, etc.
  • scripts/gamemodes : Contient tout le code des modes de jeux (ainsi que leurs entités propres), qui définissent les règles lors d'un match.
  • scripts/weapons : Contient toutes les armes de base du jeu, c'est là que sont définies des armes comme weapon_emmentalibur, weapon_grapple, etc.

Il est également à noter que les maps peuvent inclure leurs propres scripts et entités/armes.

Pour éditer la partie gameplay du jeu, il vous suffit de modifier les scripts dans ces dossiers, vous pouvez suivre ces guides plus détaillés :

Note importante: Actuellement le jeu ne supporte pas à proprement parler les "mods", c'est-à-dire un ensemble de modifications pouvant se superposer au jeu de base. Cela signifie que vos modifications doivent se faire dans le dossier scripts pour être prises en compte actuellement. Nous vous recommandons d'en faire une sauvegarde avant de commencer à modifier.

Tester ses modifications

Une fois vos modifications effectuées, il vous suffit de lancer un match pour les tester (vous n'avez même pas besoin de relancer le jeu, relancer un match suffit).
L'un des points forts de BurgWar est que vous n'avez pas besoin d'envoyer vos changements aux joueurs à qui vous voudriez les faire tester, le jeu s'occupe tout seul d'envoyer les fichiers requis à tous les clients se connectant à votre serveur pour qu'ils jouent avec la même version que vous !

Vos entités apparaitront également automatiquement dans la liste des entités de l'éditeur de map.

Clone this wiki locally