Autor Beitrag
.50AE
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 100



BeitragVerfasst: Mi 17.01.07 18:27 
Hallo :)

Die Welt meines Fear2D Spiels soll (so hab ich mir das bisher vorgestellt) aus einzelnen Teilen aufgebaut sein. Das hat den Vorteil, dass ich relativ einfach einen Leveleditor dafür erstellen kann.

Problem A: Gelöst Wenn ich Teile verwende, gibt es eine mehr oder weniger unkomplizierte Möglichkeit, eine Rampe einzubauen? Damit der Spieler nicht dauernd springen muss wenn sich das Level erhöht.

Problem B: Geht nicht. Transparenz: Siehe unten

Problem C: Gelöst Der Spieler soll seine Spielfigur später natürlich bewegen können. Dabei soll sich die Figur die ganze Zeit über im Mittelpunkt des Fensters befinden. Wie kann ich also realisieren, dass sich nicht die Spielfigur bewegt, sondern die Welt um sie herum.
Muss ich dazu die ganze Welt bewegen, und die Spielfigur dauernd in der Mitte neu zeichnen; oder die Welt nicht bewegen und die Teile usw. der Welt neu zeichnen?

Problem D: Gelöst Der Leveleditor. Gibt es eine einfache Möglichkeit die TGA Teile ohne OpenGL zu zeichnen? Oder sollte ich die Teile besser zusätzlich als BMP speichern und folglich auch die anti-alias Kanten abschnippeln? ;)

MfG
50ae


Zuletzt bearbeitet von .50AE am Do 22.02.07 17:14, insgesamt 4-mal bearbeitet
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Mi 17.01.07 18:55 
Du weist doch, pro thread eine Frage! :mahn:
Aber für die Transparenz gibts ne einfache Lösung:
ausblenden Delphi-Quelltext
1:
2:
        ASimpleObject.alphatest := true;
        ASimpleObject.alphatolerance := 0.4 //kannst mal damit rumspielen mit dem Wert;

Was das Welt Bewegen betrifft, wirds keine einfachere Möglichkeit geben, als die Welt komplett zu bewegen. Das teilweise Neuzeichnen geht glaub bei der F2D Engine nicht.

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
jakobwenzel
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1889
Erhaltene Danke: 1

XP home, ubuntu
BDS 2006 Prof
BeitragVerfasst: Mi 17.01.07 19:05 
Das teilweise neu Zeichnen geht generell bei OpenGL nicht. :wink:

Einfach das Level bewegen und die Figur immer an die gleiche Stelle zeichnen. (Oder dass die Figur sich in einem bestimmten Bereich bewegt und wenn sie da raus kommt wird gescrollt)

Um die Grafiken zu laden: GraphicEX
Da haste die Grafiken dann in nem TBitmap.
Aber ich würds so machen, dass du nur ein Panel oder so zum OpenGL-Bereich machst und dann normale VCL-Controls drum rum baust. Nur geht das mit FEAR2D so direkt nicht, du musst da erst noch n bisschen was ändern.

_________________
I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
.50AE Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 100



BeitragVerfasst: Mi 17.01.07 19:08 
Hi

Ich hab einfach Panels über die Engine gelegt, für das "außenrum".

Die Fragen hab ich alle in ein Thema geschrieben, weil sie so gut zu einander passen ;)

Ich guck mir eure Vorschläge dann später mal an! Danke,
50ae

//Edit
user profile iconJayEff hat folgendes geschrieben:

Aber für die Transparenz gibts ne einfache Lösung:

...die bei mir leider nicht funktioniert.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
    with Tile[1] do
     begin
      position := to_v2d(0,24);
      size := to_v2d(24, 24);
      z := 1;
      Texture := '1';
      alphatest := true;
      alphatolerance :=  0.4;
     end;

von 0 bis 0.99 bleibt das TGA komplett sichtbar. Ab einem Wert von 1 ist es dann komplett unsichtbar...
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Mi 17.01.07 20:22 
Frag FotD wie es geht, bei mir gehts so. Haben deine TGAs auch nen Alphakanal, ja? :)

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
.50AE Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 100



BeitragVerfasst: Mi 17.01.07 20:28 
Ouch. Das Teil hat ja wirklich keinen.

Ich habs zuerst als 24-bit TGA gespeichert. (Wie komm ich bloß von 4 * 8 auf 24^^)

Danke, 50ae

