[Projekt] Wurmdings

Hier könnt ihr euch selbst, eure Homepage, euren Entwicklerstammtisch, Termine oder eure Projekte vorstellen.
Forumsregeln
Bitte Präfixe benutzen. Das Präfix "[Projekt]" bewirkt die Aufnahme von Bildern aus den Beiträgen des Themenerstellers in den Showroom. Alle Bilder aus dem Thema Showroom erscheinen ebenfalls im Showroom auf der Frontpage. Es werden nur Bilder berücksichtigt, die entweder mit dem attachement- oder dem img-BBCode im Beitrag angezeigt werden.

Die Bildersammelfunktion muss manuell ausgeführt werden, die URL dazu und weitere Details zum Showroom sind hier zu finden.

This forum is primarily intended for German-language video game developers. Please don't post promotional information targeted at end users.
Antworten
Benutzeravatar
Schrompf
Moderator
Beiträge: 3907
Registriert: 26.02.2009, 00:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

[Projekt] Wurmdings

Beitrag von Schrompf » 04.08.2019, 10:43

Ein "kleines" Nebenprojekt, ursprünglich als Kooperation ausm IRC geplant, dann sind alle abgesprungen.

Spielmechanik

Die Idee war ursprünglich, https://www.slither.io nachzubauen, aber halt in Ordentlich, weil das Ding selbst auf modernen Zocker-Rechnern ruckelt und hackt bis zur Unspielbarkeit. Man steuert also einen Wurm, der Dinge frisst und immer länger wird. Und wenn man es mit z.b. mit einem Sprint schafft, dass jemand anders seinen Wurm gegen ein Hindernis steuert, platzt der Wurm und man kann die Überreste auffressen.

Später soll dann noch weitere Biologie dazu kommen, um auch ein bisschen SinglePlayer oder Steam-Freundesliste-Coop zu ermöglichen: rumblubbernde Biologie, die man mit seinem Wurm auftrennen kann, damit Futter rausfällt. Wände mit Dekogras obendrauf, Strömungen, Quallen, Strombrrzl-Tierchen, wasweißich.

Konzept

Falls das Spiel nennenswert Content bekommt und auch Spaß macht, war mein Plan, es kostenlos auf Steam zu veröffentlichen. Der Gedanke war, zum Einen über kosmetische Sachen ein bisschen Geld zu verdienen - wenn es größer werden sollte, könnte die Steam-Infrastruktur für sowas einen kleinen Markt hervorbringen. Zum Anderen soll die kostenlose Version (werbe- und nervfrei) nur das Spielen auf öffentlichen Servern erlauben. Wenn jemand allein spielen will oder mit Leuten von der Friendlist privat hosten will, soll sie 5€ oder sowas ausgeben müssen.

Mir ist klar, dass ein Webgame eine viel niedrigere Einstiegshürde hat. Mir ist auch klar, dass ne Menge Menschen da draußen so dermaßen gewöhnt sind, mit übler Performance zu zocken, dass sie Zufallstode an unsichtbaren Würmern oder halbsekündige Aussetzer mit Todesfolge schlicht für normal halten. Mein kleiner Rant über dessen Performance ist also auch kein Verkaufsargument.

Das wollte ich zumindest teilweise kontern, indem ich a) ein kleines schnelles Programm baue - winziger Download, extrem schneller Start und Spielbeitritt und b) indem ich die doch recht weit verbreitete Steam-Infrastruktur nutze. Also einfacher Join bei Freunden, Achievements und sowas für Sichtbarkeit im Feed der Steam-Freundesliste, grundlegende Freundesmechaniken auch auf öffentlichen Servern. Und dann das Übliche an Meta-Gaming: regelmäßig zurückgesetzte Ligen, Cosmetics und sowas. Mal schauen.

Aktueller Stand

Funktioniert grundlegend. Man kann auf einem Server joinen, per Klick einen Wurm spawnen, rumkriechen, fressen und wachsen. Man kann sprinten, was Futter kostet. Man kann gegen Hindernisse fahren, was das eigene Futtermeter extrem schnell bis zum Ableben schrumpfen lässt und das Futter dabei in der Umgebung des Wurms spawnt. Und wenn man tot ist, kann man klicken, um erneut zu spawnen.

