Seite 1 von 2

Tiny Ore Diver

Verfasst: 19.03.2024, 21:50
von Schrompf
Ich suche noch nach Namen, das Fass mach ich ein andermal auf.

Es soll ein "kleines" Survival-Spiel werden - die Spielfigur kracht mit irgendnem Gefährt durch's Eis, das darüber sofort wieder zufriert. Jetzt hängt das Wrack da fest und bietet eine kleine Luftkuppel und Lichtinsel, zu der man beliebig oft zurückkehren kann. Von da aus soll die Spielerin lostauchen können und eine kleine Unterwasser-Welt finden, wo Pflanzen vom Boden hochwachsen, Fische und Quallen in Schwärmen leben und gelegentlich irgendein Jäger durchfegt.

Zuerst wird eine minimale Ausrüstung zusammengestellt - ich stelle mir da aktuell einen Bohrer vor, ein Messer, später einen Sauger/Spritze für den Bohrsand. Und damit baut man dann eine kleine Basis auf, in die man größere Geräte stellen kann, um bessere Ausrüstung zu bauen und später ein kleines UBoot. Damit stößt man dann in immer größere Tiefen vor, um bessere Rohstoffe zu finden... ihr kennt den Stil.

Inspiration war hier vor allem Ximas kleines Cellular Automata-Experiment, was er in einem der ZFX-Stammtische mal gezeigt hat. Er hatte da auch so ein diffuses Unterwasser-Licht auf Basis von Zellautomatik drin, das mich nachhaltig beeindruckt hat. Die Spielwelt ist also ein zellulärer Automat, aktuell friert nur das Wasser unterm Oberflächeneis bis zu ner gewissen Tiefe durch, später soll beim Bohren Sand entstehen, der zu Boden sinkt und dort mit dem Sauger in einen Rucksack aufgesaugt werden kann, womit man ihn in die Basis schleppen und in den Schmelzer oder so hauen kann, wodurch dann Rohstoffe für die Werkbank entstehen. Da überlege ich mir noch Details. Zusätzlich will ich ein bisschen Bio-Magie aus Subnautica drin haben - zum Einen weil es die Mechanics spannender macht, wenn man Rohstoffe nicht nur aus dem Fels bohrt, sondern aus Pflanzen oder Tieren extrahieren kann. Und zum Anderen, weil ich dann mit Biolumineszenz lokale Lichtquellen zaubern kann, ohne das jemand ne Augenbraue hebt.

Stilistisch habe ich so einen Lowres-Pixelkampf im Kopf, weil ich denke, dass das gut zu kleinen Tiles und Zellularen Automaten passt. Die Tiles sind aktuell allerdings 4x4 Pixel groß und das Spiel rendert in 480x270, aber dann mit Normal Mapping, Texturfiltern und ner Unterwasser-Global-Illumination. Und wegen des fiesen Pixelkriegs und dem Catchy Trend von "Tiny Irgendwas"-Spielen habe ich das Projekt soeben gerade Tiny Ore Diver genannt - Tiny für den ArtStyle, Ore für's Buddeln - ne Menge Leute lieben das, mich eingeschlossen - und Diver als Unterwasser-Verkörperung. Ich frag euch irgendwann nochmal, ob ihr bessere Ideen dazu habt :-) Vielleicht bleib ich auch bei DeepSeaMining, auch wenn das auf Google schlecht vorbesetzt ist.

Das alles ist noch ferne Zukunftsmusik. Aktuell funktioniert die Landschaftsgenerierung mit Felsen und ner Eisschicht obendrauf. Das Rendering ist suuuuper simpel mit einfarbigen Blöcken anstatt Tiles, aber es gibt schon drei BackgroundLayer, die parallax scrollen und hart weichgezeichnet werden - dank der winzigen Auflösung kann man da echt Samples raushauen, ohne einen Gedanken an Integrated GPUs verschwenden zu müssen. Und jetzt arbeite ich am Movement. Hab mir eine kleine Taucherin gebaut, aus ner Furzidee heraus ne Frau, sieht in der Auflösung eh niemand. Vielleicht kann man später sein Geschlecht wählen, weil ich eh besondere Technologien wie den Sandtransport-Rucksack oder verbesserte Sauerstoffflaschen im Sprite dargestellt sehen will. Die schwimmt aktuell rum, aber sie soll kurz vor Wand/Boden-Kontakt noch die Füße nach vorn strecken und sich von Oberflächen abstoßen können, für ein besseres Unterwasser-Gefühl.
tiny_driller.png
tiny_driller.png (10.97 KiB) 10694 mal betrachtet
screenshot0008.png

