Eigenes MMOG

Hier können wir über andere Adventurespiele und ähnliches diskutieren.
Benutzeravatar
TheSearcher
Forscher
Beiträge: 753
Registriert: 10.10.2004, 13:21
Wohnort: Magdeburg
Alter: 38

Eigenes MMOG

Beitrag von TheSearcher » 02.05.2005, 10:36

Freunde,
in der letzten Nacht hatte ich einen Traum (okay, es war eine Idee, ist aber auch egal)
Der Traum kündete davon, dass Uru Live eines Tages wieder auferstehen wird.
Sucher der D'ni werden aus allen Foren her kommen, gerufen von etwas, das sie nicht verstehen.
Ubi fürchtet eine solche Macht, sie verändert ihre Einstellung, die sie zu den Fans zeigen müssen
usw.


Was schreibe ich da zusammen?

Es geht um folgendes:
alle beklagen sich darüber, dass Uru Live eingestellt wurde und Untìl Uru nicht mehr erweitert wird.
Was läge also näher, wenn Fans ein eigenes MMOG erstellen würden, welches dem Uru Live entpricht, welches sie sich gewünscht haben.

Zum Beuspiel fällt mir dabei auf, dass bei den verschiedenen Ereignissen, die in UU stattfinden, immer wieder nur beschrieben wird, was man tut (einfach weil es in Uru keine Objekte & Inventar gibt => das könnte man ändern).

Klar, die Leute von Mysteri House haben so etwas auch schon versucht, aber ich behaupte, dass die Software, die sie da verwenden, zu diesem Zweck zu beschränkt ist (schon angefangen damit, dass besser die Welt komplett geladen sein sollte, bevor sie dargestellt wird).

Ich schlage vor, dass wir das ganze in 2D realisieren, da das für ein Fanprojekt realistischer ist (3D wie Uru ist echt absolut unrealistisch für ein Fanprojekt). Jedoch sollen die einzelnen Körperteile trotzdem unabhängig voneinander beweglich sein (so eine Art Bones-System im Miniatur-2D-Format).

Beim technischen Framework habe ich an folgendes gedacht:
Programmiersprache: C/C++
Grafikbibliothek: SDL (ggf. in Kombination mit OpenGL)
Soundbibliothek: bin ich offen -> vielleicht OpenAL
Netzwerkbibliothek: ich schlage SDL_net vor, falls jemand eine bessere für diesen Zweck kennt, bin ich offen

Insgesamt kam mir gesten in der Nacht die Idee, wie man so etwas programmieren könnte. Ich muss sagen: irgendwie kommt es mir ziemlich genial vor.

Programmierung könnte (und werde) ich übernehmen, für Verstärkung bin ich offen

Grafiken: klar, ein paar Testgrafiken kann ich erstellen; die werden niemanden beeindrucken. Deshalb: wenn ihr Fähigkeiten habt, sofort melden

Musik/SFX: Gibt es da jemanden, der sich auskennt? Bei Bereitschaft melden

Story/Rätsel/Welten: jeder mit Leidenschaft für Myst/Uru, der Interesse und Zeit hat, kann mithelfen (für den Anfang insbesondere im Bereich Story und Welten)

Insgesamt: gibt es grundsätzlich Interesse von einzelnen an der ganzen Sache mitzuarbeiten? Dann würde ich einiges mehr an Infos hier präsentieren, wie es realisiert werden soll.
Zuletzt geändert von TheSearcher am 02.05.2005, 16:36, insgesamt 3-mal geändert.
Der Zyklustyp einer Permutation ist konjugationsinvariant.
Benutzeravatar
pali64
Forscher
Beiträge: 935
Registriert: 13.05.2004, 18:19
Geschlecht: männlich
Wohnort: Bayern
Alter: 60
Kontaktdaten:

Beitrag von pali64 » 02.05.2005, 15:05

