[TUTO] Création d'un mod KSP en C#

Proposez vos tutoriels sur la création d'add-ons, de modèle 3D ou à l'utilisation d'un mod/logiciel.
Avatar de l’utilisateur
kriyss
Messages : 78
Inscription : 16 décembre 2014, 00:16
Localisation : Bordeaux
Contact :

[TUTO] Création d'un mod KSP en C#

Message par kriyss » 18 décembre 2014, 23:29

Bonjour à vous tous.

Alors voilà, je vous propose un tutoriel pour la création de mod KSP. N'en trouvant pas moi-même, je me suis dit que c'était à mon tour d'apporter ma pierre à l'édifice. Ce tutoriel auras donc pour but de vous expliquer (aussi bien que je le peux) la création de mod, mais cette fois-ci du côté C# .

Petite précision : Je n'ai pas pour cible de vous apprendre le : C# , cependant je peux le faire si tel est votre souhait.

Toutes les remarques et surtout les négatives, sont bienvenue. Vous avez besoin de précisions ? Une faute d'orthographe ? Je me suis trompé ? N'hésitez pas non plus et venez me le dire.

Aller ça commence maintenant :

Partie 1 : Les premiers pas.

Le but de cette partie est de vous familiariser avec les outils et les fichiers de Kerbal Space Program, à travers le plus simple des mods, le "Hello World".
Nous allons donc voir comment rajouté des fonctionnalités à une part afin de pouvoir être plus à l'aise quand on voudra créer des mods plus complexes.

Partie 1.1 : Installation de l'environnement de développement (IDE)
Les mods de KSP sont écrit en C#. Il vous faut donc un logiciel permettant d'éditer et de compiler votre programme. Le plus utilisé est VisualStudio. C'est celui que je vais utiliser pour ce tutoriel. Mais il en existe d’autre comme MonoDevelop et SharpDevelop.

Liens de téléchargements : (Besoin de précision sur installation de vos IDE ? Avertissez-moi!)

Outil additionnel mais indispensable :

Pour développer en C#, j'utilise un outil qui permet d'ajouter beaucoup de fonctionnalité de refactoring à VisualStudio, il est payant. Mais je suis sûr que vous le trouverais par vous-même. Il s'agit de Resharper, par l'éditeur JetBrains.

Liens de téléchargements : Une fois tout ce bazar installé, on peut enfin commencer des trucs plus sérieux : la création de votre premier mod, rien que ça.

Partie 1.2 : Configuration de votre premier projet de MOD KSP

Une fois VisualStudio lancé, créé un nouveau projet. Notre mod sera une application de type Librairie, il faut donc sélectionné le type de projet correspondant :
Image

Cliquez alors sur [OK], votre projet créé, il vous faut maintenant le configurer afin de tester vos plugins simplement. Nous allons donc créer un répertoire de sortie de compilation qui contiendrat votre plugin une fois compilé. Dans le répertoire de votre solution/projet, créez les dossiers Output, Plugins et Parts en suivant cette arborescence :
Image

Ensuite, de retour dans votre IDE, faite un clic droit sur votre projet [1] puis "properties" [2] / "Build" [3] puis sélectionné la configuration "Release" [4]. Après cela, sélectionnez le menu "Browse" et mettez le chemin vers le répertoire "Output/Plugins" préalablement créé [5].

Image
Enfin, cliquez sur le menu "Advenced..." [6] et mettez le champ "Debug-info" à "none". Puis validez l'ensemble (en sauvegardant) .

Une fois tout cela effectué, vous pouvez alors compiler votre projet en appuyant sur [Ctrl][Shift] et le message suivant apparaît alors dans la console.

Code : Tout sélectionner

1>------ Rebuild All started: Project: MonPremierModKSP, Configuration: Release Any CPU ------
1>  MonPremierModKSP -> c:\users\kriyss\documents\visual studio 2013\Projects\MonPremierModKSP\Output\Plugins\MonPremierModKSP.dll
========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ==========
Enfin créé un répertoire KSP dans votre projet. Importez-y la dernière version du jeu. Cela vous permettras de tester vos mods, de supprimer des parts sans "casser" votre vrai jeu.

Partie 1.3 : Petit script d'aide

Une fois que votre fichier dll apparaît dans votre dossier output, il faut le mettre dans votre dossier d’installation de KSP. Et il faut bien l'avouer, on n'as pas envie de le faire à la main à chaque fois... Je vous propose donc un petit script afin de le faire automatiquement :

Code : Tout sélectionner

@echo off
set SOURCE = "CHEMIN/VERS/VOTRE/REPERTOIRE/OUTPUT"
set DEST = "CHEMIN/VERS/VOTRE/REPERTOIRE/DE/JEU/KSP/POUR/LE/DEVELOPPEMENT"
xcopy %SOURCE% %DEST% /D /E /C /R /I /K /Y
call KSP.exe
Copier ce fichier dans votre répertoire de jeu KSP ( celui pour développer hein :D ).

Partie 1.4 : Hello World!!

