{"id":438,"date":"2011-12-05T00:00:08","date_gmt":"2011-12-04T23:00:08","guid":{"rendered":"http:\/\/2018new.trforge.net\/?page_id=438"},"modified":"2018-05-21T17:48:38","modified_gmt":"2018-05-21T15:48:38","slug":"tutorial-realistische-spielphysik","status":"publish","type":"page","link":"https:\/\/www.trforge.net\/en\/tutorials\/tutorial-realistische-spielphysik\/","title":{"rendered":"Tutorial: Realistische Spielphysik"},"content":{"rendered":"<p>Die klassische Tomb Raider Engine ist weit davon entfernt, eine physikalisch korrekte Welt darzustellen. Lara springt weiter und h\u00f6her als jede Olympiasiegerin, es werden riesige Felsquader mit Leichtigkeit verschoben, die Wasserwellen \u00e4hneln eher einer gespannten Folie als echtem Wasser\u2026<br \/>\nAber f\u00fcr gutes Gameplay ist auch nicht zwangsl\u00e4ufig notwendig, die nat\u00fcrliche Welt perfekt nachzubauen. Absichtlich gebrochene Regeln k\u00f6nnen einen besonderen spielerischen und atmosph\u00e4rischen Reiz ausmachen.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/trforge.net\/advent\/2011\/day5\/inseln.jpg\" width=\"550\" height=\"413\" class=\"alignnone size-thumbnail\" \/><\/p>\n<p>Wer aber Wert darauf legt, ein m\u00f6glichst realistisch erscheinendes Level zu bauen, sollte zumindest versuchen, einige grobe Fehler zu umgehen, sofern die Engine dies \u00fcberhaupt zul\u00e4sst. Vielen Spielern wird das wom\u00f6glich nicht einmal auffallen, aber man kann Realismus beispielsweise sehr gut als Grundlage f\u00fcr R\u00e4tsel benutzen. Wie vieles ist dies eine pers\u00f6nliche Entscheidung. Dieses Tutorial ist keinesfalls als Belehrung zu verstehen sondern als Gedankenansto\u00df. Nat\u00fcrlich erhebt es auch keinen Anspruch auf  Vollst\u00e4ndigkeit.<\/p>\n<h1>Verbundene Wasserr\u00e4ume<\/h1>\n<p>Fl\u00fcssigkeiten haben einige Eigenschaften, die uns intuitiv teilweise seltsam vorkommen. Eines davon ist das sogenannte Prinzip der Kommunizierenden R\u00f6hren.<br \/>\nEs besagt, dass alle Gef\u00e4\u00dfe\/R\u00e4ume den gleichen Wasserstand einnehmen, wenn sie miteinander verbunden werden. <\/p>\n<p><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/trforge.net\/advent\/2011\/day5\/index_clip_image002.jpg\" width=\"287\" height=\"239\" class=\"alignnone size-thumbnail\" \/><\/p>\n<p>Das erscheint simpel, wird aber dennoch gerne vergessen. Der Grund f\u00fcr dieses Verhalten ist sogar ziemlich kompliziert: Der Druck am Boden eines wassergef\u00fcllten Gef\u00e4\u00dfes ist alleine abh\u00e4ngig von dem F\u00fcllstand, aber unabh\u00e4ngig von dem F\u00fcllvolumen und der Geometrie des Gef\u00e4\u00dfes. Aber wir wollen hier nicht zu sehr ins Detail gehen. Wichtig ist die Konsequenz: Selbst ein riesiger Wassertank wird mit einer verbundenen d\u00fcnnen R\u00f6hre den gleichen F\u00fcllstand einnehmen. <\/p>\n<p><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/trforge.net\/advent\/2011\/day5\/index_clip_image004.jpg\" width=\"287\" height=\"239\" class=\"alignnone size-thumbnail\" \/><\/p>\n<h1>Str\u00f6mungen<\/h1>\n<p>Ein beliebtes Spielelement sind Str\u00f6mungen. Aber wie bekommt man sie halbwegs realistisch hin? Auch hierbei ist es nicht unbedingt intuitiv klar, wie sich die Str\u00f6mungsgeschwindigkeiten mit den Raumgeometrien ver\u00e4ndern.<br \/>\nNehmen wir zum Beispiel eine R\u00f6hre, die sich auf die H\u00e4lfte ihres Durchschnittes reduziert. Wird das Wasser gleich schnell, langsamer oder schneller str\u00f6men?<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/trforge.net\/advent\/2011\/day5\/index_clip_image006.jpg\" width=\"287\" height=\"239\" class=\"alignnone size-thumbnail\" \/><\/p>\n<p>Es str\u00f6mt schneller! Die Geschwindigkeit ist umgekehrt proportional zum durchstr\u00f6mten Querschnitt. Das ist merkw\u00fcrdig, denn woher kommt diese Beschleunigung? Die Ursache ist, dass Fl\u00fcssigkeiten (fast) nicht zusammendr\u00fcckbar sind, daher flie\u00dft durch jeden Abschnitt des Rohres die gleiche Fl\u00fcssigkeitsmenge. Ist der Str\u00f6mungsquerschnitt verengt, kommt es daher zu einem Druck- und Geschwindigkeitsanstieg. <\/p>\n<h1>Wasser und Eis<\/h1>\n<p>Wie w\u00e4re es mit einem R\u00e4tsel, bei dem man einen im Wasser frei schwimmenden Eisblock schmelzen muss, um den Wasserstand zu erh\u00f6hen? Leider ist das komplett unrealistisch. Der Wasserstand wird nach dem Schmelzen absolut gleich bleiben. Der Grund daf\u00fcr ist, dass das Eis zwar eine geringere Dichte und h\u00f6heres Volumen aber genauso viel Masse wie im geschmolzenen Zustand hat. Der Auftrieb des Eises ist genauso gro\u00df wie die vom K\u00f6rper verdr\u00e4ngte Masse.<br \/>\n\u00fcbrigens ist der Dichteunterschied zwischen Eis und Wasser gar nicht mal so gro\u00df. Bei Eisbergen ragen nur 15% aus dem Wasser heraus!<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/trforge.net\/advent\/2011\/day5\/index_clip_image008.jpg\" width=\"287\" height=\"239\" class=\"alignnone size-thumbnail\" \/><\/p>\n<h1>Laserstrahlen<\/h1>\n<p>Hollywood zeigt uns gerne wundersch\u00f6ne Laserstrahlen. In sauberen Galerien, sogar am helllichten Tag. Doch das ist totaler Schwachsinn. Man d\u00fcrfte (abgesehen von einem Punkt an einer vom Lichtstrahl getroffenen Wand) eigentlich gar nichts sehen.<br \/>\nEs gibt schlie\u00dflich einen guten Grund, weswegen in Diskotheken Nebelmaschinen zum Einsatz kommen. An den Partikeln wird das Licht gestreut, so dass ein Teil davon in unser Auge fallen kann. Ein nicht gestreuter Lichtstrahl fliegt einfach am Auge vorbei, d.h. er ist f\u00fcr uns unsichtbar.<br \/>\nWie man in Tomb Raider Legend sieht, kann man diese Eigenschaften des Lichtes sogar f\u00fcr R\u00e4tsel benutzen. <\/p>\n<p><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/trforge.net\/advent\/2011\/day5\/laser.jpg\" width=\"500\" height=\"281\" class=\"alignnone size-thumbnail\" \/><\/p>\n<p>\u00dcbrigens: Es ist nicht sehr schlau, Laserlicht aus dem sichtbaren Wellenl\u00e4ngenbereich f\u00fcr Bewegungsmelder zu benutzen. Es wird daher ausschlie\u00dflich infrarotes Laserlicht verwendet. Macht das Gameplay mit Laserlicht dann v\u00f6llig unm\u00f6glich? Nat\u00fcrlich nicht. Es ist alles eine Frage der Kreativit\u00e4t. Es gibt Spiele, die dies ber\u00fccksichtigen. <\/p>\n<h1>Dekorative Lichtstrahlen<\/h1>\n<p>Das gleiche Problem wie bei Lasern findet sich auch bei Lichtstrahlen, die durch D\u00e4cher, Fenster oder \u00e4hnliches in R\u00e4ume fallen. Die R\u00e4ume sollten idealerweise staubig oder nebelig sein, damit der Effekt realistisch wirkt.<br \/>\nAuch sollten solche Lichtstrahlen innerhalb eines Levels, oder wenigstens innerhalb eines Raumes, immer aus der gleichen Richtung kommen. Die Sonne wird ja nicht pl\u00f6tzlich ihre Position \u00e4ndern.<br \/>\nSo etwas sieht zwar nett aus, w\u00fcrde aber nur auf Tatooine passieren k\u00f6nnen:<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/trforge.net\/advent\/2011\/day5\/sonnen.jpg\" width=\"550\" height=\"333\" class=\"alignnone size-thumbnail\" \/><\/p>\n<h1>Die Energieerhaltung beim Rollingball<\/h1>\n<p>Der Rollingball ist einer der wenigen Bestandteile der klassischen TR-Engine, die so etwas wie eine echte Physik programmiert bekommen haben. Daher muss man h\u00e4ufig auch die Bodenstrukturen ausf\u00fchrlich testen, damit er seinen vorgesehenen Weg nimmt. Allerdings hat der Rollingball einen Haken: Er verliert nur auf ebenen Fl\u00e4chen Energie. In der Realit\u00e4t w\u00fcrde vor allem die st\u00e4ndige Reibung mit dem Untergrund \u00fcberall daf\u00fcr sorgen. Normalerweise f\u00e4llt diese Eigenschaft auch kaum auf, in symmetrischen Bahnen dagegen sehr.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/trforge.net\/advent\/2011\/day5\/bogen2.jpg\" width=\"550\" height=\"333\" class=\"alignnone size-thumbnail\" \/><\/p>\n<p>Da sich in der Mitte ein flacher Bereich befindet, verh\u00e4lt sich der Rollingball quasi realistisch, d.h. er wird mit jedem Durchgang an H\u00f6he verlieren und in der Mitte zum Liegen kommen.<\/p>\n<p><img decoding=\"async\" loading=\"lazy\" src=\"https:\/\/trforge.net\/advent\/2011\/day5\/Bogen1.jpg\" width=\"550\" height=\"333\" class=\"alignnone size-thumbnail\" \/><\/p>\n<p>Hier wird der Rollingball dagegen unendlich hin und her rollen und dabei stets die gleiche H\u00f6he erreichen. Das sieht schon sehr merkw\u00fcrdig aus. Diese Eigenschaft ist aber auch \u00fcberaus praktisch, denn so kann der Rollingball als Ausl\u00f6ser f\u00fcr zyklische Ereignisse verwendet werden.<\/p>\n<p>Der Rollingball hat noch einige andere Merkw\u00fcrdigkeiten. Es spielt beispielsweise keine Rolle aus welcher H\u00f6he man ihn fallen l\u00e4sst, seine potentielle Energie ist immer die gleiche. Daher wird er immer zur gleichen Stelle auf einer aufsteigenden Rampe rollen. Man sollte den Rollingball auf der Rampe liegend starten, wenn es realistisch aussehen soll.<\/p>\n<p>Ein anderes seltsame Verhalten tritt auf symmetrischen Rampen ohne flache Bereiche und mit gr\u00f6\u00dfer werdender Steigung auf. Ich habe beobachtet, dass er immer auf der drei-Click-Steigung umdrehen wird. Aber ich bin nicht sicher, ob das auch in jeder anderen Umgebung der Fall ist.<\/p>\n<p class=\"infobox\">Dieser Content wurde im Rahmen des <a href=\"http:\/\/trforge.net\/advent\/2011\" target=\"_blank\" rel=\"noopener\">TRForge Adventskalenders 2011<\/a> erstellt.<br \/>\nFalls vom Autoren selbst nicht anders angegeben, respektiere bitte die <a href=\"http:\/\/www.trforge.net\/allgemeine-benutzungsrichtlinien\/\">allgemeinen Benutzungsrichtlinien<\/a> zur Nutzung von TRForge-Inhalten.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Die klassische Tomb Raider Engine ist weit davon entfernt, eine physikalisch korrekte Welt darzustellen. Lara springt weiter und h\u00f6her als jede Olympiasiegerin, es werden riesige Felsquader mit Leichtigkeit verschoben, die Wasserwellen \u00e4hneln eher einer gespannten Folie als echtem Wasser\u2026 Aber &hellip; <a href=\"https:\/\/www.trforge.net\/en\/tutorials\/tutorial-realistische-spielphysik\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":439,"parent":30,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"sidebar-page.php","meta":[],"tags":[4],"_links":{"self":[{"href":"https:\/\/www.trforge.net\/en\/wp-json\/wp\/v2\/pages\/438"}],"collection":[{"href":"https:\/\/www.trforge.net\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.trforge.net\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.trforge.net\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.trforge.net\/en\/wp-json\/wp\/v2\/comments?post=438"}],"version-history":[{"count":6,"href":"https:\/\/www.trforge.net\/en\/wp-json\/wp\/v2\/pages\/438\/revisions"}],"predecessor-version":[{"id":1537,"href":"https:\/\/www.trforge.net\/en\/wp-json\/wp\/v2\/pages\/438\/revisions\/1537"}],"up":[{"embeddable":true,"href":"https:\/\/www.trforge.net\/en\/wp-json\/wp\/v2\/pages\/30"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.trforge.net\/en\/wp-json\/wp\/v2\/media\/439"}],"wp:attachment":[{"href":"https:\/\/www.trforge.net\/en\/wp-json\/wp\/v2\/media?parent=438"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.trforge.net\/en\/wp-json\/wp\/v2\/tags?post=438"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}