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

Black-Panther

Alter Hase

  • »Black-Panther« ist der Autor dieses Themas

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

21

09.02.2007, 14:18

K... Das ist ja schnell geändert...

@chriss
Ich soll mehr laden? Damit es nicht ins Ruckeln kommt? Ich habe dieses System doch erst entworfen, um dem ungeheuren Speicherbedarf zu begrenzen... Wenn ich mehr/alles lade, was hat es noch für einen Sinn?

Es handelt sich hier nicht, falls du das meinen solltest, um kleine Texturen, maximal 256x256... Nein... es sind 50 2048x2048, 50 1024x1024 und 50 512x512 Texturen! Und wenn ich alle laden würde, würde ich 629 MB + 157 MB + 39 MB = 825MB benötigen! Das kann ich keinem System antun!
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

22

09.02.2007, 14:33

Kannst du die Texturen nicht in kleinere Aufteilen? Ich meinte auch nicht das du alles laden sollst sondern mehr im Voraus. Ich nehme mal an das du dein Level in Quadrate/Cubes einegeteilt hast. Und sobald du das übernächste lädst kanns du das letzte wieder freigeben. Wenn sich das bis später nnicht geklärt hat kann ich ja mal ne Grafik dazu machen.

Sleep würde ich auch verwenden aber nicht beim rendern sondern nach jeder Prüfung ob geladen werden muss. Hier solltest du so viel puffern das nicht uaf das laden gewartet werden muss. Der Wechsel zum nächsten Feld sollte ohne Laden auskommen können. Und wenn dieser wechsel stattfindet kannst du das darauf folgende laden.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

23

09.02.2007, 16:11

Zitat von »"chriss"«

@Chase Das stimmt schon das man 800fps nicht braucht aber umso mehr es sinnt (<= sind?) umso genauer läuft das Spiel. Zumindest wenn die Inputabfragen im Renderloop stecken. Zudem sind Kollisionstest genauer da sie öffters durchgeführt werden.

Nochmal: Physik-Engines laufen immer nur mit fixen Time-Steps zuverlässig! Das bringt dir also rein gar nichts! Und auch die genauere oder schnellere Reaktion auf Eingaben ist hier nicht gegeben. Die Auswirkung der Eingabe siehst du nämlich sowieso erst im nächsten gerenderten Frame, und z.B. die Dauer eines Tastendrucks kannst du auch über Time-Stamps in den Eingabe-Events herausfinden.

Zitat von »"chriss"«

Zitat von »"Chase"«

Das Nachladen geschieht in einem anderen Thread

Genau deswegen ist es sinnlos die Framerate zu begrenzen.

Das ist sehr widersprüchlich.
Man soll ja deiner Meinung nach so viel CPU-Zeit wie möglich in der Spielschleife verbringen. Dann bekommt der Lade-Thread zwangsläufig weniger CPU-Zeit zugeteilt. Und selbst bei Multicore-Systemen ist das nicht ohne negativen Einfluss!

24

09.02.2007, 19:49

Zitat von »"David Scherfgen"«


Zitat von »"chriss"«


Zitat von »"Chase"«

Das Nachladen geschieht in einem anderen Thread

Genau deswegen ist es sinnlos die Framerate zu begrenzen.

Das ist sehr widersprüchlich.
Man soll ja deiner Meinung nach so viel CPU-Zeit wie möglich in der Spielschleife verbringen. Dann bekommt der Lade-Thread zwangsläufig weniger CPU-Zeit zugeteilt. Und selbst bei Multicore-Systemen ist das nicht ohne negativen Einfluss!

Nein das soll heißen das beide Threads eh unterschiedlich schnell laufen und das eine Verlangsamung des Renderthreads eigentlich kein Effekt auf den Ladethread hat.

Die Argumentation, so wie ich sie verstanden habe ist: "Der Ladethread ist zu langsam also mache ich den Renderthread auch langsamer damit es wieder passt!"
Sollte das nicht die Aussage gewesen sein, reden wir hier eh vorbei und können uns das spaaren darüber zu diskutieren.

