JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.phpMedaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

Iso 2D-Spiel ZBufferproblem
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 05.09.2005, 20:47    Titel: Iso 2D-Spiel ZBufferproblem Antworten mit Zitat

Also, nehmen wir an ich mache ein Iso Spiel. Dann hab ich leider ein Z-Buffer Prob, welches ich mal anhand von Age of
Empires zu erklären verscuhe (sollte jeder kennen).
Also, nehmen wir an das Level ist ein Array. Das die Bäume alle schön hintereinander sind, aknn man noch erreichen wenn mans in der richtigen Reihenmfolge rendert. Nur wenn dann ncoh variable Objekte hinzukommen, writs doof. Sagen wird die figur steht hinter nem Baum. Normalerweise würde ich erst das level rendern, also erscheint der Spieler vor dem Baum. Ich könnte natürlich auch erst alle flachen Levelbestandteile rendern, also, Bodentextur, und dann die Figuren drauf machen. Dann hab ich aber auch n Problem mit den Bäumen. Auch wenn 2 Figuren hintereinander anzeige, ist das auch doof.
Nun hab ich 2 Lösungen, von denen mir keine so recht gefallen will:
1. Ich render erst den ganzen Boden, mit den Texturen. Danne erstell ich ne Liste mit allen Objekten die net auf der höhe des Bodens sind, also statische Levelobjekte, Figuren Gegenstände und so. Dafür muss ich erstmal bisschen überlegen wie ich die Weite berechne, aber das dürfte nciht son rießiges Problem sein.
2. Ich programmeire mir n Art Z-Buffer genau wie in D3D. Dumemrweise müsste ich dann wohl alle Pixel einzeln setzen, was bestimmt auch nicht so leicht und vor allen Dingen schnell ist.
Eigentlich tendiere ich zur ersten Lösung, allerdings, wenn man viele Bäume (n Wald) viele figuren (ne Armee) und viel sonstigen Kram habe, dann muss ich sehr viel sortieren und so. Meint ihr das wäre die optimale Lösung, oder hab ihr bessere Ideen? Achja, zum sortieren, kann ich doch bestimmt STL benutezn oder, da müsste es doch so Algos geben. Achja, könnte man dann Listen einfacher Sortieren wie Vectoren?
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Dr. Best
Senior JLI'ler


Alter: 35
Anmeldedatum: 17.06.2004
Beiträge: 269
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 05.09.2005, 21:06    Titel: Antworten mit Zitat

Ich würde ehr Lösung eins verwenden. Das sortieren geht relativ einfach *schnell "3D-Effekte für Spieleprogrammierer" aufschlag*:
Du kannst dazu qsort() verwenden. Diese Funktion ruft für jedes Objekt, das es zu sortieren gilt eine call back funktion auf die die Entfernung des Objekts zurückgibt und ordnet sie in dem Input-Feld dann entsprechend.
Ich zitiere einfach mal gerade eine codezeile aus 3D-Effekte f. S. um zu zeigen wie das dann aussieht:
Code:
CAsteorid Asteorid[100];
// Alle Asteoriden initialisieren und bewegen und so
qsort(&Asteorid[0], NumAsteorids, sizeof(CAsteorid), ObjektSortCB); // Das letzte ist die callback funktion
// Alle Asteoriden in einer Schleife rendern

Hoffe das hilft dir weiter
mfg
Dr. Best
_________________

Ich bin da, wer noch?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name MSN Messenger
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 05.09.2005, 21:12    Titel: Antworten mit Zitat

hm, ich glabue das einfachste wäre es n Scene Manager zu machen, statt zu renderrn wird einfahc n sprite in dne Manager eingetragen und am Ende sorteirt und gerendert.Dazu würde ich ne STL List benutzen wollen, die sollte man doch auch recht gut sorteiren können, oder? Gibts da n Minibeispiel zu?
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Dr. Best
Senior JLI'ler


Alter: 35
Anmeldedatum: 17.06.2004
Beiträge: 269
Wohnort: Köln
Medaillen: Keine

BeitragVerfasst am: 05.09.2005, 21:18    Titel: Antworten mit Zitat

Jonathan_Klein hat Folgendes geschrieben:
hm, ich glabue das einfachste wäre es n Scene Manager zu machen, statt zu renderrn wird einfahc n sprite in dne Manager eingetragen und am Ende sorteirt und gerendert.

So hatte ich mir das auch gedacht.

Jonathan_Klein hat Folgendes geschrieben:
Dazu würde ich ne STL List benutzen wollen, die sollte man doch auch recht gut sorteiren können, oder? Gibts da n Minibeispiel zu?

Mit lists kenn ich mich nicht so gut aus. Einmal gelernt, niemehr benutzt, inzwischen größtenteils vergessen.
Hab also auch keine Ahnung wie das da mit Beispielen steht, aber ich denke mit ein bisschen rumgegoogle lässt sich da schon was finden.
Ich kann nur sagen, dass qsort(...) es mir angetan hat. Einfach und recht effizient. Ich meine mit der callback funktion und so sind das ja kaum mehr als 15 Zeilen code.
_________________

Ich bin da, wer noch?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen AIM-Name MSN Messenger
AFE-GmdG
JLI MVP
JLI MVP


Alter: 45
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 06.09.2005, 10:25    Titel: Antworten mit Zitat

Echtes 3D in einer Ortogonalen Isometrischen Ansiche hat einen eingebauten ZBuffer - Weiss aber nicht, ob die Umstellung zu aufwendig ist...
_________________
CPP:
float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 06.09.2005, 12:52    Titel: Antworten mit Zitat

