![]() |
Iso-Engine (inkl. Source) - Koordinaten
Liste der Anhänge anzeigen (Anzahl: 2)
Hi,
also ich bin´s mal wieder mit meiner Iso-Engine ;) Soweit funktioniert jetzt das Erste, allerdings sind die Tiles (Koordinaten) noch nicht wirklich in der richtigen Anordnung. Die richtige Anordnung seht ihr in dem angehängten Bild "IsoImg". Die in meiner Engine könnt ihr einfach in der Mitte der StatusBar auslesen. Wie bekomme ich die nun hin? So wie es z.Z. ist kann ich einen Teil der Tiles nicht zeichnen lassen, weil ich die Koordinaten nicht habe. Dieses Mal habe ich den Quellcode mit angehängt. Ich hoffe mir kann jemand helfen. Danke. Gruß Christian |
Re: Iso-Engine (inkl. Source) - Koordinaten
|
Re: Iso-Engine (inkl. Source) - Koordinaten
Klar kann ich das *g*.
Bei einer "normalen" 2D Engine werden die sogenannten Tiles (Felder) einfach per X,Y Koordinaten auf die Oberfläche gezeichnet. Dies ist bei der "Iso-Engine" (richtiger Ausdruck "isometrische Engine") eigentlich genauso, nur mit dem Unterschied, dass die Tiles so auf der Oberfläche verschoben werden, dass der Eindruck entsteht, es handelt sich um eine 3D Umgebung. Die Gradzahlen der Perspektive variieren hierbei: ![]() Beides ist in 2D gezeichnet, aber rechts wurden die Tiles so verschoben, dass der Eindruck entsteht, es wäre 3D. Die neue Anordnung der Felder: ![]() Und hier eine weitere Veranschaulichung, wie eine Engine aussehen könnte. ![]() Die Route wird in 2D auf dem Bildschirm gezeichnet. Ich hoffe es ist nun etwas klarer, was ich euch eigentlich fragen will ;) Gruß Christian |
Re: Iso-Engine (inkl. Source) - Koordinaten
Also erst einmal: So ganz genau habe ich deine Frage nicht verstanden. (liegt evtl. daran, dass ich keine W32 ausführen kann). Geht es um den äußeren Randbereich einer Karte oder wieso hast Du keine Koordinaten dafür? Diese sollten ja überall eigentlich gegeben sein. An den Rändern würde ich dann nur noch Dummy einfügen, leere Felder mit der Hälfte eines Iso-Feldes. So entsteht der Eindruck, dass die Karte schön abgerundet ist. Versuch das Problem nochmal verbal zu erklären (die Erklärung einer ISO ist doch super).
Aber auch nochmal meinen drohenden Finger als Reality-Check. Wieso eine ISO-Engine? Sofern Du dies nicht aus Gründen der Nostalgie machst, würde ich mich keineswegs mehr damit auseinander setzen (ich habe vor 5 Jahren beim schreiben meiner ISO-Engine, dieses Fazit gezogen). Die Technik ist nicht mehr aktuell und aus heutiger Sicht sehr kompliziert, da man stets mit der Illusion von 3D kämüfen muss. Es gibt einige sehr gute Projekte vor dessen Kodierung ich eine hohe Achtung habe. Aber alle diese Projekte dienten nur dazu aus 2D 3D zu machen, weil für letztes nicht genug Rechnenleistung zur Verfügung steht. Inzwischen haben wir Grafikkarten bei denen selbst das Filtern von sichtbaren Polygonen teilweise langsamer ist als diese einfach nur direkt auf den Bildschirm via brute force auszugeben. Es besteht also keine technische Notwenidigkeit für iso mehr. Statt dessen würde man als "ISO-Ersatz" eine 3D-Szene nehmen in der man eine Achse fixiert (vermutlich die Höhe (Y)). Damit hättest Du dann entlang der X- und Z-Achse deine Feldpositionen (ohne diese ständig halbieren zu müssen). Möchtest Du dann eine iso-ähnliche Ansicht, so drehst Du die Kamera um 45° in eine Richtung und es sieht aus wie ISO, obwohl Du mit ganz normalen Koordinaten weiter arbeitest. Die Belastung erfolgt nicht mehr bei der CPU, sondern weitesgehend bei der GPU und auch das beliebte transparente Zeichnen bei ISO-Engines würde sich weitaus effizienter über die GPU berechnen lassen. Dabei muss es halt alles nicht einmal wirklich 3D sein, sondern ein 3D-Raum auf dem man 2D-Objekte pinselt wäre bereits ein Vorteil gegenüber der traditionellen Variante. Nehmen wir mal an, dass Du z.B. auf Grund deines Beispiels ein Auto auf einer Straße fahren willst. Im 2D-Bereich würdest Du dafür zumindest 4 Bilder brauchen (oder diese generieren und im Speicher halten). Wenn Du nun plötzlich sagst: 45° ist mir zu wenig Neigung mit 55° sieht es viel besser aus, dann wäre die große Katastrophe perfekt. Du müßtest eigentlich alle deine Grafiken neu machen. Würdest Du nur ein Modell reinsetzen, könntest Du genau bestimmen, wie das Fahrzeug in welche Richtung positioniert wird und ggf. auch am Straßenrand auf dem Kopf liegen lassen. All dies nur als zusätzliche Überlegung, falls Du sie nicht bisher gemacht hast. Wenn doch: ISO ist definitiv die königsklasse im 2D-Bereich und kann eine Menge Spass machen :) Gruß |
Re: Iso-Engine (inkl. Source) - Koordinaten
Also das Problem mit den Koordinaten ist inzwischen fast geklärt. Es ging um die ganz normalen Tiles. Ich hab einfach die "normalen" X und Y Koordinaten bekommen. Wie soll ich das erklären...ich versuchs mal mit "X"s und "O"s zu erklären.
Hier sind X die Felder außerhalb der Map und O die Felder der Map. X X O X X X O O O X O O O O O X O O O X X X O X X Wenn man die "normalen" Koordinaten ausließt, hat das rote "O" die Koordinaten (1,1) (vom blauen Ursprung). In einer Iso-Engine hat es aber die Koordinaten (1,0), weil die X-Achse auch isometrisch verläuft. Das war mein Problem. Ich hoffe du hast es verstanden, aber ich glaub kaum :D Warum ich die Iso-Engine eigentlich verwende: Ich hab früher - und spiele sie heute noch - sehr gerne 2D-Spiele gespielt und hab mich immer gefragt, wie es möglich ist, ein Spiel derart gut zu programmieren. Ein kleines Beispiel: Jagged Alliance 2. Schöne Iso-Grafik und das hat mich inspiriert mal selbst sowas zu programmieren. Sicherlich wäre es einfacher hier mit 3D zu arbeiten, keine Frage. Dennoch hab ich auch, im Moment jedenfalls, zu großen Respekt mich an 3D ran zu wagen. Ich kenne mich in der Zwischenzeit einigermaßen gut mit DelphiX aus, allerdings nur im 2D-Bereich. Wie gut DelphiX in Sachen 3D ist, weiss ich nicht. Ich traue mich da jedenfalls nicht so richtig dran und denke, dass es sehr viel länger dauern würde, wenn ich sowas in 3D mache. Gruß Christian |
Re: Iso-Engine (inkl. Source) - Koordinaten
So ganz verstanden habe ich es immer noch nicht, aber ich erahne die Richtung. Intern würde ich auch eine ganz einfache Map a la x/y führen, die Wahlweise bei 0 oder 1 beginnt und dann nur noch die Umrechnung auf die Pixelkoordinate durchführen (berücksichtigung für Scrolls natürlich). Dann hätte das blaue 0/0 und das rote 1/0. Ich hoffe sehr, dass Du die Maps bei Dir im speicher nicht versuchts der isometrischen Darstellung anzupassen, sondern genau anders herum ;)
Und: Nein, mit DelphiX solltest Du erst gar nicht versuchen 3D anzusteuern, da die dort eingesetzen Schnittstellen inzwischen nicht nur für tod erklärt wurden, sondern bereits eingegraben wurden und von MS anschließend wieder ausgebuddelt um an einem noch geheimeren Ort wieder verscharrt zu werden. Wie gesagt sollte man den Begriff 3D hier nicht wörtlich nehmen, sondern vielmehr an eine 3D-API als Hilfe zu verwenden. Sicherlich würde das einige Zeit in Anspruch nehmen um sich in diese einzuarbeiten, allerdings würde sich das (solange Du weiterhin richtung "ISO" gehen willst und nicht abhebst und nun eine komplexe 3D-Engine willst, sich durchaus schnell auszahlen, da man einiges an Problemen aus dem 2D-Bereich beiseite schieben kann. Ist erst einmal das erste Quadrat mit der 3D-API gesetzt, ist mit der ersten Schleife schon fast die Hälfte des aktuellen Standes nachgebaut. 3D wird immer erst dann komplex wenn Du alle zur Verfügung stehenden Achsen auch wirklich verwenden willst. Dann kommt man um lineare Algebra nicht mehr herum. Solange man allerdings nur entlang von 2 Achsen bewegt und die dritte maximal zum Zoomen verwendet, bewegt man sich vom mathematischen Aufwand weitesgehend im 2D-Bereich. Tests, ob ein Objekt hinter einem anderen liegt etc. lassen sich sehr leicht umgehen (wie bei ISO auch. Zeichnen von oben links nach unten rechts, anders herum sieht es merkwürdig aus ;) Aber welche Wege Du auch immer gehst: Werde niemals zum Totenbeschwörer und beschwöre DelphiX 3D herauf. Sofort gänzlich vergessen... sofort ;) |
Re: Iso-Engine (inkl. Source) - Koordinaten
Zitat:
|
Re: Iso-Engine (inkl. Source) - Koordinaten
Liste der Anhänge anzeigen (Anzahl: 1)
ich hatte mal nen projekt mit einem kumpel angefangen.
es ist eine 2D iso ansicht eventuell kannst du damit ja was anfangen und ideen für deine engine daraus ziehen. der source ist dabei - das ganze sollte aber nicht so einfach bzw größere teile davon für neue projekte verwendet werden, ohne meine erlaubnis. is hab das mal von meiner platte runtergezippt. |
Re: Iso-Engine (inkl. Source) - Koordinaten
Danke dir! Das sieht ja schon recht gut aus. Lebt das Projekt noch oder habt ihr es abgebrochen? Was sollte es denn werden?
|
Re: Iso-Engine (inkl. Source) - Koordinaten
das soll irgendwie so nen remake von einem alten game werden wo man sich sein office einrichten kann und irgendwie aufträge bekommt und die abarbeitet oderso.. ka hab halt nur den code gemacht und kumpel die grafiken und noch n kumpel die ideen
zur zeit wird nicht daran gearbeitet. ob noch in zukunft, steht in den sternen ;) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:37 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz