Neues Projekt: Grepostats + Grepomaps + vieles mehr als eigenständiges Programm


Aktueller Entwickler: .Pete.

Hallo,
ich hab da mal ein Tool für Grepolis gebaut. Nachdem ich angefangen hatte mich mit den Weltdaten von Grepolis auseinanderzusetzen, kam mir die Idee, da ein eigenständiges Programm zu schreiben, das Vorzüge von Grepostats, Grepomaps und Grepointel in sich vereint. Das Ganze ist als OpenSource Projekt in c++ mit Qt realisiert und soll irgendwann Plattformunabhängig sein. Den aktuell neuesten Stand könnt Ihr jederzeit bei Sourceforge herunterladen und ausprobieren:


Installation: Den Zipfile bitte herunterladen und in ein leeres und vor Allem(!) beschreibbares Verzeichnis entpacken oder einfach über eine bestehende Installation des Tools entpacken. Die Informationen und Daten, die Ihr da bisher eingegeben und gesammelt habt, bleiben alle erhalten. Nach dem Entpacken einfach Grepotool.exe starten. Dann sollte alles funktionieren.

Funktioniert es nicht, dann kann es sein, dass Ihr noch drei Dlls von OpenSSL benötigt. Die bekommt man hier:

Bitte die etwas ältere 32-Bit Version auswählen, weil es mit der neuesten anscheinend Probleme gibt... Win32 OpenSSL 1.0.2l (32-Bit)
Der Installer sollte alles weitere für Euch regeln.

Wie füge ich neue Welten hinzu?
Neue Welten musst du manuell hinzufügen:
  • Öffne deinen Grepotool Ordner und doppelklicke dort den Ordner data
  • Öffne in deinem Texteditor die Datei server.txt
  • Drücke die Tasten Strg + F und gib in die Suchzeile de 64 Sestos ein und drücke Enter
  • Füge eine neue Zeile ein und gebe die Welten in folgendem Format ein:
    de 71 Euböa 0
  • Speichere die Textdatei und starte Grepotool

Was kann das Tool bis jetzt?
  • Zunächst mal ist es eine frei scroll- und zoombare (Einfach am Mausrad drehen) Grepo-Karte einer jeden Welt.
  • Städte von Spielern werden in der Farbe der Allianz dargestellt. Wenn man die Spielernamen anhakt, werden die Städte des Spielers in einer eigenen Farbe dargestellt und bleiben auch sichtbar, wenn man weit herauszoomt. Mauszeiger über eine Stadt liefert ein paar Infos.
  • Man kann auch die Allys auswählen (ein Häkchen beim Namen machen). Dann wird eine politische Karte berechnet. Hier mal ein Beispiel:
  • Man kann zu jeder Stadt eintragen, welche Einheiten drinstehen. Hierzu gibt's ein Userscript von Diabhoil, das die Infos aus Angriffsberichten direkt in das Tool überträgt, wenn im Tool grade die richtige Welt angezeigt wird. Entweder als Greasemonkey-Script (da muss man strg+c drücken, um die Daten zu übertragen, oder als Firefox-Plugin. Ein Knopfdruck reicht)
  • Das Programm lädt bei Programmstart die jeweils aktuellen Weltdaten aus dem Netz (max 1x pro Stunde) und aktualisiert eine lokale Datenbank. Wenn man es also regelmäßig startet, liefert es Infos über die Aktivität jedes Spielers. Diese wird in der Spieler-Tabelle angezeigt.
  • Man kann Städte auswählen und einer oder mehreren Listen (Meine Städte) hinzufügen. Dann werden jedesmal, wenn man eine Stadt auswählt die Laufzeiten zu dieser Stadt angezeigt. Dabei kann man auswählen, für welche Einheit die LZ berechnet werden sollen. Ich habe z.B. eine Liste mit meinen FS-Städten und eine mit Biremen. Man kann aber auch die Landeinheiten hinzunehmen, wenn man alle Optionen abdecken will...
  • Man kann eine oder mehrere Listen mit Zielen anlegen. Das soll dabei helfen, eigene Aktionen besser zu planen.
  • Man kann alle Listen frei nach jeder Spalte sortieren, indem man auf den Spaltenkopf klickt.
  • Alle Tabellen können in die Zwischenablage kopiert und dann z.B in EXCEL problemlos eingefügt werden. Auch ein Export mit BBCodes zum Posten im Grepo-Forum ist möglich.
  • Man kann die Spalten der Tabellen frei sortieren (mit der Maus verschieben) und einzelne Spalten ein- und ausblenden.
  • Man kann Städte, Spieler oder auch Allys bookmarken. Dann werden sie in einer gesonderten Liste angezeigt, was das wiederfinden erleichtert.
  • Das Tool aktualisiert sich nun automatisch aus dem Internet. So habt Ihr immer die neueste Version.