Re: Tiny Ore Diver

Verfasst: 20.03.2024, 23:12
von starcow
Echt tolle Idee, gefällt mir sehr gut! Hat viele Elemente drin, die mich jetzt spontan begeistern!
Die Entscheidung, bewusst eine Protagonistin zu wählen, hat in mir gewisse "Metroid Vibes" geweckt - was irgendwie auch ganz passend ist, finde ich. :-)

In so einem Unterwasser-Setting lassen sich natürlich auch viele - für sich spannende - Elemente platzieren: Höhlen, Schiffwracks, vulkanische Erdspalten, etc. Da sind der Fantasie wirklich kaum Grenzen gesetzt.

(Das Lesen deiner Idee hat bei mir auch Erinnerungen an den Comic "Tim & Struppi" in der Geschichte "Der Schatz Rackhams des Roten" geweckt)

Bild

Den Pixelart-Style mag ich persönlich sehr - würde dann aber wohl auf den Bluur verzichten, um stil-konsisten "retro" zu bleiben. Aber vielleicht noch etwas früh, um hier gezielt diesen Aspekt zu diskutieren. Es könnte auch durchaus passend wirken - wer weiss!

Re: Tiny Ore Diver

Verfasst: 25.03.2024, 23:51
von Endgegner
Das klingt spannend!

Ich musste an das Unterwasser-Szenario von Clonk Planet denken. Man, ist das lange her, aber das hat damals echt Spaß gemacht. Man hat Korallen gesprengt und daraus Unterwasserstationen mit Luftschleusen gebaut, Tunnel gegraben, ist mit U-Booten herumgefahren. Und das zu viert an einer Tastatur – verrückt. :D

Aber um zurück zu deinem Spiel zu kommen: Ich lasse mich mal überraschen, was hieraus noch entsteht! Wie starcow bereits geschrieben hat, bieten sich für dieses Setting ja viele interessante Elemente an. Vielleicht gibt es da unten noch andere Raumschiffe, die vor langer Zeit ebenfalls dort notgewassert sind?

Re: Tiny Ore Diver

Verfasst: 26.03.2024, 00:30
von Chromanoid
Ja, an Clonk musste ich auch denken. @Schrompf: Kennst Du Clonk?

Re: Tiny Ore Diver

Verfasst: 26.03.2024, 12:20
von Schrompf
Vom Namen her kenn ich Clonk, hab's aber nie gespielt. Ich guck mal, ob ich auf Youtube bissl Anschauungsmaterial finde.

Hab gestern Kollisionstest hinbekommen, sogar mit UnitTests! In meinem Framework gibt's jetzt den EdgeSweep-Test: ne Linie mit Bewegungsvektor gegen ne andere Linie. Wahrscheinlich bissl overengineered, aber naja. Kann man leider keine Screenshots von machen. Aber mir fällt gerade ein, dass es durchaus ne Idee ist, dass mal interaktiv zu visualisieren, einfach um mal mit menschlichen Augen drauf zu schauen, ob alle Grenzfälle gehen.

Nächster Halt: Sand-Riesel-Zellulärautomat

[edit] Clonk ist niedlich. Uralt, aber da geht schon ne Menge Sandbox-Gedöns und es scheint auch in eine gewisse Rahmenhandlung gefasst zu sein, so dass man nicht komplett ziellos vor sich hin daddelt. Das macht schon ne Menge richtig.

Re: Tiny Ore Diver

