PBeM-Spiele
Aktuelle Zeit: 28.03.2024 14:53

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 12 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags: World Editor
BeitragVerfasst: 05.04.2018 15:04 
Offline
Mitglied
Mitglied

Registriert: 10.03.2014 11:40
Beiträge: 138
Ich lerne gerade GODOT und bastle als Übungsprojekt einen Editor / Mapviewer. Das Grundgerüst ist fertig (Scrollen, Zoom und Hexkarte malen), und so langsam geht es daran auch etwas in einem sinnvollem Format einzulesen und abzuspeichern. Format der Wahl ist Json. Ich dachte daran alles was ich (noch) nicht interpretieren kann einfach als Textblock an der jeweiligen Region einzublenden, so das man bei Bedarf Kleinigkeiten schnell ändern kann, oder sich Werte für Scripte heraussuchen kann.

Dafür braucht es aber bereits besprochene Import und Export Funktion aus dem Eressea Server. Ich würde mich dann daran Orientieren.

@Enno, würdest du da ein Export schreiben das ein Json File ausgibt und mir mal ein Beispiel Export zukommen lassen?
Am besten von einem echten Datenfile, z.B. Deveron von vor X Runden oder so was? Das ist doch eingestellt wenn ich das richtig verstanden habe.
Der nächsten Schritt wäre dann eine Importfunktion.

PS: Ich habe mir die Bildchen von Magellan ausgeliehen, das ist doch OK oder? Das da gar keine "richtigen" also gleichseitigen Hexfelder verwendet werden macht es zwar Mathematisch einfacher, aber wenn man das nicht auf dem Schirm hat ist das echt fies.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: World Editor
BeitragVerfasst: 08.04.2018 09:34 
Offline
PBEM-Gott
PBEM-Gott
Benutzeravatar

Registriert: 23.02.2002 19:29
Beiträge: 2152
Wohnort: Vestfold, Norwegen
Titel: Eressea Spielleiter
Das finde ich prima, und ich hoffe, Du teilst Deine Bemühungen öffentlich, wenn das Fortschritte macht. Ich habe Godot erwähnt, weil das von einem Freund entwickelt wurde, und ich Unity nicht vertraue, aber selber benutzt habe ich es noch nicht viel. Mein letzter Versuch scheiterte daran, dass ich einen "Open File" Dialog nicht hinbekommen habe, der mich einen Report von meiner Festplatte wählen lässt. Die Dokumentation war da eher spärlich, und ich wollte Juan nicht mit doofen Fragen belästigen.

Zum JSON-Export: Es gibt keinen JSON-Report. Also, es gibt Code dafür, aber der ist nicht in Gebrauch, und auch nicht funktionsfähig, oder fertig ausgedacht. Aber über so ein Format habe ich schon oft nachgedacht.

Ein Problem ist, dass unsere Objekte keine UUIDs haben, oder wenn sie so etwas besitzen (Regionen haben eine ID), dann geht sie verloren: Viele Karten, die ich als Spieler benutze, haben keine IDs, nur Koordinaten. Und die Koordinaten sind von einem gemeinsamen Ursprung abhängig. So eine ID braucht man, wenn an einer Einheit stehen soll, in welcher Burg, Region, Schiff sie steht. Der CR macht das, indem er eine Hierarchie von Objekten speichert (welche Schiffe, Einheiten, Burgen sind in de Region), oder die vom Spieler gesetzte ID benutzt (der Kapitän des Schiffes, Besitzer der Burg, etc). Die ist aber vom Spieler gewählt und wegen NUMMER nur innerhalb des selben Reportes gültig.

Man kann ein Format definieren, dass davon ausgeht, das alle diese IDs konstant sind (innerhalb eines einzelnen Reports sind sie das ja), und das man Reporte eben nicht mergen kann. Ein Client müsste dann jeden Report als ganzes im Speicher halten, und relative Koordinaten-Verschiebungen oder wechselnde Einheitennummern zur Laufzeit auflösen.