Bon, cette fois on y est. On va enfin créer notre premier mod. Dans un premier temps, il nous faut que l'on puisse rajouter de l'intelligence à une part.
Je vais donc en prendre une des part de ksp, disons la batterie z-1kBattery qui se trouve dans {DossierInstalationKSPDev}\GameData\Squad\Parts\Electrical\z-1kBattery. Il faut donc prendre tout ce dossier et venir le copier dans votre repértoire {VotreMOD}/Output/Parts. Ensuite renommer le dossier en MonPremierModKSP.

Ce dossier est composé de plusieurs fichiers, dont un qui nous intéresse plus particulièrement : le fichier z-1kBattery.cfg.
C'est ce fichier qui permet au jeu de savoir ce que fait la part, combien elle coûte, sa description ainsi que plein d'autres informations. Comme nous voulons modifier cette pièce, nous allons renommer le fichier de configuration en monPremierModKSP.cfg. A ce stade, vous devriez avoir cette arborescence :

Image

Une fois tout renommé, ouvrez votre fichier monPremierModKSP.cfg et modifiez le comme ceci :
PRIME_BBCODE_SPOILER_SHOW PRIME_BBCODE_SPOILER:
PART
{
// --- general parameters ---
name = Mon premier mod KSP
module = Part
author = Kriyss

// --- asset parameters ---
mesh = model.mu
rescaleFactor = 1

node_stack_top = 0.0, 0.1108553, 0.0, 0.0, 1.0, 0.0
node_stack_bottom = 0.0, -0.1108553, 0.0, 0.0, 1.0, 0.0

// --- editor parameters ---
TechRequired = largeElectrics
entryCost = 8200
cost = 880
category = Utility
subcategory = 0
title = Mon Premier Mod KSP
manufacturer = Kriyss
description = Votre premier item modifié.

// attachment rules: stack, srfAttach, allowStack, allowSrfAttach, allowCollision
attachRules = 1,0,1,1,0

// --- standard part parameters ---
mass = 0.05
dragModelType = default
maximum_drag = 0.2
minimum_drag = 0.2
angularDrag = 1
crashTolerance = 8
maxTemp = 3200

MODULE
{
name = MonPremierModKSP
}

RESOURCE
{
name = ElectricCharge
amount = 1000
maxAmount = 1000
}
}
Dans le fichier vous avez du voir que j'ai rajouter un champ MODULE, avec un nom. C'est cette partie du fichier de configuration qui permet de rattacher une pièce à une dll. Il est donc très important de ne pas se tromper d'orthographe, ni de majuscule/minuscule.

Si vous lancer votre jeu avec le petit script .bat que je vous ai donné. Vous devriez avoir ces deux pièces dans votre éditeur :

Image

Maintenant nous allons donner à notre part une intelligence. Pour cela, revenez sur VisualStudo et renommez votre fichier "Class1" en "MonPremierModKSP" .
Ensuite, il faut indiquer à notre projet où sont les librairies de ksp et de unity. Pour faire cela il faut faire un clic droit sur notre projet et ajouter deux références :
Image

Ensuite il faut cliquer sur "Browse",
Image

Aller dans votre répertoire de jeu ksp et prenez les fichiers “Assembly-CSharp.dll ” et “UnityEngine.dll ” contenu dans le dossier "KSP_DATA/Managed "
Vous devriez maintenant avoir cette fenêtre :
Image

Cliquez alors sur [OK], et vous devriez alors voir dans votre explorer de solution les références nouvellement ajoutées :
Image

Voici enfin notre premier mod :
Image

Bon, concrètement que fait ce petit bout de code ridicule ? Et bien il permet d'afficher une fenêtre avec code titre "Titre de la fenêtre" et comme message : "Hello les kerbals".

Cette fenêtre ne s'affiche pas dans l'éditeur, il faut donc créer une fusée sans oublier notre nouvelle part et la mettre sur l'espace de lancement pour voir les effets de notre mod. La fenêtre serra en au à gauche de votre écran et vous pourrais la bouger à votre convenance.

Image

Partie 1.5 : Un peu de style

Vous pouvez le dire, c'est assez moche. On vas donc un peu personnalisé notre fenêtre pour qu'elle ressemble un peu plus à l'univers de KSP.

Stylisons un peu :
Image

Le résultat :
Image

Partie 1.6 : Pour allez plus loin...

C'est la fin de la première partie, je sais c'est passé trop vite :cry: mais rassurez-vous la deuxième partie arrive :D.
L'intégralité du code ce trouve ici : https://github.com/kriyss/ksp-tuto.
Pour le style je vous recommande la documentation de Unity3D vers ce lien : http://docs.unity3d.com/ScriptReference/GUIStyle.html
Si vous avez le moindre problème n'hésitez surtout pas.

Et n'oubliez pas que c'est en moddant que l'on devient moddeur.
Dernière modification par kriyss le 21 décembre 2014, 18:59, modifié 17 fois.

Avatar de l’utilisateur
kriyss
Messages : 78
Inscription : 16 décembre 2014, 00:16
Localisation : Bordeaux
Contact :