Verfasst: 07.04.2024, 11:28
von Schrompf
Mit der Debug-Visualisierung habe ich in der Tat jede Menge Grenzfälle gefunden. Und jetzt alle gefixt. Capsule vs Capsule, aber als Sweep Test. Bin ich ein bissl stolz drauf, daher hier die Debug-Visualisierung: Rot kollidiert mit Grün mit grauem Bewegungsschritt, Gelb ist die finale Position bei Kollision, der kleine graue Kringel die Kollisionsposition auf dem Gegenüber.

Die ist so geil, das ist keine Kollision, das ist eine Tollision!
capsule_cast_debug.png

Re: Tiny Ore Diver

Verfasst: 08.04.2024, 11:35
von Jonathan
Hmm, ja, Mathematik macht richtig Spaß wenn sie dann endlich mal funktioniert :)

Das erinnert mich ein wenig daran, als ich mein Animation-Blending System entwickelt habe und auf einmal alles weich und fluffig war und überraschend gut aussah. Ich denke, das geht dir hier ähnlich, in meinem inneren Auge sehe ich dich Minutenlang irgendwelche Kapseln gegeneinander schieben, die dann nett aneinander vorbei gleiten :D

Re: Tiny Ore Diver

Verfasst: 19.08.2024, 21:28
von Schrompf
https://streamable.com/mwwb1x

Ich hab die Auflösung vervierfacht. Die Retro-Auflösung von 480x270 ist jetzt jeder Pixel einzeln simuliert, die Map ist auf 4096x4096 aufgeblasen. Der alte tile-basierte Renderer hat immer noch 30fps geschafft bei 4 Layern mit jeweils 100k Sprites, aber da brauchte es schon einen neuen Renderer. Der Renderer jetzt besteht aus 4 4096er-Texturen und macht die Tiles im PixelShader. Bis zu 16 Kacheln von je 128² davon werden bei Bewegung pro Frame aktualisiert. Wen's mehr als 16 geänderte sind, versucht so ein Pseudo-Zufall-Muster über den Bildschirm verteilt welche zu aktualiseren und holt den Rest im nächsten Frame nach.

Und damit ausgerüstet habe ich dann rieselnden Sand in den zellulären Automaten eingebaut. Hab ein bissl frickeln müssen, bis ich so nen unterwasser-gemütlich-rieselnden Sand hingekriegt habe. Da walten überall so deterministisch-zufällige Formeln, und über mehrere Frames hinweg kriegt man da schnell Resonanzen rein, wo der Sand dann zum Beispiel massiv nach links driftet. Die aktuelle Implementation hat trotz bestem Bemühen immer noch nen leichten Links-Drall, aber ist erstmal gut genug.

Jetzt auf zum Bohren.

Re: Tiny Ore Diver

Verfasst: 19.08.2024, 23:02
von Chromanoid
sehr cool! Hab tierische clonk flashbacks :) hier mal ein Ausschnitt, vielleicht inspiriert es ja https://www.youtube.com/watch?v=p83_ONA9qyw&t=70s edit: ah du hast schon selbst geschaut :) Ist glaube ich ein Spiel, das seiner Zeit weit voraus war...

Re: Tiny Ore Diver

Verfasst: 25.08.2024, 18:02
von Schrompf
Aktuell wird bei der Charakterbewegung Sand wie Fels behandelt: man bleibt bei Kontakt stehen. Das ist Mist. Auf dem Weg zu einer ordentlichen Sand-Verschiebung bei Kontakt hab ich jetzt erstmal eingebaut, dass die Spielfigur eine feste Form in der Simulation hat. Also Sand kollidiert jetzt beim Rieseln damit und bleibt darauf liegen wie auf ner festen Oberfläche.
riesel_kollision.mp4
(200.85 KiB) 118-mal heruntergeladen

Re: Tiny Ore Diver

Verfasst: 26.08.2024, 00:17
von Mirror
sieht gut aus !

Re: Tiny Ore Diver

Verfasst: 07.09.2024, 13:36
von Schrompf
Immer noch alle Style-Ideen ignoriert, sondern jetzt Sandverdrängung eingebaut:
https://streamable.com/x55out

