PBeM-Spiele
Aktuelle Zeit: 18.11.2018 22:16

Alle Zeiten sind UTC + 1 Stunde




Ein neues Thema erstellen Auf das Thema antworten  [ 16 Beiträge ]  Gehe zu Seite 1, 2  Nächste
Autor Nachricht
 Betreff des Beitrags: Kartentool in Lua
BeitragVerfasst: 18.03.2018 15:41 
Offline
PBEM-Gott
PBEM-Gott
Benutzeravatar

Registriert: 23.02.2002 19:29
Beiträge: 2115
Wohnort: Vestfold, Norwegen
Titel: Eressea Spielleiter
Update 19.03.2018: Die Kommandozeile hat sich geändert, und Regionen ohne ID werden nicht mehr ignoriert.

Update 12.05.2018: Der bug, der Regionskoordinaten als Kommazahlen gespeichert hat, ist gefunden und repariert. Eine neue merge.exe habe ich auch gebaut, und mit origin.lua ein Tool, um den Ursprung einer Karte zu verschieben (dafür aber keine .exe).

Ich spiele seit 76 Wochen wieder Eressea, und eine der lästigsten Sachen ist für mich, wöchentlich den CR in eine Karte einzufügen. Ich traue ja den ganzen getauschten nicht, da sind viele Gletscher drauf, die es nicht mehr gibt, und Regionen haben veraltete Namen, usw.

Was ich mir gewünscht habe, ist ein Tool, in das ich eine Liste von CRs hinein werfen kann, und wo dann ein kombinierter rauskommt, der nur die Karteninformation enthält. Und weil es so etwas nicht gab, habe ich es heute selber geschrieben: https://github.com/ennorehling/luatools

Weil die meisten (besonders Windows-User) sicher keinen Lua Interpreter installiert haben, habe ich das ganze in eine Windows (x64) .exe Datei kompiliert: https://www.eressea.kn-bremen.de/eressea/merge.exe

Aufruf von der Kommandozeile (oder einer .BAT Datei) wie folgt:
Code:
merge.exe -o output.cr map1.cr map2.cr ...


Oder alternativ, auf einem Mac oder Linux-Rechner der Lua installiert hat:
Code:
lua merge.lua -o output.cr map1.cr map2.cr ...


Dazu ist es nötig, dass jeder CR mindestens eine Region gemeinsam mit den vorherigen hat, damit das Programm weiß, wie sie zusammen gehören. Eventuelle Verschiebungen im Koordinaten-Ursprung merkt es dann selber. Am Ende steht in output.cr die erzeugte Karte. Die Astralebene oder andere Ebenen werden derzeit der Einfachheit halber ignoriert.

Das ganze ist extrem rudimentär, besteht aus weniger als 150 Zeilen Code, und löst genau mein Problem, und nicht mehr als das. Der Code sollte verständlich genug sein, dass Erweiterungen einfach zu schreiben sind (z.B. komplexere Kommandozeilen-Parameter, oder matching auf Basis von Koordinaten-Offsets, Regionsnamen und -terrain). Leider ist das kompilieren in ein Windows-EXE echt nervig.

Vielleicht hilft es ja noch jemandem? Dann würde ich mich über Feedback freuen, oder über Vorschläge für neue Features.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Kartentool in Lua
BeitragVerfasst: 18.03.2018 22:54 
Offline
Etabliertes Mitglied
Etabliertes Mitglied

Registriert: 05.05.2005 21:32
Beiträge: 181
Ich mach das mit Magellan. Das liest zwar keine txt-Liste ein, aber ich kann die cr-Dateien, die ich hinzufügen will einfach alle klickibunti auswählen.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Kartentool in Lua
BeitragVerfasst: 19.03.2018 01:43 
Offline
PBEM-Gott
PBEM-Gott
Benutzeravatar

Registriert: 23.02.2002 19:29
Beiträge: 2115
Wohnort: Vestfold, Norwegen
Titel: Eressea Spielleiter
Mir ist klar, dass das auch anders geht, aber darum ging es mir hier ja nicht. Ich will halt gerade kein Klickibunti, sondern etwas, das ich automatisieren kann, und das auf meinem MacBook, oder dem Raspberry Pi läuft. Also auch kein Java. Ich benutze Magellan nicht, und mache meine Befehle ganz klassisch mit einem Texteditor.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Kartentool in Lua
BeitragVerfasst: 19.03.2018 09:08 
Offline
Mitglied
Mitglied

