Entity-/CameraPick - Über 1000ms ?
Übersicht

![]() |
ToeBBetreff: Entity-/CameraPick - Über 1000ms ? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo !
Mir ist heute beim durchgucken alter Codes ein Problem wieder eingefallen, was ich vor längerer Zeit mal hatte und ich da schon keine Antwort drauf wusste. Und zwar braucht bei mir sowohl EntityPick als auch CameraPick bis über eine Sekunde (~1376ms) Pro Aufruf ! Allerdings auch nicht immer. Ich habe nämlich bei mir im Code folgendes stehen : BlitzBasic: [AUSKLAPPEN] Repeat Bei diesen Code kann passiert folgendes : Das Programm hängt sich beim Programmstart auf wegen dem erstmaligen EntityPick aufruf. Danach läuft alles Flüssig, auch EntityPick braucht nur zwischen 0-1ms. Drücke ich aber die Maustaste, so hängt sich alles schlagartig wieder auf, auch wenn ich EntityPick nicht nochmal aufrufe. Ich hab herausgefunden, dass EntityPick immer etwas braucht wenn ein Mesh erweitert wurde (Ja es sollte etwas Minecraft ähnliches sein), also ein Block hinzugefügt wurde. Kennt jemand das Problem und weiß wie man das beheben könnte ? mfg ToeB |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
![]() |
ZaP |
![]() Antworten mit Zitat ![]() |
---|---|---|
1000 ist schon eine große Reichweite, geht das denn mit weniger? | ||
Starfare: Worklog, Website (download) |
PhillipK |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Leider weiß ich nichts über das Pick zeugs, deswegen kann ich dir nicht helfen ![]() Die picking methoden habe ich nie angefasst. ebene weil es teilweise zu langsam ist ![]() Ich habe mich immer auf Collisions berufen, allerdings ist meine b3d zeit auch ewig her.. Klappt das ganze denn ohne pick? Ich würde das ganze evtl über ein an die camera gepappten cube lösen. Dh nen cube an die cam/den spieler, welcher unsichtbar ist und per Collision rückmeldung gibt. Weiß allerdings nichtmehr, ob man irgendwie an das kollidierte objekt kommt :3 |
||
![]() |
biggicekey |
![]() Antworten mit Zitat ![]() |
---|---|---|
Was macht denn CubePick() ? | ||
#45 www.icekeyunlimited.de www.starcrusade.de
Gewinner BCC#17 !!! mit dotkiller Nothing more to register - you've cleaned us out![/size] |
![]() |
Noobody |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das Problem ist nicht CameraPick, sondern das erste CameraPick, welches nach grossen Veränderungen in der Geometrie sehr langsam ist. Der Grund dafür ist, dass Blitz natürlich eine Datenstruktur verwendet, um LinePick/CameraPick/EntityPick-Aufrufe schneller zu machen (einfach jedes einzelne Dreieck testen wäre ziemlich langsam ![]() Wenn die Geometrie einmal gebaut wird und nachher statisch bleibt, kann man einfach einen Pick-Befehl aufrufen, nachdem die Geometrie erstellt wurde, und man muss sich nachher im Spiel keine Sorgen mehr um Lags beim ersten Aufruf eines Pick-Befehls machen. Bei einem Minecraft-ähnlichen Spiel geht das zwar nicht, allerdings wundere ich mich, dass Pick bei dir so lange braucht - bei Noocraft wurden die zuhauf verwendet und ich hatte eigentlich nie Probleme damit. Kannst du mal den Code posten, der für die Mesh-Erstellung zuständig ist? Vielleicht findet man ja da einen Übeltäter. Man kann Alternativ zu Pick-Befehlen auch direkt auf dem Array arbeiten, in dem die Map gespeichert ist. Da es ja ein Minecraft-ähnliches Spiel wird, hast du nur Würfel und ein Array, das sie enthält. Darum kannst du einfach von der Kameraposition aus in Blickrichtung durch das Array gehen und anhalten, sobald ein voller Block gefunden wurde. Ein simpler Algorithmus wie etwa DDA funktioniert da super (Hier super beschrieben). |
||
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun |
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke erstmal !
Die CubePick-Funktion macht folgendes : BlitzBasic: [AUSKLAPPEN] ;########################################################################################### (Findet also heraus zu welchem Block das gepickte Triangle gehört (Und das ist sogar relativ schnell, braucht 6ms). Daran liegt es also nicht. Um einen Cube hinzuzufügen, setzt ich einfach das den Punkt im Array auf den Gewünschten wert und zeichne das Komplette Surface neu (geht auch relativ schnell, ~6-10ms). Allerdings stockt danach immer direkt das Programm wieder, da, wie du schon gesagt hast, das Surface verändert wurde. Allerdings wundert es mich schon das es bei dir geht oO Edit: Also bei dem Code kann man es merken: Die "PickZeit"(im Debuglog) erhöht sich nur solange, wie auch die rechte Maustaste gedrückt worden ist, danach wird wieder im bereich von 0-1ms gespielt, allerdings komme ich beim besten willen nicht auf 1000ms oO BlitzBasic: [AUSKLAPPEN] Graphics3D 800, 600, 16, 2 mfg ToeB |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
![]() |
ToeB |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sry für doppelpost, aber hat sich jetzt erledigt.
Ich hab einfach mal statt für jeden "MapBlock" ein Surface jedesmal ein Mesh mit einem Surface eingesetzt und siehe da, es läuft wunderbar schnell, außer das es noch ein wenig ruckelt wenn man Blöcke setzt, aber das kriegt man auch iwann noch hin .. Danke auf jeden Fall ! mfg ToeB |
||
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt! |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group