EVE
Aus Ubuntu-Forum Wiki
Dieser Artikel bedarf einer Aktualisierung. |
Inhaltsverzeichnis |
Erforderliches Wissen
* [1]: Wine * [2]: ln: Symlinks erstellen * [3]: Umgebungsvariable
EVE Online ist ein komplexes MMORPG, dass im Gegensatz zur Mehrzahl der Konkurrenzspiele im Weltall spielt. Für die Teilnahme am Spiel muss monatlich Geld bezahlt werden.
1 Installation
Der Client lässt sich problemlos mit Wine [1] installieren. Mit Verson 0.9.33 läuft er gut, Version 0.9.34 verursachte ein Memory-Leak, das jedoch bei neueren Versionen gefixt sein sollte. Bei Problemen bietet es sich also an, eine andere Wineversion zu testen. Der Eintrag in der WineHQ-AppDB kann dabei als Orientierung dienen.
Unter Ubuntu 10.10 und Wine < 1.3.12 gibt es einen Bug der das Game einfrieren lassen kann. Link: http://appdb.winehq.org/objectManager.ph…rsion&iId=22575 unter dem Abschnitt: Game freezes when going in game.
Um diesen zu fixen, deinstalliert Wine 1.2.2 aus dem Orignal-Repository.
ladet euch eine neue Version von Wine unter : http://wine.budgetdedicated.com/archive/binary/ zum Beispiel: wine1.3_1.3.13-0ubuntu1~maverickppa2_i386.deb und installiert diese mit dem Paketmanager.
2 Performancesteigerung
EVE läuft zwar mit Wine, aber die Performance ist ungenügend. Dies stört am Anfang kaum, bei größeren Raumschlachten jedoch sehr. Leider bietet das Grafikmenü zwar einige Einstellungsmöglichkeiten, die jedoch keinerlei Wirkung zeigen, sieht man von den so entstehenden Grafikfehlern einmal ab. Jedoch gibt es einen anderen Weg, um den Performanceverlust wenigstens ansatzweise zu kompensieren: den Cache. EVE arbeitet mit einem cache-ordner, in den z.B einmal geladene Portraitfotos gespeichert werden. Bei großen Raumschlachten liest EVE ständig aus diesem Ordern, also direkt von der Festplatte. Dieser Flaschenhals kann unter Linux recht einfach per Ramdisk beseitigt werden.
2.1 Ramdisk anlegen
Dafür legt man zuerst einmal eine entsprechend große Ramdisk an. Mit
dmesg | grep RAMDISK
kann man sich die jetzige Größe ausgeben lassen. Ist diese unpassend, kann diese per ramdisk_size=x in der kernelzeile der menu.lst angepasst werden.
Mit
mke2fs -m 0 /dev/ram0 mount /dev/ram0 /media/ramdisk chown USER.USER /media/ramdisk chmod 0770 /media/ramdisk
wird danach die Ramdisk formatiert, nach /media/ramdisk gemountet (muss ggf angepasst oder erstellt werden) und danach dem User zugesprochen, wobei USER natürlich anzupassen ist. Dies muss jedes mal neu durchgeführt werden, es bietet sich an die rc.local dafür zu nutzen.
2.2 EVE-Cache umlenken
Erstellt man so bei jedem Bootvorgang eine Ramdisk, muss EVE diese nur noch nutzen. Dafür löscht man den Cache-Order im EVE-Verzeichnis und erstellt stattdessen mit ln [2] einen Verweis auf /media/ramdisk. Nun wird der Cache genutzt, fertig ist diese Lösung aber leider noch nicht
2.2.1 Inhalt sichern
Würde man nun nicht weitermachen, hätte man dem Cache seiner Funktion beraubt. Da der Ram sich leert, sobald der PC ausgeschaltet wird, verlöre man jedes mal die mühsam gecachten Dateien. Deswegen muss nach dem Beenden von EVE der Inhalt der Ramdisk gesichert werden. Dies kann man so lösen: Beim Aufruf von EVE startet man jedes mal ein Skript mit, das zuerst den Inhalt eines cache-transfer Ordners in /media/ramdisk verschiebt. Gleichzeitig wird alle fünf Minuten überprüft, ob EVE läuft. Sollte dem nicht so sein, wird der Inhalt der ramdisk wieder zurückgeschoben. Eine verbesserungswürdige Konzeptlösung stellen eve-control-watcher] und eve-watcher] in Verbindung mit [ userramdisk] dar. Will man diese Lösung nutzen, sollte das EVE-Startskript so aussehen und alle drei Skripte im PATH [3] liegen:
#!/bin/sh userramdisk -eve -c cd ~/.wine/drive_c/Programme/EVE aoss nice -20 wine eve.exe echo "eve started" eve-control-watcher -start&
Außerdem müsste ein Ordner ~/.ramdisk angelegt werden und darin die Textdatei options. In der Datei options könnte dann mit
EVEPATH=/home/USER/.wine/drive_c/Programme/EVE/cache-transfer
der Ordner angeben werden, in dem der Inhalt des vorherigen Cache-Ordner liegt (der ja jetzt nur noch ein Symlink auf /media/ramdisk ist). Für die rc.local reicht dann ein Befehl aus, um die Ramdisk einzurichten:
userramdisk -m
3 Links & Quellen
* http://www.vanemery.com/Linux/Ramdisk/ramdisk.html * Eintrag in der WineHQ-AppDB
4 Skripts
4.1 EVE-watcher
#!/bin/sh
<codeTMPLISTE=~/tmp/liste</code>watchingeve()
{echo "Watching for eve-shutdown!"
#Which time is it (for -status) CURTIME=$(uptime | sed 's/up.*//g') echo "$CURTIME" > ~/tmp/watchtime ps aux > $TMPLISTE WATCHTOWER=$(grep EVE $TMPLISTE) #Wait and start again, if eve is running if [ "$WATCHTOWER" != "" ];then #goto sleep for 5 minutes sleep 300 watchingeve else userramdisk -eve -r exit fi } if [ "$1" = "-status" ];then curstatus else watchingeve fi
4.2 EVE-control-watcher
#!/bin/sh #Start eve-watcher if not already running start() { TMPLISTE=~/tmp/liste2 ps aux>$TMPLISTE RUNNING=$(grep eve-watcher $TMPLISTE) if [ "$RUNNING" = "" ];then eve-watcher exit else echo "eve-watcher already up and running" exit fi } #close eve-watcher stop() { killall -9 eve-watcher } #status of eve-watcher curstatus() { ps aux > ~/tmp/status CURRENT=$(grep eve-watcher ~/tmp/status) if [ "$CURRENT" != "" ];then echo "eve-watcher up and running" else echo "eve-watcher not watching" fi echo "Last time watched: $(cat ~/tmp/watchtime)" } #Startabfrage if [ $# = 0 ];then echo "-start or -stop?" else if [ "$1" = "-start" ];then start fi if [ "$1" = "-stop" ];then stop fi if [ "$1" = "-status" ];then curstatus fi fi
4.3 Userramdisk
#!/bin/sh source ~/.ramdisk/options evemode() { BACKUPTIME=$(cat ~/.ramdisk/backuptime) if [ "$BACKUPTIME" = 15 ];then if [ ! -d ~/.ramdisk/backup ];then mkdir ~/.ramdisk/backup fi cp -R $EVEPATH ~/.ramdisk/backup/ echo "0" > ~/.ramdisk/backuptime fi if [ "$1" = "-c" ];then mv $EVEPATH/* /media/ramdisk/ echo "ramdisk filled" fi if [ "$1" = "-r" ];then mv /media/ramdisk/* $EVEPATH/ echo "ramdisk cleared" BACKUPTIME=$[$BACKUPTIME+1] echo "$BACKUPTIME" > ~/.ramdisk/backuptime fi exit } if [ $# = 0 ];then echo "Parameter: 1. -eve (evecache), 2. -c (cache --> ram), r (ram --> cache)" exit fi if [ "$1" = "-eve" ];then evemode $2 echo "evemode on" fi