Registriert: 10.03.2014 11:40
Beiträge: 138
Leider nicht das was ich mir aus der Überschrift erhofft hatte, aber dennoch hilfreich. Danke.

Was ich mir immer noch wünsche (aber einfach nicht die Zeit dafür finde) ist ein richtiger Karteneditor, der ein Format ausgibt, welches der Server versteht.
Also eine Import / Export Funktion der Welt die ich dann mit einem vernünftigen Klickibunti Programm Nachbearbeiten kann. Zumindest für den Start einer neuen Runde, also eine Import beim Server oder einfach gleich den richtigen lua Code zu Welterschaffung.

Ja es gibt da was im Server, aber das setzt der Kreativität leider extreme Grenzen. Und um Kreativ zu sein hilft Klickibunti.

Zum Thema Magellan, ist das eine Retro / weil das immer so war / weil Java doof ist Einstellung das du den Texteditor nimmst, oder warum kein Magellan?
Auf dem Macbook läuft der doch, wenn auch nicht so schön wegen dem Retinadispaly.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Kartentool in Lua
BeitragVerfasst: 19.03.2018 19:59 
Offline
PBEM-Gott
PBEM-Gott
Benutzeravatar

Registriert: 23.02.2002 19:29
Beiträge: 2115
Wohnort: Vestfold, Norwegen
Titel: Eressea Spielleiter
CTD hat geschrieben:
Leider nicht das was ich mir aus der Überschrift erhofft hatte, aber dennoch hilfreich. Danke.


Ich habe gerade noch eine Verwendung gefunden. In meiner "Gesamtkarte" sind eine Menge seltsamer Fehler, so z.B. Regionen, die das Terrain "unbekannt" haben. Das kann ich mit dem Code total easy reparieren:
Code:
cr = require('crfile')
cr.read('welt-e2.cr')
c = cr.read('welt-e2.cr')
for k, v in pairs(c) do if v.terrain=='unbekannt' then c[k] = nil end end
cr.write('clean.cr', c)


CTD hat geschrieben:
Was ich mir immer noch wünsche (aber einfach nicht die Zeit dafür finde) ist ein richtiger Karteneditor, der ein Format ausgibt, welches der Server versteht.


Man kann mit CSMapFX Karten editieren (allerdings nicht so komfortabel wie in einem Malprogramm) und die dann speichern, das wäre vielleicht der Editor den Du suchst? Damit kannst Du Dir einen CR deiner Welterstellen (also, die Terrains jedenfalls).

Der Server kann allerdings keinen CR importieren, das müsste man implementieren, aber dann kommt ein CR-Parser in den Server, und das ist etwas viel Komplexität.

Alternativ kann man die Karte aus einem Script heraus erzeugen, das man mit der hier präsentierten Library erzeugen könnte... Code, der neuen Code schreibt, ist immer lustig.

Zitat:
Ja es gibt da was im Server, aber das setzt der Kreativität leider extreme Grenzen. Und um Kreativ zu sein hilft Klickibunti.


Ich komme mit dem Curses-Editor sehr gut zurecht, aber ich mache jede Woche nicht mehr als ein Dutzend neue Regionen. Kompliziertere Dinge sollten auf jeden Fall über externe Tools gemacht werden, der Server soll möglichst nicht plötzlich OpenGL als Dependency haben ;-)

Zitat:
Zum Thema Magellan, ist das eine Retro / weil das immer so war / weil Java doof ist Einstellung das du den Texteditor nimmst, oder warum kein Magellan?


Ich verweigere die Installation von Java. Und ein bisschen ist es auch "weil das so gehen soll, und damit es geht, muss es jemand machen".


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Kartentool in Lua
BeitragVerfasst: 19.03.2018 20:32 
Offline
PBEM-Gott
PBEM-Gott
Benutzeravatar

Registriert: 23.02.2002 19:29
Beiträge: 2115
Wohnort: Vestfold, Norwegen
Titel: Eressea Spielleiter
Ach, viel zu kompliziert gedacht. Der Server enthält ja eine Lua-Interpreter. Der kann das crfile.lua Modul aus diesem Projekt laden, einen externen CR laden, und dann die Regionen über die Bindings erzeugen. Total easy, CR-Import in zwei Minuten geschrieben.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Kartentool in Lua
BeitragVerfasst: 20.03.2018 09:26 
Offline
Mitglied
Mitglied