Die Technik ist C++ mit allem, was Visual Studio hergibt - gibt auch schon den ersten C++20-Spaceship-Operator. Darunter werkelt mein Framework, DirectX, immer noch FMod (was ich mal gegen etwas ohne Lizenz austauschen muss), und enet für's Netzwerk. Letzteres tausche ich evtl. noch gegen das neue Steam-Networking-Gedöns ein, weil enet anscheinend aus politischen Gründen des Autors kein IPv6 unterstützt. Alles aktuell ziemlich fix und provisorisch gebaut, was einerseits sehr befreiend ist, weil simple Software-Architektur auf lange Sicht doch die beste ist. Manche Sachen sind allerdings zu schlicht implementiert - die Kollisionsprüfung ist z.B. noch O(n^2), und das skaliert nicht auf Spielerzahlen, wie das Webgame sie supported.

Und so sieht's aktuell aus: sehr sehr provisorisch. Ein echter Renderer mit nem richtigen Grafikstil kommt bald.

Bild
http://www.splitterwelten.info/privat/worm_0001.png
Häuptling von Dreamworlds. Baut an was Neuem. Hilft nebenbei nur höchst selten an der Open Asset Import Library mit.

Magister
Beiträge: 15
Registriert: 12.08.2018, 22:07

Re: [Projekt] Wurmdings

Beitrag von Magister » 04.08.2019, 14:45

Ich halte den "Graphikstil für solch ein Spiel für völlig ausreichen.

Benutzeravatar
marcgfx
Establishment
Beiträge: 1358
Registriert: 18.10.2010, 23:26

Re: [Projekt] Wurmdings

Beitrag von marcgfx » 04.08.2019, 14:51

Die Idee ist gut. Spannend finde ich wie du es technisch besser machen willst, bzw. weisst du woran die existierende Version scheitert? Reicht nur schon der Einsatz der Steam Infrastruktur? Viel Erfolg!

Wenn du Tester brauchst stehe ich zur Verfügung.

Benutzeravatar
xq
Establishment
Beiträge: 1341
Registriert: 07.10.2012, 14:56
Alter Benutzername: MasterQ32
Echter Name: Felix Queißner
Wohnort: Stuttgart & Region
Kontaktdaten:

Re: [Projekt] Wurmdings

Beitrag von xq » 04.08.2019, 14:57

Die Idee ist gut. Spannend finde ich wie du es technisch besser machen willst, bzw. weisst du woran die existierende Version scheitert?
Das ganze ist im IRC aus einem Rant über die miese Performance von Web-Tech entstanden (das Orginal ist ja ein Browserspiel) und dass es halt ab ein paar Leuchtebobbeln auf dem Screen nur noch geruckelt hat
War mal MasterQ32, findet den Namen aber mittlerweile ziemlich albern…

Wer checkt diese Shaderprogrammierung denn?
JCL: Kein Mensch zwingt Sie jedoch, mit Shadern oder ueberhaupt mit Gamestudio zu arbeiten. Es gibt schliesslich auch andere schoene Hobbies, wie zum Beispiel das Sammeln von Bierdeckeln – JCL quotes

Benutzeravatar
marcgfx
Establishment
Beiträge: 1358
Registriert: 18.10.2010, 23:26

Re: [Projekt] Wurmdings

Beitrag von marcgfx » 04.08.2019, 15:14

also scheiterts an der Darstellung und gar nicht an der Client-Server synchronisation?
edit: Ok, Darstellung scheint mir grad unwarscheinlich. Bin ja damals mit dem Rennspiel auch bei der Thematik gescheitert, bzw. habs gar nicht probiert zu synchen.

Benutzeravatar
Schrompf
Moderator
Beiträge: 3907
Registriert: 26.02.2009, 00:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: [Projekt] Wurmdings

Beitrag von Schrompf » 05.08.2019, 10:57

Magister hat geschrieben:
04.08.2019, 14:45
Ich halte den "Graphikstil für solch ein Spiel für völlig ausreichen.
Für die Entwicklung sicher, aber in ein paar Wochen soll da schon ein ordentlicher Grafikstil drauf. Ich habe bereits eins zwei Bilder von Würmern unterm Mikroskop ergoogelt, die ich als Referenz verwenden will. Ich mag am Mikroskop-Bild, dass es wie ein Blick in eine fremde Welt aussieht, in der alle möglichen kuriosen kleinen Lebewesen rumobern und die seltsamsten Verhaltensweisen haben.