Ich wollte nur sagen das es mehr Sinn macht, da zu optimieren wo der Engpass entsteht, als die besserlaufenden Threads zu verlangsamen damit es wieder passt.

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

25

09.02.2007, 19:58

Zitat

Nein das soll heißen das beide Threads eh unterschiedlich schnell laufen und das eine Verlangsamung des Renderthreads eigentlich kein Effekt auf den Ladethread hat


dir ist aber schon klar, dass threads nicht wirklich parallel laufen!?
wenn ich jetzt mal im taskmanager schau, dann seh ich dort 485 laufende threads. ich hab aber nur 2 kerne...
das "verlangsamen" mit Sleep() hat den effekt, dass die zeit die in der renderfunktion sonst verbraten würde dem anderen thread zu gute kommt.

26

09.02.2007, 21:16

Zitat von »"dot"«

Zitat

Nein das soll heißen das beide Threads eh unterschiedlich schnell laufen und das eine Verlangsamung des Renderthreads eigentlich kein Effekt auf den Ladethread hat


dir ist aber schon klar, dass threads nicht wirklich parallel laufen!?
wenn ich jetzt mal im taskmanager schau, dann seh ich dort 485 laufende threads. ich hab aber nur 2 kerne...
das "verlangsamen" mit Sleep() hat den effekt, dass die zeit die in der renderfunktion sonst verbraten würde dem anderen thread zu gute kommt.

Ja weiß ich, die Frage ist nur ob das wirklich notwendig ist. Aber das muss der Entwickler wissen.

Black-Panther

Alter Hase

  • »Black-Panther« ist der Autor dieses Themas

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

27

10.02.2007, 22:47

Zitat von »"chriss"«

Kannst du die Texturen nicht in kleinere Aufteilen? Ich meinte auch nicht das du alles laden sollst sondern mehr im Voraus. Ich nehme mal an das du dein Level in Quadrate/Cubes einegeteilt hast. Und sobald du das übernächste lädst kanns du das letzte wieder freigeben. Wenn sich das bis später nnicht geklärt hat kann ich ja mal ne Grafik dazu machen.

Sleep würde ich auch verwenden aber nicht beim rendern sondern nach jeder Prüfung ob geladen werden muss. Hier solltest du so viel puffern das nicht uaf das laden gewartet werden muss. Der Wechsel zum nächsten Feld sollte ohne Laden auskommen können. Und wenn dieser wechsel stattfindet kannst du das darauf folgende laden.


Das mach ich eh.. Problematisch wird es nur dann, wenn man nur sehr kurz auf einer LOD bleibt... Da schafft es der Thread nicht rechtzeitig, außer ich geb ihm PRIORITY NORMAL oder höher, dann kommt es aber im renderthread zu einem kurzweiligen Frameratezusammenbruch --> ergo ruckelt es kurz!
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

rewb0rn

Supermoderator

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

28

11.02.2007, 01:17

Das wird ein bisschen OT ich hoffe das ist ok.

Zitat von »"David Scherfgen"«


Nochmal: Physik-Engines laufen immer nur mit fixen Time-Steps zuverlässig!


Also in meinem aktuellen Projekt benutze ich auch ode. Nachdem ich das hier gelesen hab bin ich auch mal auf framebasiertes rendern umgestiegen, und jetzt ist die höhe der sprünge endlich immer gleich. allerdings nur solange der spieler nicht in bewegung ist. wenn ich "dauerspringe" der spieler also beim aufkommen noch schwung hat springt er wieder jedes mal zufallsmäßig unterschiedlich hoch. Gibts vielleicht ne Möglichkeit das hinzukriegen ohne die Kräfte zu verändern?

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

29

11.02.2007, 10:14

Wie lässt du ihn denn springen?
Setzt du die vertikale Geschwindigkeit?

rewb0rn

Supermoderator

Beiträge: 2 773

Wohnort: Berlin

Beruf: Indie Game Dev

  • Private Nachricht senden

30

12.02.2007, 17:04

nein die vertikale kraft

Werbeanzeige