Bei mir funktioniert's soweit ganz gut. Ich hoffe, bei Euch auch!
Vielen Dank an Diabhoil für die Mühsal mit dem Userscript und dem Plugin.
Die nette Grafik da oben verdanke ich übrigens Ziltoid. Auch hierfür vielen Dank!

Viel Spass mit dem Proggie und liebe Grüße,

Euer Pete

--
Update:
  • diabhoil hat die Entwicklung übernommen. Bei Fragen bitte an ihn wenden!
  • Version 3 ist in Arbeit (Behebung einiger Fehler, Bibo Im- und Export, Eroberungen anzeigen lassen von Allianz und Spieler, etc)

Bekannte Probleme und Lösungen:
- Virenscanner: Manche Virenscanner mögen das Tool nicht. Also ich würde es ignorieren.
- Einbinden neuer Welten: Per Menu (unter Einstellungen) kann die Liste der Welten mit der netterweise von Tonda zur Verfügung gestellten Liste aller aktuellen Welten abgeglichen werden.
 
Zuletzt bearbeitet:

*CloWn*

Gast
Hört sich ganz gut an :) Bin leider kein fortgeschrittener Computertutor und war jetzt mit dem Vokabular etwas überfordert ^^

Die Idee scheint auf jeden Fall sehr gut zu sein!
 

Menidan

Gast
Dabei kam mir die Idee, ein eigenständiges Programm zu schreiben, das die Vorzüge von Grepostats, Grepomaps und Grepointel in sich vereint.
Grepostats hat den Vorteil, dass es ein Server ist und somit Statistiken anlegen kann, während ich schlafe. Möchtest du etwa auf Grepostats zugreifen?

Das Ganze soll als OpenSource Projekt in c++ mit Qt realisiert werden und Plattformunabhängig sein.
Solange du mir nicht mit undefiniertem Verhalten die Festplatte formatierst, gerne.

Also, mir schwebt da eine grafische Benutzeroberfläche vor, mit der man stufenlos mit der Maus in der Karte rein und rauszoomen kann, wobei gleichzeitig Daten zu allen Städten als Label ein/ausgeblendet werden können.
Ich weiß nicht, wie schnell Qt bei ein paar tausend beschrifteten Bildchen ist, ich kenne Qt nicht. Die Zusatzinformationen sollten auch z. T. über Stadtgröße und -farbe erkennbar sein, sonst knn man ab einer bestimmten Größe auf der Karte vor lauter Text nichts mehr lesen.

Zusätzlich soll das Tool Hilfen für die strategische Planung bieten. Wie diese genau aussehen werden, weiss ich noch nicht.
Was stellst du dir denn allgemein darunter vor?
 
Na erstmal will ich eine frei zoombare Map basteln, womit ich auch schon ein gutes Stück weit bin.
Die Inseln werden genauso dargestellt, wie bei Grepo, nur eben frei zoombar mit dem Mausrad. Als nächstes kommen die Städte, die ein kleines Problem darstellen, weil sie auf jedem Inseltyp anders verteilt liegen und InnoGames die Offsets m.W. nicht veröffentlicht hat.

Wenn das erstmal passt, kann man mal über taktische overlays nachdenken. Politische Karte, Angriffsziele, Off-Planer, Wegzeitenrechner, etc. Wohlgemerkt alles nur auf den aktuellen Weltdaten.