Grafisch wird's also ein diffuses Blaugrau im Hintergrund, dicke Vignette und vielleicht ein bissle Chromatic Abberation am Rand, damit es wie "optisch" aussieht. Dann ne Menge Deko-Trübstoffe rein, ganz vorne und hinten extrem weichgezeichnet und auf der Spielebene als ganz kleine Stückchen, die mit der Bewgung aller Würmer und sonstigen Tiere umhergeschoben werden, um den Eindruck zu vermitteln, dass das alles im Wasser passiert.

Mal gucken, wieviel ich davon alleine hinkriege, weil ich bisher keinen Grafiker fest an der Hand habe. Ich habe zwar ein paar alte Kontakte, aber die haben ja auch alle eigene Leben und Vorhaben.
marcgfx hat geschrieben:
04.08.2019, 15:14
also scheiterts an der Darstellung und gar nicht an der Client-Server synchronisation?
edit: Ok, Darstellung scheint mir grad unwarscheinlich. Bin ja damals mit dem Rennspiel auch bei der Thematik gescheitert, bzw. habs gar nicht probiert zu synchen.
Woran genau das Webgame scheitert, weiß ich nicht. Hab nicht profiled. Das Spiel hat gerne mal in bewegten Spielsituationen ne Sekunde lang ausgesetzt, warum auch immer. Und wenn man mal ein bissl länger gewachsen ist, so ab >10k Futter, ruckelte es einfach durchgängig. Das wird sicherlich die grafische Darstellung gewesen sein.

Das Syncen ist aber auch ein Problem: Netzwerk-Bedarf steigt ja teilweise quadratisch mit der Anzahl der Teilnehmer. Ich habe da schon ein bissl optimiert, die ~1k Futterstückchen werden schon recht aufwandsarm synchronisiert. Es fehlen aber auch noch elementare Features wie ein lokales Activity Window rund um jeden Spieler oder eine ordentliche Client Side Prediction. Die Würmer kriechen auch auf jedem Client vorwärts, aber kleine Änderungen am Verhalten, die man nicht antizipieren kann, setzen die Entities noch abrupt und ungebremst um. Ein bissl Nachgiebigkeit an der Stelle dürfte das Spielerlebnis mit schlechten Leitungen viel angenehmer machen.
Häuptling von Dreamworlds. Baut an was Neuem. Hilft nebenbei nur höchst selten an der Open Asset Import Library mit.

KayZ
Beiträge: 46
Registriert: 06.01.2015, 00:46
Echter Name: Dennis

Re: [Projekt] Wurmdings

Beitrag von KayZ » 05.08.2019, 13:41

Nice, ich arbeite zur Zeit an was ähnlichem, allerdings nicht basierend auf slither.io sondern eher in Richtung agar.io. Ich hatte vor einem Jahr damit angefangen, aber entwickle auch nicht wirklich oft dran: damacreat.io (Changelog sieht man, wenn man auf die Versionsnummer klickt, um zu sehen wie "regelmäßig" ich dran arbeite).

Anfangs hatte ich es noch so, dass immer alle Spieler alle Informationen bekommen, aber da hat man denn das Problem mit dem quadratisch ansteigendem Netzwerk-Bedarf. Aktuell bekommt jeder Spieler nur das gesendet was er auch sehen kann, dafür nehme ich einen quadratischen Bereich um den Spieler abhängig von seiner Größe und merke mir dabei auch welche Entitäten ein Spieler bereits gesehen hat, damit die im Nachhinein auch auf dem Client aktualisiert werden, auch wenn der Spieler sie aktuell nicht sieht (falls das Essen anfängt sich zu bewegen oder damit es auf dem Client gelöscht wird, wenn es gefressen wird). Das umherfliegende Essen ist auch ein Feature bei meinem Spiel, das andere nicht haben - zumindest kenne ich keins.

Client Side Prediction habe ich bis auf eine Ausnahme gar nicht und habe ich auch nicht vor hinzuzufügen (existiert nur bei Entitäten mit konstanter Geschwindigkeit, da wird der Client nur einmalig über Position und Geschwindkeit informiert). Das was der Client rendert, ist immer genau das was auf dem Server Stand ist. Alle Informationen die in einem Frame gesendet werden müssen, sende ich immer in genau einem Paket, slither sendet da mehrere in einem Frame - dafür allerdings auch ziemlich klein. Da habe ich auch noch ein paar Ideen um sparsamer zu werden, aber die Prio ist nicht so hoch (statt Koordinaten absolut zu senden, nur relativ zu einem Sektor/Quadranten indem sich der Spieler befindet und Quadrantenwechsel passiert dann nur alle paar Sekunden mal und evtl. die Daten zu den anderen Spielern, nur wenn sie größer, in den Top Ten oder beim Spieler sichtbar sind). Einige iogames machen es auch so, dass sie zum Traffic sparen nur auf 30 FPS gehen.

