Skip to content

Repository files navigation

KerbalDesk

Tableau blanc d'ingénierie pour Kerbal Space Program, pensé pour tablette + stylet. On y griffonne ses étages comme sur un carnet, et on pose à côté de vrais calculateurs : delta-V, TWR, temps de combustion, comparaison de moteurs — avec la base de données des pièces du jeu intégrée.

Fonctionnalités

Tableau blanc infini

  • Dessin au stylet avec gestion de la pression, surligneur, gomme (par trait)
  • Navigation au doigt : glisser pour se déplacer, pincer pour zoomer
  • Palm rejection : par défaut le doigt navigue, seul le stylet dessine (désactivable)
  • Annuler / rétablir, multi-tableaux, export / import JSON
  • Sauvegarde automatique en local — aucune donnée ne quitte l'appareil
  • Interface adaptative : sur téléphone, la barre d'outils passe sous le pouce, les panneaux occupent l'écran, le dessin au doigt est activé d'office et les widgets insérés sont recadrés automatiquement

Widgets de calcul

Posés n'importe où sur le tableau via le menu Bibliothèque :

Widget Ce qu'il fait
Planificateur de mission Choisis une destination (Mun, Duna, Eeloo…) et un objectif (survol, orbite, atterrissage, retour) : l'algorithme calcule le budget Δv par phase puis conçoit la fusée — moteurs et réservoirs réels, étage par étage, contraintes de TWR respectées — avec un schéma blueprint et un export vers le plan d'étages. Gère les charges déposées : une base scientifique laissée sur Duna ou une station laissée en orbite ne pèse pas sur les étages de retour, seule la capsule remonte
Calcul Δv Équation de Tsiolkovski : Δv = Isp · g₀ · ln(m₀/m𝒇)
TWR Rapport poussée/poids selon le corps céleste (Kerbin, Mun, Eve…)
Temps de combustion Durée et débit massique : t = m / (F / (Isp · g₀))
Comparateur de propulsion Plusieurs configurations moteurs + réservoirs côte à côte : masse, poussée, TWR, temps de combustion, Δv — le meilleur de chaque critère est surligné
Plan d'étages Δv étage par étage et cumulé, TWR et durée par étage
Carte Δv Budgets Δv indicatifs du système Kerbol

Des préréglages illustrent des études de cas complètes (remplacement de boosters Pollux par des Grand-voile ou des Double-Truffe, choix du moteur d'un étage central…).

Base de données des pièces

Moteurs et réservoirs de KSP 1.12.x, extension Making History comprise : poussée atmosphère/vide, Isp, masses, ergols intégrés (boosters à poudre, Twin-Boar). Les calculs tiennent compte des spécificités (un booster à poudre n'accepte pas de réservoirs externes, etc.).

✦ Assistant IA (Gemini)

Optionnel — nécessite une clé API Google AI Studio, stockée uniquement sur l'appareil :

  • Chat d'ingénierie avec le contexte du tableau (l'IA voit tes widgets et leurs résultats)
  • Analyse de croquis : sélectionne une zone manuscrite, l'IA lit tes notes et crée le widget de calcul correspondant, prérempli
  • L'IA peut créer des widgets (comparateur complet, plan d'étages…) via un protocole d'actions JSON validé côté client

PWA et application Android

Installable sur tablette (Android / iPad / Windows), fonctionne hors ligne une fois installée (service worker + précache). Icônes façon blueprint générées par npm run icons. Une APK Android autonome (aucun serveur requis) est produite à chaque release — voir plus bas.

Démarrage

npm install
npm run dev        # serveur de développement
npm test           # tests unitaires (physique + données)
npm run build      # build de production dans dist/
npm run preview    # sert le build localement

Pour un déploiement sous un sous-chemin (ex. GitHub Pages), définir BASE_PATH :

BASE_PATH=/KerbalDesk/ npm run build

Déploiement sur kspboard.forgenet.fr

Le script deploy.sh fait tout : build, service pm2 (kspboard, port 4180 en local), reverse proxy nginx et certificat Let's Encrypt via certbot (HTTPS obligatoire pour installer la PWA).

sudo ./deploy.sh                 # déploiement complet
sudo SKIP_CERTBOT=1 ./deploy.sh  # sans certificat (DNS pas encore pointé)
./deploy.sh app                  # rebuild + reload pm2 seulement (mise à jour)

Variables surchargables : DOMAIN, PORT, CERTBOT_EMAIL, APP_NAME. Mise à jour courante : git pull && ./deploy.sh app.

Application Android (APK)

L'app web est embarquée telle quelle dans une APK via Capacitor : elle fonctionne entièrement hors ligne, sans dépendre du serveur.

  • Release automatique : pousser un tag vX.Y.Z déclenche le workflow GitHub Actions qui construit l'APK et le build web, et les attache à la release GitHub. Les appareils Android n'ont qu'à télécharger kerbaldesk-vX.Y.Z.apk (autoriser l'installation depuis des sources inconnues).
  • Build local : npm run apk (nécessite le SDK Android / Android Studio) — l'APK sort dans android/app/build/outputs/apk/debug/.

L'APK est signée avec une clé de debug : Android peut demander de désinstaller l'ancienne version lors d'une mise à jour si la clé a changé.

Architecture

src/
  lib/        physique (Tsiolkovski, TWR, débit…), encre, formatage, stockage
  data/       moteurs, réservoirs, corps célestes, carte Δv, préréglages
  model/      types du document (traits, widgets, vue)
  store/      Zustand : tableau (undo/redo, autosave), réglages, assistant
  ai/         client Gemini + construction du contexte + validation des actions
  components/ canvas, barre d'outils, widgets, panneaux

Choix notables :

  • Unités cohérentes : tonnes + kN + secondes → kN/(m/s) = t/s, aucun facteur de conversion dans les formules (src/lib/physics.ts).
  • Les traits sont stockés en triplets [x, y, pression] aplatis pour un localStorage compact ; le rendu recalcule l'épaisseur selon la pression.
  • Les widgets vivent dans une couche HTML transformée (translate + scale) au-dessus du canvas : ils restent nets à tous les niveaux de zoom et pleinement interactifs.
  • Les réponses de l'IA passent par un validateur strict (src/ai/prompt.ts) avant de toucher au tableau : identifiants de pièces vérifiés, nombres bornés, rien d'exécuté.

Formules

  • Δv = Isp · g₀ · ln(m₀ / m𝒇), g₀ = 9,80665 m/s²
  • Débit massique = F / (Isp · g₀) — temps de combustion = m_ergols / débit
  • TWR = F / (m · g_corps)

Le comparateur calcule le Δv et le temps de combustion avec l'Isp vide (représentatif de la majorité du vol) et affiche la poussée et le TWR en atmosphère comme dans le vide.

Licence

KerbalDesk est distribué sous licence GNU GPL v3 (voir LICENSE) : chacun est libre d'utiliser, d'étudier, de modifier et de redistribuer le projet, à condition que toute version dérivée reste sous la même licence, sources comprises. Personne ne peut donc en faire une version fermée ou se l'approprier.

Copyright (C) 2026 NightFury.

About

calculateur pour Kerbal Space Program, permets d'optimiser des fusées, choisir les bon réacteur et bien plus

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages