Slides utilisées lors du meetup Unity Lyon #4 à Wanadev. On parle ici de gestion de projet multiplateforme. Comme répondre aux problématiques de chaque plateformes sur le même projet ?
2. QUI SUIS-JE ?
• SPÉCIALISÉ PROGRAMMATION 3D & VR
• CHEF DE PROJET / LEAD DÉVELOPPEUR CHEZ
WANADEV
• DÉVELOPPEUR INDÉPENDANT CHEZ DEMONIXIS
GAMES
• PLUSIEURS JEUX LIVRÉS (PRINCIPALEMENT VR) AVEC
UNITY SUR PLUSIEURS PLATEFORMES
@CYannick
Yannick Comte
3. SOMMAIRE
• QU’EST-CE QUI DIFFÉRENCIE UNE PLATEFORME D’UNE AUTRE ?
• LES CHOSES À FAIRE DEPUIS L'ÉDITEUR
• ECRITURE DE CODE MULTIPLATEFORME
• GESTION UI ET HUD
• GESTION DE PLUSIEURS SDKS INCOMPATIBLES ENTRE EUX
Tous les extraits de code proviennent du jeu GunSpinning VR
5. QU’EST CE QUI DÉFINIT UNE PLATEFORME ?
LE HARDWARE
• CPU / GPU
• INPUT : GAMEPAD, MOTION CONTROLLER, TOUCH...
• PROTOCOLE RÉSEAU : WEBSOCKET, SOCKET..
• ÉCRAN : LUMINOSITÉ, TAILLE, RÉSOLUTION..
LE SOFTWARE
• SYSTÈME D’EXPLOITATION
• KIT DE DÉVELOPPEMENT
• PLUSIEURS RESTRICTIONS
7. LES RÉGLAGES DE QUALITÉ
• CRÉER UN OU PLUSIEURS PROFILS PAR PLATEFORMES
• LOD BIAS PERMET D'AFFICHER PLUS RAPIDEMENT
LES LODS. IMPORTANT SUR MOBILE PAR EXEMPLE
POUR FORCER DES MODÈLES PLUS LOW POLY.
• NOMBRE DE LUMIÈRES TEMPS RÉEL (FORWARD
RENDERER)
• RÉSOLUTION DES TEXTURES / FILTRAGE
• MODE D'OMBRE SUPPORTÉS
8. PASSER SUR UNE AUTRE PLATEFORME
• C'EST IMPORTANT CAR UNITY ADAPTE L'ÉDITEUR À
LA PLATEFORME
• CERTAINES DÉFINITIONS SONT DISPONIBLE
(UNITY_ANDROID PAR EXEMPLE)
• CERTAINES PLATEFORMES DISPOSES DE
SIMULATEUR (WINDOWS MIXED REALITY, MAGIC
LEAP)
• C'EST LA PREMIÈRE ÉTAPE AVANT DE TESTER SUR LE
DEVICE
9. UTILISER PLUSIEURS SCÈNES
• NE PAS HÉSITER À AVOIR UNE SCÈNE SPÉCIFIQUE SUR
MOBILE PAR EXEMPLE
• OU D'UTILISER DES SCÈNES ADDITIVES QUI AJOUTENT DU
DÉCORS NON NÉCESSAIRES SUR D'AUTRES
• C'EST QUELQUE CHOSE DE TRÈS FRÉQUENT :)
11. ECRITURE DE CODE MULTIPLATEFORME
• ECRITURE DE CODE LE PLUS GÉNÉRIQUE POSSIBLE
• CRÉATION D’ABSTRACTIONS ET D'IMPLÉMENTATIONS AVEC DES PREPROCESSORS
• VALIDATION DU FONCTIONNEMENT
• PUIS OPTIMISATION DU CONTENU PAR PLATEFORME !
• ATTENTION AUX SDKS INCOMPATIBLES ENTRE EUX
• ATTENTION AUX COMPORTEMENTS NON DÉSIRÉS DU FAIT DE PRENDRE EN CHARGE PLUS D'UNE
PLATEFORME
• TENTER D'AUTOMATISER UN MAXIMUM LES TESTS, CAR C'EST PRIMORDIALE
12. CRÉER DES ABSTRACTIONS
• ON CRÉE UNE ENTITÉ DE BASE AVEC DES
MÉTHODES ABSTRAITES
• ON DÉRIVE CETTE CLASSE AVEC LE
NOMBRE REQUIS D’ABSTRACTION
• UN MANAGER EST CHARGÉ
D’INSTANCIER LA OU LES BONNES
CLASSES ET DE LES UTILISER
• LE DÉVELOPPEUR NE TRAVAIL QU’AVEC
LE MANAGER, LE RESTE EST TRANSPARENT
14. LES PREPROCESSEURS
Preprocesseur Plateforme
UNITY_STANDALONE Windows, Linux, Mac
UNITY_STANDALONE_WIN Windows
UNITY_ANDROID Famille Android (téléphone, tablette, VR
mobile)
UNITY_IOS Famille IOS
UNITY_WSA Windows Store Application (UWP)
UNITY_XBOXONE Xbox One
UNITY_WEBGL WebGL
https://docs.unity3d.com/Manual/PlatformDependentCompilation.html
16. INTERFACE GRAPHIQUE
• SCREENSPACE VS WORLDSPACE
• SI L'UI EST COMPLEXE IL FAUT L'ADAPTER À
L'ÉCRAN
• SI L'UI PEUT ÊTRE FACILEMENT SCALÉE, UNITY
PROPOSE UN COMPOSANT QUI FAIT ÇA POUR
VOUS
• C'EST GÉNÉRALEMENT UNE MAUVAISE IDÉE DE
CONVERTIR UNE UI SCREENSPACE EN
WORLDSPACE
• LE CODE QUI GÈRE L'UI DOIT POUVOIR
FONCTIONNER AVEC TOUS LES TYPES D'UI
18. GESTION DE PLUSIEURS SDKS
• PARFOIS LES SDKS NE SONT PAS COMPATIBLES ENTRE EUX
(DLLS, JAR, MANIFEST.XML, ETC...)
• IL N'Y A PAS TROP DE POSSIBILITÉS.. SOIT ON FORK SUR UNE
BRANCHE, SOIT ON ADAPTE LE PROJET
• UNITY PERMET DE CRÉER DES ÉDITEUR CUSTOM, DE CRÉER SES
PROPRES PREPROCESSORS
• LE FRAMEWORK .NET PERMET DE DÉPLACER DES FICHIERS, DE
LES RENOMMER...
• AJOUTER UN ~ À LA FIN D'UN FICHIER/DOSSIER INDIQUERA À
UNITY DE NE PAS LE TRAITER