hm, dann müsste ich ja alles mit D3D amchen...
Ist natürlich einerseits ne nette Idee, aber ich galbue ich blei vorerst bei DDraw, schon allein deswegen, weil D3D auf älteren Rechnern nicht so toll läuft.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
magynhard
Super JLI'ler



Anmeldedatum: 26.04.2003
Beiträge: 461
Wohnort: Wild durch die Welt ;-)
Medaillen: Keine

BeitragVerfasst am: 06.09.2005, 16:04    Titel: Antworten mit Zitat

Eine weitere Alternative wäre da OpenGL - kann ich uneingeschränkt weiterempfehlen.
_________________
Niemand ist hoffnungsloser versklavt als der, der fälschlich glaubt frei zu sein. [J. W. Goethe]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 06.09.2005, 17:19    Titel: Antworten mit Zitat

tja, dann sag mir doch mal welche Vorteile ich da genau hätte...
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
magynhard
Super JLI'ler



Anmeldedatum: 26.04.2003
Beiträge: 461
Wohnort: Wild durch die Welt ;-)
Medaillen: Keine

BeitragVerfasst am: 07.09.2005, 19:54    Titel: Antworten mit Zitat

Läuft wimni auch auf älteren Rechnern noch ziemlich flott (da ja auch schon älter) und ist plattformunabhängig. Oder lahmt es da nach deinen Erfahrungen genauso wie bei D3D?

Wie weit zurückgehend ist "ältere Rechner" oben denn gemeint?
_________________
Niemand ist hoffnungsloser versklavt als der, der fälschlich glaubt frei zu sein. [J. W. Goethe]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 07.09.2005, 19:59    Titel: Antworten mit Zitat

hm, zum Beispiel bei DirectX9 können ältere Grafikkarten gar kein Device erzeugen. Das ist dann schon n bisschen blöd, weil dann kreigt man es unter Garantie nciht zum laufen. Bei DDraw hab ich das noch nirgendwo gesehen höchstens mal das das Spiel langsamer läuft.
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
GreveN
JLI Master


Alter: 38
Anmeldedatum: 08.01.2004
Beiträge: 901
Wohnort: Sachsen - Dresden
Medaillen: Keine

BeitragVerfasst am: 07.09.2005, 20:00    Titel: Antworten mit Zitat

Musst doch nicht unbedingt D3D9 verwenden.

Und OGL läuft, vorrausgesetzt du verwendest nicht die hyper-mega-geilen-super-high-end-extensions, garantiert überall.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Yahoo Messenger MSN Messenger
Dragon
Super JLI'ler


Alter: 38
Anmeldedatum: 24.05.2004
Beiträge: 340
Wohnort: Sachsen
Medaillen: Keine

BeitragVerfasst am: 07.09.2005, 20:03    Titel: Antworten mit Zitat

Jonathan_Klein hat Folgendes geschrieben:
hm, zum Beispiel bei DirectX9 können ältere Grafikkarten gar kein Device erzeugen. Das ist dann schon n bisschen blöd, weil dann kreigt man es unter Garantie nciht zum laufen. Bei DDraw hab ich das noch nirgendwo gesehen höchstens mal das das Spiel langsamer läuft.

Auf meinem alten Latop (PIII 866MHz 120MB Ram + 8 Shared Memory) kann ich kein Direct3d9 nutzen. Ich programmiere neuerdings nur auf dieser Maschiene. Mit OpenGL ist das fast kein Problem, wenn man glBegin() und glEnd() nimmt *gg*. Naja es ist das einzigste neben directdraw das funtzt.
_________________
Nur wenn man ein Ziel sieht, kann man es auch treffen.
___________
Mein Leben, Freunde und die Spieleentwicklung
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 07.09.2005, 20:03    Titel: Antworten mit Zitat

naja, OGL könnte ich mir ja irgendwann mal aneignen, aber ich habe nun mal leider nur DX Bücher daher werde ich erstmal auch DX benutzen. Vielleicht ut ich mir aber irgendwann mal n Tutorial an und guck mir OGL genauer an.ober ich benutze einfach irgenne Megageil optimierte OGL Engine, die irgendn Freak in seiner Freizeit gemacht hat, weil er sich nciht mit sowas primitiven wie Games auseinandersetzen will. Wink
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Dragon
Super JLI'ler


Alter: 38
Anmeldedatum: 24.05.2004
Beiträge: 340
Wohnort: Sachsen
Medaillen: Keine

BeitragVerfasst am: 07.09.2005, 20:06    Titel: Antworten mit Zitat

Jonathan_Klein hat Folgendes geschrieben:
[...]oder ich benutze einfach irgenne Megageil optimierte OGL Engine, die irgendn Freak in seiner Freizeit gemacht hat, weil er sich nciht mit sowas primitiven wie Games auseinandersetzen will. Wink

du sprichst von mir oder? *gg* naja stimmt aber etwas, weil ich programmiere nur an meiner engine und nicht am spiel Sad
_________________
Nur wenn man ein Ziel sieht, kann man es auch treffen.
___________
Mein Leben, Freunde und die Spieleentwicklung
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Jonathan_Klein
Living Legend


Alter: 37
Anmeldedatum: 17.02.2003
Beiträge: 3433
Wohnort: Siegerland
Medaillen: Keine

BeitragVerfasst am: 07.09.2005, 20:48    Titel: Antworten mit Zitat

eigetnlich sprach ich von jemand andern Wink
_________________
https://jonathank.de/games/
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum