Game Dev, Partie 1: Le Moteur D’Avion

Préface:

Si vous suivez ce blog, vous connaissez probablement mon projet: Riftscape.

 

Riftscape, tel que présenté, est né de ma frustration à implémenté ce que cet article décrit (qui l’aurait crus! faire un jeu demandes des efforts et du temps!) C’étais ma solution pour m’éviter le tracas d’avoir à programmé un engin de jeu 3d complet, mais en même temps j’ai un peut perdus ma vision de ce que je voulais faire en premier lieux.

 

Pour faire bref, je retourne aux sources, et implémente de nouvelles idées. Les mécaniques seront beaucoup plus simples et le contenu moin dynamique (pas de génération aléatoire des niveaux, par example). Le jeux ce dérouleras par contre dans le même univers, et sera un jeu de tire à la première personne (FPS) où le joueur incarnera un investigateur d’élite (Techno-Enforcer) des United Rifts.

planeengine

planeENGINE (ou moteur d’avion) est un ensemble d’outil de développement de logiciel 3D utilisant actuellement WebGL (via la librairie THREE.js) pour le rendu graphique.

Le but de planeENGINE est de promouvoir un développement accéléré grâce à une approche minimaliste, ou simplement dit, d’en faire plus avec moins.

Un peut comme Doom, nous favorisons les sprites sur les modèles, ce qui simplifie la création de ressources (ennemis, objets, etc.) en 2D tout en permettant un environnement tridimensionnel.

Chaque modèle est composé entièrement de cubes (ou d’autres modèles) prédéfinis, ayant été assigné une seule texture par face. Un cube ne peut afficher qu’une face à la fois, qui est déterminée à partir de la disposition du cube et de la caméra.

Exemples:

L’engin supporte présentement:

  • Chargement d’un « jeu » contenant les informations sur:
    • Les évennements et code spécifiques au « jeu ».
    • Les « pack » requis par le « jeu ».
  • Chargement de « packs » contenant les informations sur:
    • Les textures (fichier à charger).
    • Les cubes et leurs faces.
    • Les modèles et leurs animations.
  • Affichage d’un cube à partir des informations chargés d’un pack.
  • Affichage d’un modèle à partir des informations chargés d’un pack.
  • Export d’un unique modèle.
  • Jeu: « Editor »:
    • Affichage d’un modèle spécifique.
    • Translation et rotation des cubes et des modèles.
    • Mouvement libre de la caméra (« wasd » + clique droit pour tourner).

À court terme, pour des soucis de performances, le moteur risque d’être réécrit dans un autre langage avec des librairies plus performante (en ce moment, la librairies que j’ai à l’oeuil est Mogre3D). On verra aussi apparaître les animations dans les modèles, un raffinement les fonctions de l’éditeur, incluant navigation du modèle par son arborescence. Une ré-implémentation du même type de système que les « packs » et leurs modèles, mais pour les maps, incluant leurs supports dans l’éditeur.

À moyen terme, c’est le prototypage des mécaniques de jeux (la partie la plus intéressante!) et la gestion et génération automatique des LODs (level of details) pour les modèles et maps.

À plus long terme, on commence à travailler sur le jeu actuel.

D’autres articles plus en détail vont suivre sur les diverses composantes et les défis rencontrés durant le développement.