Re: [En Cours de création][TUTO] Création d'un mod KSP en C#

Message par kriyss » 18 décembre 2014, 23:30

Reservé

Avatar de l’utilisateur
kriyss
Messages : 78
Inscription : 16 décembre 2014, 00:16
Localisation : Bordeaux
Contact :

Re: [En Cours de création][TUTO] Création d'un mod KSP en C#

Message par kriyss » 18 décembre 2014, 23:30

Reservé

Avatar de l’utilisateur
Nemecle
Messages : 2009
Inscription : 24 mars 2014, 09:03
Localisation : tu vois Andromeda ? bah pas là.
Contact :

Re: [En Cours de création][TUTO] Création d'un mod KSP en C#

Message par Nemecle » 19 décembre 2014, 00:02

Ah je sais déjà programmer en C# (.NET de mes c*******) mais un tuto pour faire un mod ça m'intéresse :)
"I hope that a day, the sky would turn dark enough to let me find this glimpse of hope... that pale blue dot"

Avatar de l’utilisateur
kriyss
Messages : 78
Inscription : 16 décembre 2014, 00:16
Localisation : Bordeaux
Contact :

Re: [En Cours de création][TUTO] Création d'un mod KSP en C#

Message par kriyss » 21 décembre 2014, 18:59

J'ai plus ou moins fini la première partie du tuto. J'attend vos retours. :D
En espérant que cela vous à plu.

Avatar de l’utilisateur
oliezekat
Messages : 824
Inscription : 05 avril 2013, 21:30
Localisation : La tête dans les étoiles
Contact :

Re: [TUTO] Création d'un mod KSP en C#

Message par oliezekat » 21 décembre 2014, 23:08

Je n'ai plus fait de programmation compilée depuis 10 ans et j'ai pas du tout envie de me reprendre la tête avec Visual Studio. Mais j'aimerais bien découvrir un IDE libre et capable de compiler pour plusieurs OS.

Bref, si tu pouvais expliquer avec Mono ou Sharp pour la création du projet et sa compilation, je suis preneur et c'est pas les idées de mods qui manquent ! Etant dév web, je peux apprendre vite le langage...
"Next time a man lands on the moon,
he must check whether a kerbal needs a rescue mission"

Kerbalaventure IX, à la recherche de nouvelles aventures (études et nawak)
Voir mon carnet KSP Players, hangar KerbalX, ou album Flickr

Avatar de l’utilisateur
Nemecle
Messages : 2009
Inscription : 24 mars 2014, 09:03
Localisation : tu vois Andromeda ? bah pas là.
Contact :

Re: [TUTO] Création d'un mod KSP en C#

Message par Nemecle » 22 décembre 2014, 00:50

oliezekat a écrit :Je n'ai plus fait de programmation compilée depuis 10 ans et j'ai pas du tout envie de me reprendre la tête avec Visual Studio. Mais j'aimerais bien découvrir un IDE libre et capable de compiler pour plusieurs OS.

Bref, si tu pouvais expliquer avec Mono ou Sharp pour la création du projet et sa compilation, je suis preneur et c'est pas les idées de mods qui manquent ! Etant dév web, je peux apprendre vite le langage...
En C++ tu peux le compiler avec gcc, il est notamment intégré dans Qt Creator, et sinon y a Code::Block
"I hope that a day, the sky would turn dark enough to let me find this glimpse of hope... that pale blue dot"

Avatar de l’utilisateur
Dragoon1010
Messages : 2841
Inscription : 10 mars 2013, 05:59
Localisation : Géolocalisation en cours...Veuillez patientez...
Contact :

Re: [TUTO] Création d'un mod KSP en C#

Message par Dragoon1010 » 22 décembre 2014, 01:03

C'est ce que j'allais dire, Code::Block fait bien l'affaire et est plutôt complet.

Avatar de l’utilisateur
Malah
Messages : 1488
Inscription : 02 novembre 2014, 02:18
Localisation : Rennes
Contact :

Re: [TUTO] Création d'un mod KSP en C#

Message par Malah » 22 décembre 2014, 05:45

Dragoon1010 a écrit :C'est ce que j'allais dire, Code::Block fait bien l'affaire et est plutôt complet.
Code::Blocks ça peut compiler du C# ?
Perso sur linux, j'utilise MonoDevelop en v5.5.4 et il est vraiment pas stable, il plante facilement une fois tous les deux ou trois jours (heureusement il sauvegarde tout avant les plantages ^^, mais bon quelle perte de temps).

Avatar de l’utilisateur
Dragoon1010
Messages : 2841
Inscription : 10 mars 2013, 05:59
Localisation : Géolocalisation en cours...Veuillez patientez...
Contact :

Re: [TUTO] Création d'un mod KSP en C#

Message par Dragoon1010 » 22 décembre 2014, 10:00

Du temps ou je l'utilisais, non il ne permettait pas de compiler du c#, mais tu a une grande gamme de langages différent grâce aux compilateurs externes.

Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit