Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Fatal Error bei makeobj
#1
Ich habe heute beim "compilieren" eines Güterschuppen ( type=shed )
den folgenden Fehler erhalten.

Code:
Makeobj version 49 for simutrans 99.18 nightly and higher
(c) 2002-2006 V. Meyer , Hj. Malthaner, M. Pristovsek (markus@pristovsek.de)

Image size is set to 128x128
writing file BZT_SVGueter1.pak
   reading file ./BZT_SVGueter1.dat
      packing building.BZT_Gueterhalle
FATAL ERROR: building_writer_t::write_obj()
shed is obsolete type for BZT_Gueterhalle; use extension and waytype!
Aborting program execution ...

Dann habe ich die Änderung eingebaut
type=extension
waytype=track

Es wurde dann erfolgreich kompiliert.

Ich finde es ausgesprochen schlecht, wenn man bestimmte Schlüsselworte (hier shed) als obsolete erklärt und dann mit einem Fatal Error abbricht.
Das bedeutet nämlich, wenn man den neuesten makeobj downloaded und man ein pak eventuell neu kompilieren will, einen Fehler bekommt mit dem man nicht rechnet.

Warum also nicht nur eine Warnung herausschreiben und dann trotzdem wie gehabt kompilieren ?(
Das Programm "frißt doch kein Heu" man kann doch den "obsoleten" code beibehalten.
Zitieren
#2
Wie bereits im Int. Forum von mir gepostet, haben sich die type-Werte der Spielergebäude geändert.

In sofern ist das bekannt.

Der nächste Punkt ist, das die Nightlys mit dem dazugehörigen Makeobjekt noch nicht als offizielle Versionen zur Verfügung stehen, weshalb diese Änderungen offiziell auch noch nicht dokumentiert sind.

Nicht umsonst hab ich schon mehrfach geschrieben, das die nächste Simutrans-Version eine Anpassung der Spielergebäude benötigt.
Zitieren
#3
Außerdem gibt es die beiden neuen Schienentypen MAGLEV und NARROWGAUGE für die ich sonst keine Bahnhofsgebäude definieren könnte. (Und nur Tramhalte gingen auch nicht.) Wenn man schon mit der Kompatibilität brechen muss, dann richtig!
Zitieren
#4
Kleines Offtopic zum Thema:

Das klingt alles so, als ob auch die Spielstände der alten Versionen mit der neuen nicht mehr kompatibel sein werden...
Stimmt das?

Hört sich mehr nach der 1.0 als nach der 0.99.18 an...
Zitieren
#5
Zitat:Original von Oliver
...
Das klingt alles so, als ob auch die Spielstände der alten Versionen mit der neuen nicht mehr kompatibel sein werden...
Stimmt das?
...

Nein. Zumindest trifft das bis jetzt zu.

In den Spielständen werden keine Objektdaten von Stationen gespeichert, sondern nur die Namen der Objekte.

Das einzige was passieren kann, sind fehlende Objekte, die in der SVN-Version vom pak64 nicht mehr enthalten sind.
Zitieren
#6
Zitat:Original von FrankP
Wie bereits im Int. Forum von mir gepostet, haben sich die type-Werte der Spielergebäude geändert.

In sofern ist das bekannt.

Der nächste Punkt ist, das die Nightlys mit dem dazugehörigen Makeobjekt noch nicht als offizielle Versionen zur Verfügung stehen, weshalb diese Änderungen offiziell auch noch nicht dokumentiert sind.

Nicht umsonst hab ich schon mehrfach geschrieben, das die nächste Simutrans-Version eine Anpassung der Spielergebäude benötigt.

Ich weiß nicht ob verstanden wird was ich sagen will, wenn ich all diese Antworten hören die haarscharf meilenweit vorbeischießen Big Grin

Wie ist es dann, wenn die neue Version offiziell wird ?
Ist dann der gleiche Effekt, nur (eventuell) dokumentiert ?

Egal ob man Geld fürs Programmieren bekommt oder nicht, es ist und bleibt schlecht wenn man aus Gründen der Philosophie zwei Schlüsselworte durch andere ersetzt und den alten Code entfernt (oder stilllegt). Man nennt so etwas einen Isomorphismus und der kostet Entwickler unötigt Zeit (und Ärger). Man kann ja die Philosophie ändern, sollte aber (aus Investionsschutz) den alten Code weiter unterstützen. So was wird von Profis gemacht.

Im übrigen habe ich schon noch die reguläre Version im Einsatz aber zu welchem Zweck macht man den die Nightlies ? Wenn ich hier die Antworten lese, weiß ich ich wirklich nicht warum? Wenn man testet und auf Probleme hinweit reagiert man gereizt.
Zitieren
#7
Zum einen ist es so, das Makeobj schon immer Versionsabhängig zu bestimmten Simutrans-Versionenen war.

Zum anderen, woher soll Makeogj dann wissen, für welche Version einen pak-Datei erstellt werden soll?

Zum dritten, wird den Profies von Microsoft vorgeworfen, zu viel alten Code in Windows Vista zu haben. Das wird auch als Grund herangezogen, warum Vista so schlecht läuft.

Zitat:...
Man kann ja die Philosophie ändern, sollte aber (aus Investionsschutz) den alten Code weiter unterstützen. So was wird von Profis gemacht.
...
Ich denke Dein hier angesprochener Investitionsschutz ist in manchen Sachen kontra Produktiv. Gerade das Verrenken für das Behalten von altem Code erfordert einen Haufen Aufwand und Arbeit.

Und da alte Spielstände weiter funktionieren, sehe ich den Investitionsschutz auch nicht so gefärdet.

Und sowas führt teilweise dann zu argen Problemen.

Die Trennung von Eisenbahn und Straßenbahn wurde sehr oft angesprochen. Jetzt ist diese möglich.

Letztlich hat alles seinen Preis.

Die Rotation hatt auch ihren Preis. Da regt sich auch keiner weiter auf.

Prissi hat sich das vorher genau überlegt, wenn er sowas macht.
Vorwürfe in dieser Richtung sind daher eher unangebracht und sollten unterbleiben.
Zitieren
#8
"Investitionsschutz" ist ein hohes Wort für zweimal Suchen und Ersetzen. Die Änderung hat mich beim pak64 ca. 10min gekostet.

Ich hätte auch weiter alten Code unterstützen können, bis zu der nächsten Änderung. Aber jetzt brauchen eben Depot Icons, auch Schiffsdepots und jetzt muss halt die neue Systax benutzt werden.

Sonst hat man später einen wilden Mix von zulässigen, nicht mal eindeutigen Werten, und ich bekomme Ärger, weil type=station waytype=narrowgauge nicht geht. (Es wäre ohne weiteres möglich gewesen, auch den alten Code intern in die neue Sytax zu ändern, aber dann hätte es obige Probleme gegeben.)

Viele Leute beschweren sich mittlerweile, das Makeobj zuviel durchgehen lässt und dann unbrauchbare Paks entstehen. Versuche ich, das nur durch abfangbare Fehlermeldungen zu ersetzen, gibt es auch Ärger.

Du kannst ja immer noch makeobj 48 verwenden und damit deine Stationen übersetzen. Simutrans wird dann die Daten beim Laden konvertieren. Auch die meisten Objekte aus 84.16 sind in Simutrans immer noch Ladbar, mit der Ausnahme von Kreuzungen und Fahrleitungen.
Zitieren
#9
Zitat:Original von FrankP

Zum anderen, woher soll Makeogj dann wissen, für welche Version einen pak-Datei erstellt werden soll?

...
Na z.B. dadurch dass ein type=shed bzw. type=station daherkommt.
Dann ist das alter Code.

@prissi
Wenn type=station und waytype=narrowgauge, dann ist das wirklich ein Fehler, weil dieses neuer code ist.

Ich weiß wirklich nicht wo da das Problem ist.
Ich mache nur Vorschläge zur Verbesserung aber ihr versucht mit allen möglichen Begründungen diese nicht zu akzeptieren X(

Beim mir kosten die Änderungen mehr als 10 min, weil ich nicht als Entwickler vorgewarnt werde. Da ich meine Projekte über das make Utility erstelle
merke ich erst bei Test in simutrans, dass z.B. ein Pak fehlt (Es ist nämlich trotzdem da hat 69 Byte und kein Icon zu sehen Big Grin)
Zitieren
#10
Das make utility ist ausdrücklich nicht Teil von Simutrans. Beschwer dich dort, dass die Anzeige nicht mitgeloggt wird. Ist so schwierig nicht.

Makeobj erzeugt immer nur Objekte für die aktuelle Version. Wer alte braucht, muss ein altes makeobj verwenden. Im übrigen ist es ja eh im Moment nur eine Testversion, wie Frank ganz richtig sagt.
Zitieren


Gehe zu:


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