Ich würde aus dem Server dann dictionaries per Objekt-Typ exportieren wollen, also im Top-Level:
Code:
{
    "turn": 1071,
    "faction": 7,
    "regions": {},
    "buildings": {},
    "units": {},
    "ships": {},
    "factions": {},
}


Dabei stellt sich wieder einmal die Frage nach der Sprache. Im Eressea-CR ist ein Durcheinander aus Englisch und Deutsch. Das würde ich gerne bei der Gelegenheit komplett exorzieren. Alles ist Englisch, und Übersetzungen macht der Client.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: World Editor
BeitragVerfasst: 08.04.2018 09:35 
Offline
PBEM-Gott
PBEM-Gott
Benutzeravatar

Registriert: 23.02.2002 19:29
Beiträge: 2152
Wohnort: Vestfold, Norwegen
Titel: Eressea Spielleiter
CTD hat geschrieben:
PS: Ich habe mir die Bildchen von Magellan ausgeliehen, das ist doch OK oder? Das da gar keine "richtigen" also gleichseitigen Hexfelder verwendet werden macht es zwar Mathematisch einfacher, aber wenn man das nicht auf dem Schirm hat ist das echt fies.


Ich weiß nicht, wer die Bilder von Magellan gezeichnet hat, aber da Magellan unter GPL lizenziert ist, solltest Du machen können, was Du willst, so lange Du es nur für den Eigenbedarf tust.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: World Editor
BeitragVerfasst: 10.04.2018 09:59 
Offline
Mitglied
Mitglied

Registriert: 10.03.2014 11:40
Beiträge: 138
Ich habe den momentanen Stand mal hier abgelegt:
https://ctd.itch.io/eressea-world-builder

Gui ist erstmal benutzbar, was ich als nächstes machen will ist die load und save Funktion.
Ein github kommt auch noch.

Was ich vom Server will ist ja eher ein Export der "Datenbank" und weniger einen klassischen Report.
Ziel soll sein das man die Welt exportieren kann, dann bearbeiten, und dann wieder in die "Datenbank" des Servers zurück spielen kann, also Importieren.

Intern hat doch jede Region eine ID, und alles andere ist unter die Regionen als "rootknoten" sortiert wenn ich das richtig im Kopf habe, oder nicht?
Damit ließe sich doch arbeiten, aber die ID der Region muss natürlich mit in den Export. Sonst wird das mit dem Import etwas schwierig.
Oder liegen z.B die Units als eigener Block vor mit einem Zeiger auf ihre Region in der "Datenbank"?
Dann müsste der am besten auch mit da rein.
Das soll dann natürlich nicht unbedingt so als Report an die Spieler verschickt werden.

Vielleicht macht man das auch gleich in der "Load / Save" Funktion des Servers, und ersetzt langfristig das Binäre File mit einem Json.
Wenn das nicht arg groß wird. Wie viel MB ist das E2 file jetzt?

Ein Zusammenführen von Reports verschiedener Runden ist nicht nötig / Sinvoll.
Aber möglicherweise die Option beim Export durch den Server einen Bereich der Karte Angeben zu können.
Der Import sollte entsprechend nur Regionen und Zubehör überschreiben das er Findet. Das muss man sich aber noch mal genau überlegen, um keine Inkonsistenzen zu erzeugen.

Sprache:
Alles Englisch und eine Übersetzungsmatrix am Ende damit im NR nicht etwa andere deutsche Begriffe verwendet werden als im Client ist gut.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: World Editor
BeitragVerfasst: 11.04.2018 16:50 
Offline
PBEM-Gott
PBEM-Gott
Benutzeravatar

