Du bist nicht angemeldet.

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

CBenni::O

1x Contest-Sieger

  • »CBenni::O« ist der Autor dieses Themas

Beiträge: 1 145

Wohnort: Stuttgart

  • Private Nachricht senden

1

29.10.2009, 22:43

Unerklärlich Wackelnde Kamera - Lösungsansatz

Hallo,
Wie gefällt euch dieser lösungsansatz, oder habt ihr einen besseren?

ich habe in meinem aktuellen projekt (von dem man hier im forum auch schon einiges gehört hat^^)
folgendes Problem gehabt:
Wenn die jagdkamera sich zu weit vom ursprung entfernte, dann fing die kamera an zu wackeln... zunächst schwach, dann immer stärker, bis man irgendwann gar nichts mehr erkannte.
als ich mir den positionsvektor der kamera (tbVector3 - float) anschaute, bemerkte ich, dass er immer ungenauer wurde (klar, gleitkommazahlen werden bei großen werten sehr ungenau).
Um dies zu umgehen, führte ich einen Vektor, der den Kameraoffset (in zehntausend Einheiten) angibt.
Immer, wenn z.B. der X-Wert der Kamera größer als 10000 wurde, habe ich den X-Wert (ich liebe das zu tippen :lol: ) um eins erhöht.
Nun musste ich nur noch bei allen anderen positionsvektoren im programm diesen vektor mal 10000 subtrahieren, und siehe da, das nervige wackeln war geschichte.

Denkt ihr, das war eine gute lösung? ich bin einer von der sorte programmierer, die "einfach mal so drauflos programmieren" (jaja... ich weiß :D )
Über Vorschläge würde ich mich sehr freuen :)

thx, CBenni::O
Ein Mitglied der VEGeiCoUndGraSonMaWiGeS Bewegung.
42!
Aufräumen kann jeder, nur das Genie überblickt das Chaos!
Metal will never die!
1. Sppro Gamecontest - mein Beitrag

Black-Panther

Alter Hase

Beiträge: 1 443

Wohnort: Innsbruck

  • Private Nachricht senden

2

30.10.2009, 09:24

Dieser Lösungsansatz ist ein oft verwendeter Workaround und funktioniert. Was aber noch besser funkionieren würde, wären kleinere Koords. Warum brauchst du denn so riesige? (Falls di Koords allg. begrenzt sind, wäre double auch eine möglichkeit)
stillalive studios
Drone Swarm (32.000 Dronen gleichzeitig steuern!)
facebook, twitter

CBenni::O

1x Contest-Sieger

  • »CBenni::O« ist der Autor dieses Themas

Beiträge: 1 145

Wohnort: Stuttgart

  • Private Nachricht senden

3

30.10.2009, 09:34

Danke, Black-Panther!

Zitat von »"Black-Panther"«

Was aber noch besser funkionieren würde, wären kleinere Koords

Ja, du hast recht. aber wenn ich die Koordinaten verkleinere, und es nicht 100% proportional ist, dann tritt auch wieder der selbe fehler auf...
außerdem hat meine weltraumsimulation keine "Grenze", d.h. man kann "unendlich" weit fliegen...
iwann wird dann sogar die offset variable erschöpft sein :lol: nach hundert jahren im warp-modus :badgrin:

danke!
Ein Mitglied der VEGeiCoUndGraSonMaWiGeS Bewegung.
42!
Aufräumen kann jeder, nur das Genie überblickt das Chaos!
Metal will never die!
1. Sppro Gamecontest - mein Beitrag

Crush

Alter Hase

Beiträge: 383

Wohnort: Stuttgart

Beruf: Softwareentwickler

  • Private Nachricht senden

4

30.10.2009, 11:40

Wär mal interessant, ob es irgendwo einer geschafft hat bei einem Weltraumspiel die Grenze zu überschreiten und wie sich das gezeigt hat :D

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

5

30.10.2009, 12:23

wenn kein schutz eingebaut wurde dann landet er wohl wieder auf der anderen seite oder nicht?

CBenni::O

1x Contest-Sieger

  • »CBenni::O« ist der Autor dieses Themas

Beiträge: 1 145

Wohnort: Stuttgart

  • Private Nachricht senden

6

30.10.2009, 13:23

Hä? wie meint ihr das?
die planeten werden zufällig berechnet, mit fast dem gleichen algo von dem "sternenfeld" des Spiels "galactica" aus dem buch von david scherfgen...
von daher kann man nie eine grenze erreichen.

mfg CBenni::O
Ein Mitglied der VEGeiCoUndGraSonMaWiGeS Bewegung.
42!
Aufräumen kann jeder, nur das Genie überblickt das Chaos!
Metal will never die!
1. Sppro Gamecontest - mein Beitrag

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

7

30.10.2009, 13:35

also ich spreche von einem raumschiff das so weit vom mittelpunkt weg fliegt, dass dessen koordinaten überlaufen...

warum sind ist der effekt eigentlich "Unerklärlich"?

xardias

Community-Fossil

Beiträge: 2 731

Wohnort: Santa Clara, CA

Beruf: Software Engineer

  • Private Nachricht senden

8

30.10.2009, 13:55

Der Ansatz ist anfürsich garnicht so schlecht.

Vielleicht wäre es sinnvoll die Welt nicht in absoluten Koordinaten zu beschreiben sondern in Koordinaten relativ zum Spieler (Inkl einem offset falls die Distanzen sehr groß werden). So hast du eine hohe Genauigkeit in der Nähe des Spielers und eine gröbere Genauigkeit weiter weg).

CBenni::O

1x Contest-Sieger

  • »CBenni::O« ist der Autor dieses Themas

Beiträge: 1 145

Wohnort: Stuttgart

  • Private Nachricht senden

9

30.10.2009, 14:32

@Nacho: kp :D ich habe ewig gebraucht, bis ich darauf gekommen bin^^

@xardias: das ging allerdings nicht so gut, wegen diverser algos von meinem programm...
diese war die einfachste und schnellste lösung :D
Ein Mitglied der VEGeiCoUndGraSonMaWiGeS Bewegung.
42!
Aufräumen kann jeder, nur das Genie überblickt das Chaos!
Metal will never die!
1. Sppro Gamecontest - mein Beitrag

Chase

Alter Hase

Beiträge: 753

Wohnort: Nagaoka / Darmstadt / Düsseldorf

Beruf: fauler Studi

  • Private Nachricht senden

10

30.10.2009, 16:53

Zitat von »"NachoMan"«

wenn kein schutz eingebaut wurde dann landet er wohl wieder auf der anderen seite oder nicht?

Das sind Floats, die laufen nicht ueber. (im sinne wie integer das tun) Irgendwann ist sein Vektor halt mit INFINITY verseucht :)
double zu nehmen waere vielleicht auch moeglich gewesen.
"Have you tried turning it off and on again?"

Werbeanzeige