volted.net

A blog about openSUSE and free thoughts

Divinity Original Sin sous openSUSE GNU/Linux

28 décembre, 2018 — sogal

Parmi les jeux de rôles que j'aime bien, il y a Divinity Original Sin. La suite du jeu, le 2, est sorti il y a quelques temps et je me le suis offert en cette fin d'année sur console. Du coup ça m'a fait pensé que le premier opus, qui a quelques années maintenant, tournerait peut-être correctement sur mon portable (openSUSE Leap). J'ai donc regardé sur GOG et, cool, il était à 9,99€, c'est parti pour le téléchargement.

Une fois récupéré, l'installeur se présente sous la forme d'un script qui va installer les composants du jeu.

Une fois installé, j'essaye de le lancer et pas de bol, ça plante ! Je me retrouve avec des erreurs du type :

(0) /usr/lib/libpthread.so.0 : +0x10d60 [0x7f360f099d60]
(1) ./libOGLBinding.so : api::OpenGLRenderer::ApplyConstants()+0x65 [0x7f360ffd57d5]
(2) ./libRenderFramework.so : rf::Renderer::Apply(bool)+0x57 [0x7f360fc74207]
(3) ./EoCApp : ig::IggyBinding::Swap(rf::Renderer*)+0xfc [0xebf16c]
(4) ./libGameEngine.so : BaseApp::EndDrawGUI(rf::Renderer*)+0x9b [0x7f360fdd288b]
(5) ./libGameEngine.so : BaseApp::MakeFrame()+0x3a4 [0x7f360fdd2db4]
(6) ./libGameEngine.so : BaseApp::OnIdle()+0xe0 [0x7f360fdd1590]
(7) ./EoCApp : main+0x170 [0x6d4430]
(8) /usr/lib/libc.so.6 : __libc_start_main+0xf0 [0x7f360ed01610]
(9) ./EoCApp : _start+0x29 [0x6d41a9]

En farfouillant un peu sur le Web, je trouve un rapport de bug sur Freedesktop.org.

Par chance, ce dernier contient une solution : il faut récupérer un pre-loader qui va pallier le soucis:

curl https://bugs.freedesktop.org/attachment.cgi\?id\=125302 > divos-hack.c

Puis le compiler :

gcc -s -O2 -shared -fPIC -o divos-hack.{so,c} -ldl

Et le copier dans le répertoire contenant les données du jeu :

cp divos-hack.so $HOME/Jeux/Divinity_Original_Sin_Enhanced_Edition/game/

Enfin, il convient d'adapter le lanceur du jeu. J'ai créé un petit wrapper qui lance le jeu avec les options correctes :

#!/bin/bash

allow_glsl_extension_directive_midshader=true LD_PRELOAD='$HOME/Jeux/Divinity_Original_Sin_Enhanced_Edition/game/divos-hack.so' $HOME/Jeux/Divinity_Original_Sin_Enhanced_Edition/start.sh

Puis j'ai adapté le lanceur présent dans $HOME/.local/share/applications/gog_com-Divinity_Original_Sin_Enhanced_Edition_1.desktop :

[Desktop Entry]
Encoding=UTF-8
Value=1.0
Type=Application
Name=Divinity: Original Sin - Enhanced Edition
GenericName=Divinity: Original Sin - Enhanced Edition
Comment=Divinity: Original Sin - Enhanced Edition
Icon=/home/user/Jeux/Divinity_Original_Sin_Enhanced_Edition/support/icon.png
Exec="/home/user/Jeux/Divinity_Original_Sin_Enhanced_Edition/DivinityLauncher.sh"
Categories=Game;
Path=/home/user/Jeux/Divinity_Original_Sin_Enhanced_Edition

Attention : dans ce fichier il faut bien passer les chemins complets.

Ceci fait, le jeu se lance sans problème et je peux en profiter durant mes trajets quotidiens en train, le tout sur un simple Thinkpad T450 avec une puce graphique Intel et sous openSUSE of course !

Divinity sous Linux

Tags: tips