• Aucun résultat trouvé

Programmation avec Unreal Engine: Unreal Script

N/A
N/A
Protected

Academic year: 2022

Partager "Programmation avec Unreal Engine: Unreal Script"

Copied!
24
0
0

Texte intégral

(1)

Programmation avec Unreal Engine: Unreal Script

Mail: Stephane.Lavirotte@unice.fr Web: http://stephane.lavirotte.com/

Université de Nice - Sophia Antipolis

Présentation et Auteur:

Stéphane Lavirotte

(2)

Donner vie à une création

Programmation Unreal Script

Stéphane Lavirotte 2

(3)

Unreal Engine: Le moteur du Jeu

 Le Moteur de Unreal Tournament

– Unreal Engine 2: Unreal Tournament 2004

Disponible en téléchargement gratuit

– Unreal Engine 3: Unreal Tournament III

Disponible en beta depuis Octobre 2010

– Unreal Engine 4:…

Pas avant 2012 (et au maximum 2018…)

 A ne pas confondre avec l’éditeur de Unreal (utilisé la semaine dernière)

– UnrealEd 3.0 est l’éditeur de Unreal Tournament 2003 et 2004 – UnrealEd 4.0 est l’éditeur de Unreal Tournament III

(4)

Unreal Script

 Langage de programmation dans lequel les ‘mods’

d’Unreal sont écrits

 Conçu

– Par l’industrie du jeu – Pour l’industrie du jeu – Bien adapté pour les FPS

 Caractéristiques du langage

– Langage Byte Compilé – Interprété à l’exécution

 Un langage Orienté Objet

– Syntaxe proche de JavaScript

Stéphane Lavirotte 4

(5)

Un Langage Puissant

 Permet de faire des jeux très différents à partir de Unreal Tournament

– Les Troopers de Star Wars dans UT2004

– Le Jeu de Foot / Guerre

http://www.deathball.net/

(6)

Utilisation de Unreal Engine 3

 Dungeon Defenders

– Tower Defense / Action RPG

– http://dungeondefenders.com/

 Whizzle

– Jeu Open Source (Psyonix Studio) – Scrolling vertical, Puzzle / Action

– http://www.udk.com/showcase-whizzle

 IntelliDrive

– Développé par le département US des transports

– Simulation

– http://www.intellidriveusa.org/

11/14/2013 Stéphane Lavirotte 6

(7)

Avec Unreal Script

Structures de Base de

Programmation

(8)

Types de UnrealScript

Stéphane Lavirotte 8

Type KeyWord Déclaration Valeurs

Integer int var int myInt; 37, 2, -674, …

Floating Point float var int myFloat; 6.3432, -0,98, … Boolean bool var bool myBoolean; true, false, 0, 1

Byte byte var byte myByte; 0 … 255

String string var string[32] myStr; "Hello"

Name name var name myName; ‘Tag’

Enumeration enum var EColor myEnum; Enum EColor { val1, val2, …};

Actor Reference

Class Reference class var class<Actor> myClass;

Structure struct var Box myBox; Struct Box { var type name; …}

(9)

Structures de Contrôle: Tests

Structures de contrôle

Conditionnel

if ([expression1] [operator] [expression2]) { Do some stuff here;

} else if ([expression1] [operator] [expression2]) { Do other stuff here;

} else {

Do something else;

}

Aiguillage

switch ( Developer ) { case "Tim" : Do Stuff;

break;

default:

Do stuff;

break;

}

(10)

Structures de Contrôle: Boucles

 Structures de contrôle

– Boucle for

for ( i=0; i<5; i++ ) { Do stuff;

}

– Boucle do

do {

Do stuff;

i++;

} until (i == 5);

– Boucle while

while ( i < 5 ) { Do stuff;

i++;

}

Stéphane Lavirotte 10

(11)

Une classe c’est la classe !

Un Langage de Script

Orienté Objet

(12)

Programmation Orientée Objet

 But:

– Regrouper les données et les moyens de les traiter

 Notions:

– Objet:

Rassemble deux éléments de programmation procédurale

variables = champs fonctions = méthodes

Membres

– Classe

L’objet est une instance de classe

 Fondamentaux de la Programmation Orientée Objet

– Encapsulation – Héritage

– Polymorphisme

11/14/2013 Stéphane Lavirotte 12

(13)

Héritage

 Ce concept d'héritage ouvre donc la porte à un

nouveau genre de programmation.

(14)

Polymorphisme

 Le polymorphisme traite de la capacité de l'objet

– à posséder plusieurs formes

– à modifier son comportement propre et celui de ses descendants au cours de l'exécution

 Dérive directement du principe d'héritage

 Pouvoir redéfinir une méthode

– afin de la réécrire – de la compléter

 Attention: ne doit pas être confondu avec celui d'héritage multiple

11/14/2013 Stéphane Lavirotte 14

(15)

Différents Types de Méthodes

 Constructeur

– Construire l'objet en mémoire (initialiser les champs, …) – Possibilité de ne pas avoir de constructeur explicite

 Destructeur

– Détruire l'instance de l'objet

– Possibilité de ne pas avoir de destructeur explicite

 Pointeur interne

– objets sont utilisés de manière dynamique, et ne sont donc créés que lors de l'exécution

– indispensable pour un objet de pouvoir se référencer lui-même

– this en C++, self en Python, …

(16)

Visibilité

 Champs et méthodes publics

