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

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

71

20.12.2002, 22:48

Ich habe geschrieben: eine zehntel Sekunde!

72

21.12.2002, 00:34

@David
ok da hast Du natürlich recht :)

Aber gehen wir mal von den Nebelwolken in UT2003 aus.
Diese können nicht nur aus 10-20 großen Bitmaps bestehen sondern (da sie sich mit Luftzügen verändern) aus ziemlich kleinen einzelnen Partikeln(natürlich nicht wirklich auf Partikelbasis).
Und ich denke das man da einerseits Geschwindigkeit vorteile aus Arrays schlagen kann aber andererseits weiß man nie wie groß eine Nebelwolke ist, z.B. aus einem angeschossenem Rohr oder aber der Absturz eines Flugzeugs.
Hier fällt die Entscheidung wohl eher schwer, oder?

Gruß
Bastian

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

73

21.12.2002, 08:58

Naja, das stimmt. Aber man kann ja auch eine "Zwischenlösung" benutzen: ein dynamisches Array. Wenn es keinen Platz mehr gibt, vergrößert man es einfach.

74

21.12.2002, 12:22

Achso zehntel meinst du. :wink:
ebah rutangiS reniem ni relheF 01 rebü hci ssad, etniem latkraF!

Xaron

Frischling

Beiträge: 63

Wohnort: Miesbach

Beruf: Softwareentwickler

  • Private Nachricht senden

75

23.01.2003, 08:13

Hallo erstmal und Gratulation zu Deiner Seite! :)

Jetzt muß ich aber doch mal noch eine Frage zu Deinen Arrays stellen. Du wirst Dein Array ja wahrscheinlich auch wie eine Art Liste verwenden, so dass Du zu jedem Element auch so eine Art Zeiger aufs nächste Element hast. Denn sonst müsstest Du entweder immer das ganze Array durchsuchen (es könnte ja sein, dass an letzter Stelle noch ein Element steht) oder Du musst bei jedem Löschvorgang (in der Mitte) alle Folgeelemente eins nach vorn kopieren.
Oder machst Du das ganz anders?
Das Argument mit den Page-Faults kann ich aber nicht so stehenlassen. ;) Dafür hat ja jeder halbwegs moderne Prozessor TLB's (Translation Lookaside Buffers), womit die Adressübersetzung extrem schnell geht...
Ich würde wohl auch für ein Partikelsystem eine verkettete Liste nehmen, so schwer ist das auch wieder nicht.
Bitte sieh das nicht als herbe Kritik an Dir! Es würde mich halt wirklich mal (schon vor der Veröffentlichung Deines Buches) interessieren, wie Du das mit den Arrays machst.

Ansonsten drücke ich Dir feste die Daumen für Dein Buch!

Beste Grüsse - Xaron

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

76

23.01.2003, 13:21

Hallo und Willkommen im Forum!

Gut, vielleicht hast Du Recht. Ich muss dann sagen, dass ich die Arrays teilweise aus "purer Faulheit" eingebaut habe. Sie sind leicht handzuhaben und man muss keine extra Erklärungen mehr wegen verketteten Listen machen. Jeder Eintrag besitzt ein "BOOL bExists"-Element. Es ist TRUE, wenn der Eintrag besetzt ist und FALSE, wenn er frei ist.

Übrigens verwendet die Engine intern richtige verkettete Listen, zum Beispiel für den Speicher-Manager oder die Benutzeroberfläche.

Bei einem Partikelsystem eine verkettete Liste? Eine, wo man für jeden neuen Eintrag wieder neuen Speicher reservieren muss? Hmm,... ich weiß nicht...
Auch in der Form, wie ich es jetzt habe, ist das Partikelsystem sehr schnell und es wird kaum Zeit verschenkt. Die Engine merkt sich nämlich, an welcher Stelle in jedem Fall ein freier Listeneintrag steht und sie merkt sich auch, wo der letzte Partikel ist. Und da Partikel sowieso im Durchschnitt nur weniger als eine Sekunde lang "leben", macht es kaum einen Unterschied.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

77

23.01.2003, 16:45

Noch etwas: ich habe jetzt eine neue Methode, wie man statische Arrays besser als Liste verwenden kann. Man findet immer einen freien Platz, und zwar sofort. Wenn ein Eintrag gelöscht wird, ersetzt man ihn einfach durch den letzten Eintrag und verringert die Anzahl um eins.

Liste: ABCDEFGHIJKLMN
Nun möchte ich E löschen.
Neue Liste: ABCDNFGHIJKLM
Das letzte Element ist immer frei.

Xaron

Frischling

Beiträge: 63

Wohnort: Miesbach

Beruf: Softwareentwickler

  • Private Nachricht senden

78

23.01.2003, 18:34

:mrgreen: Genial! Danke für die Info! :)

Gruß - Xaron

Werbeanzeige