Template6: Tutorial #1

Template6: Tutoriel #1

C'est le premier tutoriel qui est fourni avec les nouveaux scripts des templates (template6).

Qu'allez-vous apprendre?

Ce tutoriel couvre les bases en utilisant le nouveau code Template6 pour créer un jeu en entier sans aucune programmation.

Le niveau sur lequel nous allons travailler a été créé Dan Silverman, un créateur professionnel de niveau. C'est un niveau de style "futuriste" avec des téléporteurs, ascenseurs et de mystérieux cristaux utilisés pour la puissance des éléments alien

Ce que je suppose que vous connaissez déjà:

Vous devez déjà connaître les bases de l'utilisation de 3DGameStudio avant d'entamer ce tutoriel. Vous devez être capable de créer un niveau de base dans Wed, de le compiler et de l'exécuter.

Si vous êtes nouveau avec 3DGameStudio, je vous suggère de faire en premier le tutoriel "Démarrer avec 3D GameStudio" (qui se trouve dans le manuel 3DgameStudio à la rubrique "Edition de niveau").

Traduction Alain Brégeon - Septembre 2004 - alainbregeon@hotmail.com


Setting Up

Paramétrage

Afin de pouvoir suivre correctement le tutoriel tel qu'il est présenté, il est important que vous ayez les répertoires et les fichiers au bon endroit.

Pour commencer assurez-vous que les répertoires du projet (cr, future, Panel Elements) sont bien tous dans le répertoire principal du projet (T6Tut1).

Ce répertoire du projet doit lui-même se trouver dans le répertoire de GStudio. S'il se trouve dans un sous répertoire vous aurez des problèmes

Pour terminer vous devez déplacer le contenu de MOVE_TO_WAD_FOLDER dans votre répertoire GStudio\WAD.


The starting level

Partie un: le niveau du départ

Démarrer WED et chargez le niveau "CR" pour Control Room (répertoire t6tut1\cr).

Dan Silverman a fait un superbe travail en réalisant ces niveaux mais tout ce qui nous intéresseici pour ce tutoriel ce sont les entités dynamiques (les entités qui ont une action qui leur est attachée). Pour rendre les choses plus faciles, j'ai collecté toutes les entités dont nous aurons besoin et je les ai placées dans le répertoire "Entities".

