Author Topic: [Tutorial] Filmer la Destruction de l'Objectif  (Read 715 times)

Ang3^

  • Tailleur de maps (expérimenté)
  • Posts: 807
    • http://www.nccteam.com
[Tutorial] Filmer la Destruction de l'Objectif
« on: April 17, 2006, 03:54:09 PM »
Mapping/Scripting ::: Objectif[/b][/size]

-----------------------------------------------------------------------

• Plan du Tutorial

 :paie --- I. Introduction
 :paie -- II. Mapping
 :paie - III. Scripting

 :paie - IV. Fichier(s) & Conclusion
[/size]

-----------------------------------------------------------------------
-----------------------------------------------------------------------
-----------------------------------------------------------------------

:paie --- I. Introduction

 -> Ce tutorial a pour unique but d'informer et de répendre des idées sur l'ésthétique des objectifs que chacun réalise chez soi.
Par respect du temps fourni par l'auteur, nous demandons que ce tutorial reste au nom de Ang3^. Il est totalement autorisé que ce tutorial puisse figurer sur vos sites respectifs tout en gardant la marque de l'auteur.

Trève de plaisanteries, bien que importantes à mon goût.
Nous allons donc voir içi un Objectif classique amélioré.
Nous prendrons pour bases la finition du Tutorial de Caskami sur le Canon de 150MM :
- Canon
- Bombe
- Trigger
Il est fortement conseillé d'avoir bien compris le mapping ainsi que le script de ce même tutorial afin de bien suivre le cours qui suit.

-> Nous allons donc insérer un système de caméra dès lors où notre Canon de 150MM explose.
Cela à l'air bannal, nul, bidon, à chier... Cependant, vous allez voir que cela met un petit plus dans votre map.

-----------------------------------------------------------------------
-----------------------------------------------------------------------
-----------------------------------------------------------------------

:paie --- II. Mapping

• Niveau : Difficile
• Temps approximatif : 15 à 20 Minutes et plus...

Quote
• Plan d'achèvement de la partie Mapping

 :lalala • A. Splinepath
 :lalala • B. Positionnement
 :lalala • C. Func_Camera

*************************

:lalala • II.A. Splinepath

*************************