Registriert: 10.03.2014 11:40
Beiträge: 138
Guter Anfang, wenn man "nur" eine Karte haben will.
Aber ich dachte schon daran auch die Ressourcen (Bäume, Eisen, Steine, Laen) sowie Gebäude und Einheiten platzieren zu können, um eben kreativ Szenarien erstellen zu können.
Ein Editor der das kann (und sei es erstmal mit recht vielen "freien Text Feldern" für Gebäude und Einheiten sowie deren Ausrüstung), würde es auch "nicht Programmierern" erlauben Szenarien erstellen.
Hattest du nicht mal ein Grundgerüst für ein Maptool geschrieben? Das lässt sich ja vielleicht auf bohren.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Kartentool in Lua
BeitragVerfasst: 21.03.2018 08:35 
Offline
PBEM-Gott
PBEM-Gott
Benutzeravatar

Registriert: 23.02.2002 19:29
Beiträge: 2115
Wohnort: Vestfold, Norwegen
Titel: Eressea Spielleiter
Ich habe bestimmt nie ein Grundgerüst für einen Editor geschrieben. Meine Hoffnung ist, dass man das nicht tun muss. Es gibt da ja zum Beispiel den Tiled Editor: https://thorbjorn.itch.io/tiled - den habe ich schon einmal erwahnt, glaube ich, und für Spiele mit quadratischen Tiles ist der ziemlich beliebt, glaube ich.

Damit kann man auch Hex-Karten machen, und angeblich kann man jedem Objekt auf der Karte "custom properties" geben. Wenn Du Lust hast, Dir da einen Workflow zurecht zu legen, und man das in einem lesbaren Format exportieren kann, dann würde ich mir ansehen, wie man das in den Server importiert kriegt. Ich habe halt nur keine Lust, alles selbst zu machen, und mich durch die spärliche Dokumentation zu kämpfen, Bildchen zu zeichnen, usw. :-)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Kartentool in Lua
BeitragVerfasst: 21.03.2018 10:01 
Offline
Mitglied
Mitglied

Registriert: 10.03.2014 11:40
Beiträge: 138
Nicht für einen Editor, sondern für einen Client.
Aber das kommt ja aufs selbe drauf raus, man braucht erstmal was das eine Hexkarte anzeigt.
Ich meinte das hier: viewtopic.php?f=16&t=4054

Tiled hatte ich mir schon mal angeschaut, und als Editor verworfen, weil gerade Regionsressourcen und Einheitenausrüstung damit nicht umsetzbar sind.

Jetzt kann man mit dem Editor natürlich schon gleich Lua-code erzeugen lassen, aber dann hat man keine Möglichkeit das für Änderungen im Spiel zu nutzen.

Wie aufwendig siehst du es eine Export und Import Funktion der Welt (oder eines Definierbaren Teils davon) im Server zu integrieren, und welches Format würdest du vorschlagen?


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Kartentool in Lua
BeitragVerfasst: 21.03.2018 10:48 
Offline
PBEM-Gott
PBEM-Gott
Benutzeravatar

Registriert: 23.02.2002 19:29
Beiträge: 2115
Wohnort: Vestfold, Norwegen
Titel: Eressea Spielleiter
Reden wir jetzt von einem Client oder einem Editor? Ich bin vielleicht verwirrt, hatte aber den Eindruck, wir sprechen von Import und Export einer Welt mit dem Eressea-Server, also einem Editor. So einen Import zu schreiben, halte ich für nicht zu kompliziert. JSON ist immer gut als Format, aber auch mit anderen Textformaten sollte das gehen. Kein XML, keine Binärdateien.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Kartentool in Lua
BeitragVerfasst: 21.03.2018 17:20 
Offline
Mitglied
Mitglied

Registriert: 10.03.2014 11:40
Beiträge: 138
Ja, wir reden von einem Editor, also Json import / export der Welt für ein neues oder auch laufendes Spiel.

Aber dennoch braucht man ja eine irgendwie geartete Schnittstelle für den Menschen vor dem Monitor, und da dachte ich besagtes Projekt wäre möglicherweise brauchbar.
CRs kann es ja schon lesen (zumindest in Grundzügen), da muss noch json rein und mehr Dinge die angezeigt werden. Also im Prinzip ein Mapviewer.
Und dann halt noch die Edit-Funktion. Ein Client kann ja alles bis auf die Edit-Funktion nach nutzen.

Die Frage ist eher hält du den Ansatz von damals immer noch für sinnvoll, oder würdest du das mittlerweile mit etwas anderem lösen?
Mehr oder weniger Plattformunabhängige SDKs gibt es ja wie Sand am Meer.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Kartentool in Lua
BeitragVerfasst: 23.03.2018 17:10 
Offline
PBEM-Gott
PBEM-Gott
Benutzeravatar