Hallo TheSearcher
Also in sachen musik kann ich dich unterstüzen obwohl ich nur sehr wenig zeit habe. Aber ich habe da orchester und änliches an der hand woh (ohhhh du grünen neune das muss ich axel auch endlich zukommenlassen) :oops: ein sehr schönes stück von Locutus umgesetzt habe Also wäre "Wenn Locutius Lust hat" auch sicher er in der lage wass zu komponieren........
So in diesem sinne grüsse pali64
PS: @ TheSearcher
.......Klar, die Leute von Mysteri House haben so etwas auch schon versucht, aber ich behaupte, dass die Software, die sie da verwenden, zu diesem Zweck zu beschränkt ist (schon angefangen damit, dass besser die Welt komplett geladen sein sollte....
Warum hast du den Vorschlag nie Geposted dan wäre es ev in der neuen Engine berücksichtigt worden?
das URU Live lebt in Mysteri-House und UntilUuru weiter :wink:
and URU live continued in Mysteri-house and UntilUru
http://www.mysteri-house.ch
Bild
Benutzeravatar
TheSearcher
Forscher
Beiträge: 753
Registriert: 10.10.2004, 13:21
Wohnort: Magdeburg
Alter: 38

Beitrag von TheSearcher » 02.05.2005, 16:31

@pali:
Mit Musik hat noch ein wenig Zeit, aber ich werde dich im Kopf behalten und dich, sobald es nötig ist, anschreiben. Bevor die Musik kommt, muss mindestens eine Welt halbwegs stehen, dann aber wirklich. Ist zumindest schön, dass es da jemanden im Forum gibt

Warum ich das mit Mysteri House nie gepostet habe: wusste einfach nicht wo da die Ansprechstelle ist.

Ach ja: beim Namen habe ich an Imi 2D gedacht (genauso wie Uru buchstabenweise gelesen "You are you" (Du bist du) ergibt, ergibt Imi "I am I" (Ich bin ich)). Zumindest bis ein besserer Name gefunden wurde.

Ich habe gestern gegen halb 1 noch ein Logo zusammengebastelt (ratet mal, wo ich abgeschaut habe ;) ):
Dateianhänge
logo.jpg
Zuletzt geändert von TheSearcher am 02.05.2005, 16:50, insgesamt 1-mal geändert.
Der Zyklustyp einer Permutation ist konjugationsinvariant.
Benutzeravatar
Thoro
Forscher
Beiträge: 1494
Registriert: 23.09.2004, 14:43
Geschlecht: männlich
KI-Nummer: 529779
Wohnort: Duisburg
Alter: 41
Kontaktdaten:

Beitrag von Thoro » 02.05.2005, 16:42

Hallo TheSearcher,

also so richtig kann ich mir das ganze noch nicht bildlich vorstellen. Ich meine die 2D-Figuren müssen ja über irgendeinen Hintergrund laufen. Sollen das dann gezeichnete oder gerenderte Hintergründe sein? Sehen wir die Spieler von der Seite oder von oben?

Also grundsätzlich ist 3D nicht das Problem. Natürlich dürfte es Ewigkeiten dauern, wenn man es von Direct3D ausgehend programmieren würde, aber mit einem entsprechend guten 3D-Designer sollten zumindest einfache Welten möglich sein. Ich weiß leider nur nicht, was der Markt momentan hergibt. Ich meine, niemand wird es sich leisten können, einen professioniellen 3D-Designer zu kaufen, aber ich habe vor einiger Zeit schon einige interessante kostenlose Ansätze gesehen. Alice ist bspw. ein sehr einfach zu bedienender 3D-Designer, aber leider fehlen noch zu viele Funktionen, um es in ein Programm einbinden zu können. Außerdem habe ich mal bei Sourceforge ein Projekt gesehen, was sich Schattenlicht (oder irgendwie so ähnlich) nannte, welches schon recht gute Resultate hervorbrachte. Leider lief es bei mir nur unter OpenGL, bei DirectX schmierte mir immer der komplette Rechner mit ab. Was ich überhaupt nur damit andeuten will ist, dass man vielleicht mal ein wenig den Markt sondieren sollte, bevor man es kategorisch ausschließt.

