Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
13.12.2006, 03:46
Kriz



Ich habe mein Wiki-Tutorial über die Half-Life Sprite Spezifikation überarbeitet und denke, daß ich es diese Woche zuendeführen kann. Viele Punkte sind überarbeitet, einige Ergänzungen hinzugefügt sowie Unnützes entfernt worden.

Ich hoffe, daß die Spezifikation dann soweit vollständig sein wird.

Link zur Spezifikation

--

K:R-I)Z++
"CSS ist cascading style sheets. Und nicht so'n Ranzspiel." - dp
In memory of Voice († 2005/03/30)


Dieser Beitrag wurde am 13.12.2006 um 03:48 von Kriz bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
001
13.12.2006, 12:53
KhanRKerensky



Zitat:
Hinweis: Niemals int anstatt long nehmen, da int entweder 16 oder 32 Bit breit ist, je nach System. long dagegen ist immer 32 Bit breit, also 4 Bytes.
Unter Win2k (gcc 3.irgentwas) hat bei mir int wie auch long eine Breite von 4 Byte. Unter Ubuntu (AMD64, gcc 4.1.2) hat nen int 4 Byte und nen long 8 Byte.

--

"[...] you're going to burn in a very special level of Hell. A level they reserve for child molesters and people who talk at the theater." - Book

zum Seitenanfang zum Seitenende Profil || Suche
002
13.12.2006, 14:12
Buster



Zitat:
Das kleinste Byte liegt immer ganz rechts, das größte Byte immer ganz links. Es wird also von rechts nach links gelesen. Das ist die Darstellung auf Little Endian Prozessoren wie Intel/AMD usw.
Sicher?

Bei Little Endian liegt doch das least significant Byte bei der niedrigsten Adresse, oder nicht?

--

zum Seitenanfang zum Seitenende Profil || Suche
003
13.12.2006, 14:35
Kriz



@Khan: Sowas. Normalerweise ist ja long long der 64 Bitter bzw. __int64 und long nachwievor der 32 Bitter bzw. war long laut ISO/IEC immer "mindestens" 32 Bit. Tja, dann muß man halt dort adaptieren. So langsam kommt der Pseudostandard für C/C++ aus dem Gleichgewicht... Ich werde das noch im Tut korrigieren. Danke :)

@Buster: Es kommt darauf an, wie man das Beispiel beschreibt. Wenn ich als Referenzwert z.B. 0xAABBCCDD nehme und _nicht_ auf die binäre Leserichtung von rechts nach links achte, dann ist bei Little Endian die Darstellung 0xDDCCBBAA und bei Big Endian eben 0xAABBCCDD.

Wenn ich aber 0xAABBCCDD heranziehe und sage, die Leserichtung entspricht der binären Weise rechts nach links, dann stimmt es bei Little Endian mit 0xAABBCCDD und bei Big Endian mit 0xDDCCBBAA.

Aber ich sehe, daß scheint wohl Probleme zu bereiten. Ich werde es überarbeiten. Irgendwann liest man Computerwerte automatisch von rechts nach links, das geht ins Blut über ;)

--

K:R-I)Z++
"CSS ist cascading style sheets. Und nicht so'n Ranzspiel." - dp
In memory of Voice († 2005/03/30)

zum Seitenanfang zum Seitenende Profil || Suche
004
13.12.2006, 15:31
theDon



Zitat:
Kriz postete
@Khan: Sowas. Normalerweise ist ja long long der 64 Bitter bzw. __int64 und long nachwievor der 32 Bitter bzw. war long laut ISO/IEC immer "mindestens" 32 Bit. Tja, dann muß man halt dort adaptieren. So langsam kommt der Pseudostandard für C/C++ aus dem Gleichgewicht...
...

Das einzige, was wirklich festgelegt ist, ist:
- char hat mindestens 8 Bit.
- short hat mindestens 16 Bit.
- long hat mindestens 32 Bit.
- sizeof(short) <= sizeof(int) <= sizeof(long)

--

\o tanz den naziprau! o/

And more than ever, I hope to never fall,
Where enough is not the same it was before

zum Seitenanfang zum Seitenende Profil || Suche
005
13.12.2006, 16:18
dp
Administrator


ich hab mal nach wiki-board verschoben.

man sollte lieber auf wikipedia verlinken statt solche allgemeinen dinge versuchen zu erklaeren, relevant ist doch hier nur das dateiformat und sonst nichts.

--

zum Seitenanfang zum Seitenende Profil || Suche
006
13.12.2006, 18:14
Kriz



Wäre auch ne Möglichkeit.

--

K:R-I)Z++
"CSS ist cascading style sheets. Und nicht so'n Ranzspiel." - dp
In memory of Voice († 2005/03/30)

zum Seitenanfang zum Seitenende Profil || Suche
007
28.02.2007, 15:12
Buster