Ouvrez le répertoire "Entities" en cliquant sur le signe "+" à sa gauche (si vous avez un "-" c'est que le répertoire est déjà ouvert). Clic droit sur le nom et sélectionnez "Scope to..." (si cette option est grisée c'est que vous l'avez déjà probablement utilisée).if that option is grayed out you are probably already scoped to that group). Toute la géométrie du niveau va disparaître dans les 4 vues à l'exception des entités que nous allons modifier.


Base Script

Ajouter le script de "base"

Afin de pouvoir ajouter des scripts à notre niveau nous devons d'abord ajouter le script de base de template6.

Pour ajouter le script de base, faites ce qui suit : sélectionnez "File->Map Properties" à partir de la barre de menu de WED puis cliquez sur l'icône "New Script" près du champ script.

Une boîte de dialogue s'ouvre vous demandant quel type de script vous souhaitez ajouter, assurez-vous que "A6_template_project" est coché et pressez OK. Vous pouvez fermer la boite de dialogue "Map Properties".


Player Script

Ajouter le script du joueur

Maintenant que vous avez le script de base d'ajouté, that you have the base script added, l'option "Add Script..." dans le menu "File" est devenue active. Sélectionnez donc cette option à présent. Vous devriez voir une boite de dialogue qui ressemble à celle-ci:

Sélectionnez plBiped01.wdl dans la liste puis cliquez sur "ouvrir". Ceci aura pour effet d'ajouetr le script plBiped01 à votre projet.


Player Script

Attacher le script du joueur

Maintenant que nous avons ajouté le script plBiped01 à notre niveau, nous pouvons attacher son action à notre modèle joueur dans notre niveau.

Sélectionnez l'entité joueur ("Player") depuis la liste Object dans WED en double cliquant dessus.

Note: Nom seulementle nom "Player" est en surbrillance mais le modèle joueur est également sélectionné (en rouge) dans le niveau.

Clic droit sur le nom dans la liste puis sélectionnez "Behavior" dans le menu déroulant. Vous voyez la boîte de dialogue "Choose Action".

Choisissez la seule action possible (PlBiped01) puis OK.


Add a Camera

Ajouter une caméra

Nous avons à présent un joueur dans le niveau mais sans caméra nous aurons beaucoup de mal à voir ce que nous faisons. Utilisez l'option "Add Script..." du menu de WED pour sélectionner la vue caméra 3ème personne.

Les caméras 3rd, 1st, et Orbit pointent toutes vers le joueur. Aussi il n'est pas utile de l'attacher à une entité niveau comme nous l'avons fait avec plBiped01. Mais vous pouvez personnaliser le comportement de la caméra avec le panneau "Customize" (nous verrons cela plus tard).


Quick Build

Compilation rapide

Avec un personnage contrôlable et une caméra nous avons les éléments minimums nécessaires pour un jeu. Nous pouvons donc compiler le niveau et l'exécuter.

Souvenez-vous, vous n'avez besoin que de mettre à jour les entités (Update Entities)

Puisque les niveaux que nous utilisons avec ces tutoriels sont complexes, nous allons vraiment profiter des avantages qu'apporte "Update Entities" en réduisant consédérablement les temps de compilation. pour cela ouvrez la boîte de dialogue de la compilation (en sélectionnant "Build WMB..." depuis le menu "File" ou en pressant le bouton "build" de la barre d'outils) puis cliquez sur le bouton "Update Entities".

Update Entities ne recompilera pas les niveau complètement il mettra juste à jour les changements intervenus sur les entités du niveau. Si vous changez une variable d'entité, ajoutez une action ou déplacez une entité, utilisez cette option.


First Run

Première exécution

Lorsque la compilation du niveau est terminée, sélectionnez "Run Level..." à partir du menu "File"(ou pressez l'icône "!" sur la barre d'outils) puis pressez OK.

Votre niveau doit ressemblez à ceci

Allez-y et promenez-vous en utilisant les touches "ZQSD" et la souris. Lorsque vous en aurez marre de vous promener pressez la touche Echap.


Modifying Player

Modifier le joueur

