Welt für Spiel erstellen
-
Hallo Community, ich habe jetzt mein erstes richtiges Spieleprojekt angefangen und schon viele Punkte durchgearbeitet.
Als die "Welt" wird aus rechteckigen Feldern bestehen wobei jedes Feld eine Köasse ist und soll so richtig groß sein, wenn ich bis jetzt mal ein Spielfelderstellt habe habe ich die Felder immer in einen Victor gepackt und dann durch eine for Schleife gejagt um sagen wir mal den Status des Feldes überprüfen. Funktioniert an sich auch.
ABER, wie gesagt möchte ich dieses Mal eine richtig große Welt erstellen, sagen wir mal so 1000x1000 Felder sind dann 1.000.000 Felder insgesamt und die als Victor durch ne vor Schleife zu hetzen ist nicht gerade Performance freundlich.
Deswegen überlege ich schon die ganze zeit wie das zb bei minecraft abläuft, weil da müssen doch weit mehr Elemente sein.
Ich hoffe ich schreibe kein wirres zeug und ihr versteht was ich meine.
-
grimmreefer schrieb:
Ich hoffe ich schreibe kein wirres zeug und ihr versteht was ich meine.
Kein Problem, du jagst die Köasse Victor durch eine Schleife und denkst jetzt das ist zu langsam. Tipp: Minecraft hat immer nur ein paar Chunks im Speicher.
-
grimmreefer schrieb:
Ich hoffe ich schreibe kein wirres zeug und ihr versteht was ich meine.
habe ich die Felder immer in einen Victor gepackt und dann durch eine for Schleife gejag
1.000.000 Felder insgesamt und die als Victor durch ne vor Schleife zu hetzen ist nicht gerade Performance freundlich.
Der arme Victor nimm lieber Vector dem gefällt das.^^
-
Lol, hab's grad selber gelesen, aber ihr habt natürlich recht damit, ich lass Viktor mal aus dem spiel �� zu meiner Verteidigung, ich schreibe auf meinen Tablet und leide offenbar am wurstfingersyndrom
Aber ein guter instand hier im Forum.
OK, zurück zum Thema.
Als das ganze in Zonen einteilen und nur bei bedarf laden, so in etwa zu verstehen?
-
Google mal nach nach Quad-Tree. Das ist eine Beschleunigungsstruktur für deinen Zweck
-
grimmreefer schrieb:
ABER, wie gesagt möchte ich dieses Mal eine richtig große Welt erstellen, sagen wir mal so 1000x1000 Felder sind dann 1.000.000 Felder insgesamt und die als Victor durch ne vor Schleife zu hetzen ist nicht gerade Performance freundlich.
hast du fuer diese annahme irgendwelche tests/beweise die das untermauern?
falls nicht, dann solltest du kein problem loesen das keines ist. bring das spiel zum laufen, das sollte das wichtigste sein, optimieren kann man spaeter immer noch, leg denen fokus auf simples und gutes software design.
wenn du dir z.B. quake3 anschaust, weisst du wie dort rausgefunden wird welches objekt von welchem licht beleuchtet wird? die laufen fuer jedes objekt das array mit allen lichtern durch.
Koennten sie es nicht besser machen? doch, koennten sie, aber wozu wenn es garkeine probleme macht.ich weiss zwar nicht in welcher sprache du das schreibst und fuer welche platform. aber mit c++ auf PC wuerde meiner erfahrung nach ein array mit 1M elementen weit unter 1ms kosten wenn du es durchlaeufst. dagegen ist das zeichnen was dann stattfindet oder die wegsuche oder ... weit aufwendiger.
btw. es bietet sich oft an zweierpotenzen zu nutzen, z.b. 1024x1024 ;), hat vorteile beim cache, indizieren usw. (muss man nicht, kann man).
-
Das schaut ja gut aus, danke mal.