05 - Unreal Script - unice.frtrolen.polytech.unice.fr/cours/maje/cours/05 - Unreal... ·...

24
Programmation avec Unreal Engine: Unreal Script Mail: [email protected] Web: http://stephane.lavirotte.com/ Université de Nice - Sophia Antipolis Présentation et Auteur: Stéphane Lavirotte

Transcript of 05 - Unreal Script - unice.frtrolen.polytech.unice.fr/cours/maje/cours/05 - Unreal... ·...

Page 1: 05 - Unreal Script - unice.frtrolen.polytech.unice.fr/cours/maje/cours/05 - Unreal... · 2013-11-14 · Programmation Orientée Objet But: –Regrouper les données et les moyens

Programmation avec

Unreal Engine: Unreal Script

Mail: [email protected]

Web: http://stephane.lavirotte.com/

Université de Nice - Sophia Antipolis

Présentation et Auteur:

Stéphane Lavirotte

Page 2: 05 - Unreal Script - unice.frtrolen.polytech.unice.fr/cours/maje/cours/05 - Unreal... · 2013-11-14 · Programmation Orientée Objet But: –Regrouper les données et les moyens

Donner vie à une création

Programmation Unreal Script

Stéphane Lavirotte 2

Page 3: 05 - Unreal Script - unice.frtrolen.polytech.unice.fr/cours/maje/cours/05 - Unreal... · 2013-11-14 · Programmation Orientée Objet But: –Regrouper les données et les moyens

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

Stéphane Lavirotte 3

Page 4: 05 - Unreal Script - unice.frtrolen.polytech.unice.fr/cours/maje/cours/05 - Unreal... · 2013-11-14 · Programmation Orientée Objet But: –Regrouper les données et les moyens

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

Page 5: 05 - Unreal Script - unice.frtrolen.polytech.unice.fr/cours/maje/cours/05 - Unreal... · 2013-11-14 · Programmation Orientée Objet But: –Regrouper les données et les moyens

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/

Stéphane Lavirotte 5

Page 6: 05 - Unreal Script - unice.frtrolen.polytech.unice.fr/cours/maje/cours/05 - Unreal... · 2013-11-14 · Programmation Orientée Objet But: –Regrouper les données et les moyens

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

Page 7: 05 - Unreal Script - unice.frtrolen.polytech.unice.fr/cours/maje/cours/05 - Unreal... · 2013-11-14 · Programmation Orientée Objet But: –Regrouper les données et les moyens

Avec Unreal Script

Structures de Base de

Programmation

Stéphane Lavirotte 7

Page 8: 05 - Unreal Script - unice.frtrolen.polytech.unice.fr/cours/maje/cours/05 - Unreal... · 2013-11-14 · Programmation Orientée Objet But: –Regrouper les données et les moyens

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; …}

Page 9: 05 - Unreal Script - unice.frtrolen.polytech.unice.fr/cours/maje/cours/05 - Unreal... · 2013-11-14 · Programmation Orientée Objet But: –Regrouper les données et les moyens

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;

}

Stéphane Lavirotte 9

Page 10: 05 - Unreal Script - unice.frtrolen.polytech.unice.fr/cours/maje/cours/05 - Unreal... · 2013-11-14 · Programmation Orientée Objet But: –Regrouper les données et les moyens

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

Page 11: 05 - Unreal Script - unice.frtrolen.polytech.unice.fr/cours/maje/cours/05 - Unreal... · 2013-11-14 · Programmation Orientée Objet But: –Regrouper les données et les moyens

Une classe c’est la classe !

Un Langage de Script

Orienté Objet

Stéphane Lavirotte 11

Page 12: 05 - Unreal Script - unice.frtrolen.polytech.unice.fr/cours/maje/cours/05 - Unreal... · 2013-11-14 · Programmation Orientée Objet But: –Regrouper les données et les moyens

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

Page 13: 05 - Unreal Script - unice.frtrolen.polytech.unice.fr/cours/maje/cours/05 - Unreal... · 2013-11-14 · Programmation Orientée Objet But: –Regrouper les données et les moyens

Héritage

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

nouveau genre de programmation.

11/14/2013 Stéphane Lavirotte 13

Page 14: 05 - Unreal Script - unice.frtrolen.polytech.unice.fr/cours/maje/cours/05 - Unreal... · 2013-11-14 · Programmation Orientée Objet But: –Regrouper les données et les moyens

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

Page 15: 05 - Unreal Script - unice.frtrolen.polytech.unice.fr/cours/maje/cours/05 - Unreal... · 2013-11-14 · Programmation Orientée Objet But: –Regrouper les données et les moyens

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, …

11/14/2013 Stéphane Lavirotte 15

Page 16: 05 - Unreal Script - unice.frtrolen.polytech.unice.fr/cours/maje/cours/05 - Unreal... · 2013-11-14 · Programmation Orientée Objet But: –Regrouper les données et les moyens

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

Page 17: 05 - Unreal Script - unice.frtrolen.polytech.unice.fr/cours/maje/cours/05 - Unreal... · 2013-11-14 · Programmation Orientée Objet But: –Regrouper les données et les moyens

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

Stéphane Lavirotte 17

Page 18: 05 - Unreal Script - unice.frtrolen.polytech.unice.fr/cours/maje/cours/05 - Unreal... · 2013-11-14 · Programmation Orientée Objet But: –Regrouper les données et les moyens

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

Page 19: 05 - Unreal Script - unice.frtrolen.polytech.unice.fr/cours/maje/cours/05 - Unreal... · 2013-11-14 · Programmation Orientée Objet But: –Regrouper les données et les moyens

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;

Stéphane Lavirotte 19

Page 20: 05 - Unreal Script - unice.frtrolen.polytech.unice.fr/cours/maje/cours/05 - Unreal... · 2013-11-14 · Programmation Orientée Objet But: –Regrouper les données et les moyens

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

Page 21: 05 - Unreal Script - unice.frtrolen.polytech.unice.fr/cours/maje/cours/05 - Unreal... · 2013-11-14 · Programmation Orientée Objet But: –Regrouper les données et les moyens

FAQ

Quelques informations utiles

pour le TD

Stéphane Lavirotte 21

Page 22: 05 - Unreal Script - unice.frtrolen.polytech.unice.fr/cours/maje/cours/05 - Unreal... · 2013-11-14 · Programmation Orientée Objet But: –Regrouper les données et les moyens

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

Page 23: 05 - Unreal Script - unice.frtrolen.polytech.unice.fr/cours/maje/cours/05 - Unreal... · 2013-11-14 · Programmation Orientée Objet But: –Regrouper les données et les moyens

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)

Stéphane Lavirotte 23

Page 24: 05 - Unreal Script - unice.frtrolen.polytech.unice.fr/cours/maje/cours/05 - Unreal... · 2013-11-14 · Programmation Orientée Objet But: –Regrouper les données et les moyens

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