Schlacht mit tausenden von Schüssen
Übersicht

![]() |
juse4proBetreff: Schlacht mit tausenden von Schüssen |
![]() Antworten mit Zitat ![]() |
---|---|---|
hi,
ihr kennt doch sicherlich startrade... wie kann man hinbekommen, dass man tausende von schüssen und schiffen schnell berachnen lassen kann. geht dass mit types? oder mit banks? wenn das mit banks geht, kann mir dann einer verraten wie ich diese benutzte, oder mir ein gutes tut emphelen? mfg |
||
Portfolio |LinkedIn |XING |
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Jupp mit types und intelligentem datenhandling.
wofür brauchst du es genau? Damit man sagen kann wie du das handling am effizientesten machst bei update, kollision etc |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
TimBo |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hii,
ich denke es ist nicht mir Banks realisierbar, denn es gibt immer variable anzahlen von Schüssen. Types sind da eher gut geeignet. Um mehr Speed rauszuholen, sollte man nur die Schüsse malen lassen, die man auch sieht. Das bewirgt bei großen schlachte wunder ![]() Ein gutes Tut speziell dazu kann ich dir leider nicht nennen. mfg TimBo |
||
mfg Tim Borowski // CPU: Ryzen 2700x GPU: Nvidia RTX 2070 OC (Gigabyte) Ram: 16GB DDR4 @ 3000MHz OS: Windows 10
Stolzer Gewinner des BCC 25 & BCC 31 hat einen ersten Preis in der 1. Runde beim BWInf 2010/2011 & 2011/12 mit BlitzBasic erreicht. |
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wieso werden Banks eigentlich als das schnellste "Speichermedium" angesehen?
Ich hab das mir das mal angesehen und Banks sind um nix schneller als Types. Wenn es extrem auf Speed ankommt, sind Arrays noch das Beste. Zumindest hab ich das für mich so herausgefunden. Ich lasse aber gern mit mir drüber reden, falls jemand mit meiner Aussage nicht leben kann. (achja, der Post hat nicht unbedingt etwas mit dem ursprünglichen Problem zu tun, da Arrays bei Schüssen einfach "unüblich" sind) mfG, Christoph. |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sowohl ein Array als auch eine Bank sind vordeffinierte Speicherbereiche auf die man zugreifen kann. Wenn man nun einen liniearen Speicherzugriff auf beiden macht, werden diese recht schnell sein.
Ein Type ist eine ''verkettete Liste'' wo jeder Typeseintrag die Adresse des vorherigen als auch nachkommenden besitzt. Werden also Typeseinträge erstellt und naheliegend in der selben Reihenfolge wieder gelöscht, dann entstehen kaum Speicherfragmente, womit auch Types die gleiche Geschwindigkeit erreichen können. Werden also Speicherteile mittendrinn einer Typeliste gelöscht, dann muß auch der Speicherzugriff in - für den Prozessor - nicht vorhersehbaren Adressraum stattfinden, was die Sache schon merklich langsamer machen kann. Allerdings gibt es dazu auch keine mir bekannte Methode es mit Arrays oder Banken besser hinzubekommen. Soviel zur Theorie. In der Praxis habe ich allerdings deutliche Geschwindigkeitsunterschiede feststellen können. So hat zum Beispiel ein auf ein Array basierende Verlet-Integration wo der komplette Speicherbereich zufällig (weil jede Verbindung zu einem x-beliebigen Knotenpunkt verweist) abgegriffen werden muß, deutlich langsamen Speicherzugriff als ein Type mit ID-Handling. Das wiederspricht den vorherigen Überlegungen. Mein Fazit: Wenn man Speicherlastige zugriffe machen muß, und diese einen großen Teil des Spielegeschehens ausmachen. Sollte man die Muße mitsich bringen und es auf unterschiedliche Arten ausprobieren und dessen Zeit messen, oder weitergehende Literatur dazu lesen um es eventuell auch verstehen zu können. |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
juse4pro |
![]() Antworten mit Zitat ![]() |
---|---|---|
naja wollte später mal nen startrade klon machen^^ | ||
Portfolio |LinkedIn |XING |
![]() |
Eingeproggt |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich hatte meine Messergebnisse (die linear waren, also deckt sich das mit deiner Theorie) mir damit erklärt, dass die Peek- und Poke-Befehle ja Funktionsaufrufe sind und diese die Bank-Sache um das kleine Quäntchen langsamer machen.
Jedenfalls danke für die ausführliche Erklärung hectic! mfG, Christoph. |
||
Gewinner des BCC 18, 33 und 65 sowie MiniBCC 9 |
Matthias |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hay.
Ich denke nicht das das Problem beim Anzeigen der Grafik liegt. Gut mann kann alle Objekte durch gehen und ermitteln ob diese im Bildschirmbereich sind. Es geht wohl mehr um die Kollisionen. Wenn mann zb. Auf der Map 50000 Schüsse hat und will diese Auf entfernung zu alle Schiffe checken zb 500. Um nur ersteinmal heraus zu bekommen ob sich eine pixelgenaue Kollision überhaupt lohnt hat mann schon ein Problem. Am besten wären Quadranten. Und nur alle Schiffe und Schüsse im gleichen Quadranten werden auf Kollision geschekt. Natürlich kann mann auch die Quadranten nutzen um heraus zu finden welche Objekte überhaubt im Sichtbereich liegen. Es gibt aber auch da einen Harken. Nehmen wir an mann hat maximal 500 schiffe und 50000 Schüsse. Also müsten in jeden Quadranten 25000000 Einträge sein. Bei einer Quadrantgröße von zb 256x256 und eine MapGröße von zb 25600x25600px wären es 100x100x25000000x4Byte= Naja zu viel. Also müssen die Quadranten Immer unterschiedlich viele Einträge habe. Also Banken weil mann diese Resizen kann. So nun will mann aber auf Types nicht verzichten, weil diese so schön einfach sind. Naja letzendlich. Sektor(10,10)=CreateBank(10000) PokeByte(Sektor(10,10),0,1) PokeInt(Sektor(10,10),1,HANDLE (Schiff.TSchiff)) Am besten ist es noch voher ein Byte zu benutzen um den Typ Festzulegen. PS: Ich finde StarTrade klasse und ich fand es sooooooo schade das StarTrade nicht weiter gemacht wurde. Es wird Zeit für ein Clon. Viel Glück. Mfg Matthias. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group