Ist die Spezifikation schon tutto completto? Mir fehlen da nämlich noch ein paar Strukturen, die du nicht veranschaulichst. Laut dieser Seite/Spezifikation ist da nämlich noch einiges, was in deiner Spezi fehlt. Gut du brauchst zwar nicht auf das Quake Format einzugehen aber die Paletten (nur kurz am Rande angestochen), Single - (auf das gehst du teilweise ein, scheint aber trotzdem nicht vollständig) und Grouped Frame Strukturen sollten schon noch Beachtung finden. Also - wäre dir sehr dankbar, wenn du das noch überarbeiten könntest. :)

** War nicht böse oder so gemeint, aber ich finde die Veranschaulichung auf der Seite, die ich oben angegeben habe sehr unübersichtlich. Sprich - ich finde deine "struct" - Darstellung à la C/C++ viel gelungener, von daher die Bitte um Vervollständigung. Damit kann man besser arbeiten. ;) **

--


Dieser Beitrag wurde am 28.02.2007 um 15:17 von Buster bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
008
26.03.2007, 15:44
Kriz



Ich arbeite gerade an einem Java Package für Half-Life bezogene Inhalte, u.a. auch Klassen für Sprites usw. Wenn das fertig ist, dann werde ich die Sektion entsprechend erweitern.

--

K:R-I)Z++
"CSS ist cascading style sheets. Und nicht so'n Ranzspiel." - dp
In memory of Voice († 2005/03/30)

zum Seitenanfang zum Seitenende Profil || Suche
009
31.03.2007, 03:56
Kriz



Erstmal danke für den Link! Hat mir sehr geholfen. Habe Header, Palette und Palettenfarben schonmal hingebogen bekommen, soll heißen daß ich schonmal Sprites laden kann (direkt oder per URL) und der Header und die Palette samt Farben verarbeitet werden. Kommt nur noch der Teil mit den Frames, aber damit beschäftige ich mich nächste Woche.

PS: Wenn ein Sprite dann vollständig ist, kann man sich die einzelnen Frames als Image Objekt holen und dann in einem Fenster zeichnen lassen. Aber bis dahin...

--

K:R-I)Z++
"CSS ist cascading style sheets. Und nicht so'n Ranzspiel." - dp
In memory of Voice († 2005/03/30)


Dieser Beitrag wurde am 31.03.2007 um 03:57 von Kriz bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
010
11.04.2007, 18:58
Kriz



Ok, die Spezifikation ist fertig. Wer Bugs finden sollte, der möge sich bitte melden oder das Wiki gleich editieren.

Das nächste Projekt wird wohl die Spezifikation des Texturenformats und des WAD-Formats sein. Sounds haben wir ja soweit schon definiert.

Danke an alle, die die Spritespezifikation unterstützt haben (theDon, Buster und weiß der Henker wer noch :)

--

K:R-I)Z++
"CSS ist cascading style sheets. Und nicht so'n Ranzspiel." - dp
In memory of Voice († 2005/03/30)

zum Seitenanfang zum Seitenende Profil || Suche
011
12.04.2007, 12:36
oxff



Kriz: Meinst du nicht, es gibt auch sinnvolle Projekte?

--

mwcollect - mein Projekt | oxlog - mein blog | happyhardcore.com Stream - gute Musik

zum Seitenanfang zum Seitenende Profil || Suche
012
12.04.2007, 15:53
Kriz



Die einen sammeln Viren und Trojaner, die anderen versuchen Licht in den HL-Dschungel zu bekommen. Wo liegt das Problem?

--

K:R-I)Z++
"CSS ist cascading style sheets. Und nicht so'n Ranzspiel." - dp
In memory of Voice († 2005/03/30)

zum Seitenanfang zum Seitenende Profil || Suche
013
12.04.2007, 19:42
Pyro Phoenix



Zitat:
0xFF postete
Kriz: Meinst du nicht, es gibt auch sinnvolle Projekte?
*sabber* <- Das is doch wohl Grund genug für so ein Projekt ...
*KLICK !* <- Und das erst recht

€dit:
Mir is da grade was aufgefallen ...

Die Anzahl der Frames kann garnich Unbegrenzt sein ... :D
Überleg mal ...

Zitat:
typedef struct {
unsigned char ident[4];
int version;
int type;
int texFormat;
float boundingradius;
int width;
int height;
int numframes;
float beamlength;
synctype_t synctype;
} d_spriteHeader;
[spoiler]
Die Kombination aus int und numframes ist des Rätsels lösung
[/spoiler]

--


Dieser Beitrag wurde am 12.04.2007 um 20:34 von Pyro Phoenix bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
014
12.04.2007, 23:03
Kriz



Das ist mir auch klar, aber ein Integer reicht für die "Theorie" ja auch vollkommen aus. Ein 32 Bit signed Integer ist groß genug, um als "unbegrenzter" Framescounter zu gelten.

--

K:R-I)Z++
"CSS ist cascading style sheets. Und nicht so'n Ranzspiel." - dp
In memory of Voice († 2005/03/30)

zum Seitenanfang zum Seitenende Profil || Suche
015
13.04.2007, 07:12
theDon



Schwachsinn, ein Integer hat grundsaetzlich einen beschraenkten Wertebereich.

--

\o tanz den naziprau! o/

And more than ever, I hope to never fall,
Where enough is not the same it was before