Performanceprobleme habe ich allerdings auch. Im Chrome kommt man zwar (meistens) auf 60 FPS, zumindest ich auf meinem Rechner, aber im Firefox zum Beispiel nur auf etwa 20 und da ich inzwischen auch Logging habe, wie die FPS bei meinen Usern ist (die hauptsächlich aus Russland kommen), weiß ich, dass die auch im Chrome im Schnitt nur auf 40 FPS kommen. Bei meinem nächsten Update wird das hoffentlich besser, dafür habe ich schon einiges angefasst, aber da komme ich auch langsam an meine Grenzen an dem was optimiert werden kann. Ich entwickle In Dart, was auf dem Server als Dart läuft und im Client als JavaScript. Ich hab zwar noch ein paar Ideen, bei denen weiß ich aber nicht ob sie es schneller machen oder vielleicht doch langsamer und der Aufwand dafür ist doch relativ hoch, da das komplett in die Basis von meinem Entity Component System rein greift. Daher scheuhe ich mich noch vor diesen Änderungen.

NytroX
Establishment
Beiträge: 180
Registriert: 03.10.2003, 12:47

Re: [Projekt] Wurmdings

Beitrag von NytroX » 05.08.2019, 14:17

Woran genau das Webgame scheitert, weiß ich nicht. Hab nicht profiled.
...und das hat mich gerade mal interessiert, also kurz mal gespielt und die Chrome dev-tools angeworfen :-)

Hab nur 10 Minuten reingeschaut, aber was mir aufgefallen ist:

Es gibt Frames, die länger dauern als andere, und das führt zu dem merklichen Ruckeln.
Da drin gibt es einen system-task, der ~11ms dauert; gleichzeitig sinkt der JS Heap => könnte also die GC sein
Und währenddessen läuft auch nichts anderes - hat die Chrome-Javascript implementierung keinen concurrent GC, sondern macht immer ein "stop-the-world" ?
Irgendwie läuft die auch schon ab 20MB JS Heap dauernd (hat aber ein schönes Sägezahnmuster) - mein PC hat ja nur 32 GB Ram, da kann man bei 20 MB schonmal aufräumen und eine GC-Pause von >10ms in Kauf nehmen... (wtf?)

Manchmal dauert der system-task weniger lang; dann gehen die "Nodes" runter => keine Ahnung, wie Chrome funktioniert... gibt es einen extra Aufräum-Prozess für DOM Nodes?


Es gibt eine funktion "oef", die macht meistens nichts außer rendern und nur die Child-Funktionen verbrauchen die Zeit. Manchmal braucht sie selbst aber 15ms oder mehr.
Diese wird am Anfang gesetzt und über einen Timer getriggert, alle 20 bzw. 33 ms; ich denke mal das sind die Frames:

Code: Alles auswählen

startAnimation = function () { animating = !0; no_raf ? is_mobile ? setInterval("oef()", 33) : is_safari ? setInterval("oef()", 33) : setInterval("oef()", 20) : raf(oef) }
Bin jetzt kein Web-Developer... macht man das in Javascript immer so, oder kennen die nur die ganzen "Fix-Your-Timestep" Artikel nicht?
In dieser Funktion wird sowohl gerendert (mit Wurm-Skin Berechnung), als auch versucht festzustellen, ob es lagged und auch ggf. ein reconnect gemacht.
Irgendwie sehr durcheinander das ganze - und scheint auch alles nicht async zu sein.
Und dazu bekomme ich dann: "Warning: Recurring handler took 53.67 ms" => hatten wir nicht nur 20ms Zeit, bis der nächste Timer triggert?

Es gibt einen DrawImage (canvas) call der immer da ist und ~2.4 ms dauert (mein Wurm vielleicht?). Und dann noch viele weitere fürs Rendering, von denen einige auch 1ms brauchen.
Achja: manchmal wird die "redraw" Funktion auch mehrfach in einem "Frame" aufgerufen, keine Ahnung warum.
Also wenn man mal 20 Objekte malen muss, ist man über die 20ms auf jeden Fall hinaus.

Wenn dann der Wurm auch noch größer wird, kommt das halt vorne und hinten nicht mehr hin mit dem Timer. Dann geht die CPU hoch auf 100%, statt einem Rendering-Thread im Chrome, der sich langweilt, gibts plötzlich 4 davon, die auch alle voll ausgelastet werden und das ganze Game wird unspielbar.


