Umstrukturierung DereGlobus?

  • Das Problem ist weniger xml/kml an sich etwas besser darzustellen als mehr nur die Informationen darzusetllen die für die übersetzung wichtig sind und nicht den ganzen Haufen and Einträgen die für die funktionalität zuständig sind (also zB wo es dargestellt wird und wie). Man bräuchte also zB ein Progrmam was diese Daten unterscheidet und nur die übersetzungsrelevanten Daten anzeigt. Was ich auch vorher noch vergessen hatte zu erwähnen ist, dass man sich ein Server-Programm herunterladen muss um sich seine eigene Kopie von DereGlobus in Google Earth anzuschauen. Für einen Informatik bewanderten ist das kein Ding aber es ist doch noch eine Herausforderung für Andere.

  • So, mal wieder ein kleines Update. Ich habe grade mit Kennin ausführlich über eine neue Idee gesprochen und wir haben sie für insgesamt besser zu handhaben befunden. Ich bin grade dabei sie für einen kleinen Teil von DereGlobus umzusetzen um sie dann schon mal dafür testen zu können.

    Die Grundidee is, dass (fast) alle .kml Dateien die Google Earth benutz um den DereGlobus anzuzeigen nicht mehr von Hand geschrieben werden sondern von einem Programm generiert werden. Dieses Prgramm nimmt die Rohdaten über die verschiedenen Dinge die dargestellt werden sollen aus einer SQL-Datenbank. Die übersetzungen werden ebenfalls in dieser Datenbank gespeichert. Da die übersetungen in der Datenbank komplett getrennt von den restlichen Daten gespeichert werden und es Programme gibt die eine relativ einfache Benutzeroberfläche für das editierender Datenbank bieten gibt, sollte die Lernschwierigkeit für übersetzungen und auch für das spätere Hinzufügen von Daten gesenkt werden. Meine Idee ist es die php-basierende Abfrage von kml Dateine die ich vorher vorgestellt habe beizubehalten (Die Version mit der SQL Datenbank würde es aber natürlich auch sehr einfach machen für jede Sprache einen komplett unabhängigen DereGlobus zu generieren).

    Ich würde die Vor-und Nachteile wiefolgt zusammenfassen:

    + Einfachere Benutzeroberfläche

    + Bessere Trennung von Daten über Dere und über Darstellung in DereGlobus

    + Generische Datenbank die Problemlos für ganz andere Projekte benutzt werden könnte und einfach um nicht-DereGlobus relevante Daten erweitert werden könnte (nur mit entsprechender Erlaublis von Ulisses natürlich)

    + Für einfache änderungen/Erweiterungen werden keine xml/kml Kentnisse mehr benötigt

    - DereGlobus muss bei jeder änderung in der Datenbank neu "kompiliert" werden bevor die änderungen angezeigt werden (Dazu muss lediglich ein Programm ausgeführt werden aber es ist trozdem ein extra Schritt)

    - Für tiefgreifende Entwicklungen sind mehr Kentnisse erforderlich (php, kml/xml, C++/C und SQL)

    - Bestehende DereGlobus Daten müssen in die Datenbank übernommen werden

    Alles in allem überwiegen für mich die Vorteile. Sobald ich die erste kleine "Test-Umgebung" ffertig habe werde ich diese auch auf github hochladen damit sich alle die an den Details interessiert sind das noch genauer anschauen können. Ihr könnt natürlich auch wie immer eifach hier noch Fragen stellen ;)

  • Eine erste (noch sehr rudimentäre) Version des Programms um die DereGlobus .kml Dateien aus der SQL Datenbank zu "kompilieren" ist jetzt fertig. auf github (https://github.com/ShadowbladeXI/DereGlobus) kann man sich den momentanen Stand des Projekts herunterladen. Enthalten sind jetzt zusätzlich noch die SQL datenbank (mainDatabase.sqlite3), das programm um die .kml Dateien zu kompilieren (Quelldateien sind unter DevTools/generate_fromSQLite und damit ihr es einfacher ausprobieren könnt auch das fertige programm DevTools/generate/generate_fromSQLite-Release.exe ), ein Skelett für die aus SQL generierte version von DereGlobus (unter DereGlobus_SQLite) und ein .php Skript um sich die generierte Vesion in GoogleEarth anzeigen lassen zu können.

    Ich gebe hier mal eine Schritt-für-Schritt Anleitung wie ihr euch die Entwicklungs-Umgebung herunterladen und selber an der Datenbank herumspielen könnt. Ich werde aber auch viele Bilder einfügen für die die es mitverfolgen wollen und (verständlicherweise) nicht viel Zeit mit diversen Installationen verbringen wollen.

    1. Als erstes bruchen wir natürlich die Dateien von der DereGlobus Entwicklungs-Umgebung. Die könnt ihr von Github herunterladen. Wer sich nicht mit den einzelheiten von Git auseinandersetzen will lädt am besten einfach die .zip Datei herunter (Anleitung im Bild unten) unt entpack die dann.

    githubZipDownload.png


    2. Wenn ihr die DereGlobus Entwicklungs-Dateien herunterladet sind die als erstes mal einfach nur auf eurem Computer und nicht auf einem Server. Das .php Skript braucht aber einen Server um ausgeführt zu werden. Glücklicherweise gibt es Programme mit denen ihr ganz einfach kurzzeitig einen Server auf eurem Computer laufen lassen könnt den auch dann nur ihr auf eurem Computer benutzen könnt. Das war auch schon im vorherigen Konzept für DereGlobus notwendig. Hier ist die Einrichtungs Anweisung die ich vorher gepostet habe:

    Ich habe zB. XAMPP verwendet, das ist einigermassen Schmerzfrei zum Aufsetzen, selbst wenn man wie ich keine Ahnung von Servern hat. Wenn jemand es damit testen will, einfach die Installation durchziehen (Man braucht nichts von den optionalen Features und der Installationsort is ziemlich egal). Danach kann man den Ordner von Github einfach in den "htdocs"-ordner ziehen der im xampp Ordner liegt (der wiederum dor liegt wo immer man xampp installiert hat). Den Server selber startet man indem man "xampp-control.exe" (im xampp ordner) startet und dort auf den Starten-Knopf drückt. Danach kann man in Google Earth einen neuen Netzwerk-Link hinzufügen und die Adresse: "http://localhost/*Pfad zum test.php skript relativ zu htdocs*" eingeben. Wenn alles richtig gelaufen ist, sollte man dann die ganzen DereGlobus Inhalte sehen.

    Das ist eigentlich immer noch so gültig, mit der kleinen änderung, dass die Adresse den Pfad zu test_SQLiteVersion.php und nicht zu test.php haben muss. Bei mir ist die Adresse z.B. http://localhost/DereGlobus/test_SQLiteVersion.php

    3. In GoogleEarth sollte man dann die Karte von Aventurien (und auch von den anderen Kontinenten) sehen, allerdings ohne irgendwelche GoogleEarth Markierungen für zB Städte. Die Karten werden (noch) nicht von der Datenbank generiert sondern sind noch genau so gespeichert wie in alten DereGlobus. Ich empfehle in den Einstellungen von GoogleEarth unter "General" die Einstellung für "KML Error Handling" auf "Silently accept all unrecognized data" zu stellen. Die momentane Version von DereGlobus hat noch ein par kleine Probleme die nicht weiter schlimm sind aber ansonsten viele nerfige Nachrichten generieren.

    aventurienOhneMarker.jpg

    4. Um Einträge aus der Datenbank in .kml Dateien für DereGlobus zu kompilieren muss lediglich das programm generate_fromSQLite-Release.exe im Ordner DevTools/generate_fromSQLite ausgeführt werden (Das Programm sollte sich sehr schnell wieder beenden, vermutlich seht ihr nur ein kurzes flickern auf dem Bildschirm). Ich habe leider nur eine Version für Windows erstellt, tut mir Leid für alle mit anderen Betreibsystemen. In der Finalen Version wäre es natürlich ideal möglichst für alle gängigen Systeme ein fertiges Programm zu haben. Nach den Ausführen des Programms sollte im Ordner "DereGlobus_SQLite" ein neuer Ordner "AutoGeneratedContent" erstellt worden sein. In diesem Ornder sind alle Dateien die aus der Datenbank generiert wurden.

    autoGeneratedContentFolder.png

    5. Um die neuen Einträge in GoogleEarth zu sehen muss man kurz einen rechtsklick auf den in Schritt 2. erstellten Network Link machen und Refresh auswählen (alternativ kann man auch einfach GoogleEarth neu starten). Die Städte Nostria und Andergast (die einzigen die schon in der Datenbank sind) sollten dann Angezeigt werden. Momentan werden sie noch mit unschönen Tag-Namen und einfachen Pins als Markern angezeigt. Man bekommt auch noch keine zusätzlichen Informationen wenn man draufklickt. Das alles kommt noch.

    aventurienMitMarker.jpg

    6. Um die Datenbank anzuschauen und zu verändern kann man zB den DB Browser for SQLite (https://sqlitebrowser.org/) verwenden. Man kann einfach die mainDatabase.sqlite3 Datei mit dem Programm öffnen. Um sich die Daten als Tabellen anzeigen zu lassen kann man auf den "Browse Data" Reiter gehen.

    7. Wir können zB die Stadt Joborn hinzufügen (Siedlungen sind das einzige was momentan von DereGlobus automatisch generiert werden kann). Dazu gehen wir zuerst auf die tabelle "entity". Diese Tabelle speichert alle Einträge irgendeiner Art. Wir können dort eine neue Zeile hinzufügen und die id joborn eingeben. Keine 2 IDs dürfen gleich sein, mit dem Eintrag der ID in der "entity" Tabelle reservieren wir gewissermassen diese ID für die Stadt Joborn die wir jetzt eintragen. Wenn danach jemand zB eine Person die Joborn heisst in die Datenbank eintragen will muss man sich eine neue ID dafür ausdenken (zB joborn_person oder falls es keine Person sondern eine gleichnamige Stadt aber im Horasreich ist könnte man zB auch joborn_horasreich wählen). Die bereits bestehenden Einträge für Nostria und Andergast sind zB bereits mit "_stadt" am Ende, um sie von den Königreichen zu unterscheiden die auf jeden Fall noch in die Datenbank kommen werden.

    entity.jpg

    Nachdem wir die ID mit dem Eintrag in "entity" gesichert haben können wir die Informationen in die Datenbank eintragen. Allerdings können wir die Informationen nicht direkt in die Tabelle "settlement" eintragen. Jede Siedlung ist automatisch auch ein Ort und braucht darum einen entsprechenden Eintrag in der "location" Tabelle. Die Datenbank überprüft dies auch direkt und lässt gar nicht zu dass wir eine Siedlung hinzufügen die kein Ort ist. Die Einträge müssen also von allgemein zu spezifisch in strikter Reihenfolge in die Datenbank eingetragen werden. Wir gehen also in die "location" Tabelle, fügen eine neue Zeile hinzu und geben dort als id joborn ein (es muss die gleiche id sein wie die die wir in die "entity" Rabelle eingetragen haben). Die restlichen Einträge können wir erstmal auf NULL lassen.

    location.jpg

    Jetzt können wir das gleiche auch noch für die "settlement" Tabelle machen

    settlement.jpg

    Jetzt haben wir Joborn als Siedlung definiert. Allerdings kann es noch nicht im DereGlobus angezeigt werden, da wir keine Koordinaten definiert haben. Die Einträge für location_n_deg und location_e_deg (Position Nördlich/östlich in Grad). Dort steht noch NULL (Achtung NULL ist nicht gliech 0, NULL heisst soviel wie "nicht definiert" oder "unbekannt" in diesem Zusammenhang, wären beide Einträge auf 0 würde Joborn auf dem Schnittpunkt des äquators mit dem 0-Meridian eingezeichnet werden). Wir tragen also noch die Koordinaten für Joborn, 31.88746936818142 für location_n_deg und -1.966302493336189 für location_e_deg (negativ östlich heisst natürlich westlich) ein. Jetzt können wir unsere änderungen speichern indem wir auf "Write Changes" klicken.

    coordinates.jpg

    Jetzt hat zunächst nur die Datenbank den Eintrag für Joborn. DereGlobus muss jetzt mit dieser änderung neu kompiliert werden. Dazu müssen wir wieder nur "generate_fromSQLite-Release.exe" erneut ausführen. Damit GoogleEarth die änderung anzeigt müssen wir wieder den Netzwerk-Link aktualisieren oder GoogleEarth neu öffnen.

    aventurienMitJoborn.jpg


    Der nächste Schritt für mich wird es sein, die Darstellung der automatisch generierten Siedlungen zu verbessern damit sie so schön angezeigt werden wie im alten DereGlobus. Nach meinem Plan sollte damit alles auch schon automatisch bereit sein für die übersetzungen.

    Danach werde ich mich vermutlich daran machen möglichst viele der bestehenden Daten im alten DereGlobus in die Datenbank automatisch zu kopieren, damit man nicht jeden einzelnen Eintrag mühsam von Hand hinzufügen muss.

  • Sieht schon mal SEHR gut aus! Ich bin beeindruckt! :)

    Thema letztes Bild:
    Ich geh mal sehr stark (99,99%) davon aus, dass wegen der Probephase noch nicht alles groß geschrieben ist, und auch noch _stadt dabei steht.

    ======================================================

    Sinjoor Elegast Vandervenga, ehem. Kuslik-Galahan
    Oberst des Ordens des zweifach geheiligten Famerlors.

    DVD-Profiler

  • Thema letztes Bild:
    Ich geh mal sehr stark (99,99%) davon aus, dass wegen der Probephase noch nicht alles groß geschrieben ist, und auch noch _stadt dabei steht.

    Jein. Technisch gesehen wird momentan für jede Siedlung die id als Name angezeigt. Es ist noch nicht implementiert den richtigen Namen aus der Datenbank auszulesen. Aber ja, das ist etwas was ich sehr bald angehen will zu implementieren. Dann sollten auch die Richtigen Namen da stehen (Sofern vorhanden sogar in der ausgewählten Sprache ;) )

  • Ich verstehe zwar nur Karawane; aber ich bin begeistert wie du den ollen DG ein Update verpasst.

    Pflicht des Historikers:
    das Wahre vom Falschen, das Gewisse vom Ungewissen, das Zweifelhafte vom Verwerflichen zu unterscheiden.

    (nach Johann W. von Goethe)

    Kinder deuten ohne Furcht in die Sterne, während andere, nach dem Volksglauben, die Engel damit beleidigen.

    (Vorrede der Grimms Märchen 1819)

  • Das klingt schonmal nach einer guten Richtung. Hast du vor, alle Daten per Hand zu übertragen oder planst du aus den existierenden Quellen (also vermutlich primär dem alten dereglobus) zu importieren.

    Ich werde Programme/Skripts schreiben um so viel wie möglich aus dem alten DereGlobus automatisch herauszuholen wie ich kann. DereGlobus alleine hat um die 8'000 Einträge Wenn ich mich recht erinnere, das wäre sehr aufwendig von Hand zu kopieren. ;)

  • Genau mein Gedanke. Sehr gut!

    Ich behalte ein Auge drauf. Solltest du bei bestimmten Skripten hängen, kannst du immer gerne posten, dann grüble ich auch ein bisschen drüber nach. Nur von kml und google maps habe ich leider keine Ahnung - und zu wenig Zeit mich tiefer einzuarbeiten. Manchmal hilft's aber auch einfach drüber zu quatschen ;)

  • (Und da nennt er sich Natan - der Weise ;) ^^ )

    Pflicht des Historikers:
    das Wahre vom Falschen, das Gewisse vom Ungewissen, das Zweifelhafte vom Verwerflichen zu unterscheiden.

    (nach Johann W. von Goethe)

    Kinder deuten ohne Furcht in die Sterne, während andere, nach dem Volksglauben, die Engel damit beleidigen.

    (Vorrede der Grimms Märchen 1819)

  • So, tut mir Leid, dass so lang kein Update kam. Allerdings war ich alles andere als untätig, desshalb hier jetzt mal ein Update was ich gemacht habe.

    Zunächst mal vorweg, der DereGlobus sieht jetzt so aus:

    Aventurien.jpg

    Jede Markierung ist eine Siedlung.

    Die gesamten Daten zu den Siedlungen habe ich mit einer Mischung aus einem Programm und manueller Hilfe (wenn das Programm über Sachen gestolpert ist die Probleme beritet haben) aus dem alten DereGlobus Datenset extrahiert und in die neue Datenbank geschrieben. Ich hab natürlich versucht Qualitäts-Kontrollen bei der automatisierten Generierung zu machen, aber es kann gut sein das einige Sachen vielleicht doch kleinere Fehler haben, ich konnt natürlich nicht alles kontrollieren. Die übertragung der Daten war tatsächlich die Arbeit die einen Grossteil der Zeit seit dem letzten Update gefressen hat.

    Dazu gibt es noch eine grosse Strukturelle Änderung im Programmcode. Alle Nicht-Informatikbegeisterten wird das vermutlich nicht interessieren, aber ich habe grosse Teile des Codes (der Teil der sich um den aufbau der kml Datien für Googl Earth kümmert und der Teil der die Daten aus der Datenbank ausliest und in eine C++ Struktur verpackt) als eigenständige Bibliotheken ausgeglidert. Die Idee dahinter (vorallem bei der Bibliothk die sich um die Datenbank kümmert) ist, dass jeder der die Datenbank für etwas anderes einsetzten will bereits ein C++ Interface zur Verfügung hat. Dazu kommt dass sich der ganze Aufbau einfacher Handhaben und testen lässt wenn er ein bischen besser strukturiert ist.

    Ein weiteres Update ist, dass die Namen jetzt richtig angezeigt werden. Falls vorhanden sogar in anderen Sprachen wenn man nicht Deutsch eingstellt hat. Es ist also alles bereit um die Übersetzungen einzubauen. Auch die Beschreibungen werden jetzt angezeigt wenn man auf eine Siedlung klickt.

    Was ich offensichtlich noch nicht gemacht habe ist die ganze Darstellung, die Markierungen sind immer noch die gleichen wie bim letzten Update. Da musste ich leider feststellen, dass die automatische Generierung für die passenden Icons für jede Siedlung nicht so einfach ist wie ich es mir gedacht hatte. Zudem muss ich noch einstellen, dass nicht alle Ortschaften angezeigt werden sondern die kleineren nur dann wenn man näher reinzoomt.

  • Ja, so sah der DG mit der Aktivierung für alle Orte aus. Und ähnlich wie bei goggleEarth müssten beim Reinzoomen weitere hinzukommen.

    Sind die Orte weiterhin mit WikiAventurica verknüpft?

    Pflicht des Historikers:
    das Wahre vom Falschen, das Gewisse vom Ungewissen, das Zweifelhafte vom Verwerflichen zu unterscheiden.

    (nach Johann W. von Goethe)

    Kinder deuten ohne Furcht in die Sterne, während andere, nach dem Volksglauben, die Engel damit beleidigen.

    (Vorrede der Grimms Märchen 1819)

  • Meinst du mit "verknüpft", dass ein Link zum Wiki in der Beschreibung drin ist? Das wurd tatsächlich nicht übernommen, aber das habe ich noch vor einzubauen. Ich will den Link aber separat zur Beschreibung in der Datenbank speichern, darum muss ich erst noch die Routinen anpassen.

  • Ja, deswegen hatten wir min. 2 Wikianer, die dafür sorgten das es überhaupt einen Eintrag gab.

    Pflicht des Historikers:
    das Wahre vom Falschen, das Gewisse vom Ungewissen, das Zweifelhafte vom Verwerflichen zu unterscheiden.

    (nach Johann W. von Goethe)

    Kinder deuten ohne Furcht in die Sterne, während andere, nach dem Volksglauben, die Engel damit beleidigen.

    (Vorrede der Grimms Märchen 1819)

  • Also sobald ich die Links separat in der Datenbank habe sollte es relativ Leicht sein diese zB mit einer Liste aller Siedlungen im Wiki Aventurica automatisch abzugleichen. Dann könnte man recht schnell sehen welche Einträge im DereGlobus noch fehlen die im Wini sind und umgekehrt. Anhand der Namen könnte man sogar versuchen automatisch seiten im Wiki zu Orten zu finden die im DereGlobus noch keinen Link haben, aber für die es schon einen Wiki-Eintrag gibt.

  • Das kann man gut abschätzen; wir waren zeitlich aktuell; also fehlt "nur" das was nach dem Ende noch kam - und davor fehlte. Aber da wir uns schon auf Uthuria vorbreiteten, dürfte kein Ort von DSA1-4 fehlen.

    Pflicht des Historikers:
    das Wahre vom Falschen, das Gewisse vom Ungewissen, das Zweifelhafte vom Verwerflichen zu unterscheiden.

    (nach Johann W. von Goethe)

    Kinder deuten ohne Furcht in die Sterne, während andere, nach dem Volksglauben, die Engel damit beleidigen.

    (Vorrede der Grimms Märchen 1819)

  • Das kann man gut abschätzen; wir waren zeitlich aktuell; also fehlt "nur" das was nach dem Ende noch kam - und davor fehlte. Aber da wir uns schon auf Uthuria vorbreiteten, dürfte kein Ort von DSA1-4 fehlen.

    Generell ist aber eine automatische Überprüfung interessant, denke ich. Auch andersherum: Orte die im DereGlobus existieren, aber noch keinen Wiki-Aventurica Eintrag haben - wobei's wenige sein sollten.

    Freut mich sehr, dass es mit dem Projekt stetig weitergeht :lol2:

  • Das kann man gut abschätzen; wir waren zeitlich aktuell; also fehlt "nur" das was nach dem Ende noch kam - und davor fehlte. Aber da wir uns schon auf Uthuria vorbreiteten, dürfte kein Ort von DSA1-4 fehlen.

    Den automatischn Abglich kann man halt auch in der Zukunft ganz einfach immer wider machen wenn zB einige neue Sachen schon eingefügt wurden aber noch nicht alles.

    Generell ist aber eine automatische Überprüfung interessant, denke ich. Auch andersherum: Orte die im DereGlobus existieren, aber noch keinen Wiki-Aventurica Eintrag haben - wobei's wenige sein sollten.

    Das sollte ebenfalls kein Problem sein.

  • Dafür gibt es doch Tester, oder ? ;)

    Mir fällt gerade ein das wir auch die Orts-Karten einbinden durften, in die man sich reinzoomte ... sind diese Karte (mit allen bekannten Gebäudelinks) noch vorhanden?

    Weil das wäre wirklich ein toller Schatz - diese "kompletten" Karten wiederzubekommen. :)

    Pflicht des Historikers:
    das Wahre vom Falschen, das Gewisse vom Ungewissen, das Zweifelhafte vom Verwerflichen zu unterscheiden.

    (nach Johann W. von Goethe)

    Kinder deuten ohne Furcht in die Sterne, während andere, nach dem Volksglauben, die Engel damit beleidigen.

    (Vorrede der Grimms Märchen 1819)