ExamineWorldCollisions() und #PB_Entity_StaticBody
-
Kaeru Gaman
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
Re: ExamineWorldCollisions() und #PB_Entity_StaticBody
@Didi
kann das jetzt aus den Bugs raus verschoben werden?
kann das jetzt aus den Bugs raus verschoben werden?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
- captain_hesse
- Beiträge: 138
- Registriert: 17.05.2009 18:55
- Computerausstattung: Windows 7 Ultimate 64 Bit / AMD Phenom II 1090T, 6x3200 MHz / AMD HD-6850 / PureBasic 5.1 (x86) (x64)
- Wohnort: Saarland
Re: ExamineWorldCollisions() und #PB_Entity_StaticBody
Entschuldige dann habe ich da etwas mißverstanden aber dennoch bin ich der Meinung das dieses Verhalten nicht richtig ist denn wenn man einen Ego-shoter programmieren will sieht man ja auch die Waffe vor der Kamera und diese würde dann auch im verlauf des Spiels ihre Sollposition verändern und irgendwann würde der Arm sammt Waffe sehr viel weiter vor der Kamera hängen als er soll. Und dann frage ich mich auch warum das immer anfängt zu Laggen nach ca. 20 - 30 Minuten. Und warum kommt das verhalten erst nach einer Weile und nicht von anfang an, wenn das so gewollt währe dann müsste dieses verhalten doch von anfang an so sein.
@Kearu
sorry hat sich überschnitten
@Kearu
sorry hat sich überschnitten
Windows 7 Ultimate 64 Bit / AMD Phenom II 1090T, 6x3200 MHz / AMD HD-6850 / PureBasic 5.1 (x86) (x64)
- captain_hesse
- Beiträge: 138
- Registriert: 17.05.2009 18:55
- Computerausstattung: Windows 7 Ultimate 64 Bit / AMD Phenom II 1090T, 6x3200 MHz / AMD HD-6850 / PureBasic 5.1 (x86) (x64)
- Wohnort: Saarland
Re: ExamineWorldCollisions() und #PB_Entity_StaticBody
hab noch was vergessen, wenn man den Würfel entfernt wie soll ich dann feststellen ob die Kamerea mit einem Objekt zusammenstößt. Wenn man den Würfel unsichtbar macht findet trotzdem diese Verschiebung statt bei 30 minuten noch relativ leicht aber nach längerer Zeit wird das immer schlimmer man stößt dann mit objekten zusammen die man eigentlicht noch garnicht erreicht hat.
Windows 7 Ultimate 64 Bit / AMD Phenom II 1090T, 6x3200 MHz / AMD HD-6850 / PureBasic 5.1 (x86) (x64)
-
DarkDragon
- Beiträge: 6291
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
Re: ExamineWorldCollisions() und #PB_Entity_StaticBody
Ja, ich meinte damit wieder nur, dass das Verhalten mit den physikalischen Eigenschaften, dass da Masse und Reibung und so nur mit der Gravitation mitwirkt und von #PB_Entity_AbsoluteBodyMove unabhängig ist. Immerhin sagt ja #PB_Entity_AbsoluteBodyMove nur, dass man EntityLocate auch verwenden können soll. ODE ist nunmal nicht PhysX. Ich finde die ODE demos recht träge.captain_hesse hat geschrieben:Entschuldige dann habe ich da etwas mißverstanden aber dennoch bin ich der Meinung das dieses Verhalten nicht richtig ist
Da zeigt man den Kopf trotzdem nichtmehr an. Früher wurde das sogar ganz in 2D gemacht, also die Hand und die Waffe. Heutzutage kann man einfach den Body- und Headpart weglassen beim Anzeigen, dann kommt es auch bei allen Animationen nicht zu falschen Effekten.captain_hesse hat geschrieben:denn wenn man einen Ego-shoter programmieren will sieht man ja auch die Waffe vor der Kamera
Wie gesagt, ich kanns keine 20-30 Minuten durchlaufen lassen, soviel Zeit hab ich nicht. Desshalb hab ich keine Ahnung was für ein "Laggen" du meinst. Das laggen kommt bei mir nichtmal wenn ich das Delay(50) reinsetze oder Speed verändere.captain_hesse hat geschrieben:und diese würde dann auch im verlauf des Spiels ihre Sollposition verändern und irgendwann würde der Arm sammt Waffe sehr viel weiter vor der Kamera hängen als er soll. Und dann frage ich mich auch warum das immer anfängt zu Laggen nach ca. 20 - 30 Minuten. Und warum kommt das verhalten erst nach einer Weile und nicht von anfang an, wenn das so gewollt währe dann müsste dieses verhalten doch von anfang an so sein.
@Kaeru Gaman: Nein, es sollte nicht aus den Bugs verschoben werden, denn das Laggen kann ein Memory Leak sein oder eine fehlerhafte Verwendung von ODE. Außerdem sollte Fred/das PB Team dafür sorgen, dass die Positionen nach dem Rendern neu berechnet werden, wenn ODE nicht in einem eigenen Thread arbeitet. Wenn es in einem eigenen Thread arbeitet wären vielleicht Callbacks sinnvoll.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
- captain_hesse
- Beiträge: 138
- Registriert: 17.05.2009 18:55
- Computerausstattung: Windows 7 Ultimate 64 Bit / AMD Phenom II 1090T, 6x3200 MHz / AMD HD-6850 / PureBasic 5.1 (x86) (x64)
- Wohnort: Saarland
Re: ExamineWorldCollisions() und #PB_Entity_StaticBody
Im Grunde liegt das Problem eigentlich darin eine Kollision zu erkennen.DarkDragon hat geschrieben:Da zeigt man den Kopf trotzdem nichtmehr an. Früher wurde das sogar ganz in 2D gemacht, also die Hand und die Waffe. Heutzutage kann man einfach den Body- und Headpart weglassen beim Anzeigen, dann kommt es auch bei allen Animationen nicht zu falschen Effekten.
Wenn man mit der Kamera mit einem anderen objekt zusammenstößt passiert ja garnix man läuft also durch das Hinderniss hindurch. Um dieses Problem zu umgehen habe ich ein Objekt erstellt mit dem sich die Kamera bewegt. Erstellt man dieses Objekt nun mit #PB_Entity_BoxBody oder mit #PB_Entity_SphereBody ist die Trägheit dieses Objekts so groß das eine vernünftige Steurung nicht möglich ist. Macht man dieses Objekt nun statisch mit #PB_Entity_StaticBody lässt es sich zwar frei bewegen aber wenn das Hinderniss auch statisch ist wird wieder keine Kollision erkannt also ist das Hindeniss kein Hinderniss mehr. Bleibt also nur noch
Code: Alles auswählen
EntityPhysicBody(0, #PB_Entity_BoxBody,#PB_Entity_AbsoluteBodyMove)Ich habe da jetzt schon unmengen an Experimenten gemacht kann aber die gerade beschriebenen Probleme nicht Lösen. Damit Ihr diese Probleme auch sehen könnt gibt es leider keinen anderen Weg als das Programm mindestens mal ein bis zwei stunden laufen zu lassen was ich aber von niemandem hier verlangen kann mir bleibt also nur euch darum zu Bitten.
Gruß
Armin
Windows 7 Ultimate 64 Bit / AMD Phenom II 1090T, 6x3200 MHz / AMD HD-6850 / PureBasic 5.1 (x86) (x64)
-
DarkDragon
- Beiträge: 6291
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
Re: ExamineWorldCollisions() und #PB_Entity_StaticBody
Das sollst du ja auch. Nur sollte man das kollidierende Objekt nichtmehr zeichnen. Sonst entstehen unschöne Effekte wenn eine Animation hinzukommt. Dann sieht man z.B. die Bewegungen des Mundes von der Ego-Perspektive aus. Und sowas will man ja nicht. Desshalb sage ich, zeichne den Würfel erst garnicht in der Ego-Perspektive, sondern nur in der 3rd Person Perspektive.captain_hesse hat geschrieben:Im Grunde liegt das Problem eigentlich darin eine Kollision zu erkennen.DarkDragon hat geschrieben:Da zeigt man den Kopf trotzdem nichtmehr an. Früher wurde das sogar ganz in 2D gemacht, also die Hand und die Waffe. Heutzutage kann man einfach den Body- und Headpart weglassen beim Anzeigen, dann kommt es auch bei allen Animationen nicht zu falschen Effekten.
Wenn man mit der Kamera mit einem anderen objekt zusammenstößt passiert ja garnix man läuft also durch das Hinderniss hindurch. Um dieses Problem zu umgehen habe ich ein Objekt erstellt mit dem sich die Kamera bewegt. Erstellt man dieses Objekt nun mit #PB_Entity_BoxBody oder mit #PB_Entity_SphereBody ist die Trägheit dieses Objekts so groß das eine vernünftige Steurung nicht möglich ist. Macht man dieses Objekt nun statisch mit #PB_Entity_StaticBody lässt es sich zwar frei bewegen aber wenn das Hinderniss auch statisch ist wird wieder keine Kollision erkannt also ist das Hindeniss kein Hinderniss mehr. Bleibt also nur nochum die Kamera mit dem Objekt mitzuführen.Code: Alles auswählen
EntityPhysicBody(0, #PB_Entity_BoxBody,#PB_Entity_AbsoluteBodyMove)
Klar, das ist keine Lösung für das Laggen, aber eine Lösung dafür, dass du den Würfel nichtmehr von hinten plötzlich siehst.
Ich vermute du hast noch einen Fehler, den ich hier nicht habe. Du schreibst andauernd etwas von einer dauerhaften Verschiebung. Das könnte daran liegen, dass die Positionsangaben vom PureBasic Wrapper, der OGRE und der ODE unsynchrorn sind.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
-
Kaeru Gaman
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
Re: ExamineWorldCollisions() und #PB_Entity_StaticBody
dann mach bitte weiter damit, herauszufinden woran es eigentlich liegt, und melde es dann in geeigneter Form im Englischen Bug-Forum.DarkDragon hat geschrieben:Nein, es sollte nicht aus den Bugs verschoben werden, denn das Laggen kann ein Memory Leak sein oder eine fehlerhafte Verwendung von ODE. Außerdem sollte Fred/das PB Team dafür sorgen, dass die Positionen nach dem Rendern neu berechnet werden, wenn ODE nicht in einem eigenen Thread arbeitet. Wenn es in einem eigenen Thread arbeitet wären vielleicht Callbacks sinnvoll.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
- captain_hesse
- Beiträge: 138
- Registriert: 17.05.2009 18:55
- Computerausstattung: Windows 7 Ultimate 64 Bit / AMD Phenom II 1090T, 6x3200 MHz / AMD HD-6850 / PureBasic 5.1 (x86) (x64)
- Wohnort: Saarland
Re: ExamineWorldCollisions() und #PB_Entity_StaticBody
Ok das leuchtet mir ein allerdings verstehe ich nicht ganz was du mit dem SatzDarkDragon hat geschrieben:Das sollst du ja auch. Nur sollte man das kollidierende Objekt nichtmehr zeichnen. Sonst entstehen unschöne Effekte wenn eine Animation hinzukommt
meinst, die Verschiebung ist nicht dauerhaft sondern nur sobald man eine Taste drückt um das Objekt zu bewegen, lässt man die Taste wieder los springt das Objekt wieder an seine richtige Position zurück aber je länger das Programm läuft deto größer wird der Sprung den es macht wenn man es bewegt. X,Y,Z des Objektes sind nicht die gleichen wie die der Kamera solange eine Taste gedrückt ist auch wenn das Objekt mit HideEntity verstekt wurde.Ich vermute du hast noch einen Fehler, den ich hier nicht habe. Du schreibst andauernd etwas von einer dauerhaften Verschiebung. Das könnte daran liegen, dass die Positionsangaben vom PureBasic Wrapper, der OGRE und der ODE unsynchrorn sind.
Windows 7 Ultimate 64 Bit / AMD Phenom II 1090T, 6x3200 MHz / AMD HD-6850 / PureBasic 5.1 (x86) (x64)
-
DarkDragon
- Beiträge: 6291
- Registriert: 29.08.2004 08:37
- Computerausstattung: Hoffentlich bald keine mehr
- Kontaktdaten:
Re: ExamineWorldCollisions() und #PB_Entity_StaticBody
Dann ist es kein zusätzlicher Fehler mit einer dauerhaften Verschiebung. Wie ich schon sagte löst HideEntity dieses Problem nicht.captain_hesse hat geschrieben:Ok das leuchtet mir ein allerdings verstehe ich nicht ganz was du mit dem SatzDarkDragon hat geschrieben:Das sollst du ja auch. Nur sollte man das kollidierende Objekt nichtmehr zeichnen. Sonst entstehen unschöne Effekte wenn eine Animation hinzukommtmeinst, die Verschiebung ist nicht dauerhaft sondern nur sobald man eine Taste drückt um das Objekt zu bewegen, lässt man die Taste wieder los springt das Objekt wieder an seine richtige Position zurück aber je länger das Programm läuft deto größer wird der Sprung den es macht wenn man es bewegt. X,Y,Z des Objektes sind nicht die gleichen wie die der Kamera solange eine Taste gedrückt ist auch wenn das Objekt mit HideEntity verstekt wurde.Ich vermute du hast noch einen Fehler, den ich hier nicht habe. Du schreibst andauernd etwas von einer dauerhaften Verschiebung. Das könnte daran liegen, dass die Positionsangaben vom PureBasic Wrapper, der OGRE und der ODE unsynchrorn sind.
Angenommen es gäbe einen Algorithmus mit imaginärer Laufzeit O(i * n), dann gilt O((i * n)^2) = O(-1 * n^2) d.h. wenn man diesen Algorithmus verschachtelt ist er fertig, bevor er angefangen hat.
- captain_hesse
- Beiträge: 138
- Registriert: 17.05.2009 18:55
- Computerausstattung: Windows 7 Ultimate 64 Bit / AMD Phenom II 1090T, 6x3200 MHz / AMD HD-6850 / PureBasic 5.1 (x86) (x64)
- Wohnort: Saarland
Re: ExamineWorldCollisions() und #PB_Entity_StaticBody
Na ja aber was kann man denn nun dagegen tun daß das Objekt auch wenn man es bewegt an der richtigen Position angezeigt wird ? Also das es sich so verhällt als wie wenn man es mit #PB_Entity_None oder #PB_Entity_StaticBody declarieren würde, weil dann gibt es so eine Verschiebung nicht aber dummerweise auch keine Kollisionserkennung.
Windows 7 Ultimate 64 Bit / AMD Phenom II 1090T, 6x3200 MHz / AMD HD-6850 / PureBasic 5.1 (x86) (x64)