Zero Epsilon, log

3 minute read

Nouveau log pour Zero Epsilon pour donner quelques news de fin de week-end:

Interface

Une petite partie de réflexion sur le gameplay m’a amené à imaginer les différents rôles, leurs interactions, et l’interface que chacun de rôle pourrait utiliser pour voir et interagir avec le jeu. Il me semble maintenant que bien 50% de la difficulté sera d’être capable de gérer des cartes (je commencerai en 2D pour la simplicité, mais 100% qu’il faudra faire ce jeu en 3D).

Je pense que le gros kiff sera de faire la scène suivante:

  • Capitaine: Navigateur, trajectoire directe pour se rendre en orbite de la planète X dans 60 secondes.
  • Navigateur: En cours de calcul. Trajectoire C 2.2 10.0 194.1 10:12:10 35 secondes (annonce le nom du vecteur d’accélération qui sera ajouté sur la carte du pilotage, puis le vecteur, puis l’heure de début d’accélération, et la durée de l’accélération)
  • Capitaine: Pilote, préparez et exécutez Trajectoire C. Survie préparez protection à 20G dans 30 secondes pour 35 secondes (l’accélération à 194.1m/s² est mortelle pour l’équipage, il faut activer le système de survie sinon l’équipage subira des blessures voir des pertes)
  • Médecin: Aye 20G dans 30 secondes.
  • Capitaine: Navigation, préparez la stabilisation en orbite. Comms je veux un contact avec le sol dès qu’on est à portée.

Cela demandera d’abord que le navigateur soit capable de visualiser l’espace et la planète sur une carte avec les coordonnées relatives. Ensuite il lui faudra un moyen de dessiner la trajectoire voulu pour arriver à un point donné (là c’est virtuellement la planète). Il faut qu’il ait un moyen d’être assisté par ordinateur:

  • L’ordinateur peut faire le calcul tout seul via 2 point (le vaisseau à un instant t et le vaisseau à un endroit voulu à t+1)
  • Il pourrait y avoir un mini jeu pour “simuler” le fait que l’opérateur doit faire des trucs compliqués
  • Où alors ça pourrait être un peu d’adresse (il faut tracer “au juger” la courbe et les vecteurs exacts seront calculés par l’ordinateur)

Il faut que l’opérateur voit au minimum 2 courbes: la courbe de déplacement du vaisseau actuel d’après le vecteurs de vitesse et d’accélération actuels, et aussi la/les courbes hypothétiques qu’il veut calculer.

Ensuite le navigateur doit pouvoir partager une hypothèse en “ordre” avec le pilote qui devrait avoir à responsabilité d’appliquer la courbe (recopier le vecteur, ou juste le valider (copié collé en 1 clic …). Le pilote aura un rôle un peu plus intéressant notamment en combat ou en faisant des ajustement de vecteur d’accélération (des facteurs extérieurs influenceront le vaisseau et le feront dévier, ces facteurs pourraient ne pas être pris en compte par la navigation pour donner plus d’utilité au pilote hors combat). En combat pas le temps pour le navigateur pour calculer les esquives, c’est le rôle du pilote de faire des esquive et prévenir des grosses accélérations.

Le médecin a simplement un tableau de bord avec la liste de tous les équipages. Il devrait activer le mode survie avec le niveau de puissance requis pour tout le monde (2-3 clic max). Le niveau de puissance dans le système de survie aux accélération devrait être dangereux et donc il faut toujours l’utiliser au minimum possible et nécessaire.

Code

J’ai également commencé 2 choses en terme de code

La physique

C’était pas très compliqué mais j’ai été obligé de recoder une classe de vecteurs pour être peinards avec mes calculs. La lib graphique aura également ses propres vecteurs pour les positions et les mouvements des shapes et vertex mais les deux types de données ne sont pas en concurrences donc pas de soucis. C’était très chiant à coder parce que je suis devenu vraiment con et mauvais en code depuis que j’ai commencé à travailler à la place d’être étudiant (et donc d’apprendre et rechercher). Mais c’est fait maintenant et ça marche bien.

Il fallait également préparer un système de temps, pour l’instant je ne me suis pas occupé de la relativité et j’ai une seule horloge, parce que c’est quand même plus simple. Mais sur le long terme j’aimerai bien évaluer à quel point ça serait compliqué de faire une horloge de temps relative à chaque vaisseau. Ça pourrait être drôle et assez unique/original pour un jeu dans l’espace.

Sandbox graphique

Pour tester un peu ma lib graphique et mettre en application le moteur physique du jeu, j’en ai profité pour coder une petite sandbox. Voilà j’ai un rond qui se déplace en suivant un vecteur de vitesse qui varie dans le temps grâce à une accélération constante à 60 Hz.