Wenn dann auch noch Zugriff auf die Daten von Grepostats möglich wäre, könnte man auch noch nette Features, wie Polissuche und Off-Analyse einbauen. Müsste nur eine lokale Kopie der Grepostats Datenbank halten und bei Programmstart aktualisieren. Ist alles möglich, aber eine Menge Arbeit.
 
Zuletzt bearbeitet:

Menidan

Gast
Die Inseln werden genauso dargestellt, wie bei Grepo, nur eben frei zoombar mit dem Mausrad.
Ein paar tausend 1024x512 Pixel große Bildchen? Hört sich gut an! Ich hoffe nur, mein Rechner weiß das ebenfalls zu würdigen.

Müsste nur eine lokale Kopie der Grepostats Datenbank halten und bei Programmstart aktualisieren.
Davon würde ich absehen. Nur die tatsächlich genutzten Daten sollten zwischengespeichert werden. Ein paar Gigabytes sind mir zu viel, v. a. über das Internet.
 
Also Punkt1 funzt einwandfrei und ohne Schwierigkeiten (AMD AthlonX4 3000). Werde am We mal ne pre-Alpha Version online stellen, damit man sich mal ein Bild machen kann. Was die Datenbank von Grepostats angeht, sind task-abhängig eigentlich nur wenige Daten nötig. z.B.:
Die player - punkte / deff-Bashies / off-Bashies des letzten Monats. Denke mal das ist weniger als ein MB und müsste sich per einfacher SQL-Abfrage regeln lassen. Bräuchte dafür allerdings nen User und Passwd + url der Datenbank. Kann das auch nur, wenn's MySQL ist. Mit den anderen hab ich noch keine Erfahrung.
 

Menidan

Gast
Denke mal das ist weniger als ein MB [...]
Die (archivierten) Daten sind für die Karte pro Welt ca. 1,5 MB groß. Für aktuelle Statistiken sind das noch einmal ca. 1,4 MB. Daher braucht der Grepolis-Abakus für die Statistiken auch einen Moment zum Laden.

[...] müsste sich per einfacher SQL-Abfrage regeln lassen. Bräuchte dafür allerdings nen User und Passwd + url der Datenbank. Kann das auch nur, wenn's MySQL ist. Mit den anderen hab ich noch keine Erfahrung.
Ich bezweifle doch sehr, dass du von außen Zugriff auf die Grepolis- oder Grepostats-Datenbank erhälst, sonst crackt der böse Hacker dein Programm und legt Grepolis oder Grepostats durch Unmengen an Abfragen lahm. Dann könntest du dir dann die Statistiken ansehen, ja, aber leider nicht mehr Grepolis spielen. Es gibt aber die Weltdaten und die Grepostats-Seiten, beide über das HTTP zu erreichen.

Das du da mit SQL-Abfragen kommst, hätte ich nun wirklich nicht erwartet...
 
Die Weltdaten findest Du hier http://wiki.de.grepolis.com/wiki/Weltdaten genau beschrieben.
Ganz unten ist auch ein Absatz wie man sie über MySQL abfragt, das sollte Dir doch dann eigentlich ausreichen, oder nicht?
Es gibt halt nur keine historischen Daten. Da musst Du Dir eine eigene Datenbank bauen.
Aber wie schon erwähnt, Du findest alle Informationen auf dieser Seite.
Viel Spass!

Ein einfaches Beispiel in PHP, um die Dörfer + Namen von Alpha in eine MySQL-Datenbank zu schreiben:
in MySQL importieren mit PHP schrieb:
$lines = gzfile('http://de1.grepolis.com/data/towns.txt.gz');
if(!is_array($lines)) die("Datei konnte nicht geöffnet werden");

