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
Achso.Zitat
Den Wertebereich deiner 2. Schleife habe ich schon mit eingerechnet.
DistanceSquaredZitat
Vector2.Distance berechnet sicherlich die Vektorlänge mit Wurzelziehen, nicht?
Sicher gibt es auch eine Funktion, die die Wurzel nicht zieht und dir
die quadrierte Länge liefert. Dann nimmst du die und vergleichst nicht
mit 9.6, sondern mit 9.6² = 92.16.
Das dürfte dir ein bisschen mehr Leistung geben.
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
C#-Quelltext
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 for (n1 = 0; n1 < MaxZellenGesamt; n1++) { if (Z_Typ[n1] >-1)//Zellen mit dem Typ -1 sind deaktiviert { AnzZellen++;//Zellen Zählen Update_ZellEngine_ZellAktivität(n1);//Zellaktivitäten for (n2 = n1; n2 < MaxZellenGesamt; n2++) { if (Z_Typ[n2] >-1) { Z_Distanz[n1, n2]--;//Lineare Distanzoperation zur Einsparung von Rechenleistung if (Z_Distanz[n1, n2] < 14)//(Die Größe aller Zellen ist 8) { Z_Distanz[n1, n2] = Vector2.Distance(Z_Position[n1], Z_Position[n2]); if (Z_Distanz[n1, n2] < (float)9.6) { //Zellkontakt Update_ZellEngine_Physik(n1, n2);//Hier dann der Pythagoras sowie der Austausch von Nahrung und Baumaterial if (Z_Schlafen[n1] == 1)//Zellen sind nur alle 10 Frames aktiv beim Zellkontakt. { Update_ZellEngine_Zellkontakt(n1, n2); Update_ZellEngine_Zellkontakt(n2, n1); }; }; }; }; }; }; };
C#-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
for (n1 = 0; n1 < MaxZellenGesamt; n1++) { if (Z_Typ[n1] <= -1) //Zellen mit dem Typ -1 sind deaktiviert continue; AnzZellen++; Update_ZellEngine_ZellAktivität(n1); //Zellaktivitäten for (n2 = n1; n2 < MaxZellenGesamt; n2++) { if (Z_Typ[n2] <= -1) continue; Z_Distanz[n1, n2]--; //Lineare Distanzoperation zur Einsparung von Rechenleistung if (Z_Distanz[n1, n2] >= 14) //(Die Größe aller Zellen ist 8) continue; Z_Distanz[n1, n2] = Vector2.Distance(Z_Position[n1], Z_Position[n2]); if (Z_Distanz[n1, n2] >= (float) 9.6) continue; //Zellkontakt Update_ZellEngine_Physik(n1, n2); //Hier dann der Pythagoras sowie der Austausch von Nahrung und Baumaterial if (Z_Schlafen[n1] != 1) //Zellen sind nur alle 10 Frames aktiv beim Zellkontakt. continue; Update_ZellEngine_Zellkontakt(n1, n2); Update_ZellEngine_Zellkontakt(n2, n1); } } |
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
idontknow
unregistriert
idontknow
unregistriert
Community-Fossil
Das mit der Rasterung geht mir nicht aus dem Kopf. Ich versuch das. Ist das sehr schwierig?
Werbeanzeige