Als Soundengine kann ich nur FMOD empfehlen. Das ist eine knapp 200 kB große Bibliothek, die aber unglaublich mächtig ist wie ich finde.
+ Positionierung von Sounds in einem 3D-Raum
+ Soundeffekte zum Simulieren von räumlichen Gegenheiten
+ komplette EAX 2 & 3 Unterstüzung
+ integrierte Decoder für MPEG 1 Layer 2 & 3, Vorbis, Windows Media Audio
+ ansteuerbar mit C, C++, VB, Delphi
+ lauffähig unter Windows, Windows CE, Linux, MacOS, PlayStation2, Xbox, GameCube

Die Engine darf kostenlos eingesetzt werden, solange man keine Gewinne aus seinen Programmen erzielt. Hier mehr dazu: Fmod.de
Benutzeravatar
TheSearcher
Forscher
Beiträge: 753
Registriert: 10.10.2004, 13:21
Wohnort: Magdeburg
Alter: 38

Beitrag von TheSearcher » 02.05.2005, 17:09

@Thoro:
Gezeichnet oder gerendert: wenn ich Leute finde, die hinreichend gut mit einem 3D-Programm umgehen können, gerendert, aber auch gezeichnet wäre in Ordnung (auch das kann wirklich schön werden).

Spieler von Seite (nimm dir dein bevorzugtes Third-Person-Adventure, dann kannst du es dir vorstellen). Nur dass halt hinter allen Charakteren echte Menschen sind, wie in Uru (außer Zandi und Yeesha, für alle spitzfindigen).

Das Problem mit 3D liegt nicht im Umgang mit oder Kosten eines 3D-Programm (da kann man Blender nehmen => ist verdammt gut und kostenlos).

Das Problem liegt darin, die 3D-Welten ohne Probleme rein ins Spiel zu bekommen. Und Probleme treten da auf, das sage ich dir. Ich wollte eine kleine 3D-Welt (nur 1 halbfertiges Gebäude), die ich mit Blender erstellt habe, in eine Testanwendung der 3D-Engine Irrlicht (die ist es glaube ich auch, die du meinst) reinbekommen. Du glaubst nicht, was da für Probleme auftreten. Schließlich habe ich es gelassen. Dabei ist Irrlicht noch bekannt für die gute Kompatibilität zu 3D-Programmen

Außerdem: eine venünftige Animierung von Personen in 3D ist eine Kunst für sich (ich weiß, es gibt ein Bones, aber so richtig vernünftig exportieren kann das kein mir bekanntes 3D-Programm, geschweige denn dass es eine 3D-Engine so richtig supportet. Da müsste man selbst Hand anlegen, ein eigenes Programm zum Zweck schreiben, die Bones in die Modelle einzubauen und anschließend die 3D-Engien um einen Support erweitern. So riesig wie die sind, ist das echt eine Kunst für sich). Kurz: es ist sehr logisch, dass die Produktion von 3D-Spielen so teuer ist. Einen 3D-Shooter schreiben bekäme ich wahrscheinlich hin. Aber ein MMORG in 3D. Nein, das ist etwas für Vollprofis (nur zur Info: der Beta-Test von Uru war sehr lang und noch immer treten in UU Bugs auf. Und ich denke nicht, dass die von Cyan Amateure sind).

fmod ist mir bekannt, allerdings finde ich, dass sie es mit der Striktheit der Lizenz etwas übertreiben. Vielleicht werde ich sie doch verwenden. Habe im Netz gelesen, dass OpenAL fast genauso gut und frei (LGPL) ist, weshalb mein erster Gedanke ihr galt. Obwohl: fmod gilt als einfacher zu verwenden. Vielleicht sollte ich doch fmod verwenden. Werde mal darüber schlafen.

