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

1

29.10.2014, 16:33

[Java] Genauste Physics ohne Laggs

Hey Leute,
Ich entwickel im moment ein 3D Spiel (erstes Gameprojekt :D) und komme das sehr gut vorran. Nun bin ich soweit, das ich die Collisiondetection implementieren möchte, welches ich ohne Librarys machen will.
Also hab ich mich mal hingesetzt und diese Methode gefunden. Ich möchte, das mein Spiel sehr realistisch wirkt, vorallem im Bereich der Physics.
Aber ich möchte auch, das man im später folgenden Multiplayer mit möglichst wenig Laggs spielen kann. Und da sehe ich halt ein Problem, denn ich bezweifle das diese Vorstellungen vereinbar sind, da wohl kaum ein Computer mehrere 100 Millionen Werte mehrmals in einer Sekunde vergleichen kann (Das würde dann ja schon im Bereich der Milliarden landen) Und wenn dann noch hunderte Spieler sich dazu entscheiden, auf einer Map Häuser zu bauen, dann sollte das doch Unmöglich sein, oder ?

Ich hab mir dann überlegt, das ich ja in einem Thread bevor ich abfrage, ob es eine Kollision gab, einfach mal checke, ob es sich überhaupt bewegt hat. Außerdem könnte ich ja theoretisch einen Wert bei jedem Objekt hinzufügen, der mir sagt ob es auf dem Boden/auf etwas anderem liegt und für dieses Objekt die Schwerkraft deaktivieren, sodass er einfach liegen bleibt. Das würde doch die Performance verbessern, oder ?
Hat jemand vllt noch ander Vorschläge, wie man das Verbessern könnte ?

Ich wäre über Hilfe sehr dankbar :)

Mfg
Kartoffel

FSA

Community-Fossil

  • Private Nachricht senden

2

29.10.2014, 18:09

Zu allererst mal: Willst du Kollision oder willst du Starrkörper-Physik?

Computer mehrere 100 Millionen Werte mehrmals in einer Sekunde vergleichen kann

Doch.
Ich hab mir dann überlegt, das ich ja in einem Thread bevor ich abfrage, ob es eine Kollision gab, einfach mal checke, ob es sich überhaupt bewegt hat.

Nein das ist der falsche Weg. Jedes Objekt sollte für sich überprüfen ob es sich bewegt hat.

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »FSA« (30.07.2020, 10:16)


NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

3

29.10.2014, 18:27

Dafür gibt es räumliche Datenstrukturen. Stell dir das wie ein Schachbrett vor. Ein Objekt das nur auf A1 liegt wird garantiert nicht mit einem Objekt kollidieren, dass z.B. auf E3 liegt. Es sei denn das Objekt so groß, dass es mehrere Felder belegt. Das ist dann aber auch kein Problem, weil sowieso jedes Objekt auf allen Feldern, die es überschneidet, eingetragen werden muss. Das gilt auch für kleine Objekte, die auf der Linie zwischen zwei Feldern liegen könnten.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

4

30.10.2014, 16:51

Schau Dir mal JBullet an. Der Code ist recht verständlich, die Doku ebenso: http://www.bulletphysics.org/mediawiki-1…e=Documentation

Daran kannst Du Dich dann bei Deiner eigenen Implementierung orientieren (oder besser gleich JBullet nutzen).

5

06.01.2015, 15:06

Erstmal möchte ich mich für eure Antworten bedanken ^^
Ich hab jetzt länger über das Thema nachgedacht und habe jetzt eine Idee, wie ich die Broad- & Narrowphase implementiere.
Ich werde es ohne Library versuchen, denn ich habe echt viel Zeit :D
Bin selber gespannt was da rauskommt, das Resultat werdet ihr iwann sehen :D

Werbeanzeige