Registriert: 23.02.2002 19:29
Beiträge: 2115
Wohnort: Vestfold, Norwegen
Titel: Eressea Spielleiter
Ich glaube nicht, dass es da viel Überschneidungen gibt. Die Ziele sind sehr verschieden. Ein Client braucht keine Editierfunktion. Die Preview-Funktion für Bilder im OS ist auch kein Photoshop-Ersatz, und es wäre falsch, sie als Basis zu benutzen, nur weil "Bild laden und anzeigen" ein kleiner Teil der nötigen Funktionalität ist.

CRs konnte mein Beispiel übrigens nicht lesen, das demonstriert nur Rendering und Bewegung einer (fest einprogrammierten) Karte mit Godot.

Was den Editor betrifft: Ich halte es für am sinnvollsten, einen Import (entweder aus einem CR oder anderen Format) zu programmieren, und sich nach schon existierenden Werkzeugen umzuschauen, als da etwas komplett neues zu entwickeln. Bei einem Client kommt man hingegen um Eigenentwicklung nicht herum.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Kartentool in Lua
BeitragVerfasst: 25.03.2018 05:44 
Offline
Anfänger
Anfänger
Benutzeravatar

Registriert: 25.12.2016 00:13
Beiträge: 41
Wohnort: Shanghai
Enno hat geschrieben:
Was ich mir gewünscht habe, ist ein Tool, in das ich eine Liste von CRs hinein werfen kann, und wo dann ein kombinierter rauskommt, der nur die Karteninformation enthält. Und weil es so etwas nicht gab, habe ich es heute selber geschrieben: https://github.com/ennorehling/luatools


Ich weiss, du magst kein Python, aber das sind genau die Geschichten die ich mit meiner eressea.py erledige.
Hier hab ich mal gerade ein MVP (ohne Astralebene und Ursprungsverschiebung) gebastelt:

Code:
#!/usr/bin/python
#coding=utf-8

from governor.eressea import Report, History
import sys

def get_map(report):
    result = dict()
    for r in report.regions:
        result[r.x, r.y] = r
    return result

def combine_maps(map1, map2):
    map1.update(map2)
    return map1

if __name__ == '__main__':

    history = History.read_directory("reports")

    result = history.map_reduce(get_map, combine_maps)
    output = open("result.cr", "w")
    for region in result.values():
        output.write("REGION %d %d\n" % (region.x, region.y))
        output.write((u'"%s";Name' % region.attributes['Name']).encode("utf-8"))
        output.write("\n")
        output.write((u'"%s";Terrain' % region.attributes['Terrain']).encode("utf-8"))
        output.write("\n")

    output.close()


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Kartentool in Lua
BeitragVerfasst: 26.03.2018 10:25 
Offline
Mitglied
Mitglied

Registriert: 10.03.2014 11:40
Beiträge: 138
Zitat:
Was den Editor betrifft: Ich halte es für am sinnvollsten, einen Import (entweder aus einem CR oder anderen Format) zu programmieren, und sich nach schon existierenden Werkzeugen umzuschauen, als da etwas komplett neues zu entwickeln. Bei einem Client kommt man hingegen um Eigenentwicklung nicht herum.


Das beste was es da gibt ist Tiled, aber dann muss man wieder eine 20 Seitige Anleitung schreiben wie genau man das Setup machen muss, und was man wofür wie benutzt, und Bilder bereitstellen die erst noch rein geladen werden müssen und so weiter.
Was ich mir vorstelle ist vor allem einfach zu bedienen und halbwegs auf Eressea angepasst. Tiled mag für dich und mich noch ein halbwegs gangbarer Weg sein, aber wenn man möchte das jemand der Kreativ ist aber nicht viel Ahnung von programmieren hat schöne Welten erschaffen kann, dann kommt man nicht um eine eigene Lösung drumherum.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags: Re: Kartentool in Lua
BeitragVerfasst: 26.03.2018 13:15 
Offline
PBEM-Gott
PBEM-Gott
Benutzeravatar

Registriert: 23.02.2002 19:29
Beiträge: 2115
Wohnort: Vestfold, Norwegen
Titel: Eressea Spielleiter
So jemanden, den Du da beschreibst, kenne ich gar nicht. Tools zu bauen für Menschen, die es nicht gibt, habe ich aufgegeben.


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 16 Beiträge ]  Gehe zu Seite 1, 2  Nächste

Alle Zeiten sind UTC + 1 Stunde


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 15 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:  
cron
Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
Webhosting by sunrise design ohg