Idée et développement |
The concept |
Alors que j'étais à l'université depuis un certain temps, j'ai eu début 1995 l'occasion d'entrer chez Adeline Software pour programmer sur la nouvelle console de Sony, appellée "PlayStation".
Lorsque je suis arrivé le développement de Time Commando était tout juste commancé, il a donc fallu prendre le train en marche.
Le concept de base était de faire un jeu utilisant simultanément la 3D temps réel pour les personnages, et des décors précalculés en image de synthèse.
La principale difficulté était d'obtenir une intégration la plus parfaite possible des personages dans le décors. Il a donc fallu développer un certain nombre d'outils pour "synchroniser" les images de synthèse avec les personnages. Il aurait été domage que le héro (ou les ennemis) puisse marcher dans les murs, ou bien qu'il ne soit pas caché par un élément du décor placé devant !
La décision de faire un voyage temporel à été basé sur le fait que cela permettait d'avoir énormément de variété au niveau décors, ennemis et armes.
Le jeu est composé de 10 niveaux contenant 2 parties chacun. Cela fait donc une bonne vingtaine de séquences animées en synthèse.
|
After a few years in the university, I got a good job in a little French Company called Adeline Software,
as PlayStation(TM) Programmer.
We started Time Commando at the beginning of the year 1994. The PC development was on the road, so we had to jump on the bandwagon.
The basic idea was to do a game using real time animated/rendered 3D characters moving on a pre-rendered background.
The main difficulty was to achieve the perfect integrations of characters in the pictures. So we needed to develop some tools allowing us to create
'path' along which the characters could move freely. And, if a character moved behind a piece of the scenery, it had to be hidden !
We decided to make a time-travel adventure which allowed us to provide a huge variety of opponents and weapons.
The game is composed of 10 levels of 2 parts each. This makes 20 background movies.
|
Technique |
Technical notes |
Chaqu'une de ces séquence est composée de +/- 1200 images ! Tout a été créé avec 3D studio, et à nécéssité la création d'un outil d'extraction de Z-Buffer pour gérer les différents niveaux de profondeur dans l'image. Cela permet aux personnages 3D de passer devant ou derrière les différents éléments du décors, et ce de façon réaliste...
Tout l'éclairage est calculé en temps réel, basé sur de multiples sources de lumières.
Par exemple, si Stanley (le héros) passe sous un pont, il s'assombri lorsqu'il y entre, et s'éclairci lorsqu'il rentre de l'autre coté.
En plus des flux de données principaux contenant les positions de caméra et les images de fonds on trouve aussi un certain nombre de 'pièces secretes'. Chaque époque à son propre thème musical qui est une déclinaison du thème principal. Les bruitages utilisent une méthode de positionnement 3D.
|
For information, each movie was composed of an average of 1200 pictures ! All background movies were made under 3D Studio, and therefore needed
a special tool to extract the ZBuffer information and thus allowing characters to be hidden by trees, statues, walls, near objects...
The lighting was calculated in real time depending on various sources and position of the characters.
For example, if the hero (Stanley) walks under a bridge, he is shadowed when he enters and highlighted when he leaves.
We incorporated many 'secret rooms' which were static scenes integrated into the main flux of data. Each level was given a different musical
theme and a dedicated sound ambiance. 3D sound orientation was present as well !
|
Création |
About the realisation |
La scénarisation du jeu a été faite grace à un langage script spécialisé. Ce langage autorise les appels récursifs, optimise les expressions mathématiques, gère le parenthèsage naturel, ainsi que la vérification des paramètres et toutes les structures de contrôle conventionelles,...
Le code scénarique binaire est le même sur toutes les plateformes. La version PlayStation dispose d'un débogueur symbolique affichant en temps réel le code en cours d'exécution et le contenu des variables. Tous les personages du jeu sont "programmés" individuellement, et tous ces programes sont exécutés simultanément avec un système de synchronisation.
Dans le niveau 3 du jeu (moyen age) on peut trouver un example "amusant" de codage scénarique. Il suffit d'aller jusqu'au couloir ou deux chevalier en armures attaquent le héro. Si on se débrouille bien, on peut faire en sorte que l'un des deux touche l'autre en voulant frapper le héro. Ils se mettent alors à se combattre en parrant et attaquant réellement. Il n'y a aucune ruse. La seule chose est que chaque chevalier considère que son ennemi est maintenant l'autre chevalier.
En utilisant ce langage scénarique, j'ai réussi à faire un casse brique et space invaders sans rajouter de code dans le jeu. Un des codeurs scénariques à réussi à faire des trajectoires complexes basées sur des fonctions sinusoïdales, alors que ces fonctions n'existent pas dans le langage... Cool non ?
|
You must know that the game coding is made using a very powerful, dedicated language. It allows recursions;
arithmetic optimisation; natural parenthesis with priorities, syntax, and parameter checking; all the common structures; and much
more. The code is a portable binary format used both on PC and PlayStation. The PlayStation version is equiped with a real time
symbolic debuger that displays in real time all variables and the executing scenaric code. Each character in the game is programmed,
and all programs operate simulatneously, using code synchronisation.
If you want a good example of coding, just go to the level 3 (european middle age), and try to make the 2 knights fight each other !
It's not a fake fight. Each of the knights really try to attack and parry. This is the same coding that makes them attack the hero. The only
modification is a variable called 'OPPONENT' that moves from =Stanley to =Knight2.
I've made a 'break-out' and a 'space invaders' with Time Commando, without changing any code line only the scenaric language. And
one of our scenario programmers calculated a complete sinus table using only built-in functions.
|
Trucs et astuces |
Tips and tricks |
Si vous entrez 'COMMANDO' dans le menu des mots de passes, vous accéderez à un niveau caché (un ring), où vous affronterez Stanley et Sonya. (PC et PSX).
Voici la liste des tous les codes spéciaux de la version PSX de TimeCommando.
Pour les utiliser, il faut lancer une partie, mettre en pause (en appuyant sur le bouton [start]), aller sur l'option [sound fx], et faire les séquences suivantes:
|
You can enter 'COMMANDO' in the password menu, you will gain access to a hidden section. (both PC and PlayStation versions)
Here is the list of cheat codes for the PSX version of Time Commando.
These codes must be entered while the game is paused (to pause the game, just
press the [start] button on the left joypad). When you are on the option
called [sound fx], type the following sequences:
|
|