Registriert: 23.02.2002 19:29
Beiträge: 2152
Wohnort: Vestfold, Norwegen
Titel: Eressea Spielleiter
Ich hätte da gleich weiter gedacht, an ein Format das auch ein Webservice oder ein Client benutzen können, aber du hast Recht, ein Export braucht sich um viele der Probleme nicht zu kümmern. Dafür muss er natürlich nah an den internen Strukturen arbeiten. Das ist eine Menge Arbeit.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: World Editor
BeitragVerfasst: 12.04.2018 08:28 
Offline
Mitglied
Mitglied

Registriert: 10.03.2014 11:40
Beiträge: 138
Und wenn man in der save.c in den write functions als ersten Schritt einfach paralell die Wert in ein JSON file wirft, und so ein JSON save erzeugt?
Also z.B. write_ship() kopieren nach write_ship_json() und dann einfach beide Funktionen direkt hintereinander aufruft statt nur write_ship().
Das sollte vom Aufwand her nicht so schlimm sein, und auch nix kaputt machen. Dann kanst du schauen wie der Import Sinn macht und ich kann mich um die load und save Funktion basierend auf der JSON Datanbank im Editor kümmern.

Wenn man das JSON save erstmal so hat, sieht man auch eher wo da was sinvoll zu optimieren wäre. Vermutlich schon beim anpassen der Funktionen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: World Editor
BeitragVerfasst: 12.04.2018 19:39 
Offline
PBEM-Gott
PBEM-Gott
Benutzeravatar

Registriert: 23.02.2002 19:29
Beiträge: 2152
Wohnort: Vestfold, Norwegen
Titel: Eressea Spielleiter
So ein Export ist eine Heidenarbeit. Du willst save.c kopieren, und (Pseudocode) jeglichen Code der Form WRITE_INT(u->number) durch JSON_ADD_INT(json, "number", u->number); ersetzen? Mal abgesehen, dass man sich dabei die Finger wund schreibt, hat man dann am Ende die doppelte Menge Code, die man in Zukunft warten muss. Jedes neue Datum, dass im Datenfile landet, soll ja auch in den Export. So eine Code-Duplizierung haben wir schon zwischen CR und NR, und die ist ständig desynchronisiert.

Und dann stellt sich mir die Frage: Wozu? Du wolltest doch ein Tool bauen, mit dem man eine initiale Welt konstruieren kann, die man dann als Spielleiter in den Server importiert. Da braucht man doch einen Import, keinen Export, oder sehe ich da falsch? Dazu kommt, dass man bei so einem Entwurf nicht jeden Wert setzen will (die HP einzelner Einheiten? Eher nicht), ein voller Import und Export mir also unnötig erscheint.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: World Editor
BeitragVerfasst: 13.04.2018 08:14 
Offline
Mitglied
Mitglied

Registriert: 10.03.2014 11:40
Beiträge: 138
Eine neue Welt zu erstellen ist sicher der wichtigste Punkt.
Wenn es aber nur darum geht, könnte man vom Worlbuilder oder duch ein Script aus dem json LUA code erstellen lassen, so das man am Server gar nix machen muss.
Daten aus dem Server in das Tool zu bekommen wäre in diesem Fall unnötig.

Meine Intention war ein Tool zu schaffen mit dem ich auch zur Laufzeit komfortable in den Server eingreifen kann. Da muss natürlich alles Exportiert werden, auch wenn es im Builder gar nicht angezeigt wird, damit man es wieder zurückspielen kann.

Doppelter Code ist natürlich misst, daher ja die Frage ob es nicht Sinn macht den alten save-code nach einer Testphase zu löschen, und auf ein JSON File als Datenbank umzusteigen. Ich weiß nur nicht ob das dann nicht in den Gigabyte Bereich geht für E2, der Overhead ist ja nicht so ganz klein.
Praktischer und viel schneller bei der Fehlersuche ist es allemal.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: World Editor
BeitragVerfasst: 15.04.2018 05:48 
Offline
Anfänger
Anfänger
Benutzeravatar

Registriert: 25.12.2016 00:13
Beiträge: 41
Wohnort: Shanghai
Heute hab ich mal ein bisschen mit rumgespielt, hauptaechlich weil ich einen netten Mapviewer suche, nicht unbedingt editor (aber wer weiss vielleicht starte ich meine Spielidee ja bald :))

