Folgende Warnungen sind aufgetreten:
Warning [2] count(): Parameter must be an array or an object that implements Countable - Line: 795 - File: showthread.php PHP 7.4.33 (Linux)
File Line Function
/showthread.php 795 errorHandler->error




Dieses Forum nutzt Cookies
Dieses Forum nutzt Cookies um Anmeldeinformationen (keine Passwörter) zu speichern. Dabei werden diese Informationen als kleine Textdateien auf deinem Endgerät abgelegt. Sie können nur durch dieses Forum ausgelesen werden und stellen kein Sicherheitsrisiko dar. Neben deinem letzten Login wird auch abgespeichert, welche Themen du bereits gelesen hast.

Zudem wird ein Cookie angelegt, in dem abgespeichert wird, ob du diesen Hinweis gelesen hast. Damit wird er nicht jedes mal angezeigt.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
M4nfo - a macro library for generating nfo code for TTDPatch and OpenTTD newgrfs
Verfasser Nachricht
mb
Tycoon
*****

Beiträge: 5.054
Registriert seit: Mar 2005
Beitrag #1
M4nfo - a macro library for generating nfo code for TTDPatch and OpenTTD newgrfs
M4nfo

A macro library for generating nfo code for TTDPatch and OpenTTD newgrfs
Eine Makrosammlung zur Generierung von nfo code für TTDPatch und OpenTTD newgrfs

Michael Blunck
Oktober 2009



Einleitung

Programmieren in "Bytecode", zB die Erstellung von nfo-Code für Transport Tycoon (TTDPatch und OTTD) newgrf Sets ist bekanntermassen nicht jedermanns Sache. Auch die Pflege von vielen tausend Zeilen Bytecode in den grösseren Sets ist für geübte Programmierer nicht einfach. Die Idee, eine "höhere Sprache" für diesen Zweck zu entwickeln ist deshalb genauso alt wie die Entwicklung des nfo-Bytecodes durch Josef Drexler. Aber trotz vieler Versuche und intensiver Diskussionen ist diesbezüglich bisher nichts Brauchbares entstanden.

Ein Grund liegt natürlich darin dass die Entwicklung einer neuen "Sprache" und die Entwicklung eines Übersetzers (Compiler, Interpreter) dafür nicht unbedingt zu den Vorhaben gehört die man schnell an einem Wochenende erledigen kann.

Zum zweiten ist die Umsetzung von nfo-Bytecode in eine höhere Sprache kein leichtes Unterfangen, da nfo-Bytecode diverse Fallstricke gegenüber einer einfachen Umsetzung bereit hält. Zum einen kann der Code selbstverändernd geschrieben werden ("action6"), zum anderen ist die Behandlung der verschiedenen newgrf Objekte (Fahrzeuge, Gebäude, Industrien, ...) nicht uniform, sondern kann bei gleicher (oder ähnlicher) Behandlung verschiedener Objekte mehr oder weniger variieren.

Darüber hinaus ist die Syntax abseits der am meisten verwendeten "actions" (action0, action1, action2, varaction2, action3, action4) aufgrund ihrer extrem maschinennahen Implementierung, relativ komplex (s. zB action7/9, actionD, advancedaction2, die Benutzung von Registern, "subroutines" oder (externen) Parametern, usw.).

Trotzdem hat wohl jeder nfo-"Coder" der lange genug dabei ist, sich einige Hilfsmittel geschaffen, die die Code-Erstellung einfacher und weniger mühselig machen. Auch ich gehöre zu diesem Kreis. Cool

Nachdem ich am letzten Wochenende eine kleinere Erleuchtung diesbezüglich hatte, habe ich mich mal zwei Abende hingesetzt, und alles was ich zu früheren Zeiten schon mal ausprobiert hatte zusammengefasst und überarbeitet. Nicht ohne einen gewissen Erfolg.

Trotzdem: mein Ansatz ist höchst pragmatisch, und das Ergebnis ist nicht die schon lange erwartete Hochsprache die es (fast) jedem ermöglicht ein beliebiges Vorhaben in einfacher Weise in eine lauffähige newgrf umzusetzen. Abgesehen von dem doch eher kleinen Sprachumfang, der zZt lediglich die Programmierung von Schienenfahrzeugen ermöglicht, ist auch hier die Kenntnis des Aufbaus einer newgrf und der grundlegenden Struktur des nfo Konzepts zwingende Voraussetzung für einen Einstieg.

Statt einer Universallösung inklusive dem dazugehörigem Compiler bietet sie (im Moment) wie gesagt lediglich eine Lösung für den Bereich Schienenfahrzeuge. Eine Erweiterung auf den Bereich Strassenfahrzeuge, Flugzeuge und Schiffe ist aber leicht möglich. Anders sieht dies für den Bereich Gebäude oder Industrien aus, hier würde man noch einmal ganz von Neuem entwickeln müssen, obwohl man sicher manche Funktionen der aktuellen Entwicklung nutzen und ausbauen können wird.

Der derzeitige Implementierungsstand erlaubte jedenfalls bereits die Neuimplementierung meiner derzeitigen Arbeitsversion des DB Sets v0.9*. Das ist mMn nicht schlecht, denn der Set hat trotz einer komprimierten Programmierweise 10000 Sprites (Codezeilen) und ist wesentlich komplexer als die aktuelle Version 0.82.

[*] einige wenige exotische Konstrukte sind dabei noch in nfo, das wird sich aber noch ändern.


Zum Technischen.

--------- Ende Teil 1 -------------------------------------


Gruß
Michael

Zitat:EU-Wirtschaft- und Währungskommissar Joaquin Almunia hat alle Besorgnisse über den Schuldnerstatus Griechenlands als unbegründet zurückgewiesen.
20.10.2009 23:11
Webseite des Benutzers besuchen Alle Beiträge dieses Benutzers finden Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Nachrichten in diesem Thema
M4nfo - a macro library for generating nfo code for TTDPatch and OpenTTD newgrfs - mb - 20.10.2009 23:11

Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
Hilfe Diverse Fragen zu OpenTTD, TTD und TTDPatch Steinborg 7 5.281 22.07.2013 18:26
Letzter Beitrag: Steinborg

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste