UV Navigator - Auswertungsvisualisierung fuer Universum V Copyright (C) 2004-2006 Daniel Roethlisberger <roe@chronator.ch> This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, see http://www.gnu.org/copyleft/ $Id$ Allgemeines ----------- UV Navigator ist ein weiteres Tool fuer Universum V. ToVU passte mir aus technischen Gruenden nicht so wirklich (browserbasiert, Java), und AMAP / PoN / ZugComposer laufen nur unter Windows, werden nicht mehr weiterentwickelt, und/oder sind nicht Open Source, womit die Moeglichkeit fuer Bugfixes und Erweiterungen nicht gegeben ist. Ich habe UVNav primaer fuer mich selber entwickelt, und momentan gibt UVNav wohl auch noch nicht genug Features her, um die anderen Tools ernsthaft zu konkurrenzieren. Wer aber wie ich ausschliesslich freie Betriebssysteme verwendet, der ist allenfalls froh um UVNav. UV Navigator ist freie Software. Aktuelle Version und Source Code gibts auf den Projektseiten: https://projects.roe.ch/trac/uvnav/ Wer mitarbeiten moechte, soll sich doch bitte bei mir melden. Wer mit guten Patches ueberzeugt, kriegt bald mal Commit-Rechte direkt ins Repository. UV Navigator benutzt eine interne, stark reduzierte Version der genialen Perl Compatible Regular Expressions (PCRE) Library von Philip Hazel, Copyright (C) University of Cambridge, England. Details zu diesem und anderem verwendetem Fremdcode siehe die Datei AUTHORS. Bedienungshinweise ------------------ Momentan kann UVNav erst eine einzige Auswertung aufs mal darstellen. UVNav erwartet als ersten Parameter den Pfad einer Auswertung. Wenn UVNav ohne Parameter aufgerufen wird, so wird eine kurze Bedienungsanleitung (--help) in die Standardfehlerausgabe geschrieben, was fuer Windows-User vielleicht etwas ungewohnt ist. Der Windows-Port von SDL leitet die Standardausgabe / Standardfehlerausgabe aber in Textfiles um, wo die Ausgabe bequem nachgelesen werden kann, auch wenn UVNav per Doppelklick im Explorer gestartet wurde. Wie die Bedienung im Detail funktioniert, kann in der Datei docs/tastenbelegung.txt nachgelesen werden. Stand der Entwicklung --------------------- UV Navigator befindet sich in der Fruehphase der Entwicklung. Der Parser ist mittlerwile stabil und kann so ziemlich alle Auswertungen korrekt einlesen, inklusive alte und uralte Auswertungen (bisher getestet wurden Sternzeit 55, 128, 144-152, 154-162, 211-heute). Das Parsen der Nachrichten ist erst in den Grundzuegen implementiert. Imperatoren-Spielzeug wird zwar korrekt verarbeitet, aber noch groesstenteils ignoriert. Fuer Imperatoren ist UVNav demnach noch nicht sehr hilfreich. Die Kartendarstellung ist noch sehr experimentell. Grafik und Benutzerfuehrung stecken noch in den Kinderschuhen. Viele Verbesserungen sind vorbereitet, aber noch nicht fertig implementiert. Performance und Benutzbarkeit sind noch weit vom Ziel entfernt! Diverse Hilfsmodule fuer Konfiguration, Image-Caching, Font- Renderer, Zeichenhilfen etc sind stabil und funktionieren zuverlaessig. Was da noch fehlt ist ein Datenbankmodul fuer die Ablage von persistenten Daten. Momentan kann daher auch nur eine Auswertung aufs Mal eingelesen und angeschaut werden. Fazit: Noch sehr spartanisch, aber durchaus benutzbar. Bekannte Probleme ----------------- Bei vielen Objekten in der Darstellung ist die momentane Methode des herauszoomens zu langsam und unuebersichtlich. Objekte sollen sich zu Gruppen oder farbigen Flaechen formieren sobald sie zu klein sind um einzeln erkannt zu werden. Das bedingt eine baumartige Strukturierung dieser Objekte, und ist daher nicht ganz einfach zu implementieren. Performance ----------- Der Parser fuer Textauswertungen basiert auf regulaeren Ausdrucken (RegExp), und verarbeitet Auswertungsdaten ueberraschend schnell: CPU Taktung FreeBSD Windows ------------------------------------------------------- AMD Athlon XP 2500+ 1830 MHz 4.2 MB/s 3.1 MB/s Intel Pentium M 1200 MHz 3.8 MB/s 3.0 MB/s Intel Pentium III 700 MHz 0.8 MB/s 0.5 MB/s ------------------------------------------------------- UVNav wurde fuer die Messungen sowohl unter FreeBSD als auch unter Windows mit dem identischen Compiler und identischen Einstellungen erzeugt. Zum Vergleich: ToVU 4.13 ist ca um den Faktor 20 langsamer, AMAP 3.9 sogar um ca Faktor 200. Die Anzeige ist sogar auf meinem alten Thinkpad mit grossen Auswertungen noch einigermassen fluessig. Notfalls kann man das rechenintensive Anti-Aliasing und die Interpolation im Zoom-Code mit -Q deaktivieren, muss dafuer aber mit haesslich verpixelter Anzeige leben. Wie bei PoN, AMAP und ToVU halt :) UVNav frisst ca 10 MB Grundbedarf plus das 3-4fache der Dateigroesse der Auswertung an RAM. Da laesst sich vermutlich nur wenig daran aendern; tendenziell wird der Speicherbedarf eher steigen als sinken, da mir gute Performance wichtiger ist als ein niedriger Speicherbedarf. Kompilieren und Installieren ---------------------------- UVNav wird mit GCC 3.x und den C/C++-Libs von FreeBSD entwickelt, sollte aber auch mit anderen Compilern und Libraries kompilieren. Probleme in diesem Zusammenhang bitte melden; es ist gut moeglich, dass es noch kleine Veraenderungen an configure.ac und den relevanten Header-Files braucht, um andere Systeme zu unterstuetzen. Folgende Bibliotheken werden benoetigt: - SDL Simple Directmedia Layer http://www.libsdl.org/ - SDL_ttf TrueType Font Library fuer SDL http://www.libsdl.org/projects/SDL_ttf/ - SDL_image Image Loading Library fuer SDL http://www.libsdl.org/projects/SDL_image/ - SDL_gfx Erweiterte Grafiklibrary fuer SDL http://www.ferzkopp.net/~aschiffler/Software/SDL_gfx-2.0/ UVNav kann auf allem was sich POSIX-kompatibel schimpft mit der ueblichen ``magischen Dreifaltigkeit'' kompiliert und installiert werden: $ ./configure $ make # make install Auf nicht-GNU-Systemen (z.B. BSD, Solaris, MacOS X) muss `gmake' (GNU Make) statt `make' verwendet werden. Optional kann ./configure mit Parametern aufgerufen werden, um die Installationseinstellungen anzupassen oder zusaetzliche Tools zu installieren, siehe ./configure --help fuer Details. Kompilieren und Installieren ab Subversion Repository ----------------------------------------------------- Um UVNav direkt ab Repository zu kompilieren, wird ein Subversion Client sowie zusaetzlich GNU Autoconf 2.59 und Automake 1.9 benoetigt (2.57 und 1.7 sollten auch funktionieren, alles was aelter ist aber vermutlich nicht). Um den Quellcode der aktuellsten Entwicklungs-Version zu ziehen: $ svn checkout svn://projects.roe.ch/repos/uvnav/trunk/ uvnav $ cd uvnav $ ./autogen.sh $ ./configure --enable-debug $ make # make install Kompilieren mit MinGW32 Cross-Compiler -------------------------------------- UVNav kann direkt unter Linux oder BSD fuer Windows kompiliert werden. Es wird eine MinGW32/GCC-Cross-Compiler-Installation benoetigt. Die benoetigten DLLs stehen bereits vorkompiliert zu Verfuegung, aber die eigentlichen SDL-Bibliotheken muessen zum Kompilieren in der MinGW32-Umgebung vorhanden sein. Um einen Cross-Compiler-Build ab Subversion Repo zu starten: $ svn checkout svn://projects.roe.ch/repos/uvnav/trunk/ uvnav $ cd uvnav $ util/build-cross-mingw32.sh $ util/make-binary-dist.sh Vorher sollte build-cross-mingw32.sh noch an die lokalen Gegebenheiten angepasst werden. Der Default passt fuer eine FreeBSD Installation der devel/mingw32-* Ports (GCC 3.x). Zusaetzliche Tools ------------------ In UVNav sind noch einige hilfreiche Scripts fuer die Auswertungs- Analyse und Zugerstellung enthalten. Diese werden nur installiert, wenn ./configure mit --enable-tools ausgefuehrt wurde.