Also kurz um: ich glaube das ist einfach nie optimiert worden.

Mit C++ löst du auf jeden Fall das GC Problem, und sobald du eine 3d API verwendest, sollten die Draw Calls auch schnell genug sein.
Dann noch einen gescheiten Main-Loop und das Ganze läuft.
Nur das Netzwerk könnte noch zum Problem werden (ich glaube ein Lag war bei mir für die o.g. Warnung zuständig), ansonsten sehe ich keinen Grund, warum das nicht Performant laufen sollte.

[Edit]
habs grad auch mal in Servo ausprobiert, der "modern, high-performance browser engine". Da läuft es noch langsamer und ruckelt wie verrückt - und hat quasi sofort 100% CPU Auslastung... von einem Core, der Rest wird nicht benutzt. Ich glaube langsam verstehe ich, wie ihr zu dem Rant über Web-Technologien gekommen seid :-)

KayZ
Beiträge: 46
Registriert: 06.01.2015, 00:46
Echter Name: Dennis

Re: [Projekt] Wurmdings

Beitrag von KayZ » 05.08.2019, 14:42

Da drin gibt es einen system-task, der ~11ms dauert; gleichzeitig sinkt der JS Heap => könnte also die GC sein
Und währenddessen läuft auch nichts anderes - hat die Chrome-Javascript implementierung keinen concurrent GC, sondern macht immer ein "stop-the-world" ?
So ist das leider im Javascript. Da gibt es nur einen Thread, und in dem findet auch der GC statt. Deswegen sollte man da versuchen Objekte in einer Freelist zu verwalten und wieder zu verwenden, um nicht ständig GCs zu triggern. (Ausnahme ServiceWorker, die haben eigene Threads, aber die keinen Zugriff aufs DOM)
Bin jetzt kein Web-Developer... macht man das in Javascript immer so, oder kennen die nur die ganzen "Fix-Your-Timestep" Artikel nicht?
Das no_raf-Bedigungung prüft ob der Browser requestAnimationFrame unterstützt und jeder aktuelle Browser unterstützt das, also nur bei wirklich alten Browsern geht er in die 20ms oder 33ms-Sachen rein. Wenn requestAnimationFrame genutzt wird, passiert das ganze passend auf die Bildwiederholungsrate. Und wenn man das nicht innerhalb eines Frames schafft, dann wird halt geskippt.

KayZ
Beiträge: 46
Registriert: 06.01.2015, 00:46
Echter Name: Dennis

Re: [Projekt] Wurmdings

Beitrag von KayZ » 05.08.2019, 14:50

Und dazu bekomme ich dann: "Warning: Recurring handler took 53.67 ms" => hatten wir nicht nur 20ms Zeit, bis der nächste Timer triggert?
Und wegen dem single Thread heißt die 20ms nicht "hey, lauf mal nach exakt 20ms los", sondern frühestens in 20ms und erst dann wenn die aktuelle Arbeit verrichtet ist und man bekommt dann auch den aktuellen Timestamp mit dem man das delta berechnen kann, das in dem Fall dann halt über die 53.67 ms ist.

Benutzeravatar
Schrompf
Moderator
Beiträge: 3907
Registriert: 26.02.2009, 00:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: [Projekt] Wurmdings

Beitrag von Schrompf » 05.08.2019, 15:02

Spannende Analyse. Aber ich nehme ja auch C++, weil ich mich darin auskenne :-) Optik wird noch viel besser, und es soll bei mir auch viel mehr verschiedenen Content geben. Aber warten wir mal ab.

Aktuell bastel ich gerade am Build herum. Es hat sich nämlich herausgestellt, dass man mit Visual Studio und dem Windows10-Linux-Subsystem direkt ausm VisualStudio heraus auch Linux-Programme bauen kann. Jetzt musste ich noch ein bissl am Code anpassen, weil Clang ein viel genauerer Compiler ist als VisualStudio, aber der größte Teil ist erledigt. Demnächst müsste es also den DedicatedServer auch auf Linux geben. Dann schau ich mal, was ich als nächstes angehe: echter Grafikstil, mehr InGame-Content, oder ein paar lose Ecken optimieren.
Häuptling von Dreamworlds. Baut an was Neuem. Hilft nebenbei nur höchst selten an der Open Asset Import Library mit.

KayZ
Beiträge: 46
Registriert: 06.01.2015, 00:46
Echter Name: Dennis