Ich hab probiert eine 100x100 Karte zu erstellen kriege aber nur einen Haufen fehlermeldungen dieser art:

Code:
ERROR: push_call: Message queue out of memory. Try increasing 'message_queue_size_kb' in project settings
   At: core/message_queue.cpp:56.
failed method: RichTextLabel:_update_callback target ID: 91787
TOTAL BYTES: 1048560
NULL count: 0
CALL _update_callback: 43676
CALL _update_minimum_size: 12
CALL _sort_children: 2


Es klappt aber fuer kleine Karten (10x10).

Mein Hinweis aus einer Produktmanager Sicht:

Versuche einen Use case zu finden den dein Programm wirklich gut abdeckt und finde echte User die willens sind dem Ding eine faire Chance zu geben.
Soweit ich weiss gibt es nur 2-3 Leute hier die aktiv eine Eressea-artige Partie betreiben, was sind deren wichtigstens Problempunkte?

Fuer mich zum Beispiel waere es zu anstengend eine Karte Region fuer Region zu erstellen, wenn die Autogenerierung im Kommandozeilen tool bereits bessere und stimmigere Karten erstellt als ich es vermutlich je per Hand leisten wuerde.

Wenn Du das Projekt hauptsaechlich fuer dich selber machst und ein bisschen Programmier erfahrung zu kriegen, dann schreib am besten ein Tool dass du selber verwenden kannst.

Gruss,
Wider


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: World Editor
BeitragVerfasst: 16.04.2018 08:11 
Offline
Mitglied
Mitglied

Registriert: 10.03.2014 11:40
Beiträge: 138
Das Problem hab ich gelöst, aber 100 mal 100 ist auf meinem Rechner so etwa das Limit.
Ich kann 200 mal 200 erstellen, aber die Performance ist so schlecht, das es nicht mehr sinnvoll zu benutzen ist.
Vermutlich muss ich das Konzept wie ich die Karte darstelle und benutzt noch mal überarbeiten.

Wenn man keine Karte vorliegen hat die man für ein Spiel nachzeichnen will, ist der Zufallsgenerator den man im Server hat schon gut.
Mit einer Import / Export Funktion kann man den ja auch nutzen, sonst muss ich sehen ob man etwas in der Art in den Editor baut.
Aber eine masse Arbeit ist das dennoch, wenn man da eine größere Karte erstellen will.

Und ja, Hauptanwender bin ich und mein hoffentlich wachsender GODOT skill.

Das ganze als Mapviewer zu nutzen ist natürlich auch ein schöner Anwendungsfall, zumal man auch nach Android und IOS exportieren kann.
Aber das ist noch ein weiter Weg.
Hierfür wäre dann der von Enno erwähnte JSON Report sinnvoll, denn ich wollte eigentlich keinen Support für das CR Format implementieren.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: World Editor
BeitragVerfasst: 16.04.2018 09:25 
Offline
Mitglied
Mitglied

Registriert: 10.03.2014 11:40
Beiträge: 138
Nach ein paar Tests scheinen etwa 1 Million Sprites das Maximum zu sein mit dem GODOT zumindest auf meinem Rechner und ohne an irgendwelchen Settings zu drehen zurechtkommt.
Dazu würde mich mal interessieren, wie viele Regionen hat E2 im Moment?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: World Editor
BeitragVerfasst: 24.04.2018 18:17 
Offline
PBEM-Gott
PBEM-Gott
Benutzeravatar

Registriert: 23.02.2002 19:29
Beiträge: 2152
Wohnort: Vestfold, Norwegen
Titel: Eressea Spielleiter
CTD hat geschrieben:
Dazu würde mich mal interessieren, wie viele Regionen hat E2 im Moment?


170352


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 12 Beiträge ] 

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 56 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
Webhosting by sunrise design ohg