Canon Hill - Terrain Physics

    • GM 8

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    • schau mal hab ich vor einiger zeit gemacht:
      youtube.com/watch?v=HuTPDz9hjPA
      (per-pixel landscape mit wasser + sand hehe)
      ich könnte dir grob erklären wies funktioniert, kann aber jetzt schon sagen das der game-maker performancemäßig niemals in die nähe von sowas kommen wird...

      das grundprinzip ist, dass nur pixel die überhaupt für bewegung in frage kommen zu einem array hinzugefügt werden und dann bei jedem update einmal berechnet werden. "spritzende" pixel sind dann meißtens partikel die sich ganz von der landschaft lösen und dann wieder hinzugefügt werden (was jedoch zum aufnamezeitpunkt des videos noch nicht eingebaut war ;) )

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von florpp ()

    • Hmm, was du vor hast ist nicht einfach und schon garnicht im GM. Wobei.. was ich versuchen würde, wäre etwas mit der Extreme-Physics Dll rumzubasteln.
      Das ganze Gelände ist dann ein Physic-Körper aus Polygone. Ich weiss leider nicht wie schnell dessen Funktionen sind, aber du könntest dann beim Aufschlag eines Projektils oder was auch immer, das große Modell aufschneiden und in zufallsgenerierte Teilchen schneiden die genau diese Stelle füllen welche aus dem Hauptmodell herausgeschnitten wurde.
      Anschließend einfach den neuen Teilchen einen Impuls geben (code für Explosionen gibt es bereits in Examples) und alles weitere erledigt die Dll von selbst.

      Kackpunkt in Sachen Geschwindigkeit ist eben nur dieser Moment des Aufschlags wenn einige neue Modelle erstellt werden müssen was einige Dll-Aufrufe erfordert.

      Du könntest auch den source code dieser Dll um solch einen Zerstörungs-Effekt erweitern wenn du dich wirklich in dieses Projekt reinsteigern willst. Dies dürfte zumindest um einiges einfacher sein und ein wahrscheinlich besseres Ergebnis erzielen als wenn du von Punkt 0 anfangen würdest.

      Willst du auf diese Drachen und -eier klicken?
      Sie werden sich freuen ;)
    • wie wäre es klassisch?

      bei der landschaft speicherst du nur eine heightmap, also die höhe der pixel einmal über die x achse des bildschirms.
      dann können halt niemals hölen oder einkerbungen entstehen, aber das brauchst du ja warscheinlich auch gar nicht
      "herumgefetzte" partikel können ja trotzdem einfach partikel sein ;)
    • Mir ist keine GM-kompatible Engine bekannt die dies kann und ich fürchte wenn es eine gäbe dann würde ich sie auch kennen, lol.

      Von daher bleibt dir nur mein Vorschlag: Erweitere die Extreme-Physics um sowas... =/

      Du bist allerdings auch schon sehr detailverliebt denn hinter so vielen Feautures steckt nun wirklich eine enorme Menge Arbeit (weswegen ich auch glaube dass dir sowieso niemand sowas umsonst bereitstellen würde selbst wenns sowas gäbe). Hoffe du hast dies nicht fürn Adventskalender Spiel geplant denn das wäre zieeeemlich Overkill...

      Willst du auf diese Drachen und -eier klicken?
      Sie werden sich freuen ;)
    • In einer höheren Sprache wäre sowas kein Problem. Jeder Partikel kriegt ein paar Attribute und die Kollisionen werden pixelgenau abgefragt mit Hilfe eines Arrays. Das ist dann, wenn man das Abprallverhalten und die Geschwindigkeit einschränkt, auch in bis zu O(1) möglich.
      Sofern du also eine DLL hast, die dich auf seine Surface im GM kritzeln lässt, kommst du der Sache schon ziemlich nahe.

      Edit:
      Wenn die Partikel auch untereinander kollidieren sollen, wird es etwas komplizierter. Das tun Spiele wie Cannon Hill aber meines Wissens nach sowieso nicht. Ansonsten könnte man die Kollisionsvergleiche mit diversen Techniken gering halten (Bucketing z.B.). Eine richtige Simulation von Flüssigkeit würde ich aber nicht auf Partikelebene machen, sondern stattdessen irgendwie abstraieren (man könnte zwischen "Seen", "Flüssen" und "Wasserfällen" unterscheiden).
      Es sieht sowieso komisch aus, wenn man das zu genau löst, da man dann die Illusion einer Tiefe gänzlich aufgibt.

      Edit2:
      Formatierung und ein paar Ergänzungen.
    • florpp schrieb:

      MewX schrieb:

      In einer höheren Sprache wäre sowas kein Problem.

      das mag ich bezweifeln. in der theorie klingt dein konzept gut, aber was famous da will, mit herunterbröckelnden klippen wenn gewicht darauf lastet etc. ist auch mit höheren programmiersprachen kein leichter job

      Ich habe meinen Post etwas ergänzt (was Partikelkollisionen betrifft).

      Für Größeres kommt man dann aber nicht um eine Unterscheidung herum. Man müsste bestimmte Formationen definieren, sodass sich Partikel zu Entitäten zusammenfassen (die man im Vorfeld am besten definiert - dass die sich selber "erkennen" halte ich für außerordentlich komplex). Diese können dann durch bestimmte Events in andere überführt werden (z.B. "zerbröseln"). Dieser Prozess geht aber nur wirklich gut in eine Richtung (von groß nach klein).

      Wie aber schon angedeutet bezweifle ich, dass das visuell den gewünschten Effekt haben wird. Viele 2D-Spiele (besonders grafisch ansprechende) haben eine Tiefe, auch wenn diese fast immer nur durch die Sprites und Parallaxen simuliert wird. Einen 20*100px großen See in einen Fluss mit 2000 Pixeln ablaufen zu lassen zerstört diese Illusion der Tiefe z.B. völlig. Be careful what you wish for.