knasan

Linux and more

Archiv für das Schlagwort “ebuild”

Nutze deinen RAM

Warum man Ram statt Festplatte verwendet liegt eigentlich auf der Hand.
Ram ist 1000% schneller als eine Festplatte, sogar eine SSD muss sich hier geschlagen geben. Deswegen wollte ich mir ansehen, ob und wie es Möglich ist, StuntRally im Ram zu Spielen.

Als erstes versuchte ich mich an einer chroot Umgebung, diese war mir am Schluss viel zu groß und wirklich sauber hatte es noch nicht funktioniert. Bis mir eine Idee kam.

Der Kernel hängt ein Virtuelles Dateisystem unter /dev/shm ein. Dieses Dateisystem ist nichts anderes als ein teil des Arbeitsspeichers.

Ich erstellt ein Verzeichnis new_home in /dev/shm also Normaler User. Kopierte .config/stuntrally, .local/share/games/stuntrally und .cache/stuntrally hinein.

In einem Terminal exportierte ich nun meine Home Variable

export HOME=/dev/shm/new_home

und startete das Spiel.

Mir ist sofort aufgefallen, dass das Game viel flüssiger läuft.

Aus diesem Grund habe ich einen wrapper geschrieben, der alle Daten von Suntrally nach /dev/shm/ Synchronisiert und beim beenden wieder nach sein Home.

Mein Ebuild habe ich ein neues USE-Flag spendiert das diesen Wrapper auf Wunsch Installiert.

Für alle die gerne diesen Wrapper verwenden möchten, aber kein Gentoo/Funtoo nutzen, hier das wrapper-script.

suntrally_wrapper

#!/bin/bash

#-------------------------------------------------------------------------------
# Author: Sandy Marko Knauer
# Email: knamarksan@gmail.com
# URL: https://knasan.wordpress.com/2013/02/09/nutze-deinen-ram/
# Description: StuntRally synchronizes files to StuntRally in memory to execute.
# Version: 0.0.1
# License: GNU GPL-v3
#-------------------------------------------------------------------------------

tmpfs=$(grep -c "/dev/shm" /proc/mounts)

new_home="/dev/shm/$USER"_new_home
old_home="$HOME"

if [ $tmpfs = "0" ]; then
echo "/tmp is not as a tmpfs filesystem"
exit
fi

stuntrally_cache=".cache/stuntrally/"
stuntrally_config=".config/stuntrally/"
stuntrally_local=".local/share/games/stuntrally/"

mkdir -p $new_home || exit
mkdir -p $new_home/$stuntrally_cache || exit
mkdir -p $new_home/$stuntrally_config || exit
mkdir -p $new_home/$stuntrally_local || exit

if [ -d $HOME/$stuntrally_cache ]; then
rsync -a --progress $HOME/$stuntrally_cache $new_home/$stuntrally_cache || exit
else
mkdir -p $HOME/$stuntrally_cache || exit
fi

if [ -d $HOME/$stuntrally_local ]; then
rsync -a --progress $HOME/$stuntrally_local $new_home/$stuntrally_local || exit
else
mkdir -p $HOME/$stuntrally_local || exit
fi

if [ -d $HOME/$stuntrally_config ]; then
rsync -a --progress $HOME/$stuntrally_config $new_home/$stuntrally_config || exit
else
mkdir -p $HOME/$stuntrally_config || exit
fi

export HOME=$new_home
/usr/bin/stuntrally

rsync -a $new_home/$stuntrally_local $old_home/$stuntrally_local --numeric-ids --progress --delete || ex>
rsync -a $new_home/$stuntrally_config $old_home/$stuntrally_config --numeric-ids --progress --delete || ex>
rsync -a $new_home/$stuntrally_cache $old_home/$stuntrally_cache --numeric-ids --progress --delete || ex>

rm -r $new_home

Hier nochmal ein direklink auf die Datei, da leider die Formatierung verloren geht. https://github.com/knasan/ebuilds/blob/master/games-sports/stuntrally/files/stuntrally_wrapper

StuntRally unterliegt der GNU/GPL-v3, deswegen habe ich mich auch für diese Lizenz entschieden.

-Sandy

Advertisements

Stuntrally Crash in Championship mode

Heute dachte ich mir ich teste Stuntrally Championship, eine Runde … Segmentation fault

Ups was ist das denn? Ein Bug in mein Ebuild?

Ich machte mich erstmal auf die Suche ob dieser Bug bekannt ist, ja ist er.
Im Forum von Stuntrally wurde ich fündig: http://forum.freegamedev.net/viewtopic.php?f=78&t=4089

Dies lies mich nicht los und wollte es genau wissen.
Beim Ebuild schreiben hatte ich festgestellt das Ogre nicht mit USE-Flag threads compiliert werden darf. Das Spiel lies sich nie starten deswegen hatte ich -threads für Ogre im Ebuild hart Maskiert.

Da dieser Bug etwas mit Multithreads zu tun hat, dachte ich mir es muss doch möglich sein Ogre mit threads nutzen zu können. Ich schaute mir die Ebuilds von Ogre und ein paar andere die in Abhängigkeit standen an. Nach kurzer Zeit stelle ich fest das sci-libs/fftw oft in Abhängigkeit stand und wenn threads gewählt ist mit dem USE-Flag mpi verlangt wurde.

Okay, erster test Ogre mit threads compiliert, Stuntrally crasht wie gewohnt.
Also fftw mit mpi USE-Flag compiliert, wow Stuntrally startete ohne zu murren, dachte mir gutes Zeichen.

Championship, eine Runde … Segmentation fault

Eine Runde Erholung zur belohnung dachte ich mir, dabei stellte ich fest dass das Game nicht mehr Ruckelt an stellen wo ich es eigentlich gewohnt war. Fast schon unheimlich, ich hatte mich so sehr an das Ruckeln gewöhnt das mir nun die Steuerung ohne Ruckeln etwas schwer gefallen ist.

Ich dachte immer, das dass Bild besser wurde als ich dev-cpp/asio hinzugefügt hatte, hier hatte ich mich getäuscht. Dieses Paket wurde von vdrift benötigt, aber nicht von Stuntrally.

Nochmal getestet, diesmal ohne dev-cpp/asio. Konnte keinen Unterschied feststellen, Stuntrally verwendet also dev-cpp/asio gar nicht. Zurück zu Championship, was ich heute ja unbedingt mal testen wollte. Wie im Forum Beschrieben stelle ich die Parameter der game.cfg in Section [ slim ] multi_tr = 1 auf 0.

Danach funktionierte Championship und das beste es läuft immer noch flüssig.

Wenn ihr also denkt das eure Grafikkarte das Game ohne Ruckeln packen sollte, dann versucht Stuntrally mal mit threads zu compiliern. Spassfaktor steigt wenn das Game nicht Ruckelt gewaltig in die höhe.

Das neue Ebuild liegt ab sofort auf meinem Github
https://github.com/knasan/ebuilds/tree/master/games-sports/stuntrally

Sandy

Beitragsnavigation

%d Bloggern gefällt das: