Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

21

10.02.2012, 14:25

Okay, super. Funktioniert! Habe die vorhandene Kollision (vom Ball mit den Blöcken) etwas angepasst. Hat wunderbar geklappt. Das Baummodell habe ich mit Blender erstellt und importiert - klappt auch!

Jetzt muss ich im Prinzip "nur" noch das ebene Spielfeld von Breakanoid durch ein Terraing mit Heightmap ersetzen. :wacko:

22

11.02.2012, 13:56

An der Erstellung des Terrains beiße ich mir grade leider etwas die Zähne aus und wäre dankbar wenn mir jemand helfen kann!

Zur Erinnerung: Ich befinde mich immer noch im ehemaligen Breakanoid Spiel und habe dieses soweit umgebaut, dass:
Der Ball mit den Pfeiltasten auf x- und z-Achse steuerbar ist, statt der Blocke eine Haus und ein Baum auf dem Feld stehen, mit denen der Ball kollidieren kann.
Das ursprüngliche Feld habe ich durch ein großes Grid mit einer Rasentextur ersetzt.

Nun muss ich es noch hin bekommen, dass die eben Fläche 1-2 kleine Erhebungen bzw Absenkungen erhält über die ich die Kugel steuern kann. Es muss keine realistische Physik geben, hauptsache der Ball klebt immer am Terrain, geht als auch mit hoch und runter.
Das stelle ich wahrscheinlich am besten mit einer HeighMap an...
Die habe ich mit dem TerrainEditor auch schon erstellt (also das bmp File). Aber wie und wo binde ich das Ding jetzt ein? :hmm:

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

23

11.02.2012, 14:11

Das Stichwort Heightmap ist doch schon gefallen. Werf doch mal ne Suchmaschine an;)
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

24

11.02.2012, 14:15

Hab ich doch schon Schorsch ;)
Mir fehlt grade nur leider ein Ansatzpunkt wo ich im Breakanoid-Code überhaupt eingreifen muss und was ich verändern muss.
Leider bietet das Buch ja kein konkreten Beispiel wie man eine Terrain mit einer Heightmap erzeugt.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

25

11.02.2012, 15:49

Und genau das sollst du ja bei Google suchen.
Hab grad mal nur kurz gesucht aber guck dir doch zum Beispiel das hier mal an:
http://www.unrealed.info/index.php?view=…aften-erstellen

Da wird direkt im ersten Abschnitt erklärt was eine Heightmap ist und wie die benutzt wird um daraus ein Terrainmodel zu erstellen. Wobei für dich erst mal nur das Terrain an sich wichtig ist. Die Texturierung und "Dekoration" kannst du erst mal getrost außer acht lassen. Versuche zu verstehen was eine Heightmap ist und was sie in Bezug auf dein Terrain aussagen soll. Versuche dann selbst ein Programm zu schreiben, was eine Heightmap einließt und daraus dann dein Terrain generiert. Wenn Fragen aufkommen kannst du sie hier ja stellen, aber versuch erst mal ein bisschen alleine. Das ist wirklich nicht schwer.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

26

11.02.2012, 17:49

Danke dass du mir den Link rausgescht hast, aber der hilft mir bei meinem derzeitigen Problem leider auch gar nicht weiter.
Es ist ja so, dass ich grade gar nicht weiß an welcher Stelle im Code ich überhaupt ansetzen muss, geschweige denn was ich tun muss. Und im Buch finde ich leider auch nichts dazu.

Was eine Heightmap ist, so denke ich, habe ich verstanden. Aber ich hab grade einfach ein Brett vor dem Kopf und komme so nicht weiter, weil es auch keinen Fehler gibt den ich hier melden könnte. Ich weiß einfach gar nicht wie ich wo anfangen soll.

Kann ich die vorhandenen ebene Fläche (ehemals das Breakanoid Spielfeld, welchem ich die Wände entfernt habe und was nun etwa 4 mal so groß ist) weiter verwenden?
Muss ich eine komplett neue Fläche erschaffen? Wie lese ich die Heightmap ein?

