Warum immer 9? Der Altlasten-Thread

Silberdrache

L08: Intermediate
Thread-Ersteller
Seit
26 Mai 2006
Beiträge
973
Ihr kennt das doch alle aus diversen Games:
Oft hat man maximal 99 Leben (z.b. Metroid Prime) , 99 Sprit (Advance Wars) oder 99 Pfeile im Köcher (Zelda).
Überprüft es doch mal selbst und achtet gezielt auf die Neun. Ich bin mir sicher Ihr werdet sie in verschiedenen Games desöfteren bemerken.

Warum immer 9? Waren die Entwickler zu faul die viel runderen Zahlen 10,100 oder 1000 zu nehmen?
Nein, imho haben wir hier eine Altlast aus den
vergangenen Anfängen der Videospiele. Ich vermute zu Nes-Zeiten und früher war man um jedes Bit Rechenleistung das man sparen konnte froh und nahm statt 10,100 und 1000 9,99 und 999 die ungefähr gleichwertig sind aber immerhin eine Stelle sparen.
(Ich weiß nicht obs wirklich so war aber die Erklärung macht einen ganz plausiblen Eindruck. Wer mehr darüber weiß schreibt es bitte rein :) )

Und darum soll es in diesem Thread gehen:
Um Altlasten, Hasenfüße,Klischees, Mängel und Designfehler die die heutige Generation der Videospiele von ihren grauen Vorfahren geerbt hat.
Schreibt hier alles hinein was den Jahrzehnten standgehalten hat und euch damals wie heute auf den Keks geht.
 
Man kann ja auch so überlegen: Warum 100 nehmen, wenn man mit der gleichen Anzahl an Stellen einen fast zehnmal so hohen Wert nutzen kann, also 999. Ausserdem find ich, dass es schöner aussieht, wenn es die ganze Zeit über die gleiche Anzahl an Stellen gibt. Bei den Zahlen unter 10 steht ja dann auch oft noch eine 0 davor (allerdings würde 099 irgendwie komisch aussehn). Ich finds jedenfalls so besser. Dass die Rechenleistung der Grund ist, kann ich mir aber kaum vorstellen. Ein Stelle dürfte eigentlich keinen grossen Unterschied machen. Ich würde deshalb eher drauf tippen, dass es aus ästhetischen Gründen ist.

Und wenn die Entwickler bei soetwas eher nach Technikvorgaben gehen würden, dann müssten wir eigentlich viel öfters den Wert 255 sehen. Spontan fällt mir da nur Pac-Man mit 255 spielbaren Level ein (obwohl es hier nicht einmal gewollt war).
 
Was ist daran schlimm? Gehe mal in einen Laden, da zahlst auch grösstenteils x,99 €.

Und wo hat man 99 Leben in Metroid Prime ?
 
Was ist daran schlimm? Gehe mal in einen Laden, da zahlst auch grösstenteils x,99 €.

schlimm ist daran gar nichts,mir persönlich ists auch ziemlich egal :-P

aber das mit dem laden war kein so gutes beispiel imo, x9 klingt halt weniger als x0,daher gibts häufig bzw. fast immer,solche beträge,ist so eine kopfsache^^
 
Warum immer 9? Waren die Entwickler zu faul die viel runderen Zahlen 10,100 oder 1000 zu nehmen?
Nein, imho haben wir hier eine Altlast aus den
vergangenen Anfängen der Videospiele. Ich vermute zu Nes-Zeiten und früher war man um jedes Bit Rechenleistung das man sparen konnte froh und nahm statt 10,100 und 1000 9,99 und 999 die ungefähr gleichwertig sind aber immerhin eine Stelle sparen.
(Ich weiß nicht obs wirklich so war aber die Erklärung macht einen ganz plausiblen Eindruck. Wer mehr darüber weiß schreibt es bitte rein :) )
Ehrlich gesagt war das NES sowie das SNES noch vor meiner Zeit. ich habe keinen blassen Schimmer womit man damals Spiele schrieb. Das NES kam 1983 auf den Markt, damals wäre wohl C die populärste Sprache gewesen, denn C++ kam erst kurz danach.

Werte wie Leben und Munition sind immer Ganzzahlen und daher wird eine Integer-Variable verwendet. In ANSI-C muss eine Integer-Variable zwingend 2 Byte groß sein, kleineres verweigert der Compiler. Nun weiß ich aber nicht, ob es da eventuell damals andere Vorgaben gab. Sofern man kein kein unsigned_int verwendet deckt man so also schon einen Zahlenbereich von –32768 bis +32767 ab, allerdings nur auf einem 16 Bit System (SNES). Und das wäre wie gesagt das Minimum. ANSi-C berücksichtigt da also möglicherweise gar keine 8-Bit Systeme mehr.

Selbst mit 1 Byte kann man einen Wertebereich von –128 bis +127 (unsigned_char sogar 255, falls man keine negativen Werte braucht) abdecken. Somit ist das mehr als nur 99 und Level 100 wäre problemlos möglich. Mehr Speicherplatz verbraucht man dadurch nicht und mit Leistung dürfte das auch nix zu tun haben.

Das muss andere Gründe haben, zumindest auf dem SNES und NES gibt es mMn keinen Grund einen Charakter nicht auf Level 100 klettern zu lassen.
 
Zuletzt bearbeitet:
ff7 -> maximal 99 items von jeder sorte
ff8 -> maximal 100 items von jeder sorta
ab ff9 -> maximal 99 items von jeder sorte, dafür bei ff10 den hp breaker von 9.999 HP auf maximal 99.9999 HP