//Edit: Ehm. Das sieht ja jetzt genauso aus wie ein GIF oder so; von wegen alpha!
Die Pixel sind entweder durchlässig oder nicht. An der Datei liegt es diesmal aber nicht, die hab ich mir extra nochmal nach dem speichern angeguckt...
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Do 18.01.07 15:10 
Mit alphatolerance rumspielen, wenns nicht das gewünschte ergebnis bringt, kann die F2D Engine wohl keine teiltranzparenz (NOCH nicht)

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: Do 18.01.07 15:22 
Sie hat 'echte' Alpha-Transparenz. Ich glaube, da muss man eins von den anderen Eigenschafen setzen.

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
F34r0fTh3D4rk
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 5285
Erhaltene Danke: 28

Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
BeitragVerfasst: Do 18.01.07 18:11 
mit dem integrierten blending gehts glaube ich nicht, aber es gibt wege: www.delphigl.com
.50AE Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 100



BeitragVerfasst: Do 18.01.07 19:46 
Es klappt tatsächlich; die richtige von den vielen Alpha-Einstell-Möglichkeiten war einfach UseAlpha.

Wenn es jetzt nicht doch funktioniert hätte wäre delphiGL.com aber auf jeden Fall ein guter Tip gewesen! (Ist es auch so noch ;)

Damit ist Problem B schonmal gestrichen :)
Da ich für das TGA zeichnen ohne OpenGl keine andere Lösung gefunden habe werde ich das wohl mal mit GraphicEx ausprobieren. Wenn ich das nicht hinkriege speicher ich die Teile doch noch als BMP oder so; braucht ja nicht übermäßig viel speicher..

Bleibt am Ende nur noch Problem A (Spieler soll auf Rampen, also schräg nach oben, laufen können)
Wäre es angebracht die "festen" Pixel der Teile (auf denen man laufen kann), als s/w bitmap abzuspeichern und das Level zusätzlich mit diesen Teilen zusammenzusetzen?
Dann würde ich anhand des unsichtbaren s/w Levels die Kollision prüfen.
Oder gibt es eine bessere Lösung?

MfG
50ae
JayEff
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2971

Windows Vista Ultimate
D7 Enterprise
BeitragVerfasst: Do 18.01.07 21:20 
Ich habe schon von Spielen gehört die so arbeiten ... Arbeitet nicht sogar Worms so in seinen Maps? Die lustige bunte Textur wird lediglich über s/w bitmaps gelegt, wenn ich mich recht erinnere. Wenn du nun ein Format nimmst, das wenig Speicher benötigt (da gabs mal eins, das pro pixel ein bit nahm... ob das wohl anwendbar ist ...? ), wird das wahrscheinlich eine sehr gute Lösung.

Als BMP würd ich aber generel nich speichern, wenn sichs vermeiden lässt, denn BMPs sind nun wirklich ... :puke:

_________________
>+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
.50AE Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 100



BeitragVerfasst: Do 18.01.07 21:27 
Jaja, das stimmt schon. Bei JPGs hab ich eben keine exakten Ränder.
Wie siehts mit GIF aus?

BMP finde ich in dem Fall aber gar nicht soo schlecht, da ich ja nur.. sagen wir mal 50 Teile speichere; pro Teil vielleicht 6kb - das ist noch im Rahmen.

Außerdem kann ich die Bitmaps dann gleich für den Editor verwenden und kann mir das GraphicEx doch sparen :D

Wenn ich das alles mal ausprobiert hab meld ich mich wieder :)

Danke für Eure Antworten,
50ae
Lossy eX
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1048
Erhaltene Danke: 4



BeitragVerfasst: Fr 19.01.07 11:36 
user profile iconJayEff hat folgendes geschrieben:
Als BMP würd ich aber generel nich speichern, wenn sichs vermeiden lässt, denn BMPs sind nun wirklich ... :puke:

Also BMPs sind vielleicht nicht das non plus ultra aber sie können wesentlich mehr als man auf den ersten Blick vielleicht glauben mag. Und nur weil die meisten Programme das nicht sinnvoll unterstützten heißt es noch lange nicht, dass das Format schlecht ist. ;) Denn ich denke mal das "Hauptproblem" bei BMP ist etwas ideologischen. Die Abneigung gegenüber der Firma die es erfunden hat. Aber man sollte "Politik" und unnötigen Arbeitsaufwand voneinander trennen.

GIF als Alternative? Ich denke nicht. GIFs arbeiten mir einer Palette und das ist nur sehr bedingt für OpenGL nutzbar. Aber auch dann gibt es andere Alternativen als GIFs.

JPEG ist eine Verlustkompression. Das ist wirklich nur für normale Foto zu gebrauchen. Wobei mir da richtige Fotofreunde für die Aussage den Hals umdrehen würden. ;)

GraphicEX: Also nur um die Unterstützung von TGA zu ermöglichen finde ich das ein bisschen übertrieben. Im Endeffekt werden BMPs nativ von Delphi unterstützt und die sollten in deinem Falle durchaus all das können was mit TGAs auch möglich wäre.

_________________
Nur die Menschheit ist arrogant genug, um zu glauben sie sei die einzige intelligente Lebensform im All. Wo nicht mal das nachhaltig bewiesen wurde.
.50AE Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 100