P. S.: Bei Irrlicht habe ich nach einigen im Forum dokumentierten Änderungen auch die DX-Version zum Laufen gebracht.
Der Zyklustyp einer Permutation ist konjugationsinvariant.
Benutzeravatar
TheSearcher
Forscher
Beiträge: 753
Registriert: 10.10.2004, 13:21
Wohnort: Magdeburg
Alter: 38

Beitrag von TheSearcher » 02.05.2005, 21:11

Da ich jetzt den Übungszettel, den ich morgen abgeben muss, fertig habe (ich arbeite schon seit 5 Uhr nachmittags dran und hatte sogar die Hälfte schon am Wochenende gemacht), kann ich ein paar Details veröffentlichen, wie es realisiert werden soll. Da ich nicht genau weiß, was euch so interessiert, werde ich einfach mal ein paar Banalitäten erzählen:

wie ich schon geschrieben habe, soll das ganze in 3rd-Person-Perspektive in 2D sein. Lasst euch von dem 2D nicht allzusehr verwirren, das heißt mehr oder weniger nur, dass die Kameraposition fix ist.

Falls sich jemand findet, der gut mit einem 3D-Programm umgehen kann, sollte möglichst viel gerendert werden - sieht einfach besser aus. Wenn nicht: auch handgezeichnet kann sehr schick wirken (wenn auch nicht ganz so realistisch).

Zu sehen sein im aktuellen Bild werden immer die sein, die sich im selben "Raum" befinden, obgleich das "Raum" eher programmiertechnisch zu verstehen ist: ein Raum kann auch eine Landschaft etc. sein.

Mit diesen Personen kann man auch interagieren. Genauso wie mit den Objekten, die man im Inventar hat und denen die im Raum sind (wie in klassischen Adventures halt). Wenn man aus dem Spiel rausgeht, werden einfach die Inventargegenstände dort fallengelassen, wo man sich zuletzt befand (man erinnere sich an das Ankündigen einer notwendigen Aufräumaktion nach einer Party in UU => hier wird sie wahr).

Zur besseren Orientierung will ich eine Situation im Pub (aus UU wohlbekannt) demonstrieren:
Im Pub: The Searcher und Mr. Z

Mr. Z: Hey, TS du stehst so schön nah am Tresen. Reich mir mal ein Bier rüber

TS holt ein Glas aus dem Regal, füllt es an der Zapfanlage auf und bringt Mr. Z das gefüllte Glas.

Nun könnte folgende Situation eintreten:

Mr. Alpha will auch ein Bier, aber es ist kein Glas mehr vorhanden. Er könnte entweder versuchen Mr. Z das Glas wegzunehmen, während er es abstellt, oder vielleicht aus der Zapfanlage trinken (soll man das wirklich implementieren?).

Dennoch: die Welten sollten "mystischer" als das geschilderte werden, dennoch ist es ein Beispiel, wie so Handlungen ablaufen könnten

Was hat es mit der unabhängigen Beweglichkeit der Körperteile auf sich:
zum einen ist jedes Körperteil eine unabhängige Grafik. So könnten zum Beispiel bei einer Person die Füße mit Sandalen, beim anderen mit Turnschuhen bekleidet sein. Dadurch wird gut eine Charakterindividualisierung möglich.

Zum anderen müssen die Grafiker, wenn sich der Arm bewegt, nur einen neuen Arm (in bewegter Form) malen, was zu weniger Arbeit führt. Vielleicht ließe sich das Bewegen eines Arms von unten nach vorne sogar durch Drehung der Grafik erreichen (dann müsste ich jedoch OpenGL als Grafikbibliothek nehmen, was zu mehr Programmieraufwand führt und zusätzlich die Hardwareanforderungen erhöht).

Ich hoffe, das liefert einen groben Eindruck.

