Unreal Engine sous Macos & Linux : Le guide du développeur

Il y a plusieurs raisons pour utiliser Unreal Engine avec un autre système d’exploitation que Windows. Vous pouvez avoir besoin de porter votre jeu sur Linux ou Macos, le faire avec un éditeur natif est la meilleur des options pour s’assurer que tout fonctionne comme prévu. Une autre possibilité est de vouloir s’affranchir de Windows. Heureusement, Epic Games prend en charge les systèmes Linux et Macos, avec quelques subtilités que nous allons voir dans les lignes qui suivent.

Unreal Engine 5.2 sur Fedora 38

A propos du matériel Apple

Il y a deux générations (actuellement) de Mac. Ceux qui fonctionnent avec un processeur Intel et ceux qui fonctionnent avec le nouveau processeur Apple Silicon de 1ère ou 2éme génération. En régle générale, utiliser Unreal Engine avec un Mac M1 ou M2 ne pose pas de problème. Utiliser le Deferred Renderer avec Lumen ne lui fait pas peur, pensez par contre à ajouter des paramètres pour ajuster les performances, mais ça marche bien.

Les Mac Intel par contre ont souvent des GPU Intel peut performant avec des CPU à 2 ou 4 cœurs. Dans ce cas de figure, ce n’est pas agréable d’utiliser Unreal, car les temps de compilation sont long et le rendu est compliqué. Encore une fois, Unreal fait des merveilles en scaling, avec les bons paramètres ça marche. Par contre l’éditeur n’offrira pas une expérience incroyable si votre contenu est de haute qualité.

Si vous voulez travailler sur Mac Intel, essayez d’utiliser un GPU externe ou alors utilisez un Mac avec déjà une bonne carte graphique. Sinon le meilleur choix c’est le M2, qui est surprenant.

DVR Simulator sur Macbook Pro M2 : High + Deferred + Lumen + 30 FPS

Installation d’Unreal Engine sous Macos & Linux

Sur Macos c’est assez facile, il suffit de télécharger le lanceur Epic Games et d’installer le moteur de votre choix, exactement comme avec Windows. Depuis le Launcher vous pourrez aussi installer des plugins. Attention, dans certains cas, les plugins ne sont pas compatibles, il faudra alors les compiler vous même. Il arrive aussi que certains plugins ne s’installent pas, je pense que c’est dû aux récents changements concernant la publication de plugins pour Macos. Si vous utilisez un Mac avec une architecture Apple Silicon, c’est une version optimisée pour ces processeurs qui sera téléchargée. Sinon ça sera du Intel. Que vous preniez l’un ou l’autre, vous pouvez cross-compiler de l’un vers l’autre.

Pour Linux, il n’y a pas de Launcher Epic Games, par contre il y a des binaires que vous pouvez télécharger ici. Il suffit ensuite de décompresser l’archive et c’est fini. Cette distribution vous permet de compiler sous Linux, Linux Arm64 et Android. Si vous avez besoin de plus, il faudra compiler les sources par vous même.

Les projets C++ avec Macos & Linux

On rentre dans la partie la plus problématique par rapport à Windows. Il n’y pas de menu pour générer une solution Xcode ou autre, il faudra le faire en ligne de commande. En réalité, quand vous avez le coup de main, c’est plus rapide en ligne de commande.

Pour Macos

$UNREAL_INSTALL_PATH/Engine/Build/BatchFiles/Mac/GenerateProjectFiles.sh $PROJECT_PATH/project.uproject -game

Pour Linux

$UNREAL_INSTALL_PATH/Engine/Build/BatchFiles/Linux/GenerateProjectFiles.sh $PROJECT_PATH/project.uproject -game

Il faudra remplacer $UNREAL_INSTALL_PATH par le chemin d’installation d’Unreal, par défaut sur Macos c’est /Users/Shared/UE_5X/, pour votre projet, vous seul savez 😉 Cette commande va générer suivant votre OS, un workspace Xcode, un Makefile et un workspace Visual Studio Code, que vous pourrez utiliser pour compiler votre projet, comme vous l’auriez fait avec Visual Studio. Vous pouvez aussi laisser Unreal le faire automatiquement en ouvrant votre projet.

L’autre solution encore plus simples est d’ouvrir le .uproject avec l’IDE Jetbrain Rider, de là vous pouvez compiler et éditer le code de façon remarquable, après un petit délai d’ouverture (Java + Indexation des fichiers la première fois). L’avantage de Rider est qu’il est disponible sur les 3 OS et qu’il permet de gérer facilement toute la partie code.

Compilation des plugins

Si vous venez de Windows, je vous recommande de récupérer le contenu du dossier UE_5X/Engine/Plugins/Marketplace, de créer un nouveau projet C++ et d’y copier son contenu. De là, vous pouvez générer les fichiers du projet (Xcode, VS Code, Makefile) et compiler les plugins pour votre OS. Il n’est pas impossible qu’il faille mettre les mains dedans. Au pire, vous pouvez contacter l’auteur du plugin pour de l’aide.