foreach($lines as $line){
list($id, $player_id, $name, $island_x, $island_y, $slot_number_on_island, $points) = explode(',', $line);
$name = urldecode($name);
$name = addslashes($name);
$name = utf8_decode($name);
mysql_query("INSERT INTO village SET id='$id', player_id='$player_id', name='$name',island_x='$island_x',
island_y='$island_y', slot_number_on_island='$slot_number_on_island', points='$points'");
} $lines = gzfile('http://de1.grepolis.com/data/towns.txt.gz');
if(!is_array($lines)) die("Datei konnte nicht geöffnet werden");

foreach($lines as $line){
list($id, $player_id, $name, $island_x, $island_y, $slot_number_on_island, $points) = explode(',', $line);
$name = urldecode($name);
$name = addslashes($name);
$name = utf8_decode($name);
mysql_query("INSERT INTO village SET id='$id', player_id='$player_id', name='$name',island_x='$island_x',
island_y='$island_y', slot_number_on_island='$slot_number_on_island', points='$points'");
}
 
Also erstmal vielen Dank für die Tipps!

Um mal nen Überblick zu geben, was ich bisher realisiert habe:
Mein Programm läd beim ersten Start die Bildchen aller Inseltypen herunter und speichert sie lokal.
Dann werden bei Auswahl einer Welt die aktuellen Weltdaten dieser Welt via http geladen.
Die Inseldaten einer Welt (islands.txt) ändern sich nicht und werden daher, wie die Bilder auch nur 1x (beim 1. Besuch der Welt) heruntergeladen und lokal gespeichert.

Das Programm bietet momentan lediglich eine frei zoombare Karte der jeweiligen Welt an. Die Navigation ist genauso wie beim Grepolis-Webinterface und bei Zoomstufe 1:1 sieht die Karte fast exakt genauso aus, wie im Browser. Es sind aber nur die kahlen Inseln.

Als nächstes kommen die Städte dran. Abhängig von der Zoomstufe, sollen unterschiedliche Informationen visualisiert werden. Entweder als Popup, wenn man mit der Maus über eine Stadt oder eine Insel fährt, oder als bei der Stadt eingeblendeter Label oder als farbige Kodierung der Städte.

Wenn man weit genug rauszoomt, soll eine Art politischer Karte überblendet werden.
Ich stelle mir vor, dass man, wie bei Grepomaps, Spieler und Allys auswählen kann und diesen dann Darstellungsoptionen zuweist.
Zusätzlich soll es Unterstützung zum Planen von Off-Aktionen geben durch z.B. Definition eines oder mehrer Angreifer und eines oder mehrer Ziele.

Wäre doch nett, auf Knopfdruck z.B. die Laufzeiten aus allen meinen Off-Städten zu einer Stadt zu bekommen.

Naja - jetzt aber erstmal die Städte...
 

Menidan

Gast
Das Ganze soll als OpenSource Projekt [...] realisiert werden
Wozu, wenn man nicht bei der Entwicklung helfen kann?


Es sieht sehr gut aus, wenn auch nicht ganz flüssig bei mir. Vielleicht solltest du noch den Sichtbereich so beschränken, dass im Mittelpunkt der Anzeige immer ein Stück Karte zu sehen ist.


Die Zoom-Faktoren scheinen nicht ausgeglichen. Der Kehrwert von 0,9 ist nicht 1,1 und der Kehrwert von 0,5 nicht 1,5.
 
Zuletzt bearbeitet von einem Moderator:
Möchte gerne die Grepolis Grafiken einbinden für Icons etc. Dabei bin ich auf folgende Dateien gestoßen:

Alle Einheiten incl. Helden: http://de.cdn.grepolis.com/images/game/units/units_sprite_50x50_2.42_compressed.jpg
Eigenschaften von Einheiten (Kaserne und Hafen) : http://de.cdn.grepolis.com/images/game/barracks/unitinfo.png
Verlustrechner des Simulators: http://de.cdn.grepolis.com/images/game/place/losts.png
Götter: http://de.cdn.grepolis.com/images/game/layout/favor_gods_2.46.png
Zauber: http://de.cdn.grepolis.com/images/game/temple/sprite_powers_86x86_compressed_2.46.png
Nochmal extra mystische Einheiten: http://de.cdn.grepolis.com/images/game/units/units_sprite_76x76.png
Verwalter & co.: http://de.cdn.grepolis.com/images/game/premium_features/advisers_64x64.jpg
Ressourcen: http://de.cdn.grepolis.com/images/game/layout/resources_2.32.png

Jetzt habe ich hierzu ein paar fragen:

1. Bleiben diese Grafiken so und behalten ihre Namen und urls?
2. Darf ich diese Grafiken fest in mein Programm einbinden, oder muss ich sie zur Laufzeit laden? Da mein Programm sie zur Erstellung von Icons verwendet, wäre Punkt 1 dafür Voraussetzung.
3. Gibt's evtl höher aufgelöste Versionen der Grafiken?

LG,
Pete
Liebe Grüße,
Pete
 
So liebe Gemeinde,

es hat etwas gedauert, aber hier ist mal ein paar Screenshots der neuesten Version.
www.youscreen.de/irgloffo11.jpg
http://www.youscreen.de/wfvixfob81.jpg
Ich arbeite grad an Funktionen für die unteren vier Tool-Fenster. Wenn das einigermassen implementiert ist, poste ich hier wieder einen Download.

Was geht:
- (fast) stufenloser Kartenzoom
- frei definierbare politische Karte (alle selektierten Allys)
- Größe der Stadtdarstellung variiert mit Punkten.
- Tooltipps zeigen Stadtinfo auf der Karte
- Jedesmal beim Download der Weltdaten wird eine lokale Player-Datenbank aktualisiert (Punkte/deff/-/Off-Bashies). Das soll in der Player Liste mit angezeigt werden. (An Innogames: Ich sorge dafür, dass Weltdaten maximal 1x pro Stunde runtergeladen werden, also keine Sorge hier)
- Alle Listen sind Sortierbar, indem man auf den Header klickt.
- Doppelklick auf eine Stadt in der Stadtliste verschiebt die Stadt ins Zentrum der Karte.
- Mann kann alle Tool-Fenster aus- und wieder einblenden oder auch frei positionieren.

Was noch fehlt:
- Angriffsplaner (nicht vergleichbar mit dem bei Grepo integrierten, vielmehr geht's mir um eine Unterstützung für alle Off-Minister und Offer.
- Anzeige der letzten Aktivität eines Spielers (sofern es die Datanbank erlaubt). Wenn man das Proggi jeden Tag nutzt ist's genausogut wie die Polis-Suche von Tonda
- Übersetzungen
- Hilfe
- Manual (des Tool wird ja immer komplizierter :D)
- und vieles Mehr

LG,
Pete
 
Zuletzt bearbeitet:

Menidan

Gast
Das sieht vielversprechend aus. Ist es auch zu testen, oder fällt das unter "herunterladbare Datei"?
 
Das freut mich, zu lesen!
Es wird eine erste Testversion geben, sobald ich die letzten Lücken in der Implementierung geschlossen und das GUI nochmal aufgeräumt habe.
Es ist ein eigenständiges Programm. Daher wird's eine herunterladbare Datei :D
 

Johntherippa

Gast
Schaut ja schonmal interessant aus.

So wie ich das sehe, kann man dieses Tool schon testen, indem man sich den Code bei Sourceforge herunter lädt und selbst kompiliert.

Was für eine Datenbank verwendest du?

Ach ja und unter Town Properties, hast du ja Einheitentypen und Spezialgebäude drinnen. Speichert deine Anwendung das lokal ab, was man für sich eingibt?
 
Zuletzt bearbeitet von einem Moderator:
Das sieht wirklich sehr vielversprechend aus!! Ich hab mir immer ein Kartentool gewünscht, dass die wahren Einzugsgebiete der Allianzen anzeigt und keine Verdeckung bei überlappenden Einzugsgebieten von später eingetragenen Allianzen wie bei Grepomaps. Denn da wird das Ergebnis meist ziemlich verfälscht, wenn man die Reihenfolge der eingetragenen Allianzen ändert...
Bei Grepomaps hätte man es meiner Meinung nach so machen sollen, dass die Inseln nach der Allianz eingefärbt werden, welche die meisten Städte auf der jeweiligen Insel besitzt und nicht danach welche Allianz man als letztes eingetragen hat.

Dein Tool scheint da noch eine Stufe weiter zu gehen, wie es ausschaut! :)

Gefällt mir! Kanns kaum erwarten das Tool auszuprobieren!