Ich habe ganz vergessen zu erwähnen, dass es auch Rätsel in den Welten geben soll. Wer ist so kreativ sich da etwas auszudenken, der kann sich gerne bei mir melden (Bereich Story/Rätsel/Welten).

Insgesamt sind dabei folgende Entwicklungsziele:
Schaffung einer Welt (eher mehrere verlinkter Welten)
Schaffung der eigentlichen Spieleengine
Schaffung eines Editors, um Welten zu erstellen/erweitern etc. zu können
Schaffung eines Game-Servers
Der Zyklustyp einer Permutation ist konjugationsinvariant.
Benutzeravatar
KlyX
Forscher
Beiträge: 4445
Registriert: 05.02.2004, 17:37
Wohnort: Langenthal, Schweiz
Alter: 39
Kontaktdaten:

Beitrag von KlyX » 02.05.2005, 23:31

Ich kann bei den Landschaften mithelfen, wenns mal nötig sein wird... Mein Gebiet sind Terragenbilder. Allerdings warte ich schon lange auf die neue Version, wo dann auch mal Bäume möglich sind..... povRay Renderungen sind mir leider nicht so realistisch.

KlyX

Wirf einen Blick in meinen Blog - und kommetiere :-)
Chris' Weblog
abacado.com - Total neu
DelHor
Forscher
Beiträge: 1335
Registriert: 05.02.2004, 23:31
Geschlecht: männlich
KI-Nummer: 995034
Wohnort: Neuwittenbek
Alter: 46

Beitrag von DelHor » 03.05.2005, 00:11

Jo, Terragen helf ich auch mit... :)

Ansonsten sag Bescheid sobald du irgendwas wie Story/Tagebücher/sonstige Texte brauchst...
.
“It's a magical world, Hobbes ol' buddy. Let's go exploring!” - Calvin & Hobbes [222]
Benutzeravatar
KlyX
Forscher
Beiträge: 4445
Registriert: 05.02.2004, 17:37
Wohnort: Langenthal, Schweiz
Alter: 39
Kontaktdaten:

Beitrag von KlyX » 03.05.2005, 08:04

@DelHor: Hast du schon was von der neuen Version gehört? Auf terradreams.de ist immst noch die 0.9.19 als aktuellste Version drauf... Ich möchte endlich mit Bäumen arbeiten ;)

Wirf einen Blick in meinen Blog - und kommetiere :-)
Chris' Weblog
abacado.com - Total neu
Benutzeravatar
pali64
Forscher
Beiträge: 935
Registriert: 13.05.2004, 18:19
Geschlecht: männlich
Wohnort: Bayern
Alter: 60
Kontaktdaten:

Beitrag von pali64 » 03.05.2005, 08:13

Klyx versuchs doch mal mit Geospace3D die neue Version kann das ev. und ist Teragen Compatibel! ich benuze es für die M.H. Welten ;)
Gruss pali64
das URU Live lebt in Mysteri-House und UntilUuru weiter :wink:
and URU live continued in Mysteri-house and UntilUru
http://www.mysteri-house.ch
Bild
DelHor
Forscher
Beiträge: 1335
Registriert: 05.02.2004, 23:31
Geschlecht: männlich
KI-Nummer: 995034
Wohnort: Neuwittenbek
Alter: 46

Beitrag von DelHor » 03.05.2005, 08:45

@Klyx:
Hui, ich arbeitete zuletzt immer noch mit einer 8er Version... mal gleich die neue holen.

Aber hast Recht, Bäume wären schon nicht schlecht. Ich persönlich fände ja auch noch simuliertes Gras sehr nett... damit man zumindest mal die Windows-Hintergrundbild-Ebene nachbauen kann.. :)
.
“It's a magical world, Hobbes ol' buddy. Let's go exploring!” - Calvin & Hobbes [222]
Benutzeravatar
pali64
Forscher
Beiträge: 935
Registriert: 13.05.2004, 18:19
Geschlecht: männlich
Wohnort: Bayern
Alter: 60
Kontaktdaten:

