Frage zu Effekten (Partikel, Schüsse, Explosionen)
-
Hi,
ich hab mal ne kleien theorethsiche Frage zu Effekten. Sagen mir ich hab nen Actionspiel und bracuh dafür auch Explosionen, Schüsse, Partikel und so nen zeug. nur wie mach ich das jetzt...
Erstell ich zB Schüsse und Partikel etc immer zur Laufzeit dynmaisch, was vieleicht nicht allzu schnell ist? Oder mach ich vorher halt nen statisches Array, was dann aber am Ende darauf hinausläuft, dass ich entweder zuviel Platz oder zu wenig hab?
Was habt ihr denn so für Ideen oder Lösungen? Ich schätze ihr habt auch schon einges an Erfahrund damit.Ich bin gespannt auf eure Antwort!
-
Wegen dem Problem mit dem dynamischem Array nimmt man meistens eine Linked List
Wenn du Informationen dazu suchst, google mal nach "Partikelsystem", es sollte einiges zu finden sein !
-
Nicht unedingt, da eine linked list relativ langsam ist. Für Partikel sind IMHO (imho, da es verscheidene meinungen dazu gibt -> SUCHE) statische arrays besser. Man muss halt nur aufpassen, dass man nicht übers limit hinauskommt!
MfG DasPinsch
-
Also unter dynamische lösung versteh ich die netten Container aus der stl
Bei den partikeln ist halt doof, wenn ich zu viele Explosionen ahbe.... genauso ist es halt auch mit Schüssen...
-
eigentlich nimmt man meißtens keine listen, sondern arrays/vectoren. wieviele partikel vorher zu sehen sein können ist nicht unlimitiert, bei zuvielen bricht das system irgendwann zu sehr in der framerate ein, was bei explosionen vor allem der overdraw verursacht. desweiteren sind ab einer bestimmten menge die einzelnen sachen nicht mehr wahrnehmbar z.B. bei regen, in diesen fällen legt man mehrere (in diesem fall) tropfen zusammen und bewegt sie als ganzes.
bei explosionen mußt du die eventuell sogar noch sortieren, wenn du also pro animationsschritt tausende partikel in einer liste sortierst, zweifle ich dran, dass das performant bleibeb.bisher hab ich auch niemanden in der brange gehört, der je listen anstatt arrays nutze... aus performance gründen.
am meißten performance bekommst du übrigens durch einen puren vertexshader-animator für die partikel
rapso->greets();