Du bist nicht angemeldet.

Werbeanzeige

Schrompf

Alter Hase

  • »Schrompf« ist der Autor dieses Themas

Beiträge: 1 388

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

1

04.08.2019, 10:45

Wurmdings - Arbeitsthema

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.


(Link)

http://www.splitterwelten.info/privat/worm_0001.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.

2

05.08.2019, 08:17

Ja, das waren noch Zeiten

https://de.wikipedia.org/wiki/Snake_(Computerspiel)

Mit der NIBBLES.BAS unter QBasic von MS-DOS konnte man da schon schöne Sachen machen. Also, relativ.

Schrompf

Alter Hase

  • »Schrompf« ist der Autor dieses Themas

Beiträge: 1 388

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

3

05.08.2019, 09:11

Ja, das waren noch Zeiten

https://de.wikipedia.org/wiki/Snake_(Computerspiel)

Mit der NIBBLES.BAS unter QBasic von MS-DOS konnte man da schon schöne Sachen machen. Also, relativ.


Ja, das QBasic damals war eine super Spielwiese für uns. Der Klassiker war natürlich, den Explosionsradius des Affen-Bananen-Spiels zu vergrößern, aber man halt bald mehr gewollt.
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.

David Scherfgen

Administrator

Beiträge: 10 282

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

4

05.08.2019, 09:18

Genau mit diesen QBASIC-Programmen habe ich damals auch angefangen!

Schrompf

Alter Hase

  • »Schrompf« ist der Autor dieses Themas

Beiträge: 1 388

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

5

05.08.2019, 21:14

Habe übrigens gestern ein Windows10-Linux-Subsystem mit einem Ubuntu eingerichtet, einen SSH-Key generiert und darin ein Clang darin installiert. Dann kann man im aktuellen VisualStudio ein Linux-Projekt anlegen, den bestehenden Code für den Headless Server reinziehen und kann direkt ausm VisualStudio ein Linux-Programm bauen. Und das läuft dann auch ausm Stand, zumindest im selben Linux-Subsystem.

Moderne Zeiten, verehrte Damen und Herren.
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.

ByteJunkie

Alter Hase

Beiträge: 833

Wohnort: Deutschland

Beruf: Softwareentwickler

  • Private Nachricht senden

6

06.08.2019, 07:13

Hey, da Du mit dem Thema angefangen hast, und mich das interessiert, kann ich mich nicht zurückhalten.
Also ich versteh das so:
1. Du hast 2 Betriebssysteme installiert. 1. Windows 10, 2. Ubuntu
2. Auf Ubuntu hast Du einen SSH Server eingerichtet.
3. Was ist ein Clang?
4. Das VS läuft unter Ubuntu und Du hast ein Neues Projekt angelegt. (Ich meine da mal irgendwo was gelesen zu haben.)
5. Was ist nu wieder ein Headless Server?
6. Warum sollte es auch nicht laufen? :D

Gibt es einen Link oder ne Anleitung dazu? Vielleicht solltest Du ein Buch in deutsch darüber schreiben. Ich würde das definitiv erwerben. ;)

Du hast sicher Dein Wurmspiel darüber gecodet um wieder auf das Spiel zu kommen. :this:
"Alles bleibt wie immer. :rolleyes: Wenn es nicht besser wird, wird es schlimmer!." :huh:

Schrompf

Alter Hase

  • »Schrompf« ist der Autor dieses Themas

Beiträge: 1 388

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

7

06.08.2019, 11:54

Also:
- Ich habe nur Windows auf meinem Rechner
- Windows10 bringt einen eingebauten VirtualMachine-Host mit, einen sogenannten Hypervisor. Das ist ein Programm, dass einen fiktiven Rechner simuliert, innerhalb von dem Du beliebige sonstige Sachen laufen lassen kannst.
- Klassische Vertreter wären z.B. VirtualBox.
- in meinem Windows10 habe ich das Linux Subsystem angeschaltet, dass diesen Hypervisor benutzt, um Linuxe laufen zu lassen
- für das LinuxSubsystem habe ich Ubuntu 18 LTS besorgt. Gibt's fertig im Microsoft Store oder als Download
- wenn ich jetzt das LinuxSub starte, komme ich in einer Linux-Kommandozeile raus und kann darin tun, was ich auch in nem echten Linux tun kann

- Also habe ich wie unter Linux auch einen modernen C++-Compiler installiert. Es gibt den Compiler "GCC" und es gibt einen namens "CLANG"
- ich nehme nämlich von C++ den neuesten Scheiß, und in diesem Thema ist Microsoft sogar weiter als die bisherigen Platzhirsche

- um Dinge in diesem Linux ausführen zu können, brauche ich einen Remote-Zugang. Das ist klassisch eine SSH-Verbindung
- eine SSH-Verbindung braucht einen SSH-Daemon im Zielsystem, und optional einen Key anstatt Name+Passwort
- mit dem Key oder Name+Passwort kann Visual Studio 2019 Bleeding Edge jetzt per SSH einen Compiler im Linux ansteuern, um damit Software für Linux zu bauen
- stellte sich heraus: geht auch ohne SSH, dann greift VC anscheinend in das Linux Subsystem rein und spawnt darin direkt Prozesse.

- außerdem kann VisualStudio jetzt auch Projekte für Linux anlegen
- die sehen aus wie normale Windows-Projekte, aber haben halt das PlatformToolset z.B. "Remote_GCC" mittels SSH oder z.b. "WSL_CLANG_1_0" ohne SSH - WSL steht für Windows Subsystem Linux
- damit habe ich ein billiges HelloWorld kompiliert und eine Linux-App bekommen, die unter Linux ein "Hello World" ausgibt

Kein echtes CrossCompiling, aber trotzdem super. Jetzt kann ich als Teil meines normalen Builds auch den Linux-Server erstellen lassen.

Und ein "Headless Server" oder auch "Dedicated Server" ist ein Programm, dass keine Grafik, keinen Sound und keine Eingaben hat. Das Programm läuft halt einfach ohne jede Interaktion, nimmt Netzwerkverbindungen an, bewältigt die Spielabläufe und schickt die Resultate wieder per Netzwerk an die verbundenen Spieler. Als "Headless" kann man es dann halt auf einem Rechner im Netz laufen lassen, genauso wie z.b. einen Webserver, der HTML-Seiten ausliefert, wenn ein Nutzer mit einem Browser anfragt.
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.

ByteJunkie

Alter Hase

Beiträge: 833

Wohnort: Deutschland

Beruf: Softwareentwickler

  • Private Nachricht senden

8

06.08.2019, 16:09

Hey, danke Schrompf. 8) :thumbsup: 8o

So, wie Du es erklärt hast kann sogar ich es verstehen. :D Und entschuldige bitte meine Unkenntnis.

Das werde ich bei Gelegenheit mal ausprobieren. Bin sicher nicht der Einzige, den so etwas interessiert. ;)
"Alles bleibt wie immer. :rolleyes: Wenn es nicht besser wird, wird es schlimmer!." :huh:

Schrompf

Alter Hase

  • »Schrompf« ist der Autor dieses Themas

Beiträge: 1 388

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

9

16.08.2019, 17:21

Kopie ausm ZFX:

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.…ic-link-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 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 388

Wohnort: Dresden

Beruf: Softwareentwickler

  • Private Nachricht senden

10

24.08.2019, 23:31

Kopie ausm Zfx:

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 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.

Werbeanzeige