edit:

prinzipiell richtig coda, nur wurden die games wegen der performance nicht in c geschrieben sondern in assembler.
somit dürfte alle deine graue theorie erstmal hinfällig sein ^^
 
Ob Assembler, C, oder C++: mit einem Byte kommt man immer über die hundert hinaus, das ist also nicht die Ursache. Man verliert höchstens ein ganz wenig an Geschwindigkeit, da man eine weitere Stelle blitten muss, doch auf das bisschen wird es mit Sicherheit nicht ankommen.
 
Zuletzt bearbeitet:
prinzipiell richtig coda, nur wurden die games wegen der performance nicht in c geschrieben sondern in assembler.
somit dürfte alle deine graue theorie erstmal hinfällig sein ^^

die register größe für cpu/speicher bleibt aber bestehen
und das 255 items/level etc. limit sieht man auch bei einigen spielen.

das mit den 99/100 ist denk ich eher historisch/designtechnisch bedingt als technisch
 
ja kann sein ... ist wahrscheinlich designfrage oder so ... naja, dann ist es ja auch keine altlast in dem sinne ^^

was gibts noch, mir fällt nix ein
 
Die Zahl 99 hat mit Altlasten sicherlich nichts zu tun, IMHO ist es in der Tat nur eine Designentscheidung. Ein Spiel ist nun einmal zumeist nur für eine begrenzte Spieldauer ausgelegt. Und mehr als 99 Items von einem Typ braucht man deshalb meist auch nicht. Mehr Stellen würden auch das Layout (zumindest bei der Bildschirmauflösung der damaligen Spiele) "zerschießen". Rein Rechentechnisch mit dem Mangel an Speicher oder Rechenzeit hat das sicherlich auch nicht viel zu tun.

Bei der damaligen recht überschaubaren Komplexität der Hardware wurde auf NES oder SNes sicherlich auf der niedrigsten Ebene, also in Assembler, programmiert. Zumindest war dies auch bei den allermeisten C64 und Amiga Spielen der Fall, weil man nur so das Maximum aus der Hardware herausholen konnte. Eine Interpretersprache (wie die ganz frühen in Basic programmierten C64 Spiele) oder eine Compilersprache waren damals einfach zu ineffizient und erzeugten viel zu speicher- und rechenzeithungrigen Code. Obwohl ich nicht ganz auschließen kann, daß man für weniger actionreiche Spiele wie Wirtschaftssimulationen wie Black Gold, Winzer oder diese ganzen anderen frühen Text- und Tabellenlastigen Aufbau-Sims (auch auf dem Amiga) eher zu einer Compilersprache wie C oder teilweise sogar zu einem Interpreter wie Basic (auch einige spätere Amiga Spiele nutzten z.B. Blitz Basic, daß irgendwo zwischen normalem Basic und Assembler-Optimierung lag) griff.

Die Begrenzung auf nur ein Byte findet aber rein aus Designgründen durchaus öfter statt. Beim Hacken der Spielstände zu Resident Evil 2 habe ich z.B. festgestellt, daß die meisten Items (meist die Munitionsmengen) auf 255 Stück begrenzt sind, da für die Angabe der Menge im Inventory eben nur ein Byte reserviert wurde. Wobei also z.B. die Munition für die Pistole eigendich sogar "nur" (mehr braucht man auch nicht, bzw. findet man im ganzen Spiel noch nicht einmal so viel Munition) auf 254 Patronen beschränkt ist, da der Wert 255 (also Hexadezimal: FF) für die Mengenangabe "Unendiche Munition" reserviert ist. Dazu (RE2 Savegame Hacking) habe ich ja auch eine kleine Guide geschrieben.

Als Altlast würde ich es eher ansehen, wenn gerade in der heutigen Zeit mit den Endlosfortsetzungen bei Sportspielen, welche sich nur noch in der Jahreszahl im Titel unterscheiden, die gleichen Fehler oder auch Animationen immer wiederverwendet werden und das Spiel sich nur grafisch leicht verbessert. Ein schönes Beispiel ist da z.B. die Smackdown vs. RAW Reihe, die sogar Animationen weiternutzt die eigendlich nicht mehr passen. Man muss die alten Animationen ja nicht gleich komplett entfernen, nur wirkt es etwas seltsam wenn sich z.B. Kane nach seinem Choke Slam die Haare immer noch nach hinten wirft, obwohl er inzwischen gar keine mehr hat. :shakehead: So etwas wie wiederverwertete (veraltete) Animationen oder veraltete Samples ist aber typisch für die billig heruntergekurbelten Fortsetzungen von Sportspielen (obwohl ich neben den [wohlgemerkt japanischen] Wrestling-Titeln eigendlich kaum noch Sportgames spiele). Über so etwas rege ich mich aber eigendlich nicht mehr auf, weil, nun ja, die SDvsRaw Reihe (und allgemein das westliche Arcade-Wrestling im Spielebereich) für mich sowieso mausetot ist. Aber das ist ein anderes Thema ...
 
Ich denke, es liegt auch am Platz. Ein kästchen mit 2 Zahlen drin. Leben, Ammo, etc. Da ist halt die Breite festgelegt; und man müsste extra für 100 das Kästchen ausweiten, eine dritte Stelle hinzufügen und somit das Design ändern.
 
Zurück
Top Bottom