BeitragVerfasst: Do 22.02.07 11:59 
Oh, hab gerade bemerkt, dass ich das Problem noch nicht als gelöst gekennzeichnet hab..
Trifft sich ganz gut :) (siehe unten)

Die s/w Pixel speicher ich "per Hand" in eine Datei ab..
Das sieht dann etwa so aus:
00001111111111
00001111111100
Vielleicht komprimier ich das auch noch, aber ca 1kB pro Datei ist eigentlich wenig genug.
Das geht bei den meisten Teilen sehr schnell - und wenn nicht.. naja, muss es ja nur 1 mal machen :)

Zur Transparenz allerdings nochmal:
UseAlpha liefert mir auch nicht die gewünschten Ergebnisse. Bei diesem Verfahren wird anscheinend schwarz als Alpha-"Farbe" genutzt. D.h. je dunkler ein Pixel, desto transparenter ist es.

AlphaTest kann bei mir nach wie vor keine richtige Transparenz. Könnte das an der Version meiner Engine liegen? Wenn ja, wo sehe ich welche das ist und ob es eine neuere gibt?

MfG
50ae
Lossy eX
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1048
Erhaltene Danke: 4



BeitragVerfasst: Fr 23.02.07 09:33 
Als Erstes einmal ein kleiner Unterschied. Es gibt zwei Arten von Tranzparenzen. Das eine hat einen Schwellwert über den entschieden wird ob ein Pixel angezeigt wird oder nicht. Das ist der AlphaTest und bei dem Anderen gibt der Alphakanal an wie sichtbar ein Pixel ist. Das wird normal als Blending bezeichnet. Das ist irritierender Weise in Fear3D als UseAlpha bezeichnet. Was wohl gemerkt nicht falsch sondern nur verwirrend ist. Es wird aber für beide Techniken der Alphakanal in einem Bild angesprochen. Und das Ergebnis bei AlphaTest ist so 100%tig richtig. Das ist in OpenGL so verankert. Für alles andere gibt es das Blending.

Die beiden Möglichkeiten lassen sich auch kombinieren was aber dazu führt, dass deine Pixel erst einmal abgeschnitten werden, falls sie den Alphatest nicht bestehen. Also solltest du besser nur UseAlpha benutzten. Warum sich das komisch verhält verstehe ich anhand deiner Beschreibung nicht. Mach davon mal ein Bild und poste es hier. Am Besten dein zu grunde liegendes Bild gleich mit. Höchstwahrscheinlich dürfte das wohl

Was bezweckst du eigentlich mit S/W Pixeln in der extra Textdatei?

_________________
Nur die Menschheit ist arrogant genug, um zu glauben sie sei die einzige intelligente Lebensform im All. Wo nicht mal das nachhaltig bewiesen wurde.
.50AE Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 100



BeitragVerfasst: Fr 23.02.07 12:02 
(Das mit den schwarz-weiß Dateien bezieht sich auf die Kollision.)

Hier mal 3 Bilder.
Wie man deutlich erkennt ist bei UseAlpha nur noch das Rote Gitter zu sehen.

MfG
50ae
Einloggen, um Attachments anzusehen!
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: Fr 23.02.07 12:10 
Das würde ich jetzt mal auf eine falsche Render-Reihenolge zurückführen.
Sieht irgendwie so aus, also ob das Gitter über da andere gerendert wird...

Soll ich UseAlpha in F2d in AlphaBlend umbenennen? Dannn müsste man allerdings Programme ändern, was ich bi jetzt vermeiden wollte...

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
.50AE Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 100



BeitragVerfasst: Fr 23.02.07 12:32 
Das Gitter+Das schwarze unter dem Gitter (das bei useAlpha nicht da ist) gehört zusammen (Siehe Bild des Grafikprogramms)

Und das wird dan über alles andere gelegt.. sozusagen als Rahmen
Was sollte da ne falsche Reihenfolge sein?

50ae
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: Fr 23.02.07 12:49 
Das würde dann ja heißen, dass ... ich dich nicht verstehe ;)

Mach mal ne Fotomontage, wie es aussehen sollte...

Oh, vielleicht doch. Ich muss gleich weg, deshalb ruf ich mal nur glBlendFunc() in den Raum, hier könnte dann mal ein anderer GL'er übernehmen ;)

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."


Zuletzt bearbeitet von Martok am Fr 23.02.07 17:46, insgesamt 1-mal bearbeitet
.50AE Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 100



BeitragVerfasst: Fr 23.02.07 13:51 
Bin jetzt leider auch weg, die Photomontage kommt dann später!

Mit deinem Begriff kann ich leider nicht so viel anfangen, da ich mich bisher zu 100% nur mit F2D auseinandergesetzt habe (und das auch noch nicht soo viel)

MfG
50ae