Une fois vos plugins compilés, il est préférable de les garder dans le dossier Plugins relatif à votre projet (n’oubliez pas de mettre à jour le .gitignore pour ne pas versionner ces plugins) si c’est possible. Sinon vous pouvez les copier dans le dossier d’installation d’Unreal, dans Engine/Plugins/Marketplace.

Ouverture d’un projet Unreal sous Macos & Linux

Avec Macos, vous pouvez faire comme sous Windows, en double cliquant sur le .uproject. Sinon dans tous les cas, en utilisant une ligne de commande

Pour Macos

$UNREAL_INSTALL_PATH/Engine/Binaries/Mac/UnrealEditor.app/Contents/MacOS/UnrealEditor $PROJECT_PATH/project.uproject

Pour Linux

 $UNREAL_INSTALL_PATH/Engine/Binaries/Linux/UnrealEditor $PROJECT_PATH/project.uproject

L’avantage de l’ouvrir comme cela est qu’il est possible d’utiliser n’importe quelle version d’Unreal. Si vous switchez souvent entre une version compilée (Meta, Pico, Playstation) et une version officielle, c’est la meilleurs solution. Personnellement j’utilise des scripts qui me permettent de passer d’une version d’Unreal à l’autre. C’est transparent, rapide et efficace ;p

Le cas Macos Intel et Apple Silicon : Binaire Universal ou x86_64

Pour Macos il est probable que vous deviez compiler votre projet en mode universel, cela veut dire que le binaire fonctionne aussi bien en natif sur Intel que sur Apple Silicon. Pour voir si une bibliothèque ou un exécutable est compilé pour Intel, Apple Silicon ou Universel, vous pouvez utiliser la commande file.

Dans votre .build.cs c’est totalement transparent, si vos bibliothèques sont compatibles avec les 2 architectures, vous pouvez compiler en Universal sans problème !

Que faire si vous ne pouvez pas compiler en Universal ?

C’est quelque chose qui est malheureusement possible. Dans ce cas, il faut explicitement demander à Unreal de générer uniquement du code Intel x64. La build fonctionnera quand même sur Apple Silicon, mais via une couche de compatibilité. Vous n’aurez pas les performances que vous devriez avoir, mais cela permettra au moins d’être compatible, le temps que la bibliothèque se mette à jour.

Changement de l’architecture cible pour Macos

Comment tester la VR sous Linux ?

Sous Linux il est parfaitement possible d’utiliser une casque VR pour tester vos productions. Il y a plusieurs méthodes selon le casque que vous possédez.

  • SteamVR si vous avez un casque HTC Vive ou un Valve Index
  • Monado si vous avez un casque Windows Mixed Reality, HTC, Oculus, etc…
  • ALVR si vous avez un casque standalone tel qu’un Quest, Pico ou HTC Vive Focus

Le projet Monado est encore jeune mais propose déjà des pistes intéressantes pour le futur. C’est un runtime OpenXR open source, qui prend en charge, sans aucun driver, les casques populaires. Les casques Windows MR par exemple ont le droit au hand tracking et au positional tracking. Les casque Oculus n’ont que le 3dof pour le moment. Un exemple ici avec Unreal / OpenXR et ce bon vieux OSVR HDK2. C’est un projet qui évolue vite et qui va même débarquer sur Windows et Mac.

Unreal Engine en VR avec le plugin OpenXR en streaming sur Quest 2 via ALVR

Le plugin OpenXR dans Unreal est compatible avec Linux, donc vous avez exactement le même workflow que sous Windows. Evidemment vous pouvez toujours utiliser adb pour installer des apk sur votre casque standalone. Les builds PCVR que vous faites sont donc compatibles Linux VR !

La VR sur Macos ?

Historiquement il ya deux méthodes pour faire de la VR sous Macos

  • SteamVR, mais ça n’est plus prit en charge, il faut utiliser une vielle branche et c’est pour HTC Vive uniquement
  • Oculus Runtime 0.8, pour Oculus Rift DK1 et DK2

Heureusement les choses vont changer prochainement avec l’arrivée de Monado sur Macos !

Compilation d’un projet Unreal Engine : Trucs & Astuces

Sous Macos, vous ne serez pas surpris de voir une fenêtre s’ouvrir au dessus d’Unreal avec pas mal de logs. Ce sont les logs de compilation des shaders, ne fermez surtout pas cette fenêtre sinon votre package ne contiendra pas de shaders 😀

Sous Linux, vous devez probablement installer le compilateur clang.

Conclusion

Nous avons la chance d’avoir le choix du système d’exploitation avec Unreal Engine. L’experience la plus simple reste sous Windows, mais les choses ont beaucoup évolués ces dernières années et il est tout à fait possible de travailler sous Linux et Mac. Sous Linux on peut même faire de la VR et jouer à des jeux Windows via Proton/Wine.