| Autor |
Beitrag |
.50AE
      
Beiträge: 100
|
Verfasst: 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
      
Beiträge: 2971
Windows Vista Ultimate
D7 Enterprise
|
Verfasst: Mi 17.01.07 18:55
Du weist doch, pro thread eine Frage!
Aber für die Transparenz gibts ne einfache Lösung:
Delphi-Quelltext 1: 2:
| ASimpleObject.alphatest := true; ASimpleObject.alphatolerance := 0.4 |
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
      
Beiträge: 1889
Erhaltene Danke: 1
XP home, ubuntu
BDS 2006 Prof
|
Verfasst: Mi 17.01.07 19:05
Das teilweise neu Zeichnen geht generell bei OpenGL nicht.
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 
      
Beiträge: 100
|
Verfasst: 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
JayEff hat folgendes geschrieben: |
Aber für die Transparenz gibts ne einfache Lösung:
|
...die bei mir leider nicht funktioniert.
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
      
Beiträge: 2971
Windows Vista Ultimate
D7 Enterprise
|
Verfasst: Mi 17.01.07 20:22
Frag FotD wie es geht, bei mir gehts so. Haben deine TGAs auch nen Alphakanal, ja? 
_________________ >+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
|
|
.50AE 
      
Beiträge: 100
|
Verfasst: 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
      
Beiträge: 2971
Windows Vista Ultimate
D7 Enterprise
|
Verfasst: 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
      
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: 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
      
Beiträge: 5285
Erhaltene Danke: 28
Win Vista (32), Win 7 (64)
Eclipse, SciTE, Lazarus
|
Verfasst: Do 18.01.07 18:11
mit dem integrierten blending gehts glaube ich nicht, aber es gibt wege: www.delphigl.com
|
|
.50AE 
      
Beiträge: 100
|
Verfasst: 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
      
Beiträge: 2971
Windows Vista Ultimate
D7 Enterprise
|
Verfasst: 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 ... 
_________________ >+++[>+++[>++++++++<-]<-]<++++[>++++[>>>+++++++<<<-]<-]<<++
[>++[>++[>>++++<<-]<-]<-]>>>>>++++++++++++++++++.+++++++.>++.-.<<.>>--.<+++++..<+.
|
|
.50AE 
      
Beiträge: 100
|
Verfasst: 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
Wenn ich das alles mal ausprobiert hab meld ich mich wieder
Danke für Eure Antworten,
50ae
|
|
Lossy eX
      
Beiträge: 1048
Erhaltene Danke: 4
|
Verfasst: Fr 19.01.07 11:36
JayEff hat folgendes geschrieben: | Als BMP würd ich aber generel nich speichern, wenn sichs vermeiden lässt, denn BMPs sind nun wirklich ...  |
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 
      
Beiträge: 100
|
Verfasst: 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
      
Beiträge: 1048
Erhaltene Danke: 4
|
Verfasst: 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 
      
Beiträge: 100
|
Verfasst: 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
      
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: 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 
      
Beiträge: 100
|
Verfasst: 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
      
Beiträge: 3661
Erhaltene Danke: 604
Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
|
Verfasst: 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 
      
Beiträge: 100
|
Verfasst: 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
|
|