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

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

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

  • Private Nachricht senden

11

13.05.2010, 19:24

am einfachsten ist es die frametime zu begrenzen. dann läuft das spiel bis zu einer bestimmten framerate zwar langsamer, wäre bei zu großen schritten aber sowieso nicht spielbar.
"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?

ernest7

Frischling

Beiträge: 20

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

12

13.05.2010, 19:50

Möglich das das hilft.
Allerdings ist das Problem von übersprungenen Objekten ein generelles, sobald sich ein Objekt pro frame eine weitere Strecke als seinen "Kollisionsbereich" bewegt.
Das wird man auch durch frametime-bearbeitung nicht immer umgehen können, spätestens wenn man gewehrartige Schüsse o.Ä. hat, muss man sich was anderes ausdenken.

Diese Strahlentestnummer ist für deine Anwendung vermutlich übertrieben. Solltest du dein Problem aber nicht anders lösen können, würde ich weiterhin die Kollisionstests auf Zwischenpositionen empfehlen.

Das ließe sich auch optimieren in dem du die Zwischenposition nur gegen Objekte in der Nähe testest.
Also zB

Start - - - - - - x - - - - - - Ziel
|<------d------>|

erstmal den Mittelpunkt x zwischen Start und Ziel berechnen.
Dann alle Objekte prüfen ob sie zu x einen Abstand kleiner d haben.
Anschließend nur für diese Objekte die Kollisionstests auf den Zwischenpositionen durchführen.
*Werbung* Der Welt bestes Android-Metronom: Metronomerous *Werbung*

13

13.05.2010, 22:43

Vielleicht liegt das ja wirklich an meiner kollisionserkennung, ich habe hier gerade bespielsweise 300 steine auf dem feld und jeder npc bzw player testet bei der bewegung nach ob er eines dieser 300 steine und die anderen spieler trifft, da habe ich dann schon

|anzahl bewegbarer figuren| * |anzahl steine + anzahl bewegbarer figuren|

tests pro frame, mir ist aber unklar wie ich das verbessern kann, weil selbst wenn ich sage "teste nur die steine in der nähe" so muss ich ja trotzdem von allen erstmal den abstand berechnen

diese mittelpunktidee hilft wohl auch nur wieder bis zu einer bestimmten geschwindigkeit und dannach tritt warscheinlich das gleiche problem auf.

Vielen dank für eure Antworten

EDIT:
wie viel schneller wird denn ein programm wenn man im release modes kompiliert?

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Kalkas« (13.05.2010, 22:54)


14

13.05.2010, 22:49

Berechnung der Entfernung geht aber schneller als richtige Kollisionsberechnung. Und du fuehrst zudem mehrere Kollisionsberechnungen durch, um den ganzen Weg abzudecken. Wenn du weisst wer in der Nähe ist brauchst du die anderen nicht auch noch 5 mal zu berechnen.

Wobei 300 Steine + (angenommen) 50 bewegliche Objekte noch kein Performancekiller ist.

15

13.05.2010, 22:58

Habs gerade im release kompiliert da ist es echt 10x schneller cool :>, Das mit der Entfernung habe ich jetzt auch mal eingebaut, mal testen ob die probleme jetzt immernoch auftreten

Werbeanzeige