Ich mach ne Liste von allen Sand-Pixeln, die von der Kollisionsform im nächsten Schritt überdeckt werden. Von denen aus hangle ich mich rekursiv zu den Nachbarn durch, bis ich entweder sandfreie Pixel finde, die als Zielort taugen, oder bis die MaxRekursionstiefe erreicht wurde. Wenn ich nicht genug Platz für alle Sandpixel finde, dann Vollbremsung, ansonsten anteilige Bremsung je nach größter notwendiger Rekursionstiefe. Also je weiter ich suchen musste, bis ich Platz fand, desto mehr wird die Bewegung reduziert.

Ursprünglich wollte ich die Sandpixel immer zum Nachbarn verdrängen, und den dann eins weiter, und den dort dann eins weiter, usw. Damit evtl. später mal verschiedenfarbige Schichten von Sand korrekt weggeschoben werden. Aber soweit ich das bisher überschaue, müsste ich dafür für jeden Sandpixel einen unikaten Pfad durchs Gelände finden, und ich wüsste nicht, wie das gehen sollte. Also wird aktuell einfach nur der Sand auf die Ziel-Pixel geswappt, ohne den Pfad dahin zu berühren.

Die steige Kapselform als Kollision stört mich zunehmend. Ich will mal ne 2D-Skelett-Anim einziehen, wo Arme und Beine dann ordentliche Schwimmbewegungen machen, und wo die Figur in Oberflächennähe sich mit Händen und Füßen weiterstößt und dadurch auch schneller taucht. Aber das ist ein Ding für später. Erstmal bau ich jetzt Bohren und evtl. Physik für Abbrechen und Fragmente ein.

Re: Tiny Ore Diver

Verfasst: 07.09.2024, 14:59
von NytroX
Sieht großartig aus. Musst halt nur schauen dass man nicht komplett stecken bleibt im Sand, das wäre im Spiel sicher ärgerlich.

Re: Tiny Ore Diver

Verfasst: 07.09.2024, 21:34
von Schrompf
Stimmt, das hat mir auch Sorgen gemacht. Aber Sand rieselt nach unten, und die Strecke unten rum bis zur Oberfläche, um Sand zu verdrängen, wird immer deutlich länger sein als die Strecke nach oben. Ich glaube also, ich bin prinzipiell sicher davor, sich zu tief in Sand einzugraben und nicht mehr rauszukommen. Wenn man irgendwo lang genug still hält, wo nen Haufen Sand von oben runterrieselt, kann's trotzdem passieren, aber das ist dann ja mit Ansage.

Re: Tiny Ore Diver

Verfasst: 17.09.2024, 23:53
von Schrompf
Es sollte ja das Bohren kommen. Aber das enthält leider auch die Bewegungsphysik aus kombinierter Figur und Werkzeug, und die ist echt haarig. Also hab ich erstmal was Einfaches gemacht, nämlich Aufsaugen und Aussprühen von allem Rieselfähigen.

https://streamable.com/1kfohf

Davon gibt's aktuell nur Sand, später dann noch das pulverisierte Erz verschiedener Rohstoffe. Und der Rucksack, in dem das alles untergebracht wird, ist auch noch unsichtbar. Ich frage mich gerade, ob es ne coole Spielmechanik wäre, wenn der ne echte Präsenz in der Spielwelt hätte. So dass der einen Riss bekommt und Zeug rausrieselt, wenn man zu dicht an einem Fels vorbei schrammt. Weiß nicht, ob das ein cooler Gag wäre, oder ob das frustriert.

Re: Tiny Ore Diver

Verfasst: 18.09.2024, 08:45
von xq
Voll geil. Finds mega, wo das hin geht. Powder Game trifft Noita trifft Subnautica. Ich sehs schon kommen!

Re: Tiny Ore Diver

Verfasst: 18.09.2024, 14:57
von Schrompf
Ich ringe schon immer mit der GIF-Herstellung. Bislang schneide ich Sachen in ShotCut zusammen, und das hat auch einen ffmpeg-basierten GIF-Export. Aber der dithert, was bei nem GIF halt für riesige Größe sorgt. Und ich krieg ihm das auch nicht abgewöhnt, die Ideen aus diversen Foren im Internet bewirken alle nix. Also hab ich mir jetzt ScreenToGif.exe gezogen, portabel und größtenteils nervfrei. Und damit das hier gemacht (6MB)
sandsaug.gif
Na toll, als Anhang hier zeigt's nur ein statisches Preview-Bild. Ey, ich muss wohl echt selber hosten.