Re: [Projekt] Wurmdings

Beitrag von KayZ » 05.08.2019, 15:32

Planst du dann auch potentiell das Web als Zielplattform zu nehmen? Mit WebAssembly sollte es ja "irgendwie" (hab noch nie was mit WebAssembly gemacht) gehen - keine Ahnung ob man dann alles aus C++ nutzen kann oder nur ein kleines Subset an Features.

Benutzeravatar
Schrompf
Moderator
Beiträge: 3907
Registriert: 26.02.2009, 00:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: [Projekt] Wurmdings

Beitrag von Schrompf » 05.08.2019, 21:00

Weiß nicht. Könnte man machen, muss ich gucken. Aber ich müsste dann soviel von meinem Scheiß auf WebASM porten, dass ich eigentlich schon präventiv keinen Bock habe. Zumal ich ja wie gesagt die Steam-Architektur für "Join bei Freunden", "Cosmetics MicroTransactions" und sowas einsetzen wollte. Und das müsste ich alles nachcoden, wenn ich auf was anderem als Steam release.
Häuptling von Dreamworlds. Baut an was Neuem. Hilft nebenbei nur höchst selten an der Open Asset Import Library mit.

Benutzeravatar
Schrompf
Moderator
Beiträge: 3907
Registriert: 26.02.2009, 00:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: [Projekt] Wurmdings

Beitrag von Schrompf » 16.08.2019, 17:19

Der Linux Dedicated Server läuft. Ok, aus Versehen läuft die Linux-Version des Clients auch, aber die zeigt noch einen schwarzen Bildschirm auf integrierten Intel-GPUs, der für Maximum Annoyance auch noch verschwindet, sobald man einen Frame Debugger wie Renderdoc dran hält. Aber der Fokus lag auf dem Linux-Server.

Visual Studio 2019 kann inzwischen auch für Linux bauen. Seit Windows10 gibt es das Windows Subsystem For Linux, in dem man eine Distro seiner Wahl betreiben kann. Darin kann man dann z.B. einen clang-9 installieren. Und im Visual Studio kann man Linux-Projekte anlegen, die Prozesse in der Linux-VM spawnen, um den Code zu kompilieren und zu linken. Dabei hat mich noch ne Weile aufgehalten, dass GCC und Clang im Gegensatz zum VisualStudio-Compiler beim Linken auf die Reihenfolge Wert legen. Visual Studio weiß davon natürlich nichts, entsprechend sind die IDE-Möglichkeiten zum Angeben von Linker-Abhängigkeiten zwangsweise alphabetisch sortiert. Und damit kriegt man in Linux-Builds mit etwas komplexeren LinkerLib-Dependencies schnell "Unresolved Symbols", obwohl eigentlich alles definiert ist. Ich habe dazu einen Bug bei Microsoft gestellt und ein Mini-Repro gebaut: https://developercommunity.visualstudio ... nk-de.html

Das Problem kann man umschiffen, indem man (die vollen Pfade der) reihenfolge-kritischen Libs als "Zusätzliche Abhängigkeiten" in Projektkonfig / Linker / Eingabe angibt. Und damit baut jetzt ausm Visual Studio heraus der Headless Server für Linux mit und ich kann ihn auf meinen VServer mit echter IPv4 hochladen. Und dort kann man jetzt richtig joinen wie bei nem echten Multiplayer-Spiel.
Häuptling von Dreamworlds. Baut an was Neuem. Hilft nebenbei nur höchst selten an der Open Asset Import Library mit.

Benutzeravatar
Schrompf
Moderator
Beiträge: 3907
Registriert: 26.02.2009, 00:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: [Projekt] Wurmdings

Beitrag von Schrompf » 24.08.2019, 23:30

Ich brauche eure Hilfe bei der Namensfindung!

Aktuell heißt das Projekt Wormfood. Das ist nich sooo griffig. Ich brauche aber einen freundlichen griffigen google-fähigen Namen, bevor ich auf Twitter und Foren das Projekt verbreite.

Meine bisherigen Ideen:
"Snake World" - referiert "Snake", was hoffentlich viele kennen. Könnte aber zu altbacken wirken.
"Snake Life" - hätte "Life" als Verweis auf die vielfältige Biologie, die es neben dem reinen PvP geben soll. Keine Ahnung, ob das verstanden wird.
"Worm's Life" - wird Konflikte mit der letzten überlebenden Marke von Team17 (Worms) geben

