EVE
Aus Ubuntu-Forum Wiki
| |
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.
[Bearbeiten] 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.
[Bearbeiten] 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.
[Bearbeiten] 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.
[Bearbeiten] 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
[Bearbeiten] 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
[Bearbeiten] 3 Links & Quellen
* http://www.vanemery.com/Linux/Ramdisk/ramdisk.html * Eintrag in der WineHQ-AppDB
[Bearbeiten] 4 Skripts
[Bearbeiten] 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
[Bearbeiten] 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
[Bearbeiten] 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