Beitrag von pali64 » 03.05.2005, 09:30

Hier mal was so alles mitt Geospace3D möglich ist Das war eine Meisterleistung von "jpeltola"! (Nicht ich!) Man beachte Beume Streucher und Gräser!
Gruss pali64
Dateianhänge
geosp3d.jpg
geosp3d.jpg (19.23 KiB) 8789 mal betrachtet
das URU Live lebt in Mysteri-House und UntilUuru weiter :wink:
and URU live continued in Mysteri-house and UntilUru
http://www.mysteri-house.ch
Bild
Benutzeravatar
KlyX
Forscher
Beiträge: 4445
Registriert: 05.02.2004, 17:37
Wohnort: Langenthal, Schweiz
Alter: 39
Kontaktdaten:

Beitrag von KlyX » 03.05.2005, 10:01

@DelHor: Jup, das wär wirklich mal an der Zeit. Die Landschaften kann man in PovRay imporiteren und mit dem Forester sind auch Bäume möglich... aber im Endeffekt sieht es net so realistisch aus.

@pali: Ein gutes Pov, muss ich sagen. Mir gefällt sehr gut, dass man die Felsen im Wasser noch sehen kann.

Wirf einen Blick in meinen Blog - und kommetiere :-)
Chris' Weblog
abacado.com - Total neu
Benutzeravatar
Locutus
Forscher
Beiträge: 3132
Registriert: 23.05.2007, 17:26
Geschlecht: männlich
KI-Nummer: 626986
Wohnort: Mitteldeutschland
Alter: 46
Kontaktdaten:

Beitrag von Locutus » 03.05.2005, 15:24

pali64 hat geschrieben:Aber ich habe da orchester und änliches an der hand woh (ohhhh du grünen neune das muss ich axel auch endlich zukommenlassen) :oops: ein sehr schönes stück von Locutus umgesetzt habe Also wäre "Wenn Locutius Lust hat" auch sicher er in der lage wass zu komponieren........
So in diesem sinne grüsse pali64
Stimmt, ich warte noch. :D Also ich könnte was beisteuern. Soundtechnisch umsetzen müßtest du das z.B. :wink:

Gruß
Locutus
"Qualität schreibt man mit mYst, oder würdest du für die fatale Schreibverschreibung haften wollen? ... Ich rauche nur URU, denn was anderes kommt bei mir nicht in die Tüte!"

:clever:
Benutzeravatar
TheSearcher
Forscher
Beiträge: 753
Registriert: 10.10.2004, 13:21
Wohnort: Magdeburg
Alter: 38

Beitrag von TheSearcher » 03.05.2005, 16:24

Aber ersteinmal kurz zur Hauptengine zurück:

Ich habe mir überlegt, dass ich folgende Milestones für den Anfang definiere:

1. Milestone: ein Raum mit einer Figurengrafik (statisch), die durch Mausklick an einen gültigen Ort bewegt werden kann auf einem gültigen Weg (ohne gültigen Weg code ich das in recht kurzer Zeit zusammen, daher diese Zusatzanforderung)

Wenn diese steht, kann Gu.Ro, der mir im Rahmen seiner Programmierkenntnisse in Visual Basic seine Unterstützung zugesagt hat, schon mal beginnen, an einem Leveleditor zu programmieren

2. Milestone: mehrere Leute in einem Raum, die herumlaufen können, gesteuert durch einen Server (hierbei ist eine besondere Anforderung, dass nichts passiert, wenn einer der Clients "abgeschossen" wird).

3. Milestone: In Abhängigkeit davon, ob der Leveleditor weit genug ist, wird die Engine entweder um einen Chat oder um volle Unterstützung zum Laden von Levels erweitert.

4. Milestone: der im 3. Milestone fehlende Punkt