Experiment, den Deeplink einzufügen. HA, so geht's
Bild

Re: Tiny Ore Diver

Verfasst: 18.09.2024, 16:50
von scheichs
Sieht auf jeden Fall spassig aus. Der Linksdrift beim Runterrieseln stört mich bissjen.

Re: Tiny Ore Diver

Verfasst: 18.09.2024, 17:51
von Schrompf
Du siehst den? Verdammt. Da muss ich wohl nochmal ran.

Re: Tiny Ore Diver

Verfasst: 18.09.2024, 20:15
von scheichs
Schrompf hat geschrieben: 18.09.2024, 17:51 Du siehst den? Verdammt. Da muss ich wohl nochmal ran.
Bin nur bei meinen eigenen Games "betriebsblind" ;) ;) ;)

BTW: Du hast ihn selber schon im Thread bemängelt.

Re: Tiny Ore Diver

Verfasst: 19.09.2024, 20:08
von Chromanoid
Ich dachte ehrlich gesagt das wäre die Strömung :)

Re: Tiny Ore Diver

Verfasst: 19.09.2024, 20:25
von scheichs
@Chromanoid: Du bist einfach genial! Zack hat Schrompf wieder neues Gameplayelement: wechselnde Strömung! Könnte tatsächlich viel Leben reinbringen.

Re: Tiny Ore Diver

Verfasst: 19.09.2024, 21:27
von Alexander Kornrumpf
Schrompf hat geschrieben: 18.09.2024, 17:51 Du siehst den? Verdammt. Da muss ich wohl nochmal ran.
Ich weiß jetzt nicht ob wir über dasselbe reden. Es ist im ersten Frame (der auch unbewegt eingebunden ist) unübersehbar, also man muss nicht besonders drauf achten, dass Sand und Zwischenräume jeweils eine optisch Linien von links unten nach rechts oben bilden, und im Bewegtbild beim Abwerfen ist das genauso unübersehbar auch so und da würde man das auf keinen Fall erwarten von der Hin- und Herbewegung, sondern eher was im weitesten Sinne S-förmiges (also dass das Muster auch wirklich der Bewegung folgt statt eine gleichbleibende Hauptrichtung zu haben). Also das ist jetzt nicht irgendwie subtil oder so, das springt einen sofort an.

Re: Tiny Ore Diver

Verfasst: 20.09.2024, 10:09
von Jonathan
Schrompf hat geschrieben: 17.09.2024, 23:53Ich frage mich gerade, ob es ne coole Spielmechanik wäre, wenn der ne echte Präsenz in der Spielwelt hätte. So dass der einen Riss bekommt und Zeug rausrieselt, wenn man zu dicht an einem Fels vorbei schrammt. Weiß nicht, ob das ein cooler Gag wäre, oder ob das frustriert.
Ich meine, auch in anderen Spielen verliert man Lebenspunkte wenn man zu dicht an Hindernisse kommt. Die Frage ist dann so ein bisschen, wie hart man das bestraft. Verliert man nur einen Teil seiner Beute oder bleibt der Rucksack für immer kaputt? Muss man Rucksackreperaturdinger aufsammeln? Man kann das im schlimmsten Falle ja so unbestrafend machen, dass es nie jemanden stört, dann ist es eher ein witziges grafisches Detail. Man kann aber auch gut spätere Level bauen, bei denen man seltene Dinge aus einer Verschachtelten Höhle holen muss, ohne beim ruasgehen die "Zacken" zu berühren.
Ist auch ein wenig die Frage, wie viel Zeit das beansprucht. Andererseits, wirds ja eh eher ein kleines Spiel, und sowas könnte ein nettes Feature sein, das in Erinnerung bleibt.

Re: Tiny Ore Diver