Tout d'abord, nous pouvons associer un splinepath à un cube traceur.
En effet, c'est lui qui déssine le trajet des entités que vous mettez en mouvement.
Lorsque vous comprendrez leurs fonctionnement, vous pourrez mettre en mouvement tout ce que vous voulez !
(PS : Snaky serait plutôt pour les "moveto" [A partir d'un script]).
Hé Oui ! Comme vous l'aurez deviné, les splinepath n'ont besoin que d'une seule ligne de script, nous verrons cela tout à l'heure.

Donc, pour commencer, creez un splinepath.

VUE 2D ::::: Info / Splinepath


Vous obtenez ceci :



Un beau cube bleu !  lol...
Ouvrez ensuite la fenêtre des entités (Touche N), et rentrez les informations suivantes : ( Key / Value )

    [/li]
  • $targetname / camera_path
    Référence au Script que nous réaliserons tout à l'heure...






  • target / t2
    Nous relions ce splinepath au deuxième...







Vous obtenez a peu près cela :



Faites ensuite un deuxième splinepath et rentrez les valeurs suivantes :

    [/li]
  • targetname / t2
    Récépteur pour la conenxion au premier splinepath.






  • target / t3
    Nous relions ce splinepath au troisième, etc..







Et donc cela :



Faites autant de splinepath que vous voulez et reliez-les pour former un trajet ayant un SENS.
Notons que les connexions forment des fils possédant un sens, lui-même indiqué par une flèche.

Pour ma part, j'obtiens cela :



Je descends en tournant autour du Canon...

*************************

:lalala • II.B. Positionnement

*************************

C'est très simple. Tous les splinepath maintenant reliées, vous pouvez aisément les déplacer. Placez-les comme bon vous semble sachant que c'est eux qui dessinent le trajet de la caméra.

*************************

:lalala • II.C. Func_Camera

*************************

La partie la plus difficile du Mapping est içi.
Cette partie sert à l'orientation de notre camera, à savoir, où va-t-elle regarder etc.
Nous allons donc ruser et ordonner a tous les splinepath de regarder un point fixe tout au long du trajet qu'ils forment.

Mais avant cela, nous allons placer notre caméra !
Nous allons donc se servir de l'entité func_camera.

VUE 2D ::::: Func / Camera

ATTENTION :
Certains n'ont pas cette entité.
En effet, il faut l'avoir déjà utiliser pour qu'elle appraisse.
Nous allons donc faire comme si nous ne l'avions pas !..
(Si vous l'avez, utilisez-la, c'est plus rapide).


Donc, pour se faire :


VUE 2D ::::: script / model


On ouvre la fenêtre des entités.
Nous allons CONVERTIR l'entité MANUELLEMENT.
C'est nous les mappeurs ! On fait ce que l'on Veut !  hihi

Rentrez les informations suivantes sur ce "script model" :

    [/li]
  • classname / func_camera
    Conversion de l'entité.






  • $targetname / watch_camera
    Référence au Script, nous verrons cela tout à l'heure.






  • spawnflags / 24
    C'est comme ça c'est tout !






  • target / camera_target
    On cible le fameux point fixe que fixera la caméra le long de son traget..







Vous obtiendrez ceci :



C'est un petit cube vert maintenant !
=> Si il n'est pas vert, c'est pas grave.
Dès que vous relancerez MOHRadiant, il sera vert et vous aurez en plus le fameux func_camera dans la Vue 2D.




Maintenant, vous allez placer ce petit cube vert DANS le premier splinepath, celui que nous avons fait en premier. Vous le mettez a l'INTERIEUR AU CENTRE.



Il nous reste plus qu'à définir notre point fixe.
Dans ce tutorial, je vais placer ce dernier au centre du canon afin qu'à l'explosion de celui-ci, la camera fixe notre objectif entrain d'exploser.

VUE 2D ::::: script / model


Rentrez les informations suivantes sur ce "Script Origin" :

    [/li]
  • targetname / camera_target
    Recepteur de la Connexion avec la Camera.
    De l'a Camera au Script Origin.










Ceci fait, nous le placons au centre du Canon.
Notons qu'un fil vert relie les 2 entités précédentes (Caméra et Script Origin).



Et voilà, au final, nous obtenons normalement ceci :



La Partie Mapping est terminée. Le plus dur est passé.
Pour une fois, le script est moins compliqué que le Mapping. :D

-----------------------------------------------------------------------
-----------------------------------------------------------------------
-----------------------------------------------------------------------

:paie --- III. Scripting

• Niveau : Moyen
• Temps approximatif : 2 à 3 Minutes le temps d'un Copier/Coller.

Nous allons prendre le script fournie par Caskami au sujet du Canon50MM et le modifier par la suite.
Nous ne modifie que La victoire des Alliés, qui içi, amorcent la bombe.
Nous ajouterons quelques threads et le travail sera bouclé. ;)

Quote
//==========================================//
//|Nom de la carte : TEST CAMERA
//|Architecture : Ang3^
//|Script : Ang3^
//==========================================//
main:

setcvar "g_obj_alliedtext1" "-< Détruire >-"
setcvar "g_obj_alliedtext2" "-< le canon de 150mm >-"
setcvar "g_obj_alliedtext3" ""
setcvar "g_obj_axistext1" "-< Défendre >-"
setcvar "g_obj_axistext2" "-< le canon de 150mm >-"
setcvar "g_obj_axistext3" ""

setcvar "g_scoreboardpic" "none"

local.master = spawn ScriptMaster
local.master aliascache explo_hallway1 sound/weapons/explo/explo_hallway1.wav soundparms 2.4 0.4 0.8 0.5 550 6500 auto loaded maps "dm obj"

//-----------------------------//
level waittill prespawn
//-----------------------------//

level.script = maps/obj/test_camera/Ang3/test_camera_ange.scr

exec global/exploder.scr
exec global/bomber.scr

level.dmrespawning = 1
level.dmroundlimit = 4
level.clockside = "axis"

level.defusing_team = "axis"
level.planting_team = "allies"

level.camera_speed = .3 // Vitesse de la Caméra[/color]

//-----------------------------//
level waittill spawn
//-----------------------------//

level.bomb_damage = 200
level.bomb_explosion_radius = 1048

//-----------------------------//
// level waittill roundstart
//-----------------------------//

$bombe1 thread global/obj_dm.scr::bomb_thinker
$bombe1 thread victoire_axe
thread victoire_allies $bombe1

end

//---------------------------------------------//
// THREAD : CAMERA / VICTOIRE ALLIES
//---------------------------------------------//

victoire_allies local.bombe:

while (local.bombe.exploded != 1)
{
    wait 0.1
    }
 
   iprintln "Les Alliés ont détruit le Canon !"
   drawhud 0 // On néttoie l'écran

   // On Stoppe les Joueurs

   $player nodamage
   $player hide
   freezeplayer

   // Demarrage de la Camera
 
   $watch_camera fov 80 2
   $watch_camera speed (level.camera_speed) // Vitesse de Mouvement 
   $watch_camera follow $camera_path $camera_target // Fixation de la camera sur les SPLINEPATH (On retrouve nos fameux $targetname içi)

   // Positionnement du Film

   cuecamera $watch_camera // (Un autre de nos $targetname)
   wait 5 // Içi on determine le temps du Film avant la fin du round.

   // Les Alliés :: déclarés vainqueurs !

   teamwin level.planting_team

end


//===========================//
//*** Victoire des Allemands ***//
//===========================//
victoire_axe:

level waittill axiswin

end

-----------------------------------------------------------------------
-----------------------------------------------------------------------
-----------------------------------------------------------------------

:paie --- III. Fichier(s) & Conclusion

Voilà, le Tutorial est terminé.
Néanmoins je ne vais pas vous laissez comme ça.

Dans le .rar où se trouve un .pk3 se trouve le fichier :

• .bsp
• .map
• .scr

Le Fichier .rar : Fichier .rar de 13.064 Ko

J'espère que ce tutorial serviera car sincèrement, la map que je suis entrain de faire regorge de ressource comme celle-ci et.... ca pète ! :D

PS : La caméra commence dès que la bombe explose.
Il est donc fortement conseillé de faire des explosions supplémentaires retardées comme il est expliqué sur le Site de Caskami, dans le tutorial de notre Canon 150MM.


Voilà !!!!!!!!!!!!!!!!!!!!!!!!! Et aufait, si vous voulez mettre ce tutorial sur le Site de Caskami, faites-le, j'en serais très honoré. ;)
« Last Edit: April 17, 2006, 09:05:15 PM by Ang3^ »
Signé Ang3^
Map (Crashed) : Rebooting...

snaky

  • Squatteur de forum
  • ****
  • Posts: 3332
    • http://profparty.forumpro.fr
[Tutorial] Filmer la Destruction de l'Objectif
« Reply #1 on: August 16, 2006, 06:22:20 PM »
Question: peut-on appliquer le "func_camera" à un seul joueur?

Ang3^

  • Tailleur de maps (expérimenté)
  • Posts: 807
    • http://www.nccteam.com
[Tutorial] Filmer la Destruction de l'Objectif
« Reply #2 on: September 01, 2006, 12:38:39 AM »
Ca doit être possible mais cela relevera du numero du Joueur sur le Serveur.
Le Script demarrerai sur le numéro #x et non sur un autre #y.
Signé Ang3^
Map (Crashed) : Rebooting...

snaky

  • Squatteur de forum
  • ****
  • Posts: 3332
    • http://profparty.forumpro.fr
[Tutorial] Filmer la Destruction de l'Objectif
« Reply #3 on: January 28, 2007, 09:31:13 PM »
Ballader la caméra d'un joueur (tuto-express):

Quote
local.cam = spawn Camera targetname "Camera1"   //Caméra
local.cam.trigger = spawn TriggerCameraUse target "Camera1" //Trigger d'activation
local.cam hide //Cache la caméra
local.cam.trigger DoUse $player[NUMERO] //La vue du joueur est égale à la vue de la caméra
local.cam.trigger remove //Virer le trigger... Si le "tuto" marche pas, virer la ligne

$Camera1 turnto ( self.Racer.angles[0] -(self.Racer.angles[1]) 0 ) //Tourner la caméra

$Camera1 follow [ENTITE] [ENTITE] //Suivre l'entité désignée, et la regarder
$Camera1 follow_yaw [Distance] //Distance a laquelle la caméra suit l'entité désignée
$Camera1 lookat [Entité] //Regarder  une entité
$Camera1 movetopos [ORIGINE] //La caméra se déplace jusqu'aux coordonnées spécifiées
$Camera1 nowatch //arreter de regarder une entité^
$Camera1 orbit [ENTITE] [ENTITE] //Tourner autour d'une entité? Pas sur que ca marche
$Camera1 orbit_height [DISTANCE] //Hauteure de rotation de la caméra en orbite
$Camera1 speed [DUREE EN SECONDES] //Vitesse de la caméra
$Camera1 start //MLancer le mvt de la caméra
$Camera1 stop //Arreter le mouvement


Exemple:
Quote
$Camera1 movetopos ( 256 1485 201 )
$Camera1 lookat $Captain
$Camera1 speed 15
$Camera1 start
wait 8
$Camera1 stop
$Camera1 stopwatch
$Camera1 remove
end

Questions? (synthétique comme tuto, ms j'ai aps bcp de temps ^^)

Ang3^

  • Tailleur de maps (expérimenté)
  • Posts: 807
    • http://www.nccteam.com
[Tutorial] Filmer la Destruction de l'Objectif
« Reply #4 on: January 28, 2007, 11:18:32 PM »
A quoi cela sert ?
J'ai pas compris le "Ballader la caméra d'un joueur"...  :P  
Signé Ang3^
Map (Crashed) : Rebooting...

snaky

  • Squatteur de forum
  • ****
  • Posts: 3332
    • http://profparty.forumpro.fr
[Tutorial] Filmer la Destruction de l'Objectif
« Reply #5 on: January 29, 2007, 05:57:34 PM »
C'est exactement comme ton tuto, sauf que là, la vue controlée est celle d'un seul joueur. Cela permet de faire des cinématiques à la mort du joueur (des que X meurt, la caméra s'envole au-dessus du cadavre), lorsque X rentre dans le jeu (cinématique: on rpésente la carte), lorsque X remplis l'objectif par exemple (sa caméra se fige et permet de voir des trucs en TPS par exemple) etc...