Habt ihr Ideen oder Vorschläge?
Häuptling von Dreamworlds. Baut an was Neuem. Hilft nebenbei nur höchst selten an der Open Asset Import Library mit.

Benutzeravatar
Schrompf
Moderator
Beiträge: 3907
Registriert: 26.02.2009, 00:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: [Projekt] Wurmdings

Beitrag von Schrompf » 24.08.2019, 23:43

Hab in der Woche Urlaub natürlich viel daran gearbeitet, Bilder folgen morgen. Noch ein paar Drunken Posting Ideas:
Eine snaklich nette Familie
Worming Up
Slitherlich ein tolles Spiel
Häuptling von Dreamworlds. Baut an was Neuem. Hilft nebenbei nur höchst selten an der Open Asset Import Library mit.

Benutzeravatar
marcgfx
Establishment
Beiträge: 1358
Registriert: 18.10.2010, 23:26

Re: [Projekt] Wurmdings

Beitrag von marcgfx » 25.08.2019, 01:25

WROM .... ist WORM um 180° gedreht (nur das R wird noch mal gedreht). WOROM war der erste Gedanke, keine Ahnung wieso ich Punktsymmetrie will. Vermutlich die Müdigkeit.

Worm up
Worm War
War of the Worms
Warms
War Worms
Wriggly War Worms
Wormland
World War W

Benutzeravatar
Schrompf
Moderator
Beiträge: 3907
Registriert: 26.02.2009, 00:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: [Projekt] Wurmdings

Beitrag von Schrompf » 25.08.2019, 10:54

"Wriggly" gefällt mir, ich lass das mal ein bisschen im Kopf kreisen.

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:
screenshot0001.png
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:
worm_image.png
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 an was Neuem. Hilft nebenbei nur höchst selten an der Open Asset Import Library mit.

Benutzeravatar
Schrompf
Moderator
Beiträge: 3907
Registriert: 26.02.2009, 00:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: [Projekt] Wurmdings

Beitrag von Schrompf » 02.09.2019, 23:08

Ich hab's ein bissl übertrieben mit dem Größenwachstum. In Sachen Zahlen orientiere ich mich mangels Erfahrungswerten immer noch an Slither.io. Und dort musste man eher 30k Punkte haben, um so bildschirmfüllend aufzutreten. Aber egal, wird alles noch angepasst.
screenshot0005.png
Unter der Haube geht es vorwärts: diverse Crashes und Unwägbarkeiten, ein verlässliches Replizieren der Entities auch bei sehr schnellem Verschwinden und Wiederverwenden der Indices, diverse Bugfixes beim Netzwerk-Kodieren des Wurmschwanzes, ne grundlegende Netzwerk-Glättung für Würmer, ne provisorische Futteranzeige, provisorische Futter-Grafiken, usw.

So langsam hat das Ding einen Stand, auf dem es rundrum spielbar ist. Ich mach jetzt ein bissl Content, habe ich beschlossen. Weil's Spaß macht. Erster Anlauf ist wahrscheinlich ne kleine Qualle oder sowas, was wegpaddelt, sobald man sich nähert. Außerdem habe ich Bock auf echte Level-Konturen, also Wände, auf deren Oberfläche dann weitere spannende Sachen wachsen können.
Häuptling von Dreamworlds. Baut an was Neuem. Hilft nebenbei nur höchst selten an der Open Asset Import Library mit.

Benutzeravatar
Chromanoid
Moderator
Beiträge: 3848
Registriert: 16.10.2002, 19:39
Echter Name: Christian Kulenkampff
Wohnort: Lüneburg

Re: [Projekt] Wurmdings

Beitrag von Chromanoid » 03.09.2019, 09:19

Ich bin gespannt. Falls Du bezüglich Grafik noch Inspirationen suchst, vor Urzeiten war ich mal auf der Breakpoint (2003). Da wurde das hier von Kewlers released: https://www.youtube.com/watch?v=bH1khU3CycA Die Tricks sollten heute auf allen Rechnern laufen und vielleicht ist der ein oder andere Effekt ja für Dich spannend.

Benutzeravatar
Schrompf
Moderator
Beiträge: 3907
Registriert: 26.02.2009, 00:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: [Projekt] Wurmdings

Beitrag von Schrompf » 21.09.2019, 11:38

Wände sind aktuell schon drin und interagieren schon ganz ordentlich: man spawnt nicht mehr in oder kurz vor Wänden, Futter spawnt auch nicht mehr drin, die Wasserpartikel auch nicht, und Würmer kollidieren ordentlich mit Wänden.