Verfasst: 13.10.2024, 12:38
von Schrompf
screenshot0015.png
Ich bin dabei, die Map direkt mit PerPixel-Kollision in Box2D einzumassieren. Kann durchaus sein, dass das prinzipiell mit Box2D nicht funktioniert - ich glaube zum Beispiel, da ist eine harte Annahme "konvexe Geometrie" eingebacken - aber dann kann ich ja zur Not Box2D wieder raushauen und die Constraints selbst auflösen. Erstmal haben.

Erster Schritt: eine Kugel in eine Bitmap ausrendern. Mein Plan ist es, immer Kollisionspartner A in eine Bitmap im Koordinatensystem von Kollisionspartner B auszurendern. Ich brauch Kugel, Kapsel und halt Bitmap. Kugel gegen Kugel und Kugel gegen Kapsel hab ich schon von früher, Box2D ebenso. Das hier wird Kugel vs. Bitmap. Ich rendere die Kugel in eine Bitmap und mach dann plump Binäres AND und guck, ob mehr als Null rauskommt.

Außerdem im Bild: ich habe das Additive Blau entfernt, was ich irgendwann mal zum Debuggen im PixelShader eingebaut hatte. Die Farbstimmung ist gleich viel mehr das Beabsichtigtes Frostblau. Auch wenn natürlich immer noch viel zu tun ist und ich eure vielen Tipps dazu nicht vergessen habe.

Re: Tiny Ore Diver

Verfasst: 13.10.2024, 13:13
von TomasRiker
Schrompf hat geschrieben: 13.10.2024, 12:38 ich glaube zum Beispiel, da ist eine harte Annahme "konvexe Geometrie" eingebacken
Du kannst ein konkaves Polygon doch aus konvexen Polygonen zusammenbauen, oder?

Re: Tiny Ore Diver

Verfasst: 13.10.2024, 21:57
von Schrompf
Ne, nur konvexe Polygone. Oder "Linienzüge", die aber nur statisch sein dürfen. Da wird jeder Polygon-Abschnitt (mit Vorläufer und Nachfolger) als einzelnes Element verarbeitet.

Alle Angaben ohne Gewähr, hoffentlich irre ich mich.

Re: Tiny Ore Diver

Verfasst: 13.10.2024, 22:00
von TomasRiker
Jedes konkave Polygon lässt sich in konvexe Polygone zerlegen. Ich sehe da kein Problem.

Re: Tiny Ore Diver

Verfasst: 14.10.2024, 12:31
von Jonathan
Ich sehe das größere Problem ehrlich gesagt in den Normalen / Tangenten. Die Bitmap ist ja nicht die Geometrie, sondern ein niedrigaufgelöstes Sampling der Geometrie. Betrachtet man die Bitmap als echte Geometrie aus Blöcken dann gibt es nur perfekt senkrechte und perfekt waagerechte Linien, keine Schrägen. Natürlich kann man diese Treppen mit Kugeln kollidieren lassen, aber das Verhalten wird vermutlich nicht das sein, was man erwartet.

Im letzten Screenshot sieht man ja, wenn man es nicht vergrößert, weiche Kurven in allen möglichen Neigungen. Da könnten Objekte dran entlang rutschen oder abprallen (mit Einfallswinkel = Ausfallswinkel, etc.). Die Frage ist, wie man das Verhalten in Box2D bekommt. Man könnte die Konturen mit Splines approximieren, die haben dann schön kontinuierliche Normalen. Das ist aber natürlich auch kniffelig und man muss immer abwägen zwischen Glattheit und Exaktheit, gut möglich, dass es dann nicht mehr Pixel-Perfekt wird.

Re: Tiny Ore Diver

Verfasst: 14.10.2024, 12:37
von Jonathan
TomasRiker hat geschrieben: 13.10.2024, 22:00 Jedes konkave Polygon lässt sich in konvexe Polygone zerlegen. Ich sehe da kein Problem.
https://www.sciencedirect.com/science/a ... 8069500098

Wobei mir das doch reichlich kompliziert aussieht. Aber vermutlich gibt es heutzutage auch schnellere und einfachere Algorithmen. Vlt. braucht man ja auch gar keine optimale Lösung.