Le Projet Doom

Structure du projet

La structure est très classique (je la donne ici en syntaxe MASD) :

'Declarations % Les déclarations de champs et de constantes

'InitAll % Initialisations générales (entre autre détournement des inters)

'Intro % Présentation du jeu

'InitGame % Initialisations liée au jeu en lui même

{ % boucle sur les niveaux

  'InitLevel % Initialisation du niveau

  { % Boucle du jeu...

    GOSUB Affichage % Affichage 3D
    'Touches % Gestion des touches
    'Reseau % Si on arrive a faire une interface réseau...
    'Monstres % Déplacement des monstres et des bots
    UP
    *Affichage
    'Moteur % Propagation triangulaire
    'Murs % Affichage des murs
    'Sprites % Affichage des sprites zoomés
    'Arme % Animation de l'arme quand on tire
    'Decorations % Affichages divers (munitions, vie, etc...)
    RTN

  }

  *MORT % Quand on a été tué
  ... % diminution du nombre de vies et eventuellement GOTO Perdu
  UP

  *NextLevel % Quand on a fini le niveau
  ... % incrémentation du numéro du niveau et éventuellement GOTO Gagne
  UP

}

*Perdu % Quand on a perdu !
'Perdu

*Gagne % Quand on a gagné !
'Gagne

*Fin % Pour quitter le programme.
'Fin

@

Commentaires : L'affichage est mis en gosub de façon à pouvoir l'appeler dans la présentation...
Je n'ai pas encore tenu compte de la longueur des sauts, ce n'est qu'un modèle...

Structure des données

On va avoir besoin de pas mal de mémoire. Une bonne partie tiendra dans la RAM reservée, mais pas tout. Suivant la calculatrice pour laquelle on fait le programme, il va donc falloir mettre certaines informations en RAM reservée ou en mémoire des objets temporaires (avec une reservation mémoire du style RES.STR). Cela influancera peu la vitesse d'execution en fait...
D'une manière générale les GROBs des écrans serront plutôt en mémoire temporaire (seule la 49 a assez de place en RAM réservée pour les y mettre, a priori...)

Pour les structures de données, on en utilisera certaines de façon interne pour certains algorithmes et on les détaillera le moment venu. D'autres serront au contraire utilisées par plusieurs routines, et peuvent être définies dès maintenant :

  • Format des GROBs : Il est encore un peu tôt pour en discuter. Dans la démo n°2, j'utilisais des GROBs "double hauteur", aussi bien pour l'affichage que pour le stockage des images, car j'avais une astuce très interessante qui ne marchait qu'avec ce format là. Mais d'un autre côté, l'autre format (entrelacé ou "double largeur") est plus interressant pour d'autres parties. Cela nécessite donc une étude attentive des algorithmes qu'on va utiliser, et donc j'y reviendrais quand ça sera fait ;)

  • Format des niveaux : A faire...

email