Hidentity + Entitydistance + Performance
Übersicht

InsoBetreff: Hidentity + Entitydistance + Performance |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Huhu.
Da mir in meinem Post im WiP Topic niemand antwortet, eröffne ich hier halt ein Topic ![]() Hab jetzt so langsam das Grundgerüst meines Spiels fertig. Als nächstes würde ich gern mittels Entitydistance alle Objekte auf der Map durchgehen, und diejenigen die in einer vorgegebenen Range liegen einblenden, die restlichen ausblenden. Ist das Sinnvoll auf diese Art? Oder wäre das zu langsam? Was wäre eine mögliche alternative? Wie oft sollte dieser Check passieren?(1x pro Frame wäre wohl etwas krass) Werden Entitys von Entitydistance überhaupt realisiert, die hidden sind? Oder arbeite ich da besser mit Entityalpha? Hätte Entityalpha auch noch nachteile? Wie überprüf ich ob das Objekt vllt schon versteckt ist, oder eben nicht? Muss ich das über ein field im objekte-type machen, oder gibts da was einfaches wie if entityalpha(mesh) > X ? Womit könnt ich die Gameperformance noch positiv beeinflussen? Hoffe jemand kennt sich damit aus. ![]() Gruß Inso |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn du die Rechnung selber anstellst, könnte das etwas lahm werden. So ziemlich das selbe würdest du erreichen, wenn du die Kamerareichweite herunter setzt oder EntityAutoFade![]() Entitydistance ist nur ein dreidimensionaler Pythagoras - ob die Objekte versteckt sind oder nicht, ist egal. Die Wurzel-Operation dabei macht die Sache relativ rechenintensiv. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
Inso |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ah okay, weil ich irgendwie probleme hab, die sich nicht mit verringerung der Kamerareichweite beheben lassen.
Hab teilweise nur 30fps, aber eigentlich sollte da schon mehr drin sein. Also muss ich das Problem woanders suchen, eventuell nochmal alle schleifen überprüfen, ob die wirklich nur dann durchlaufen wenns wirklich nötig ist. Hätte sonst noch jemand ansätze was Performance angeht? |
||
![]() |
ZEVS |
![]() Antworten mit Zitat ![]() |
---|---|---|
Single Surface... Schnell und kompliziert
ZEVS |
||
Inso |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ja, das hatten wir ja schonmal ![]() Ich hab einen Type "Objekte", dazu zählt alles, von Bäumen bis über Monster und Häuser Bäume kann man abbauen, Monster können sterben, und laufen, usw. Häuser weder noch. Also wie kann man das ganze Umsetzen? Soll ich lieber alles nochmal ganz und gar ausseinander nehmen und für die Monster einen extra type machen, und für die dynamischen/abbaubaren Objekte auch? Gibt es ein gutes Beispiel für den "Single Surface Kram" ? |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: Soll ich lieber alles nochmal ganz und gar ausseinander nehmen und für die Monster einen extra type machen, und für die dynamischen/abbaubaren Objekte auch? JA.
Wenn du X tausend Objekte hast, aber nur eine Typeliste, bist du immer gezwungen die ganzen Einträge zu Überspringen, die du gerade nicht brauchst. Single Surface muss es irgendwo geben, schließlich hab ich es auch mal gefunden. Bestimmt im Codearchiv. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
Inso |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Xeres hat Folgendes geschrieben: Zitat:
Soll ich lieber alles nochmal ganz und gar ausseinander nehmen und für die Monster einen extra type machen, und für die dynamischen/abbaubaren Objekte auch? JA.
Wenn du X tausend Objekte hast, aber nur eine Typeliste, bist du immer gezwungen die ganzen Einträge zu Überspringen, die du gerade nicht brauchst. Single Surface muss es irgendwo geben, schließlich hab ich es auch mal gefunden. Bestimmt im Codearchiv. Okay, danke dir. Wenn ich genauer drüber nachdenke weiß ich nicht was mich da geritten hat.. So gesehen speicher ich momentan sogar für Häuser fields wie "dead" "health" "respawntime", ist ja alles verschenkte ressource, und wird dennoch beim laden/speichern alles mit geladen. mir wird ganz schwarz vor augen bei dem gedanken daran das alles auseinander zu nehmen ![]() hab seit gestern nen neuen pc, und konstante 60 fps. aber nur weils bei mir rund läüft, heißt es ja nich, dass es bei andern auch so ist. ![]() |
||
![]() |
skey-z |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du kannst ja auch zwischen benutzbaren(usable) und unbenutzbaren(static) unterscheiben und dafür schon mal 2 Objekte anlegen.
Des weiteren könntest du deine Map in Sektoren unterteilen und alle benötigten Objekte, wahrscheinlich die benutzbaren, an einen Pivot anheften. Nun gehst du erst alle Pivots durch und prüfst auf die Distanz und danach erst die angehängten Objekte des am nächsten liegenden Pivots, somit musst du nur noch auf einen (geringen) Teil der Objekte zugreifen. |
||
Awards:
Coffee's Monatswettbewerb Feb. 08: 1. Platz BAC#57: 2. Platz |
BIG BUG |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Zitat: Wenn ich genauer drüber nachdenke weiß ich nicht was mich da geritten hat.. So gesehen speicher ich momentan sogar für Häuser fields wie "dead" "health" "respawntime", ist ja alles verschenkte ressource, und wird dennoch beim laden/speichern alles mit geladen.
Wenn Du Dich hier auf Xeres seinen Beitrag bezieht, dann hast Du das falsch verstanden. Die paar Bytes die Du da dann ungenutzt in Deiner Typestruktur hast spielen keine nennenswerte Rolle. Es geht viel mehr darum, dass wenn Du ein Haus ansprichst nicht auch erst alle anderen Häuser und Gegner durchlaufen musst um das richtige Objekt zu finden. Ein Trick ist hier z.B. das Handle eines Types im Entityname abzulegen, so kannst Du dann einfach den jeweilligen Type Eintrag mittels "Object" direkt anspringen. Schöner wär es natürlich wenn man eine eigene IntegerID vergeben könnte, aber das hat Mark leider nie implementiert... |
||
B3D-Exporter für Cinema4D!(V1.4)
MD2-Exporter für Cinema4D!(final) |
Inso |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich weiß nicht so recht was du meinst.
Müsste ich da nicht auf in einer for next schleife alle objekte durchgehen und abfragen if entityname = sowieso dann dies und jenes ? Bin auch grad mächtig am verzweifeln das ganze auseinander zu nehmen, ist mehr arbeit als ich dachte :< Alles muss umgeschrieben werden, bauen funktion, abbauen funktion, laden/speichern.. >.< Hätt ich nur gleich dran gedacht. |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
BIG BUG spricht von Handle![]() ![]() ![]() |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
Inso |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Kannt ich noch gar nicht, danke ![]() Wie ich in dem Beispiel seh, kann man die Objekte dann mittels einer ID direkt angesprochen werden, ohne eine for next schleife, versteh ich das richtig? So richtig ersichtlich ist es für mich jedoch nicht, wie und wo die ID festgelegt wird.. |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das sind Dinge, die BlitzBasic (leider) intern verwaltet.
Ob da intern eine Liste durchgegangen oder ein Eintrag direkt gefunden wird, kann ich nicht sagen. Test: BlitzBasic: [AUSKLAPPEN] Wie auch immer es arbeitet: Object ist schneller. |
||
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group