– Pas de restriction particulière

– accessibles depuis tous les descendants et dans tous les modules

– Attention: Un champ ne devra être public que si sa modification n'entraîne pas de changement dans le

comportement de l'objet. Sinon, appel par une méthode

 Champs et méthodes privés

– restreint la portée d'un champ ou d'une méthode au module où il ou elle est déclaré(e)

 Champs et méthodes protégés

– correspond à la visibilité privée excepté que tout champ ou méthode protégé(e) est accessible dans tous les descendants, quel que soit le module où ils se situent

11/14/2013 Stéphane Lavirotte 16

(17)

Unreal Script: Un Langage Orienté Objet

Chaque fichier de script est considérée comme une

classe

Dédié à une tache particulière

N'effectue que cette tache Permet d'avoir un langage

clair et pratique

Toutes les classes dérivent de la classe Object

Mais on utilise

principalement la classe Actor (case à cocher)

Chaque classe dérive de la classe qui la précède

Si on créé une nouvelle arme, on étant la classe Weapon existante

(18)

Syntaxe d’UnrealScript

 Déclaration d’une classe

class name_class extends parent_class [placeable];

class name_class expands parent_class [placeable];

 Déclaration d’une variable

var type_var name_var ;

 Déclaration d’une variable locale

local type_var name_var;

 Déclaration de propriété par défaut

var (defaut_group) type_var name_var;

 Déclaration d’une fonction

function type_return name_func( type_param name_param ) {

return value;

}

Stéphane Lavirotte 18

(19)

Etats

 Portion de code qui n’est exécutée que si la classe se trouve dans cet état

 Exemple: états possible d’une arme

– tir (fire), tir alternatif (alt-fire), rechargement (reloading), non utilisée (idle)

 Exemple d’utilisation

– Si on souhaite faire une animation toutes les 30 secondes si l’arme n’est pas utilisée

– Vous pouvez consulter l’état idle de la classe Weapon et y ajouter ce comportement

 Arrêter l’exécution de fonctions quand on est dans un état

– Ex: Ne pas pouvoir faire feu quand on recharge l’arme

ignores Fire, AltFire;

(20)

Outils pour le Développement

 UnrealED est peu développé pour l’édition de code

– Visualisation de la hiérarchie des classes – Visualisation des paquettages

– Application basique d’édition de code

– Cache les propriétés par défaut dans le code pour les afficher dans la boîte des proriétés

 Un environnement plus conséquent est disponible:

– WOTGreal

– http://www.wotgreal.com/

– Un « vrai IDE »:

gestion des paquetages, des classes,

édition de code plus facile,

compilation, …

Stéphane Lavirotte 20

(21)

FAQ

Quelques informations utiles

pour le TD

(22)

Quelques Classes Importantes

 Pawn.uc

(ou toute classe dérivée)

– Acteurs qui peuvent être contrôlé par l’utilisateur, une AI, un script, …

 Controllers.uc

(ou toute classe dérivée)

– Contrôle un Pawn dans UE.

– Implémentation de Bots dans UT2004 (AIController) ou interface de contrôle utilisateur (PlayerController)

 GameInfo.uc

(et toute classe dérivée)

– Implémente toutes les variantes de jeu

 HUD.uc

(et toute classé dérivée)

– Dessine le « Heads Up Display » à l’écran

Correspond à l'ensemble des informations affichées à l'écran pendant une partie (niveau de vie, armures, armes, …)

Stéphane Lavirotte 22

(23)

Personnage

 La Partie la plus dure est de faire la modélisation 3D

– Création des animations pour tous les mouvements

Marcher, courir, sauter, nager, …

– Fournit dans un fichier UKX dans le dossier Animations

 Créer la classe définissant les comportements

– Comportement générique défini dans une classe (ExamplePawn)

– Les sous-classes vont permettre de créer différents

personnages ayant les même comportements (ExampleBoy, ExampleGirl)

(24)

Association des Animations

 Avancer: MovementAnims[0]

 Reculer: MovementAnims[1]

 Gauche: MovementAnims[2]

 Droite: MovementAnims[3]

 Tourner à Gauche: TurnLeftAnim

 Tourner à Droite: TurnRightAnim

Stéphane Lavirotte 24

Références

Documents relatifs

The presented approach includes two types of interaction: the first one is conducted by an expert in the game (expert human player in UT2K4), who can assess the behaviour of the

Mouse Buttons Directions Button to Hold on Action Move Camera Forward/Backward. Rotate Camera Left/Right Rotate Camera

Tout d’abord, nous allons ajouter un objet Trigger dans votre monde (par exemple au dessus du JumpPad), en cliquant sur le bouton droit de la souris dans la vue 3D à

Le but de cet exercice est de créer une classe NewBoy (ou NewGirl ) qui vous permettra d’associer une représentation graphique à votre nouvelle classe NewPawn qui implémente

Avant de lancer le script, observer les préférences par défaut pour les points (cliquer sur l’outil Point dans la palette générale et observer la palette Aspect&amp;Couleur.. Lancer

fonctionnent toutes deux de la même manière, soit en retournant une valeur booléenne indiquant si la lecture a réussi. 9) Peu importe les énoncés de la procédure Sub

[r]

b) création de centres mixtes FAO/OMS de la brucellose dans les pays où cette maladie est répandue. c) constitution d'un Groupe mixte FAO/OMS d'experts de la Brucellose.