zum Seitenanfang zum Seitenende Profil || Suche
016
13.04.2007, 13:18
Kriz



Ja klar, das Sprite mit 2.000.000 Frames will ich sehen...

--

K:R-I)Z++
"CSS ist cascading style sheets. Und nicht so'n Ranzspiel." - dp
In memory of Voice († 2005/03/30)

zum Seitenanfang zum Seitenende Profil || Suche
017
13.04.2007, 13:30
theDon



Mal ganz davon abgesehen, dass 2 * 10^6 mit einem 32-bit-Integer durchaus noch darstellbar ist:
Der Wertebereich einer solchen Variable ist nuneinmal ein beschraenktes Intervall auf |N.

--

\o tanz den naziprau! o/

And more than ever, I hope to never fall,
Where enough is not the same it was before

zum Seitenanfang zum Seitenende Profil || Suche
018
13.04.2007, 13:42
Kriz



.oO(Schlimmer als ein Bürokrat)

Es ist für das Spriteformat ausreichend, es wäre sogar ein short ausreichend gewesen, wenn nicht sogar ein char. Das int begrenzt ist, sollte allgemein bekannt sein und das alles auf einem Rechner begrenzt ist, sollte noch mehr bekannt sein. Alles weitere ist überflüssige Diskussion zu diesem Thema.

--

K:R-I)Z++
"CSS ist cascading style sheets. Und nicht so'n Ranzspiel." - dp
In memory of Voice († 2005/03/30)

zum Seitenanfang zum Seitenende Profil || Suche
019
13.04.2007, 15:17
Pyro Phoenix



Zitat:
Jetzt folgen ab dem Byte 0×09 die sogenannten Intervalle. Das sind FLOAT Werte, welche die Anzeigesequenz der Groupframes bestimmen. Man kann so bestimmen, welcher Groupframe wann in der Reihenfolge erscheinen soll. Angefangen wird mit dem Wert 0.0 (als erstes anzeigen) und aufgehört wird mit 1.0 (als letztes anzeigen). Da die Intervalle auch unsortiert vorliegen dürfen, ist eine Mischsequenz möglich. Intervallwerte für eine lineare Sequenz erhält man, indem man 1.0 durch die Anzahl der Groupframes teilt (1.0 / n). Bei 5 Groupframes wäre das also der Wert 0.2. Der erste Groupframe bekommt die 0.0, der zweite die 0.2, der dritte die 0.4, der vierte die 0.6 und der letzte die 1.0.

Ich muß allerdings zugeben, daß mir bisher kein Groupframe unter die Augen gekommen ist und ich so nicht sagen kann, ob das mit den Intervallen bzw. mit ihrer Bedeutung auch so stimmt. Die vorliegenden Daten habe ich aus diversen Quellen zusammengetragen und ich lehne jede Verantwortung für die Richtigkeit dieser Angaben ab!

Könntest du diesen Teil noch ein wenig genauer beschreiben ?
Den kapier ich nich so richtig ... Werden da ALLE Intervalle geladen ?
Oder nur einer, für das jeweilige Frame ?

--

zum Seitenanfang zum Seitenende Profil || Suche
020
13.04.2007, 16:31
Kriz



Jeder einzelne Groupframe besitzt das Intervallarray. Das ist zwar unökonomisch, aber leider Fakt. Es wird nur einmal gebraucht für alle Groupframes, trotzdem ist es in jedem Groupframe immer dabei.

--

K:R-I)Z++
"CSS ist cascading style sheets. Und nicht so'n Ranzspiel." - dp
In memory of Voice († 2005/03/30)

zum Seitenanfang zum Seitenende Profil || Suche
021
13.04.2007, 17:10
Pyro Phoenix



Öhh ... wie soll denn dann bestimmt werden, welchen Intervallindex das
jeweilige Frame hat ?

--

zum Seitenanfang zum Seitenende Profil || Suche
022
13.04.2007, 19:28
Kriz



Ganz einfach, wenn das Intervallarray 6 float-Elemente hat, dann gibt es auch 6 Groupframes. interval[0] = 1. Groupframe bis interval[5] = 6. Groupframe. Das sollte eventuell noch besser hervorgehoben werden im Wiki. Mach ich gleich.

--

K:R-I)Z++
"CSS ist cascading style sheets. Und nicht so'n Ranzspiel." - dp
In memory of Voice († 2005/03/30)

zum Seitenanfang zum Seitenende Profil || Suche
023
15.04.2007, 20:44
Pyro Phoenix



So. Gibt neue Infos zum Thema Maximale Frames !

Ich hab mir mal den original Quellcode von VALV'es sprgen.exe
angeschaut.

Quellcode:#define MAX_FRAMES            1000
Damit sollte sich das Thema Maximale Frames erledigt haben.

--

zum Seitenanfang zum Seitenende Profil || Suche
024
15.04.2007, 22:21
Kriz



Ok, wird gleich eingebaut.

--

K:R-I)Z++
"CSS ist cascading style sheets. Und nicht so'n Ranzspiel." - dp
In memory of Voice († 2005/03/30)

zum Seitenanfang zum Seitenende Profil || Suche