Du bist nicht angemeldet.

Werbeanzeige

Schrompf

Alter Hase

  • »Schrompf« ist der Autor dieses Themas

Beiträge: 1 340

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

11

25.08.2019, 10:59

Ne Woche im Urlaub ohne Internet hat übrigens ein bisschen was bewirkt. Neben Familie und so bin ich nur selten am Laptop gewesen, dann aber mangels jeden Internets recht produktiv. Aktuelles Bild:



Man sieht den neuen Wurm-Renderer mit einem Zebramuster als Test, weil ich daran schnell Mapping- und Randpixel-Fehler erkennen kann.

Man sieht die neuen Trüb-Partikel, die ich eigentlich auf der GPU machen wollte, aber mangels Google wäre das anstrengend geworden. Also erstmal klassisch auf der CPU, nur halt auf alle Cores verteilt. Hab's nicht gemessen, aber auch aufm Laptop erreiche ich noch VSync-Bildraten. Wenn's irgendwann nicht mehr reicht (oder mit nem wirklich langen Wurm dann 4x so viele Partikel sichtbar sind), hau ich zuerst mal mit SSE/AVX drauf, denke ich.

Man sieht die neuen Futterstückchen. Die sollten eigentlich wie Zellen unter dem Mikroskop aussehen, so ähnlich wie hier:


Aber ich hab den schwarzen Rand nicht so richtig hinbekommen und das transparante Innere sieht man nicht wirklich auf einem einfarbigen Hintergrund. Naja, immerhin Fortschritt.

Und man sieht an den Rändern das experimentelle Mikroskop-Postprocessing: ne Vignette und einen zunehmenden Weichzeichner, der eigentlich auch Chromatic Aberration haben soll, was man aber selbst mit Wissen um seine Existenz nicht wirklich erkennen kann. Hm. Lass ich erstmal so.

Nächster Schritt: Netzwerk-Glättung, Activity Windowing, dann ein paar Dummy-Effekte für Wurmnamen-Anzeige, Sprintanzeige, Futterniveau-Anzeige, Mampf-Effekt, Sterbe-Effekt. Je nach Tagesform und Freizeit hab ich vielleicht nächste Woche schon das Feature-Level des Vorbilds erreicht
Häuptling von Dreamworlds. Baut aktuell an nichts konkretem, weil das Vollzeitangestelltenverhältnis ihn fest im Griff hat. Baut daneben nur noch sehr selten an der Open Asset Import Library mit.

Schrompf

Alter Hase

  • »Schrompf« ist der Autor dieses Themas

Beiträge: 1 340

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

12

18.10.2019, 15:14

Ewig nix mehr gepostet hier. Die Netzwerkglättung ist umgesetzt, ne Dummy-Zahl in der Bildschirmecke gibt das Futterniveau an, und ich habe einen kleinen Multiplayer-Test auf meinem Linux-VServer mit ein paar Leuten ausm IRC gemacht und dabei einige Bugs und Crashes gefixt.

Jetzt sitze ich an Wänden. Zugrunde liegt eine "Gridded Random"-Punktwolke - ich kenne gerade den richtigen Namen dieser Technik nicht. Du unterteilst das Gebiet in AxB Rechtecke und platzierst in jeder Zelle einen Punkt in einem gewissen Bereich rund um die Mitte. Damit bekommst Du eine Punktewolke, die einerseits für Menschen hinreichend zufällig aussieht, andernseits aber alle Vorteile eines regelmäßigen Grids bietet. Ich erstelle dann ein Voronoi-Diagramm auf der Punktwolke, wofür ich für jeden Punkt die unmittelbaren Nachbarn brauche. Und bei nem Gridded Random ergeben sich die Nachbarpunkte unmittelbar ohne Suche aus den Punkten der 8 Nachbarzellen. Sehr angenehm.

Dann baue ich darauf ein Voronoi-Diagramm, das außerdem die freundliche Eigenschaft hat, dass die daraus ergebenden Polygone zwangsweise immer konvex sind. Auf denen kann ich jetzt alle Berechnungen machen. Kollision mit Punkt, Kreis, Kapsel (Strecke mit Radius). Die Schwebstoffe erscheinen nicht mehr innerhalb von Wänden, der Spawn der Würmer und der Futterstückchen ist mit großzügigen Sicherheiten gegen Wände geprüft. Man kollidiert damit, man stirbt angemessen bei Kollision.

Das Rendering der Wände war dann nochmal ein eigenes Problem: ich wollte, dass die Wände nach außen einen halbtransparenten Saum haben und nach innen farblich nachlassen. Der Saum war halbwegs schnell gemacht, als ich ne fixe Methode hatte, um die Silhouette eines Rudels benachbarter konvexer Polys zu bestimmen. Der Farbverlauf nach innen dagegen war ein echtes Problem, weil die Interpolation der GPU jede Menge Unstetigkeiten produzierte. Jetzt waltet da ein Signed Distance Field, dem ich pro Halbkante die zwei Strecken der anliegenden Silhouette in die GPU hochlade und im FragmentShader dann die Abstände dazu bestimme und die je nach Konvex/Konkav mit Iniquilez' smoothmin() bzw. smoothmax() kombiniere. Sieht gut aus, solange die Polygone nicht *zu* dicht aufeinander folgen. Ich lass es erstmal so.

Jetzt will ich was darauf wachsen lassen. Ich hätte gerne Felder von im Wasser wiegenden Algengräsern auf der Oberfläche. Und später dann vereinzelt Pflanzen mit Spielmechanik.

http://www.splitterwelten.info/privat/worm_0011.png]
Häuptling von Dreamworlds. Baut aktuell an nichts konkretem, weil das Vollzeitangestelltenverhältnis ihn fest im Griff hat. Baut daneben nur noch sehr selten an der Open Asset Import Library mit.