ActiviT: Javascript 2D Engine programmieren

Beitrag lesen

Hallo

Es werden Spielfiguren, Objekte und Gebäude ja aus Polygonen (meist Dreiecken) "gebaut".

Ich würde sagen du denkst an dieser Stelle viel zu kompliziert: Wozu brauchst du denn hier bitte Dreiecke zum Erstellen deiner Spielfiguren?

Wegen der Kollisionsengine. Ich muss ja eine Fläche haben, mit deren Hilfe ich Kollisionen abfragen kann. Die Grafiken sind davon natürlich mehr oder weniger unabhängig.

Hast du nie einen NES oder Atari oder sowas gehabt?

Doch klar, daher kommt überhaupt erst meine Motiviation. ;)

Kann mich beim besten Willen nicht daran erinnern dort jemals einen Objekt gesehen zu haben, dass aus vielen kleinen Dreiecken bestand -> das kam erst mit der 3D Programmierung. Viele einzelne Grafiken sind in diesem Fall die Lösung.

Nunja, beispielsweise Zelda A Link To The Past auf dem SNES. Dort spielt man eben Link (den Protagonist) und wenn man dicht an eine Wand läuft, ist ein Teil seiner Kleidung über der Wand. Das sieht auch realistisch aus. D.h. die Teile, aus denen er besteht (Kugeln, Polygone, whatever) sind kleiner als die Grafik.

Was mir aber noch mehr Kopfzerbrechen bereitet, ist die Kollisionsberechnung.

Kollisionsberechnung ist in 2D auch nicht besonders schwierig. Bei 3D Spielen werden typischerweise Quader oder Kugeln als Kolisionsbox verwendet. Bei 2D wären das somit dann Rechtecke oder Kreise. Die Formeln für die Berechnung lassen sich damit dann auch recht einfach selbst herleiten.

Gibt es dazu irgendwelche Links? Ich finde absolut nichts. Oder irgendwelche Lektüre in Papyrus-Form?
Ich vermute einfach mal, dass dabei Schnittmengen von Körpern berechnet werden und man auf das jeweilige Ergebnis reagieren müsste. Das könnte ich mir wahrscheinlich schon selber herleiten, aber ich habe angst, dass ich vieles kompliziert mache und ein eventuelles Spiel nachher nur noch auf einem Core2Duo mit XXX GHz spielbar ist.

Ich kann mir eine Kollisions-Engine eigentlich nur so vorstellen, dass sie bei jeder Bewegung berechnet, ob ein Teil eines Objekts nach der Bewegung von der Position her mit dem Teil eines anderen Objekts übereinstimmt und diese Bewegung dann nur beschränkt zulassen. Das ist aber mit Sicherheit sehr sehr rechenaufwendig, weil ich bei _jeder_ Bewegung (also im Prinzip alle paar Millisekunden für dutzende Objekte) jede mögliche Kollision abfragen müsste. Ist soetwas mit Javascript überhaupt möglich?

Du musst natürlich nur die Objekte überprüfen, die sich auch wirklich geändert haben in Ihrer Position.

Das mit der KI wird auch noch so eine Sache...

Hoffe, dass ich dich damit ein wenig in die "richtige" Richtung gelenkt habe.

Ja. Danke ;)