Während ich an einem provisorischen Wand-Renderer bastle, ist mir ne alte Diskussion aus #sppro wieder eingefallen, und ich habe mal eine Methode für Polygon-Antialiasing ausprobiert. Die Idee dahinter ist, einen dünnen Saum um die Außenkanten aller Polygone zu rendern, der einfach 1px breit von Polyfarbe zu Volltransparent dran pappt. Wenn die GPU dann wie immer an der Pixelmitte den FragmentShader laufen lässt, müsste sie automatisch durch exakte Interpolation perfektes Antialising dranrendern.

Diese Methode glättet natürlich nur die Flächenränder, echtes Antialiasing ist weiterhin ein großes Problem. Und in der Praxis ging es dann doch nicht so einfach: manche Winkel haben seltsame Stufen bekommen, bei denen das echte Polygon andere Treppen gebildet hat, als das Saum-Rechteck geglättet hat. Ich habe das zumindest augenscheinlich gefixt, indem ich den Saum 2px breit gemacht habe. Vorher bestand die Textur aus 1px Solide, 1px transparent, jetzt besteht sie aus 1px solide, 2px transparent. Im Ergebnis isses ganz gut:
poly_aa.png
(selber zoomen)

Das hebe ich mir aber für später auf und baue es jetzt erstmal zurück, um meinen Wänden einen echten Rand zu geben.
Häuptling von Dreamworlds. Baut an was Neuem. Hilft nebenbei nur höchst selten an der Open Asset Import Library mit.

Benutzeravatar
Schrompf
Moderator
Beiträge: 3907
Registriert: 26.02.2009, 00:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: [Projekt] Wurmdings

Beitrag von Schrompf » 18.10.2019, 14:56

worm_0011.png
Debuggen der Voronoi-Diagram-Erstellung. Es geht voran.
Häuptling von Dreamworlds. Baut an was Neuem. Hilft nebenbei nur höchst selten an der Open Asset Import Library mit.

Benutzeravatar
Schrompf
Moderator
Beiträge: 3907
Registriert: 26.02.2009, 00:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: [Projekt] Wurmdings

Beitrag von Schrompf » 18.10.2019, 15:35

Auf sppro.de hab ich ein bissl was zur Technik erzählt, falls ihr mein Rumprobieren nicht eh live im IRC mitverfolgt habt: https://www.spieleprogrammierer.de/12-p ... post343467
Häuptling von Dreamworlds. Baut an was Neuem. Hilft nebenbei nur höchst selten an der Open Asset Import Library mit.

bruebaker
Beiträge: 60
Registriert: 08.12.2015, 11:42
Benutzertext: Sven Rahn
Echter Name: Sven Rahn

Re: [Projekt] Wurmdings

Beitrag von bruebaker » 16.12.2019, 06:27

Machst du mit dem Projekt noch weiter? Oder ist die Zeit erstmal fürs splatter Update reserviert? (:

Benutzeravatar
Schrompf
Moderator
Beiträge: 3907
Registriert: 26.02.2009, 00:44
Benutzertext: Lernt nur selten dazu
Echter Name: Thomas Ziegenhagen
Wohnort: Dresden
Kontaktdaten:

Re: [Projekt] Wurmdings

Beitrag von Schrompf » 16.12.2019, 09:34

Beides :-) Hab ne Weile lang nur gezockt - Leben und Familie waren stressig, und die Jungs haben ein schönes Zusammen-Grind-Spiel angefangen.

Ich baue gerade halbherzig am Wand-Deko-Bewuchs, der im Wasser sachte schwingt. Daneben hab ich Splatter wieder auf Höhe meines weiterentwickelten Frameworks gebracht, Mimu will aber noch das Menü und Dinge umbauen. Und ich habe mein uraltes Amiga-Spiel CrossfireII mal wieder lauffähig gemacht und will es irgendwann im neuen Jahr auf Steam bringen.
Häuptling von Dreamworlds. Baut an was Neuem. Hilft nebenbei nur höchst selten an der Open Asset Import Library mit.

bruebaker
Beiträge: 60
Registriert: 08.12.2015, 11:42
Benutzertext: Sven Rahn
Echter Name: Sven Rahn

Re: [Projekt] Wurmdings

Beitrag von bruebaker » 16.12.2019, 15:00

Das sind ja einige Projekte. (: Und ich bin schon froh wenn ich ein zwei Stunden für mein kleines Projekt freischaufeln kann (:

Antworten