eigd#14 - présentation unity

23
Créer un jeu multiplate-forme avec Unity

Upload: jeremy-zeler-maury

Post on 18-Jul-2015

464 views

Category:

Software


0 download

TRANSCRIPT

Page 1: EIGD#14 - Présentation Unity

Créer un jeu multiplate-forme

avec Unity

Page 2: EIGD#14 - Présentation Unity

Le jeu

• Edge of Eternity : J-RPG multiplate-forme

• Equipe de 4 personnes: 1 Programmeur,

2 Artistes, 1 Musicien

• Combinaison du gameplay des J-RPG

Old-School avec les innovations modernes de gameplay

Page 3: EIGD#14 - Présentation Unity

Choisir un moteur

Problématiques :

• Ressources de programmation limitées

• Ressources artistiques limitées

• Le genre RPG requiert de gérer une quantité importante de données

• Portage console le plus économique possible

Page 4: EIGD#14 - Présentation Unity

Le challenger : Solution UDK

Avantages :

• Post-processing très flatteur

• Bonnes performances même avec des scènes complexes

• Système Blueprint pour créer rapidement des petites routines

Inconvénients :

• Langage spécifique (UnrealScript) avec une API très limitée

• Impossibilité d’étendre l’éditeur

• Ergonomie complexe à prendre en main et peu « artist-friendly »

• Modèle économique royalties (25% share)

Page 5: EIGD#14 - Présentation Unity

Solution Unity

Avantages :

• API très complète et langage de programmation C# ou JavaScript

• Plugins natifs et extensibilité complète de l’éditeur

• Ergonomie efficace et outils adaptés pour les artistes (Terrain, Lightmapping)

• Approche par « GameObject » permettant de prototyper rapidement

• Export multiplateformes « One-Click »

Inconvénients :

• Rendu très coûteux pour afficher la même chose que sur l’UDK

• Peu optimisé pour les grandes scènes

Page 6: EIGD#14 - Présentation Unity

Unity ?

• Pro vs Gratuit : Plus de fonctionnalités

• Prix : 1500$ ou 75$/mois + 1500$ ou 75$/mois par plateformes

• Les versions consoles sont gratuites (nécessite d’être approuvé par le constructeur avant)

• Exporte sur : PC / Mac / Linux / PS4 / PS3 / PSVita / Xbox One / Xbox 360 / Wii U / iOS / Android / BlackBerry10 / Windows Phone / Windows Store / HTML5 WebGL

Page 7: EIGD#14 - Présentation Unity

Unity ?

• API complète avec .NET (C#, JS) complétée par l’API Unity

• Rendu moderne avec le Deferred Rendering, DirectX11 Tesselation, Physically Based Shading, etc …

• De nombreux outils embarqués comme : Terrain, Particules, Pathfinding, Lightmapping

• IDE embarqué : Monodevelop mais vous pouvez utiliser Visual Studio

Page 8: EIGD#14 - Présentation Unity

Création des prototypes (Prototype 1)

• Sources de données hardcodées

pour un prototypage rapide

• L’approche par GameObject

d’Unity permet d’obtenir un

prototype en moins de quelques

heures

• Est-ce que le jeu est fun ?

Prototyper rapidement permet

de vérifier l’intérêt même du

gameplay

Page 9: EIGD#14 - Présentation Unity

Création des prototypes (Prototype 2)

• Intégration du premier travail

graphique, l’intégration est

réalisée par les artistes grâce au

workflow Projet / Scene « artist

friendly » d’Unity.

• Création des premiers outils

pour avoir des sources de

données génériques plutôt que

hardcodées

Page 10: EIGD#14 - Présentation Unity

Outil embarqué : Terrain

• L’outil terrain est très puissant et « artist friendly »

• Le rendu du terrain peut être amélioré en ajoutant des shaders personnalisés

• Gestion de la topologie par Heightmapping (Pas de voxels)

• Arbres et végétations avec SpeedTree sur Unity 5

Page 11: EIGD#14 - Présentation Unity

Outil embarqué : Mecanim

• Machine à états pour les animations

• Transitions et mélanges d’animations

• Evènements déclenchables directement depuis les animations en direction du code

Page 12: EIGD#14 - Présentation Unity

Extension de l’éditeur : Base de données objets

• Les outils embarqués sont puissants mais ne répondent pas aux besoins spécifiques de certains

genres de jeux

• Création d’outils personnalisés avec les classes d’Unity (EditorWindow, CustomInspector)

• Serialization XML grâce au framework .NET pour le format des données

Page 13: EIGD#14 - Présentation Unity

Extension de l’éditeur : Outil Nodal

• Création d’un outil répondant au besoin de réussir à créer un jeu complexe avec un effectif réduit

• Gestion de tous les aspects du jeu (Sorts, Cutscenes, Dialogues, Events)

• Permet aux artistes de créer du contenu sans intervention de programmeurs

Page 14: EIGD#14 - Présentation Unity

Outils de l’Asset Store

• Les outils de l’Asset Store sont puissants mais ne remplacent pas les outils propres aux projets.

• Généralement pratiques d’utilisation et puissants, les créateurs sont souvent réactifs pour régler les bugs éventuels.

• Permet aux créateurs de jeux de se focaliser sur la création de leurs jeux sans réinventer la roue

Page 15: EIGD#14 - Présentation Unity

Playtests et Iterations

• Les playtests permettent de

vérifier que chaque nouvelle

fonctionnalité apporte du fun au

gameplay

• Les retours permettent d’ajouter

de nouvelles fonctionnalités au

jeu et à améliorer l’ergonomie

• L’amélioration par les retours

requiert souvent de modifier du

code critique, l’approche par

GameObject d’Unity permet de

minimiser l’impact des

modifications

Page 16: EIGD#14 - Présentation Unity

Portage Console : Le cas Xbox One

• Unity Xbox One fonctionne beaucoup mieux sur Unity 5 que sur Unity 4 (Fog, Performances, etc …)

• Le réseau utilise un protocole particulier d’authentification nécessitant des adaptations pour les fonctionnalités réseau

• Beaucoup de fonctions indisponibles par rapport à l’API disponible sur PC

• Presque un One Click Export ?

Page 17: EIGD#14 - Présentation Unity

Portage console : Le cas Xbox One

• Incompatibilité de Shaders ! (Pas de fixed function shaders, instructions non supportées, limites arithmétiques d’instructions, etc …)

Page 18: EIGD#14 - Présentation Unity

Portage Console : Bilan Xbox One

• Deux semaines pour le portage

• Mise à jour des shaders pour respecter les contraintes de l’API

• Optimisation du code pour moins utiliser le stockage (accès au disque dur de

la console lent) et mettre en mémoire de nombreuses données (cache)

Page 19: EIGD#14 - Présentation Unity

Le jeu : Pré-Alpha

Page 20: EIGD#14 - Présentation Unity

Le jeu : Pré-Alpha

Page 21: EIGD#14 - Présentation Unity

Le jeu : Pré-Alpha

Page 22: EIGD#14 - Présentation Unity

Le jeu : Pré-Alpha

Page 23: EIGD#14 - Présentation Unity

Merci !

• https://facebook.com/EoeGame

• https://twitter.com/EoeGame

• https://facebook.com/midgarstudio

• https://twitter.com/MidgarStudio

[email protected]

ZELER MAURY Jérémy : Programmeur / Gérant (Midgar Studio)@zelerj