Vous avez du noter que le joueur exécute son animation un peu trop rapidement par rapport à la distance couverte. Nous pouvons corriger cela en modifiant les valeurs de l'animation de l'entité. Pour cela ouvrez de nouveau la boite de dialogue "comportement" (behavior) du joueur ((player) (sélectionnez player puis clic droit).

Vous noterez que le panneau de comportement est différent du précédent car nous avons une action qui lui est attachée. Chaque valeur personnalisable (connue sous le nom "skills") est affichée ici avec un nom descriptif (Health, Armor, ForceX, etc.). Si vous faites un clic droit sur un de ces noms vous aurez une boite de dialogue d'aide pour cette variable qui s'affiche.

Sachant cela nous voyons que les variables RunCrawlDist et WalkSwimDist sont celles que nous voulons changer. Doublons les valeurs qui se trouvent avant la décimale (le point) (augmentant de ce fait la distance couverte pour un cycle complet d'animation) :

Sauvegardons (Save) nos changements, recompiler le niveau (souvenez-vous d'utiliser "Update Entities"), et exécutez-le.

Je pense que cela doit être un peu plus lent. Si vous le voulez, vous pouvez réouvrir la boîte de dialogue Behavior et modifier de nouveau ces valeurs.

Souvenez-vous que vous devez recompiler le niveau après chaque modification que vous faites sinon ce sont les anciennes valeurs qui seront utilisées.


Customizing the Camera

Personnaliser la Caméra

La caméra 3eme personne n'a aucune action mais cela ne l'emp^che pas d'être personnalisable. Nous devons simplement le faire d'une autre façon.

Cliquez sur l'onglet "Resources" dans la fenêtre Project de Wed. Ouvrez le répertoire "script files" (clquez sur le "+" à gauche du répertoire). Vous verrez alors une liste de tous les scripts qui sont actuellement utilisés dans ce projet.

Trouvez le fichier script "camera3rd01.wdl" dans la liste puis clic droit sur lui et sélectionnez "Customize".

Ce panneau fonctionne exactement comme le panneau behavior des actions mais au lieu de changer les valeurs pour une seule entité dans le niveau, il change les valeurs de base du script lui même.

Par exemple, vous avez noté que lorsque la distance entre le joueur se resserre (vous êtes contre un mur par exemple) le modèle du joueur passe en transparence. C'est pratique pour voir à travers le personnage dans des espaces étroits mais ce n'est peut-être pas l'effet que vous désirez. Vous pouvez changer cela en passant la valeur "Fade Dist (ticks)" de 80 à -1 et en exécuatnt le niveau.

Maintenant lorsque le joueur sera près d'un mur il ne passera plus en transparence. Allez-y, faites la modif et essayez pour voir le résultat.

Nous n'aurions pas oublié quelque chose?

Si vous avez été attentif vous avez noté que nous n'avons pas recompilé le niveau avant de l'exécuter et pourtant la modification a bien été prise en compte. En fait vous devez recompiler le niveau uniquement si vous avez fait des midifications sur le niveau lui même. Des actions comme la modification ou l'ajout d'un script NE CHANGE PAS le niveau c'est donc pour cela que nous n'avons pas besoin de le recompiler.


Adding "FX"

Ajouter des effets spéciaux

Bien nous avons un jeu exécutable mais il apparaît un peu "plat". Pour vous aider à corriger cela nous avons à notre disposition une collection d'effets divers de niveau dans le fichier script "fxa01.wdl". Ajoutez ce script à votre projet de la même façon que vous avez ajouté les scripts du joueur et de la caméra (WED File->Add Script...).


Decals

Decalcomanies

La première chose à faire est de sélectionner le sol (Floor). Sélectionnez le groupe Floor à partir de la iste Objects dans la fenêtre Project puis"Scope to...".

Il y a 5 entités dans ce groupe, 4 décalques et une entité pour tout le sol. Les décals sur le sol paraissent être en dehors du sol se serait mieux si on pouvait les fusionner avec le sol. Nous pouvons obtenir cet effet en ajoutant une valeur alpha aux entités décalques.

Sélectionnez une des entités décalques du sol (dans notre cas "wdecal_tga") en double cliquant dessus puis ouvrez sa boite de dialogue Behavior par un clic droit. La boite de dialogue "Choose Action" apparît comme pour le joueur mais cette fois-ci elle propose plus d'actions.

SeleSélectionnez FXA_Transparent et cliquez sur OK. Compilez le niveau et exécutez-le.

Ca rend mieux mais je pense que c'est un peu trop transparent. Si vous le voulez, vous pouvez ouvrir la boîte de dialogue "behavior" pour cette entité et ajuster sa valeur alpha.

Je pense que 50 est une bonne valeur. Sauvegardez vos changements et pensez à compiler votre niveau avant de l'exécuter.

Une fois que vous avez trouvé la bonne valeur, faites la même chose aux 3 autres décalques (attacher l'action, changer la valeur alpha et recompiler le niveau).


Waxing the Floor

Cirer le sol

Si vous utilisez l'édition professionnelle de 3DGameStudio, vous pouvez utiliser l'effet miroir (Mirro)"pour donner un brillant réaliste au sol.

Choisissez l'entité "floor_wmb", sélectionnez la boite behavior et choisissez FXA_Mirror.

Pensez à compiler le niveau.


Blinking Lights

Lumières clignotantes

Maintenant nous allons donner un peu de piquant à notre niveau en y ajoutant quelques lumières clignotantes. Scope to sur le groupe "Blinking". Ici se trouvent 3 entités "blink" et un répertoire "Triggers". Ne nous occupons pas du répertoire trigger pour l'instant et sélectionnons une des entités blink.

Faites apparaître la boîte de dialogue et sélectionnez FXA_LightBlink.

Faites la même chose pour les 2 autres entités blink, compilez et exécutez le niveau.

Les trois téléporteurs doivent à présent avoir des lumières clignotantes derrière eux. Vous pouvez changer leur couleur, leur rayon d'action, la durée du clignotement etc simplement en réouvrant la boite de dialogue "behavior" et en jouant avec les différents paramètres. Libre à vous d'essayer jusqu'à obtenir l'effet désiré.


The Desk

Le bureau

Le groupe desk nécessite une opération rapide. Scope to sur Desk et sélectionnez Behavior pour l'entité "Screens_wmb". Attachez-lui l'action FXA_Transparent et mettez la valeur de l'alpha aux environs de 40.


Finished for now

C'est tout pour l'instant

C'est tout ce que nous avons à ajouter à cette pièce pour le moment. Mais souvenez-vous que ce n'est que le premier niveau d'un projet qui en contient deux. Vous avez certainement noté que nous n'avons pas touché au répertoire "Teleporters" pour l'instant. Et qu'en est-il du répertoire "Triggers"? Nous reviendrons sur cela dès que nous aurons terminé le deuxième niveau.


The Test

Partie Deux: Le Test

Rendons-nous dans le second niveau de notre tutoriel à 2 niveaux.

Utilisez WED pour ouvrir le niveau "future" (dans le répertoire T6Tut1\future).

J'ai déjà ajouté le script de base et les scripts que nous avons ajoutés dans le niveau précédent (Control Room). Dans ce niveau nous allons nous concentrer sur les portes, les ascenseurs et les déclencheurs (triggers).


Nexus Size

Taille du Nexus

Ce niveau est plus complexe que le précdent. De ce fait il nécessite de plus de mémoire "nexus" que la valeur par défaut (40MB). Aussi nous allons commencer par augmenter la taille de nexus en ouvrant la boite de dialogue "Map Properties" et en remplaçant la valeur 40 par 80 dans le champ nexus.


Doors and Lifts

Portes et Ascenseurs

"Dans le niveau future les portes sont des ascenseurs (et les ascenseurs sont également des ascenseurs)"

Dans les scripts des templates nous entendons par porte (door) toute entité qui peut tourner (sur ses angles pan, tilt, roll) lorsqu'elle est activée Les ascenseurs (lifts) sont des entités qui se déplacent selon x,y et z lorsqu'elles sont activées. Puisque les portes du niveau future coulissent pour s'ouvrir ou se fermer elles sont considérées comme étant des ascenseurs par les scripts des templates concernés.

Aussi nous allons commencer par ajouter le script "lift01.wdl" (WED:File->Add Script).


First Set of Doors

Premier jeu de portes

Trouvez le premier jeu de portes. Si vous avez le groupe "Root" de sélectionné dans la fenêtre project vous trouverez les portes ici:

Une fois que vous avez localisé les portes, "Scope to..." sur le groupe Door1 (à l'intérieur du groupe Doors_and_Lift):


Adding Lift Actions

Ajouter l'action ascenseur (Lift)

Sélectionnez "door1_right_wmb" et ajoutez l'action "Lift01_Basic" en utilisant la boîte de dialogue Behavior. Faites la même chose pour l'entité "door1_left_wmb".

Sélectionnez de nouveau "door1_right_wmb" et ouvrez son panneau Behavior:

Nous voulons que la porte coulisse vers la droite lorsque nous l'activons aussi nous mettons sa valeur EndY à -96. Nous voulons également que la porte ignore la géométrie du niveau autrement elle coincera en pénétrant dans le mur aussi vérifiez que "IgnoreMap?" est bien coché.

Cette double porte doit être activé par un déclencheur ("trigger" nous verrons cela plus tard), donc vérifiez que IgnoreScan et IgnoreClick soient cochés dans la section Activate.Nous mettons également la valeur trigger à 1.

On y va et on fait la même chose pour la porte de gauche (door1_left) mais nous mettons 96 comme valeur à EndY.


Triggers

Déclencheurs (triggers)

Les déclencheurs (triggers) sont des outils très pratiques que nous utiliserons quelque peu dans ce niveau. Ils sont une collection d'interrupteurs oui/non qui peuvent être partagés entre les actions. Une action peut mettre à "on" un déclencheur tandis qu'une autre peut le mettre à "off" pendant que d'autres entités regarderont la valeur de ce déclencheur et réagiront en fonction de sa valeur.

Un exemple très simple pour expliquer cela pourrait être un interrupteur servant à allumer la lumière. Une entité sur le mur (l'interrupteur) qui pourrait être mis à "on" lorsqu'il est "scanné" par le joueur. Une entité indépendante (l'ampoule) contrôlerait l'état de l'interrupteur et augmenterait sa valeur lumineuse si l'interrupteur est allumé (on).

Ca n'a pas l'air très puissant au premier abord mais vous allez vite découvrir que de nombreux éléments d'un jeu peuvent être manipulés en mettant ou démettant des déclencheurs (verrouillage de porte, quêtes, conversations avec des NPC, inventaires etc.).


Adding a Trigger

Ajouter un déclencheur à notre porte

Sélectionnez "door1_trig_wmb" dans le groupe Door1 et attachez lui l'action "Trigger00" et ouvrez de nouveau la boite de dialogue Behavior:

Mettez l'indentifiant du déclencheur à 1 (ID)(la même valeur que pour nos portes) et assurez-vous que toutes les autres valeurs sont à 0 ou non cochées.

Compilez et exécutez le niveau. Ce niveau est assez énorme aussi vérifiez que vous avez sélectionné "Update Entities". Lorsque vous commencez le niveau, vous êtes dans un hall. Suivez le chemin vers la gauche et vous arriverez aux portes avec lesquelles nous venons de travailler (le déclencheur est dans le cercle rouge de l'image ci-dessous):

Tout d'abord nous allons le rendre invisible. Quittez le niveau (Echap) et sélectionnez de nouveau door1_trig, ouvrez la boîte de dialogue Properties (pas Behavior), sélectionnez l'onglet "properties" et cochez la case "invisible":

Compilez, exécutez et revenez près de nos portes. A présent vous devriez voir le panneau de commande des portes qui était caché par le déclencheur auparavant:

Pressez la touche d'activation ("Ctrl" par défaut) et les portes vont s'ouvrir en coulissant.


Second Set of Doors

Deuxième jeu de portes

Le deuxième jeu de portes est situé dans le cercle rouge sur l'image ci-dessous:

Ces portes s'ouvriront "comme par magie" lorsque le joueur s'en approchera (comme les portes dans la série TV "Star Trek").

"Scope to..." sur le groupe Door2 et paramétrez la porte gauche (door2_right) et la porte droite (door2_left) comme pour le groupe Door1 sauf que vous mettrez 2 comme valeur à trigger.


Ranged Trigger

Créer un déclencheur par rayon d'action

Cette fois-ci nous activons la valeur de déclencheur de la porte lorsque le joueur sera près de la boîte de déclenchement.

Attachez l'action "Trigger00" à l'entité "door2_trig_wmb" et ré-ouvrez la boite de dialogue Behavior:

Mettez 2 pour l'ID, cochez "OnceOnly", mettez 96 comme valeur pour TriggerRange et cochez également "UseTriggerRange". Vous pourriez cocher toutes les autres cases "Ignore" dans la section Activation mais cela ne servira à rien car le rayon d'action pour le déclenchement est suffisemment grand pour que les autres évènements ne puissentse produire.

Compilez et exécutez. Passez la première porte (vous savez encore l'ouvrir?) puis prenez à droite au bout du couloir. En suivant le couloir vous arriverez à une porte fermée précédée d'un cube (je vous laisse rendre ce cube invisible comme pour le déclencheur précdent):

Lorsque vous approchez du cube, la porte va s'ouvrir:


Third Set of Doors

Le troisième jeu de portes

Le troisième jeu de porte est exactement comme le premier jeu à l'exception du déclencheur. Suivezles mêmes étapes que pour le jeu de porte 1 mais pensez à mettre ID à"3".


Final Set of Doors

Le dernier jeu de porte

Le quatrième et dernier jeu de porte est identique au deuxième mais il a 3 déclencheurs. Le premier déclencheur ouvre la porte, le deuxième déclencheur ferme la porte (derrière le joueur l(emprisonnant de ce fait dans la pièce) et le 3ème déclencheur ouvre la porte de nouveau permettant au joueur de s'échapper.

"Scope to..." sur le groupe Door4 et repérez-le dans la vue de WED:

Nous paramétrons "door4_right_wmb" un peu comme les autres portes. Sauf que maintenant nous déplaçons 176 unités dans la direction des X, la vitesse est mise à 2.5, et elles utilisent le numéro de trigger 5:

Même chose pour "door4_left_wmb" sauf le déplacement en direction de X qui est de -176.


Trigger Volumes

Volume des déclencheurs

La gestion du volume du déclencheur est un outil pratique lorsque vous voulez un contrôle précis sur une zone d'activation d'un déclencheur donné. En créant une boite dans WED qui remplit la totalité du couloir vous êtes sur que le joueur ne pourra pas esquiver involontairement le zone d'activation pour ouvrir ou fermer les portes.

Pour générer un déclencheur de volume créez tout simplement une entité carte dans WED qui a la forme que vous voulez. Chargez la forme dans votre niveau et attachez-li l'action "Trigger00_Volume. Voici le panneau de comportement(behavior) pour "door4_open_wmb":

Voici celui pour "door4_close_wmb":

pour terminer nous avons un déclencheur d'ouverture nommé "door4_reopen_wmb", qui permet au joueur de s'échapper de la pièce. Il est situé au dessus d'une plateforme et il utilise un système de déclencheur classique:


Real Lift

Pour terminer, un vrai ascenseur

Le déclencheur de réouverture de la porte est situé sur une plateforme trop haute pour que le joueur puisse sauter dessus. Pour l'enclencher le joueur doit d'abord activer un ascenseur.

"Scope to..." sur le groupe Lift et sélectionnez lift1_wmb. Nous allons d'abord faire en sorte qu'il y ait de la lumière dans l'ascenseur aussi attachez-lui l'action "Lift01_Lite" et réouvrez le panneau de comportement (Behavior):

Cela ressemble aux actions précédentes utilisées pour nos portes. Assurez-vous que IgnoreScan et IgnoreClick soient cochés et que IgoreSonar ne le soit pas (sinon l'ascenseur ne pourrait pas transporter le joueur).

Nous paramétrons"lift_trig_wmb" comme nous l'avons fait pour notre premier déclencheur.

Maintenant le joueur peut appeler l'ascenseur en appuyant sur le bouton réservé à cet effet (en haut de la rampe) et le prendre afin d'atteindre la plateforme.


Crystal Triggers

Crystal comme déclencheur

Le but de ce petit jeu est de collecter des crystaux. Bien mais comment faisons-nous pour que le joueur puisse prendre les crystaux dans le niveau et les ajouter à l'inventaire? Très simple, nous utilisons des déclencheurs (triggers).

"Scope to..." sur le groupe Crystals et attachez l'action Trigger00 à tous les crystaux qui se trouvent dans ce groupe. Utilisez le panneau Behavior pour mettre l'ID de "crystal1_mdl" à 20, le drapeau OnceOnly à on, et TriggerRange à 64:

Pour "crystal2_mdl" même chose avec ces valeur ID à 21 et TriggerRange à 128.

Maintenant lorsque le joueur sera assez près d'un crystal il disparaîtra (le crystal pas le joueur ;) ) probablement dans la poche du joueur et le déclencheur correspondant sera mis.


The Barrier

La Barrière

Si vous avez exécuté le niveau vous avez vu qu'il y avait un obstacle entre vous et le second crystal.

Nous pouvons enlever la barrière en utilsant la valeur du déclencheur du premier crystal (20) en attachant l'action "Trigger00_RMObj" à l'entité "barrier_tga".

Nous avons l'identifiant du déclencheur (trigger ID) de mis à 20 signifiant que lorsque le déclencheur portant le numéro 20 sera activé cet objet sera enlevé. Les valeurs d'animation sont celles qui servent au cycle d'animation. IdleFrame et IdleSpeed correspondent au nombre de frame et à la vitesse d'animation.


Finished Part Two

Fin de la deuxième partie

A présent nous avons 2 niveaux de terminés mais il n'y a aucun lien entre eux. Dans la prochaine leçonnous apprendrons à les lier.


Linking it Together

Partie trois: les relier en semble

Nous avons 2 niveaux séparés dans notre jeu àprésent nous allons utiliser les téméporteurs pour permettre au joeur de passer de l'un à l'autre.

Pour cela ouvrez d'abord le niveau du départ, la salle de contrôle (cr.wmp), dans WED et ajotez le script "levels00.wdl".

Ce script nous permet de relier entre eux jusqu'à 9 niveaux dans n'importe quelle configuration souhaitée. Puis c'est au niveau de la salle de contrôle "cr.wmp" que nous avons ajouté le script il est automatiquement déclaré premier niveau. Tout ce que nous avons à faire c'est douvrir le panneau de personnalisation ("Customize") et d'ajouter la carte Future et le répertoire dans les champs du deuxième niveau (seconde level):


Teleporters

Téléporteurs

"Scope to..." le groupe Teleporters et sélectionnez l'entité "ToFuture_wmb". Attachez-lui l'action "Levels00_Exit_Pt" et ouvrez le panneau Behavior:

L'identifiant (ID) est un nombre unique pour ce téléporteur, celui qui sera utilisé par le niveau cible (on verra cela plus tard). La valeur TargetLevel nous dit le niveau dans lequel nous souhaitons aller, dans notre cas c'est le 2 (notre niveau Future).

Compilez et sauvez ce niveau mais ne l'exécutez pas pour l'instant. A la place ouvrez le niveau "future" level.


Target Level

Paramétrage du niveau cible

Ajoutez également le script "levels00.wdl" mais ne le personnalisez pas. Nous l'ajoutons uniquement pour ses actions.

"Scope to..." le groupe Teleporters de ce niveau et sélectionnez l'entité "FromControl_wmb". C'est le point d'entrée pour les personnes qui traversent la salle de contrôle. Attachez-lui l'action "Levels00_Entry_Pt" et mettez son identifiant ID) à la même valeur que celle pour sortir du niveau précédent (1):

Sélectionnez l'entité "ToControl_wmb" et attachez-lui "Levels00_Exit_Pt". C'est notre lien pour retourner dans la salle de contrôle:

Compilez de nouveau ce niveau et sauvegardez-le.


Control Room

Retour dans la salle de contrôle

"Scope to..." le groupe Teleporters de nouveau et sélectionnez l'entité "FromFuture_wmb". Attachez-lui l'action "Levels00_Entry_Pt" et mettez son identifiant à 2:

Compilez, sauvegardez et exécutez., save, and run. Tournez sur votre gauche et entrez dans le téléporteur.

Oups! Nous arrivons dans un niveau avec une valeur de nexus plus grande. Augmentez la valeur nexus de ce niveau (mettez 80 dans Map Properties) et essayez de nouveau.

Encore un problème....


What Went Wrong

Qu'est-ce qui ne va pas?

Le problème est que notre deuxième niveau utilise un script que nous n'utilisons pas du tout dans le premier niveau, lift01.wdl. Nous pouvons résoudre ce problème simplement en ajoutant ce script à notre premier niveau et en l'exécutant de nouveau.

Victoire! Nous pouvons à présent quittez le premier niveau et entrer dans le second. Si vous vous promenez vous noterez que vous pouvez égaleme revenir dans le premier niveau.

C'est tout ce qu'il y a à faire pour relier 2 niveaux.


Finishing Touches

Les dernières retouches

Nous avons pour l'instant réalisé le coeur du jeu il est temps à présent de passer aux finitions.

La première chose que nous allons faire c'est d'ajouter un panneau pour montrer la santé du joueur. Il n'est pas important pour l'instant de savoir comment le joueur pourra se faire mal dans notre niveau nous verrons cela plus tard...

Ajoutez le script "plBipedHUD01.wdl" au niveau de la salle de control (Control Room). Cela ajoutera un "Heads Up Display" (HUD) qui montrera la santé actuelle du joueur. Mais le panneau par défaut ne va très bien avec le style du niveau de Dan aussi nous allons changer cela..

Ouvrez le panneau de personnalisation ("Customize") et mettez les valeurs suivantes:

Cela aura pour effet de remplacer le panneau par défaut par le panneau "leftpanel.tga". Le panneau sera affiché dans le coin inférieur gauche de l'écran avec la valeur courante de la santé du joueur comme ceci :


Inventory Panel

Panneau d'inventaire

Le panneau d'inventaire fonctionne sur le même principe que le panneau de santé sauf qu'au lieu de montrer la santé du joueur il montrera les cristaux pris sousforme d'icône.

Ajoutez le script "invent01.wdl" et ouvrez le panneau de personnalisation

La première section fonctionne comme le panneau de santé (sélectionner l'image works et positionnement sur l'écran) La section des articles ("Items")vous permet de spécifierune image et une position pour l'article de l'inventaire. L'image qui sera affichée dépend de la valeur "Item Trigger" qui est mise. Dans notre jeu nous collectons des cristaux aussi nous paramétrons une image d'un crystal pour les 2 articles et le numéro d'ID correspondant au cristal qui est pris.


Splash Screens

Ecran de démarrage

En plus de l'écran de démarrage de 3DGameStudio obligatoire dans certains cas (se référeer à la section "informations légales" du manuel) ce serait sympa que votre jeu démarre avec un joli écran de votre cru.

Ajoutez le script "startup01.wdl" et ouvrez son panneau de personnalisation ("Customize"):

La première image est affichée en fond pour couvrir le fait que le niveau est déjà chargé. Les 2 images suivantes sont le logo de 3DGameStudio et le logo du jeu qui sont utilisées pour panel #1 et panel #2.

Les valeurs pour les panneaux sont les suivantes : "Up Time" est le temps pendant lequel le panneau sera montré après son apparition en fondu et avant sa disparition en fondu. Le"Fade in time" (temps de fondu enchaîné) est le temps qu'il faut au panneau pour apparaître sous forme de fondu enchaîné à partir du noir et "Fade out time" le temps pour disparaître en fondu enchaîné vers le noir.

Le fait d'utiliser une valeur négative pour "Fade out time" permet à l'écran de se fondre avec l'écran suivant (le premier disparaîssant pendant que le second apparaît).


All Done

Terminé !

Et oui c'est tout! Nous avons à présent un jeu complet (court je l'avoue). Et tout cela sans aucune ligne de code! J'espère que vous avez appris des choses et je vous encourage à tester les scripts du template6. Pensez à utiliser l'aide la fonction "help" que vous obtenez par un click droit sur le champ concerné lorsque vous avez besoin d'en savoir plus.

A la prochaine.