5. Milestone: Wechseln von Räumen, rudimentärer Objektsupport (anschauen; nicht manipulieren)

das dürften für den Anfang genug Milestones sein

Ich bitte zu beachten, dass mit 99%iger Wahrscheinlichkeit die ersten beiden Milestones sehr lange dauern werden (Faustregel: für die ersten 10% des Codes braucht man 90% der Zeit, der Rest geht schnell und für das Debuggen am Ende braucht man wieder 90% der Zeit).

Für das Levelformat wird XML herhalten: das ist sehr universell und weit verbreitet (wenn auch nicht extrem schnell einzulesen). Es sei denn, jemand hat eine bessere Idee.

In C++ weiß ich, gibt es eine Lib zum Auslesen von XML-Dateien im Internet. Bei Visual Basic gibt es sicher auch eine, ich kenne aber keine, da ich nicht in VB code.

Für das Berechnen eines gültigen Ortes und Weges habe ich mir folgendes ausgedacht:

der Ort, in dem sich der Avatar aufhalten darf, ist durch das Innere eines sich nicht selbst schneidendes Polygon mit den Ecken p1 bis pn festgelegt.

Wenn man an eine Stelle klickt, wird der Avatar ersteinmal versuchen, an diesen Ort zu gelangen (vorausgesetzt, die angeklickte Koordinate liegt innerhalb des Polygons). Wenn er dabei jedoch eine der Kanten überschreiten müsste, dann ist dieser Weg ungültig. In diesem Fall werden im Polygon 3 Ecken mit der Eigenschaft gesucht, dass der Character innerhalb des durch diese 3 Ecken aufgespannten Dreiecks steht und sich keine sonstige Ecke des Polygons sich innerhalb dieses Dreiecks befindet (wenn dies der Fall ist, tauscht man eine der Ecken des Dreiecks so gegen die, welche sich innerhalb befindet aus, dass die Eigenschaft, dass sich der Character innerhalb des Dreiecks befindet, erhalten bleibt. Eine solche Ecke muss es immer geben).

Ebenso bildet man für die Stelle, wo hingeklickt wurde ebenso ein solches Dreieck.

Nun sucht man von jedem Eckpunkt des "Characterdreiecks" einen Weg zu einer der Ecken des "Zieldreiecks" (über die verschiedenen Eckpunkte, wobei man überprüft, ob man von einem Eckpunkt zu einem anderen gelangen kann, ohne eine Kante des Polygons zu kreuzen) und speichert den kürzesten Weg von einem Eckpunkt des "Characterdreiecks" zu einer der Ecken des "Zieldreiecks" ab. Anschließend lässt man den Character den folgenden Weg laufen:

Vom aktuellen Punkt zum Startpunkt des Weges.
Von dort den Weg ablaufen und bei einem der Knoten des Zieldreiecks landen.
Von dort zum Punkt laufen, an den geklickt wurde.

Nun fehlt noch der Fall, dass an einen Punkt geklickt wurde, der außerhalb des Polygons liegt, in dem sich der Character bewegen darf. In diesem Fall bestimmt man den Punkt innerhalb des Polygons, der am nächsten zur Mausklickposition liegt. Das ist einfacher als man denkt: Einfach den Abstand zu allen Kanten des Polygons berechnen und überprüfen, bei welcher Kante er mininmal ist und auf dieser Kante den Punkt finden, der am nächsten zum angeklickten Punkt liegt (vom per floating-point-operations berechneten Punkt ggf. in alle Richtungen um 1 bis 2 pixel schauen, dass es innerhalb des Polygons liegt).

Okay, ich weiß, das ist nicht einfach (insbesondere der Suchalgorithmus bereitet mir Kopfschmerzen): allein: hat jemand eine bessere Idee, wie man die Wegfindung implementieren könnte?
Der Zyklustyp einer Permutation ist konjugationsinvariant.
Antworten