Lua Script IDE

Willkommen in der Transport Fever Community

Wir begrüßen euch in der Fan-Community zu den Spielen Transport Fever und Train Fever, den Wirtschaftssimulatoren von Urban Games. Die Community steht euch kostenlos zur Verfügung damit ihr euch über das Spiel austauschen und informieren könnt. Wir pflegen hier einen freundlichen und sachlichen Umgang untereinander und unser Team steht euch in allen Fragen gerne beiseite.

 

Die Registrierung und Nutzung ist selbstverständlich kostenlos.

 

Wir wünschen euch viel Spaß und hoffen auf rege Beteiligung.

Das Team der Transport-Fever Community


  • Ich TpF kommt man bekanntlich nicht um lua herum, wenn man modden möchte. Es gibt viele .lua Dateien an unterschiedlichen Stellen, aber auch .mdl, .con und einige andere sind nichts anderes als lua Dateien die ein Objekt mit einer bestimmten vordefinierten Struktur zurückgeben.


    Aus anderen Sprachen bin ich es gewohnt, dass meine IDE (meistens eclipse) mir eine Autovervollständigung anbietet und auch so eine Übersicht über erwartete Datentypen gibt.
    Da lua schwach typisiert ist, kann eclipse (mit ldt) von sich aus nur bis zu einem gewissen Grad diesen Luxus bieten.


    Wie macht ihr das also mit dem lua scripting bei TpF? Nutzt ihr überhaupt IDEs?
    Woher nehmt ihr die Informationen über die erwartete Struktur eines bestimmten Objekts? Schaut ihr immer bei Beispieldateien ab wie die Struktur sein muss?
    Woher nehmt ihr die Informationen welche Werte für die überall verstreuten enum artigen strings wie z.B. dem type Attribut einer Construction gültig sind? Ebenfalls indem ihr DAteien durchsucht und ggf. mal ug fragt?


    Nutzt außer mir noch jemand eclipse mit ldt oder eine andere IDE die eine kompatible Syntax zur Dokumentation von typen nutzt?


    Würde mich besonders bei den Vielscriptern interessieren @Tom @tomdotio @eis_os @Enzojz und bestimmt noch einige andere die ich vergessen habe.

    Dieser Beitrag wurde bereits ∞ mal editiert, zuletzt von Freahk (Vor π Minuten)

    Einmal editiert, zuletzt von Freahk ()

  • Ich nutze einfach NotePad++ >< Ich muss gestehen ich habe lua bisher garnicht so wirklich ernst genommen, also dass das ähnlich einer richtigen Programmiersprache behandelbar wäre. Klar Bedingungen nd Schleifen hab ich auch schon gesehen, auch Variablen - aber welche Variable jetzt welchen Typ haben muss (also irgendwas, was TpF so und so erwartet), das liegt doch am Spiel und nicht am Script oder? Wenn ich einen Block habe mit 10 Parametern, woher soll ne IDE wissen, welche TpF davon nun als Pflicht und welche als optional ansieht? Dass kann doch keine IDE leisten *denk*


    Ich hab mich gestern durch die Originale gehangelt und teils einfach rumgetüftelt. Was man bräuchte wäre ne Dokumentation von TpF, keine IDE ^^ Und das fehlt echt dringend. Was ich gestern an soner mistigen Straße aufm Graß als Asset rumgemehrt hab - unglaublich. Hab mich am Ende zum Glück daran erinnert, dass Industrien ja sowas haben und es mir da abgeschaut + von Mods die UI Geschichten mit Parametern angeschaut. Und nur durch ausprobieren hab ich rausgefunden, was optional ist und was er unbedingt haben will :/ Ideal ist anders.

  • Ich mach alles mit Atom, also einem relativ "normalem" Texteditor.
    Ist bei mir aber quasi so "angelernt", da ich von meinen ersten Schritten an eigentlich alles ohne IDE entwickelt habe.
    Die wirklich gebräuchlichen Features wie Autovervollständigung können auch normale Editoren, dafür brauch ich keine Aufgebohrte IDE und die weiterführenden Programmer-Funktionen wie Debug und Compile treffen bei LUA - zumindest in Benutzung mit TPF - eh eher nicht so 100% zu - maximal kann man hier Einzelne Teile/Funktionen debuggen.


    Meine Historie:
    Früher GEdit (Linux) und N++ (Windows), heute nur noch Atom.

  • Bisher habe ich für lua immer kwrite bzw. unter Windows notepad++ genommen. Da ich aber meine projekte grundsätzlich über svn verwalte, ich eclipse bereits gewohnt bin und es mir irgendwie auf den Nerv ging ständig nachschlagen zu müssen wie jetzt nochmal die erwartete Struktur eines bestimmten Attributs war oder wie ein bestimmter Wert für diese ganzen type Attribute hieß, habe ich einfach mal ldt ausprobiert.

    aber welche Variable jetzt welchen Typ haben muss ... Dass kann doch keine IDE leisten

    genau mein Problem^^ Und doch, das kann eine IDE leisten, wenn man ihr erzählt welche Typen die engine da erwartet und ihr auch erklärt wie dieser Typ aufgebaut ist. Muss man nur halt machen... ldt bietet dazu eine Dokumentationssprache. So ähnlcih wie javadoc.


    ug wird vermutlich selbst keine Dokumentation dazu schreiben aber man könnte sowas ja als Community machen. Dann müsste man nur einmal herausfinden wie es funktioniert und könnte das dann mit allen anderen teilen und wenn man Spaß daran hat das ganze nutzen um der IDE ebenfalls mitzuteilen welcher type wie aussieht.


    Mit den debugging tools kann man schon ein bisschen was anfangen, wenn man größere Scripts schreibt. Alles was irgendwie mit parametrisierbaren Constructions zu tun hat wird zwangsläufig größer. Ich gehe dann so vor, dass ich mir das ganze zusammen baue und als erstes in der updateFn den parameter den ich übergeben bekomme in die stdout ausgebe. Wenn etwas unerwartetes passiert oder es gar einen crash gibt, nehme ich dieses Objekt als argument für meine updateFn und starte das script im debug mode.


    Kann dein atom das Objekt was von der updateFn einer construction zurückgegeben wird vervollständigen, also kennt es die Struktur dieses Objekts? Wenn ja wäre ich doch sehr an der Datei interessiert die dem editor diese Struktur erklärt.

    Dieser Beitrag wurde bereits ∞ mal editiert, zuletzt von Freahk (Vor π Minuten)

    Einmal editiert, zuletzt von Freahk ()

  • Zum Thema IDE/Editor:
    https://xkcd.com/378/ 8)


    Im Ernst - GEdit. Ist bei einer Gnome-basierten Distro dabei und genügt mir. Ist schon ein enormer Fortschritt gegenüber edlin.

    Woher nehmt ihr die Informationen über die erwartete Struktur eines bestimmten Objekts? Schaut ihr immer bei Beispieldateien ab wie die Struktur sein muss?
    Woher nehmt ihr die Informationen welche Werte für die überall verstreuten enum artigen strings wie z.B. dem type Attribut einer Construction gültig sind? Ebenfalls indem ihr DAteien durchsucht

    Genau so. Ein grep durch das Transport Fever-Verzeichnis und mit 'nem Hex-Editor das Binary untersucht.
    Mittlerweile gibt es im Wiki ja auch ein paar "Kleinigkeiten" - aber wenig neues unbekanntes. :(

    Mit den debugging tools kann man schon ein bisschen was anfangen, wenn man größere Scripts schreibt.

    Bin eigentlich soweit, dass mir der Debug-Modus von TpF reicht. Wenn es knallt, weiß ich mittlerweile an Hand der Assertion,
    welchen Mist ich verbrochen habe. Ansonsten muss ich sehen, wo meine Lanes und Edges gelandet sind...

  • Irgendein Texteditor:


    Unter Windows:
    Notepad++ funktioniert recht gut, NetBeans,


    HxD, Frhed


    Für die Exe Dateien diff
    MingW strings, diff, WinMerge und co.


    Debugger:
    32Bit OllyDbg
    64Bit: x64dbg (Leider noch buggy!)


    Um etwas die Rountrips zu vermeiden lade ich meine Lua Scripte im Spiel neu, damit kann ich dann schon mal viele Sachen testen ohne alles neu zu starten.

  • I'm using VSCode with some Lua plugins (lint and auto formatting) in vs marketplace. I use datadumper for lua debug.


    VSCode does diff and GitHub too.


    Auto formatting plugin for Lua in VSCode checks code syntax so it helps a lot.


    The type system in Lua is very flexible, since the the actual types are double, string, table and functions, nil and in most of cases the returns and params are tables. It's great since with holes(nils) in a table you can do some interesting things, like using lane related functions directly on edges.


    I wrote my own lib to avoid get lost with TpF lua libs, and get a general control over my code, in general only the return of updateFn is concerned, so Lint for Lua doesn't mean much to me, only autocompletion --- I know already what should be as the input and what should be the output --- since I write all by my own.

    This guy is too lazy to create a signature. 8o

    7 Mal editiert, zuletzt von Enzojz ()

  • Just like that. A grep through the transportation fever directory and with ' a hex editor examines the binary.
    Now there are unknown even a few "little things" - but little new in the wiki.


    Like slope with value "greater", it's never in any script come with TpF.


    I know that before wiki, just guess the opposite of "less" is "more" or "greater" :)

    This guy is too lazy to create a signature. 8o