human
Comment les jeux sont convertis pour fonctionner sous Linux Et pourquoi c'est si difficile à faire Expliquez comme si j'avais cinq ans.
gpt
Tout dépend de la façon dont le jeu interagit avec le système d'exploitation. Ceci est différent entre les différents systèmes d'exploitation. Par exemple : * * Appels système * * Les appels système permettent à un programme (dans ce cas, le jeu) de communiquer avec le système d'exploitation. Par exemple, si le jeu a besoin d'ouvrir un fichier, il envoie un appel système au système d'exploitation en disant « obtenez-moi ce fichier ». La manière exacte dont les appels système sont effectués varie d'un système d'exploitation à l'autre. Chaque système d'exploitation aura généralement un ensemble similaire d'appels système vers d'autres systèmes d'exploitation, mais les spécificités sont différentes (différentes méthodes pour effectuer des appels système, différents noms, différents paramètres (les paramètres sont la façon dont vous transmettez des informations à un appel système, par exemple, le nom du fichier que vous voulez ouvrir serait un paramètre ) , etc . ) . * * Structure des fichiers et des répertoires * * Windows et Linux ont des normes différentes pour l'organisation des fichiers sur votre disque dur. Lorsque vous installez un programme sous Windows , il crée généralement un dossier pour ce programme dans C:\Program Files\ , et les fichiers dont le programme a besoin sont placés dans ce dossier . Sous Linux, le programme lui-même est généralement stocké dans un répertoire (dossier) appelé /usr/bin, tandis que les autres fichiers nécessaires au programme sont stockés dans /usr/lib et /usr/share (entre autres). De même, Windows et Linux ont des emplacements différents pour stocker vos paramètres et vos fichiers personnels. Lors du portage d'un programme entre systèmes d'exploitation, vous devez l'adapter pour comprendre et utiliser ces différentes manières d'organiser les fichiers. * * Accéder au matériel * * Windows et Linux ont différentes manières de permettre aux programmes de communiquer avec le matériel. Les graphismes revêtent une importance particulière pour les jeux. La plupart des jeux Windows utilisent quelque chose appelé DirectX pour prendre soin de leurs graphismes. DirectX est nécessaire car il existe un grand nombre de cartes graphiques différentes, et elles ont toutes des façons différentes de faire les choses. Lorsque le jeu sur PC a pris son essor, les développeurs de jeux devaient concevoir spécifiquement leur jeu pour prendre en charge chaque carte graphique sur laquelle il pouvait être joué. C'était bien au début quand il n'y avait que quelques modèles de cartes graphiques, mais aujourd'hui il y a un si grand nombre de cartes disponibles qu'il serait impossible pour un développeur de jeux de les concevoir toutes individuellement. Microsoft a donc créé DirectX comme moyen standard de communiquer avec les cartes graphiques. Désormais, les développeurs de jeux n'avaient plus qu'à prendre en charge DirectX, et il appartenait à chaque fabricant de cartes graphiques de créer des pilotes, qui sont des programmes permettant à leur carte graphique de "parler le langage de DirectX". Mais Linux ne supporte pas DirectX. Au lieu de cela, il a sa propre chose similaire appelée OpenGL. OpenGL fait essentiellement la même chose que DirectX, mais il fonctionne différemment. Imaginez que DirectX, c'est comme parler en anglais et OpenGL, c'est comme parler en français. Les jeux qui savent fonctionner avec DirectX ne comprennent pas OpenGL et vice versa. Ainsi, les développeurs de jeux devront modifier leur jeu pour qu'il fonctionne avec OpenGL, ce qui est un travail assez important car, très souvent, tout le système graphique du jeu sera conçu autour de DirectX. De nos jours, OpenGL peut fonctionner sur Windows ainsi que sur Linux, donc si vous écrivez un jeu que vous envisagez de sortir sur les deux plates-formes, il est logique de le concevoir pour qu'il utilise OpenGL pour commencer. Mais de nombreux jeux sont encore construits avec DirectX , surtout si le développeur n'avait pas initialement prévu de le porter . Il en va de même pour d'autres types de matériel, comme les cartes son (WaveOut ou DirectSound sous Windows, ALSA ou Pulse sous Linux). Ceux-ci devront également être adaptés pour . * * Bibliothèques * * Lorsque vous écrivez un logiciel, vous ne le créez généralement pas vous-même à partir de zéro. Au lieu de cela, vous utilisez des bibliothèques, qui sont des morceaux de code pour effectuer des tâches courantes qui ont déjà été écrites. Par exemple , il peut y avoir une bibliothèque pour lire des fichiers musicaux . Si votre jeu a besoin de lire des fichiers musicaux (par exemple pour un thème musical ou des effets sonores), pourquoi s'embêter à écrire votre propre code pour le faire alors que vous pouvez simplement utiliser la bibliothèque ? Pensez-y comme si vous construisiez une maison : vous n'allez pas abattre un arbre et en faire du bois d'œuvre vous-même alors que vous pouvez simplement acheter du bois coupé prêt à partir d'un chantier de construction. C'est très bien, jusqu'à ce que vous décidiez de convertir votre jeu pour qu'il tourne sous Linux. Windows et Linux viennent tous les deux avec leur propre ensemble de bibliothèques, et ils sont tous les deux différents. C'est comme si vous conceviez votre maison autour de raccords métriques, seulement pour découvrir que le magasin ne vend qu'impérial. Les développeurs devront réécrire leur jeu pour supporter les différentes librairies. Certaines bibliothèques sont disponibles à la fois sur Windows et Linux, et il est utile que les développeurs conçoivent leur jeu autour de ces bibliothèques lorsque cela est possible. Mais s'ils n'avaient pas l'intention de porter leur jeu sur Linux lorsqu'ils l'ont écrit pour la première fois, ils auraient peut-être choisi d'utiliser différentes bibliothèques qui ne fonctionnent que sur Windows. Même si la même bibliothèque est disponible sur les deux plates-formes, il y aura parfois une légère différence entre les deux que vous devrez contourner. Il y a beaucoup d'autres différences entre les deux OS, mais c'est déjà assez long et on pourrait écrire des livres entiers sur le sujet (d'ailleurs des gens l'ont déjà fait). Cela dit, ce sont quelques-uns des principaux. J'espère que cela vous donnera une bonne idée de la quantité de travail impliquée dans le portage d'un jeu, surtout si ce jeu n'a jamais été conçu pour être porté en premier lieu.