?( Bin grade ein bisschen verzweifelt. Wenn man tief in der Materie steckt, dann sind das vielleicht alles ganz triviale Fragen für einen. Aber ich weiß mir grad leider wirklich nicht mehr zu helfen.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

27

11.02.2012, 18:40

Naja erst mal solltest du dran denken das TriBase eher zum lernen gedacht ist. Wenn du also vor hast ein richtiges Spiel damit auf die Beine zu stellen dann solltest du vielleicht zu einer richtigen und gut erprobten Engine greifen. TriBase nimmt dir zwar schon einiges an arbeit ab, kann aber mit größeren Engines nicht mithalten. Dafür wurde sie ja auch nicht entwickelt.
Wenn es dir aber nur ums lernen geht dann kannst du es natürlich weiter mit TriBase von Hand machen.
Wenn du fertige Programme nimmst und sie anpasst ist das an sich eine schöne Sache, aber vieles vom Code den du benutzt wirst du vermutlich nicht wirklich verstehen/kennen. Vielleicht wäre es besser wenn du dir ein neues Projekt machst und da mal von Grund auf startest. Fenster initialisieren etc geht mit der TriBase soweit ich das im Kopf hab ja relativ fix.
Dann überlegst du dir wie du deine Klassen strukturieren willst. Wo die Spielfigur hinkommst, wo die Welt hinkommt und und und. Dann wird dir das alles viel viel einfach fallen, weil du dir selbst aussuchst wie du dein Projekt strukturierst.
Das Projekt was du versuchst abzuändern ist ja auf Davids (mist) gewachsen. Er fand die Struktur für dieses Projekt gut und hat es deswegen so umgesetzt. Deine Vorstellungen oder dein Verständnis ist aber vielleicht ein ganz anderes als das von David. Dazu kommt, dass dein Projekt ein anderes wird als das Spiel im Buch. Der Aufbau ist also vielleicht gar nicht so passend zu dem was du vor hast.
Hast du schon mal 2D Spiele geschrieben? Falls ja, kennst du dich ja schon ein bisschen mit dem Aufbau aus und hast so deine Vorstellungen wie man ein Spiel strukturieren kann. Falls nein rate ich dir dazu dir ein Einsteigerbuch zu dem Thema zu kaufen. Ich selbst habe den Fehler gemacht mir Davids Buch zu kaufen ohne genug Vorwissen zu haben. Klar habe ich das was er geschrieben hat in der Theorie verstanden, konnte dann aber auch keine eigenen Sachen umsetzen, einfach weil ich noch zu wenig Grundwissen hatte.
Ansonsten könntest du ja auch einfach noch mal an die Kapitel springen mit den Stellen die du nicht genau verstehst, oder nicht mehr richtig im Hinterkopf hast und da noch mal genau nachlesen. Das Problem ist halt, dass das Buch versucht sehr viel Stoff zu vermitteln und da ist man als Anfänger schnell überfordert. Deswegen steht ja auch drin, es sei nicht für Anfänger gedacht.
Und wie gesagt, wenn du schon Erfahrung hast, dann überleg dir doch einfach mal wo du die Welt in einem 2D Spiel hinklatschen würdest.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

28

11.02.2012, 19:13

Danke für die ausführliche Antwort:

Es ist so, dass ich dieses Projekt für die Uni anfertigeund der einzige Punkt der zur Fertigstellung fehlt ist jetzt halt das Terrain und dass sich der Ball über das Terrain lenken lässt.
Ich möchte kein Spieleprogrammierer werden und das ist auch die vorletzte Aufgabe in meinem Studium. Deshalb gehts mir da wirklich nur noch um die Fertigstellung ;)
Zuvor habe ich bereits 2 Semester lang C++ gelernt und bin da auch immer sehr gut mitgekommen und hatte kein Problem die Hausarbeiten dafür eigenständig anzufertigen.
Diesmal halt leider schon, weil ich das Buch stellenweise wirklich zu wenig ausführlich finde (z.B. was das Terrain angeht). :rolleyes:

29

11.02.2012, 20:28

Ich versuche jetzt mit diesem Code mal innerhalb eines neuen Projektes zu arbeiten und den einfach nur zum Laufen zu bekommen.
Ich habe grade noch Probleme mit diesem cPath, da zeigt der Compiler immer fehler an. Ebenso wenn ich dort einen direkten Pfad zu einer Datei eintrage...

Bei

Quellcode

1
tbDirect3D::GetDevice()->SetStreamSource(0, m_pTerrainVB->GetVB(), 0, sizeof(STerrainVertex));
hat der Compiler auch gemeckert, das habe ich mal in

Quellcode

1
D3D->SetStreamSource(0, m_pTerrainVB->GetVB(), 0, sizeof(STerrainVertex));
geändert, hilft aber auch nicht.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »-Ricken-« (14.02.2012, 08:34)


Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

30

11.02.2012, 20:58

Sag das doch gleich;) Das ist echt ne Menge Code und hab vor nächster Woche wenig Zeit zwecks Klausur am Montag, aber poste doch mal die genaue Fehlermeldung vom Compiler. Wenn es um nen Pfad geht, dann musst du den Pfad vielleicht in einem anderen Format angeben. Dabei könntest du gucken wie das bei den anderen Models gelöst ist. Für die Heightmap lädst du einfach eine Textur ein. Die Zeiten mit dem Buch sind bei mir schon etwas her und deswegen kenn ich mich nicht mehr so genau mit den Funktionen der TriBase aus und reinen DirectX habe ich außerhalb des Buchs nie benutzt, aber es sollte Funktionen geben um Farbwerte an bestimmten Stellen der Textur auszulesen. Ob du jetzt eine Graustufentextur für die Heightmap benutzt oder eine normale Grafik mit RGB Kanälen ist eigentlich erst mal egal. Du kannst die Höhendaten ja auch einfach in den Rotkanal auslagern, oder dir eine Berechnung aus allen Kanälen dafür machen. Wie es dir am besten gefällt und was für dich am schnellsten/einfachsten Funktioniert. Dann erzeugst du dir halt deinen Vertexbuffer und passt die Höhendaten entsprechen der Höheninformationen der Heightmap an. Für die Welt macht eine Extra Klasse schon Sinn. Hab grad gesehen, so was hast du dir ja auch schon angelegt. Der solltest du eine Funktion geben, die dir die Höhe an einer bestimmten Position zurück gibt. Dafür würde es ja zum Beispiel reichen in der Heightmap nachzugucken. Diese Funktion wäre dann dafür nützlich den Spieler/Ball/was auch immer auf dem Terrain "kleben" zu lassen. Dafür musst du dann einfach den Radius von der Kugel aufaddieren und hast die benötigte Position für den Spieler/Kugel. Das wäre dann auch soweit alles denke ich.
Wenn du zu bestimmten Stellen genaue Fragen hast meld dich einfach noch mal und wie gesagt für die Pfad Sache poste doch bitte mal die Fehlermeldung wenn du es nicht allein lösen kannst.
Und das nächste mal wenn du sowas machen sollst, nimm dir möglichst eine fertige Engine. Da hast du oft schon Funktionen für Terrain, Kollision, etc drin und ersparst dir ne Menge Arbeit;)
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

Werbeanzeige