RW Online-Map Project [WIP]

  • DE: Hallo zusammen,


    seit einiger Zeit plane ich ein RW-Addon/Plugin für dedizierte Server. Dabei geht es vom Grundsatz her um eine Online map für Rising-World, ähnlich wie es dies für 7 Days To Die gibt falls das jemand kennt (Beispiel: https://gs1.omega-zirkel.de/static/index.html).
    Diese Map soll später durch Anbindung an Plugins auch weitere Administrative und Informative Funktionalitäten erhalten. Aktuell müssen die Map-Tiles noch manuell gerendert werden aber der Plan ist es, das die Karte von mehreren Spielern während des erkunden aufgedeckt werden soll. Dies könnte entweder durch eine Erweiterung der API oder durch ein externes Tool passieren (API+Plugin wäre natürlich eleganter, da niemand extra tools installieren muss)


    Hier mal mein aktueller Stand: https://rwmap.omega-zirkel.de/


    Dieses Thema soll zum diskutieren sein ;)


    EN: Hello together,


    for some time now i'm planning a RW-addon/plugin for dedicated servers. The basic idea is to generate an online-map for Rising-World, like the map for 7 Days To Die if anyone knows that (example: https://gs1.omega-zirkel.de/static/index.html). Later this map shall be connected to a plugin to add more administrative and informative functionality. Currently the map must be rendered manually but the goal is to let the players generate map content while they explore the map (like in 7d2d). This could either be done through an API extension or an external tool that uploads changed map files while exploring (API+Plugin would be better of course, so nobody needs extra tools to install)


    Here you can view the current state: https://rwmap.omega-zirkel.de/


    This thread is open for discussion ;)

    Gamer aus Leidenschaft
    (Web) Entwickler aus Leidenschaft
    <3 Vater aus Leidenschaft <3
    (prio in aufsteigender Sortierung ;) )


    ~~~~~~~~~~~~~~~~~
    1. Entweder man macht etwas richtig oder lässt es bleiben!
    2. Egal wie lange etwas dauert, Hauptsache es wird fertig (irgendwann)
    ------------------------
    Discord: Devidian#1334

    Edited once, last by Devidian ().

  • DE:


    Frage: Ist eine online Karte nicht unfair für PvP?
    Antwort: Ein Server-Admin kann den Zugriff auf die Karte beschränken, so das nur ausgewählte Personen (Admins) Zugriff haben.


    Frage: Wie kann ich als Server Besitzer anfangen die Online Karte zu nutzen? [by Galochka]
    Antwort: Aktuell noch gar nicht! Ich muss 3 Komponenten Programmieren bevor ich dieses Tool anderen zum testen zur Verfügung stellen kann.
    1- Einen Map-Server der roh-karten entgegen nimmt und diese zur web-Ansicht speichert.
    2- Eine Fake-ServerPlugin Komponente die Roh-Karten von Clients entgegen nimmt und an den Map-Server schickt
    3- Ein Client-Tool das geänderte Roh-Dateien im Map Ordner an die Fake-Plugin Komponente sendet.
    Sobald die API Unterstützung gegeben ist können 2 und 3 durch ein MapPlugin ersetzt werden.



    ______________________________________________________________________________________________________________________


    EN:


    Question: Isn't it unfair for PvP?
    Answer: A Server-admin can deny access for casual players to avoid pvp map abuse and only grant access to other admins.


    Question: When to start using this tool as Server-Owner? [by Galochka]
    Answer: Currently not! I have to program 3 components before anyone else can use this tool to setup his own Server-Map.
    1. A Map Server component that takes raw map files and converts them to serve-able map images.
    2. a fake Server-Plugin Komponent that takes raw map files from clients and sends them to the MapServer component
    3. a client tool that watches on raw map file changes in the map directory of a client and sends them to the fake ServerPlugin component on change
    When the API supports map transfer from clients to server, components 2 and 3 will be replaced with a ServerMap-Plugin that requests raw map files from clients and sends them to the MapServer

    Gamer aus Leidenschaft
    (Web) Entwickler aus Leidenschaft
    <3 Vater aus Leidenschaft <3
    (prio in aufsteigender Sortierung ;) )


    ~~~~~~~~~~~~~~~~~
    1. Entweder man macht etwas richtig oder lässt es bleiben!
    2. Egal wie lange etwas dauert, Hauptsache es wird fertig (irgendwann)
    ------------------------
    Discord: Devidian#1334

    Edited 2 times, last by Devidian ().

  • Эй. Знакомимся с картой 7 дней. Для Rising World онлайн карта очень важна. Очень хорошая идея Как владелец сервера, как? когда? Могу ли я начать использовать его?




    Здравствуйте. Знакомимся с картой 7 дней. Для Rising World онлайн карта очень важна. Очень хорошая идея Как владелец сервера, как? Когда я могу начать?

  • DE:


    Frage: Wie kann ich als Server Besitzer anfangen die Online Karte zu nutzen? [by Galochka]
    Antwort: Aktuell noch gar nicht! Ich muss 3 Komponenten Programmieren bevor ich dieses Tool anderen zum testen zur Verfügung stellen kann.
    1- Einen Map-Server der roh-karten entgegen nimmt und diese zur web-Ansicht speichert.
    2- Eine Fake-ServerPlugin Komponente die Roh-Karten von Clients entgegen nimmt und an den Map-Server schickt
    3- Ein Client-Tool das geänderte Roh-Dateien im Map Ordner an die Fake-Plugin Komponente sendet.
    Sobald die API Unterstützung gegeben ist können 2 und 3 durch ein MapPlugin ersetzt werden.


    EN:


    Question: When to start using this tool as Server-Owner? [by Galochka]
    Answer: Currently not! I have to program 3 components before anyone else can use this tool to setup his own Server-Map.
    1. A Map Server component that takes raw map files and converts them to serve-able map images.
    2. a fake Server-Plugin Komponent that takes raw map files from clients and sends them to the MapServer component
    3. a client tool that watches on raw map file changes in the map directory of a client and sends them to the fake ServerPlugin component on change
    When the API supports map transfer from clients to server, components 2 and 3 will be replaced with a ServerMap-Plugin that requests raw map files from clients and sends them to the MapServer

    Gamer aus Leidenschaft
    (Web) Entwickler aus Leidenschaft
    <3 Vater aus Leidenschaft <3
    (prio in aufsteigender Sortierung ;) )


    ~~~~~~~~~~~~~~~~~
    1. Entweder man macht etwas richtig oder lässt es bleiben!
    2. Egal wie lange etwas dauert, Hauptsache es wird fertig (irgendwann)
    ------------------------
    Discord: Devidian#1334

  • DE:


    Danke @yahwho


    Ich hatte wenig Zeit die Tage, habe es trotzdem schon mal geschafft die Basis für 3 von 4 Komponenten zu erstellen.


    Die "RisingMapFakeAPIClient" Komponente kann sich zur "RisingMapFakeAPIServer" Komponente verbinden, welche wiederum mit dem "RisingMapBackend" verbunden ist. Alles über WebSockets und alles in Node.js geschrieben. Ich muss mal gucken wie ich zumindest die Client Komponente so gestalte das jeder normale Spieler sie einfach benutzen kann.
    Meine Testfunktion sendet schon mal eine datei mit rohdaten vom client zum server wo diese dann geprüft / validiert werden bevor sie dann von dort zum backend gesendet werden. Im backend muss ich nun als nächstes den code aus meinem Prototyp implementieren um die Rohdaten in png's umzuwandeln.
    Die letzte fehlende Komponente ist das Frontend, quasi "RisingMapFrontend", hier werde ich vorerst meinen Prototypen nehmen bis alle anderen Komponenten soweit ihren Job machen. Ich werde dann eine Angular Anwendung draus machen die das Leaflet Framework nutzt (verwende ich im prototyp quasi nur). Diese Komponente wird dann später mit weiteren coolen Funktionen ausgestattet wie WebSocket Verbindung für Live-Updates der Kartendaten oder zum verfolgen der Spieler die gerade online sind.

    EN:


    Thanks @yahwho ;)


    I had very less time in the past days but i've created the basics for 3 of 4 components.


    The "RisingMapFakeAPIClient" Component can connect to the "RisingMapFakeAPIServer" which is connected to the "RisingMapBackend". All connections go through websockets, all components are written in node.js. I have to look how i can get at least the client to be easy used by "normal" players, like an executable.
    My test case takes one map file and sends them from the client to the server where it is "checked" / validated and then send to the backend component. On the backend i now have to implement my prototype code next to convert the raw map data into png's.
    The last missing component 4 of 4 is the frontend component "RisingMapFrontend" i will use my prototype until all other components do their job but then i'll create an angular Project with that leaflet map framework. This component will later get some other cool functionality like websockets connection for live map updates (reload map images or track online player location)

  • DE:


    Gestern habe ich es geschafft das "RisingMapBackend" mit meinem code aus dem Prototypen zum laufen zu bringen. Ich habe den output gestern nicht mehr geprüft aber es hat ca. 500MB Kartenmaterial erzeugt aus meinen lokalen Dateien (Alle Zoomstufen von 0 bis 4, wobei 4 Ausgangsstufe ist). Das aktuelle Prozessmanagement gefällt mir noch nicht und ich werde dies als nächstes überarbeiten. Aktuell gibt es einen Master Prozess der für jedes Kartenteil einen eigenen Kindprozess für die Verarbeitung startet, bis zu 10 gleichzeitig. Da aber die einzelnen Prozesse so schnell sind, erzeugt diese einen ziemlichen overhead und ich werde den Master so ändern, das er eine feste Anzahl an MapRenderern startet was man in der Konfigurationsdatei einstellen kann. Der Master wird dann die ankommenden Kartendaten einfach in rotation an die Renderer senden. (Der Master speichert die roh-map files lokal, sendet dem Renderer die Koordinaten und den Dateinamen (hash des inhalts) und der Renderer löscht die Datei nach dem bearbeiten wieder)


    Der FakeAPIClient macht jetzt beim ersten start eine vollständige Synchronisation und überwacht dann den map Ordner auf Änderungen. Das Funktioniert soweit einwandfrei.


    Der FakeAPIServer muss sich jetzt nur noch die aktuellen Kartendaten merken, damit er auch nach einem neustart den aktuellen Stand aller MapTiles kennt und nicht bei einer vollständigen synchronisation zum Beispiel schon vorhandene neuere Kartenteile überschreibt.


    EN:


    Yesterday i had some time and managed to get the "RisingMapBackend" running with my prototype code. I did not check the results yet but it generated ~ 500MB map data out of my local map files (all zoom levels from 0 to 4 where 4 is origin map tile). I don't like my current process management of the backend and will change it next. Currently there is a master process that spawns a child which computes a single tile and then exits for each tile. Up to 10 processes spawn at the same time but the single process of one tile is so fast that creating a new child on every tile is a huge overhead. I will change the master to spawn a fixed number of childs that can be set in the config file. Then the master will rotate the incoming map tiles to the childs via IPC. (the master saves the file locally, the child takes coordinates and map file name and deletes the file after computing).


    The FakeAPIClient now makes a fullsync at first startup and then watches the map directory, this is working fine.


    The FakeAPIServer now has to remember all current map data, so that he in case of a restart can reload them. The map-tile-data is needed in case some client sends a fullsync with older map tiles then someone else already uploaded.

    Gamer aus Leidenschaft
    (Web) Entwickler aus Leidenschaft
    <3 Vater aus Leidenschaft <3
    (prio in aufsteigender Sortierung ;) )


    ~~~~~~~~~~~~~~~~~
    1. Entweder man macht etwas richtig oder lässt es bleiben!
    2. Egal wie lange etwas dauert, Hauptsache es wird fertig (irgendwann)
    ------------------------
    Discord: Devidian#1334

  • Fine! I had time to study java (plugin development). Let me ask you for help in case of errors or clarifications? I will be very grateful for your help.


    Großartig! Ich hatte Zeit, Java (Plugin-Entwicklung) zu studieren. Darf ich Sie um Hilfe bitten, falls Sie Fehler oder Klarstellungen haben? Ich werde für Ihre Hilfe sehr dankbar sein.

  • Fine! I had time to study java (plugin development). Let me ask you for help in case of errors or clarifications? I will be very grateful for your help.


    Großartig! Ich hatte Zeit, Java (Plugin-Entwicklung) zu studieren. Darf ich Sie um Hilfe bitten, falls Sie Fehler oder Klarstellungen haben? Ich werde für Ihre Hilfe sehr dankbar sein.

    EN:


    Of course you can, but for a better/faster help just ask in a new thread in this forum and everybody may help you (including me)


    DE:


    Natürlich kannst du, aber damit du schnellere / bessere Hilfe bekommst stelle deine Fragen einfach hier ins Forum, dann hilft dir sicher jeder (auch ich)

    Gamer aus Leidenschaft
    (Web) Entwickler aus Leidenschaft
    <3 Vater aus Leidenschaft <3
    (prio in aufsteigender Sortierung ;) )


    ~~~~~~~~~~~~~~~~~
    1. Entweder man macht etwas richtig oder lässt es bleiben!
    2. Egal wie lange etwas dauert, Hauptsache es wird fertig (irgendwann)
    ------------------------
    Discord: Devidian#1334

  • DE:


    Gestern Abend konnte ich noch etwas am Projekt arbeiten. Ich hab es jetzt soweit das ich in die nächste Phase gehen kann, heißt alle Komponenten sauber in git repos stecken und auf meinen Servern zum testen ausrollen.


    EN:


    Yesterday i could invest some time into this project to get it ready for the next stage, which means cleanup code and create initial git repos and then test it on my own servers.

  • DE:


    Ich habe noch ein paar Bugs behoben, der Backend Server zum Beispiel hat teilweise Kartendaten selbst überschrieben wenn die parallelen Prozesse die selbe Bilddatei bearbeitet haben. Das führte zu teilweise leeren Kartenfragmenten.
    Der Client konnte mit dem paket nexe in eine Ausführbare Datei umgewandelt werden. Die ist zwar riesig im Vergleich zum code, dort steckt aber NodeJS mit drin für die Ausführung als standalone.
    Theoretisch könnten sich also die ersten Freiwilligen Tester melden. Ihr braucht dazu einen Server auf dem ihr GIT+NodeJS installieren könnt, es muss nicht euer Gameserver sein. Die Repositories findet ihr hier:


    Das Map-Backend:
    https://github.com/Devidian/oz_rw_risingmap_backend
    Der FakeAPI Server:
    https://github.com/Devidian/oz_rw_risingmap_fakeapi_server
    Der FakeAPI Client:
    https://github.com/Devidian/oz_rw_risingmap_fakeapi_client


    Für das Frontend hab ich noch kein repo, daher als Anhang.
    Wer nur den Client mit testen möchte kann dies mit meinem Vorkompilierten WindowsClient machen. Ich kann gerne noch die Linux Version hinzufügen wenn gewünscht.
    In der enthaltenen config/config.json müßt ihr nur den Pfad zu eurem RisingWorld Verzeichnis anpassen.


    https://github.com/Devidian/oz…lient_win_0.1.0-alpha.zip


    Spielen müßt ihr dafür auf meinem Server "[DE] Omega-Zirkel ..." und das Gebiet das ihr erkundet dann unter https://rwmap.omega-zirkel.de/ (am besten ihr lauft in unbekanntes Terrain zum testen)
    Bitte erst dem Server einmal beitreten und dann erst das Tool verwenden. Ich werde im Spawnraum in den Kisten Karten hinterlegen damit auch jeder eine Karte hat um dies zu testen. (bitte jeder nur eine nehmen)


    Detaillierte Anleitungen etc. kommt alles später!


    EN:


    I have fixed some bugs, for example the backend server threads had overridden each other when saving the same map tile, resulting in loss of some map-data in certain zoom levels.
    With nexe package i managed to build an executable client. The file is big in compare to the source but it contains a whole nodeJS environment for standalone execution.
    So in theory, the first volunteers could try to test this stuff. As Serveradmin you need to know how to install GIT+Nodejs with typescript and how to compile the source, if you need help feel free to ask. The server doesn't need to be the gameserver itself!
    The repositories you need can be found on github:


    Map-Backend:
    https://github.com/Devidian/oz_rw_risingmap_backend
    FakeAPI-Server:
    https://github.com/Devidian/oz_rw_risingmap_fakeapi_server
    FakeAPI-Client:
    https://github.com/Devidian/oz_rw_risingmap_fakeapi_client


    I dont have a repo for the frontend yet, just my prototype so its in the attachments.


    If you just want to help testing the client you can do this with my compiled windows client, if you are a linux user i can add a linux client too if you ask. You just have to edit config/config.json and change the location of your RisingWorld directory.


    https://github.com/Devidian/oz…lient_win_0.1.0-alpha.zip


    To test this you must play on my server until any other serveradmin setup his own map server, its called "[DE] Omega-Zirkel ..." and the map https://rwmap.omega-zirkel.de/ (for testing best results would be exploring unexplored areas)
    I will add some ingame maps into one of the containers in the spawnroom of my server, please only take one.


    Detailled instructions will follow if every part is more stable.

    Files

    • RWMap.zip

      (618.97 kB, downloaded 390 times, last: )

    Gamer aus Leidenschaft
    (Web) Entwickler aus Leidenschaft
    <3 Vater aus Leidenschaft <3
    (prio in aufsteigender Sortierung ;) )


    ~~~~~~~~~~~~~~~~~
    1. Entweder man macht etwas richtig oder lässt es bleiben!
    2. Egal wie lange etwas dauert, Hauptsache es wird fertig (irgendwann)
    ------------------------
    Discord: Devidian#1334

    Edited once, last by Devidian ().

  • DE:


    Habe ein wenig getestet mit der windows exe. Funktioniert soweit gut, der Map Server hat noch nen kleinen Bug gehabt der dazu führte das ein Prozess sich aufgehängt hat und seine Queue nicht abgearbeitet wurde. Das sieht dann so aus


    teste gerade mit einem Fullsync ob der Bug behoben ist.


    EN:

    just tested a bit with the windows client. So far it works, only the map server had a bug that caused processes to hung up and stop working on map tiles they became from the master process. (see picture above)
    Currently i'm doing a full sync of my map files to test if the bug still occurs or if it is fixed now.

    Gamer aus Leidenschaft
    (Web) Entwickler aus Leidenschaft
    <3 Vater aus Leidenschaft <3
    (prio in aufsteigender Sortierung ;) )


    ~~~~~~~~~~~~~~~~~
    1. Entweder man macht etwas richtig oder lässt es bleiben!
    2. Egal wie lange etwas dauert, Hauptsache es wird fertig (irgendwann)
    ------------------------
    Discord: Devidian#1334

  • DE:


    So die erste Version des Frontends habe ich auch fertig, wie gesagt als Angular+ leaflet. Das Repo mit dem Quellcode findet ihr hier:
    https://github.com/Devidian/oz_rw_risingmap_frontend


    Unter releases gibt es dort eine version die ihr nicht kompilieren müsst, einfach einen unterordner map/z/x/y.png hinzufügen mit den map-tiles, (oder wie ich es gemacht habe mit nginx als alias)
    Wie gesagt richtet sich das aktuell an erfahrene Spieler die sich mit dem Aufsetzen eines Webservers und dergleichen auskennen. Versionen für weniger erfahrene Server-Besitzer kommen später. Wer mag kann aber gern eine Anleitung schreiben. ;)
    Wer Hilfe braucht einfach hier fragen!


    Die aktuelle Live Version meines Servers findet ihr wie immer hier: https://rwmap.omega-zirkel.de/



    EN:


    So, the first version of the frontend is ready now. As i said i used Angular+leaflet. The repo with sources can be found here:
    https://github.com/Devidian/oz_rw_risingmap_frontend


    There is also a release version that can be rolled out on your webserver, just create a subfolder map/z/x/y.png with the map tiles created from the backend.
    As said, currently this aims at players with knowledge of webservers and stuff like that. There will be more user-friendly installs/manuals later. If some experienced server owner wants to create a manual, feel free to do so.
    If anyone needs help just ask here.


    As always you can find the current version running on my server here: https://rwmap.omega-zirkel.de/

    Gamer aus Leidenschaft
    (Web) Entwickler aus Leidenschaft
    <3 Vater aus Leidenschaft <3
    (prio in aufsteigender Sortierung ;) )


    ~~~~~~~~~~~~~~~~~
    1. Entweder man macht etwas richtig oder lässt es bleiben!
    2. Egal wie lange etwas dauert, Hauptsache es wird fertig (irgendwann)
    ------------------------
    Discord: Devidian#1334

    Edited once, last by Devidian ().

  • Да да Работы много, хочу все попробовать позже. Если что-то мне не понятно, я обязательно попрошу помощи.


    Да, Работы было много, все позже попробую. Если что-то мне не понятно, я обязательно попрошу помощи. Если вам все в порядке.
    Я хочу создать руководство.

  • DE:


    Ich konnte die Tage kaum Zeit aufbringen, habe heute aber ein kleines Update für die map. Man sieht jetzt unten links die Ingame-Koordinaten.


    EN:


    I had less time the last days but today i made a small update that displays the ingame coordinates in the bottom left corner of the map.

    Gamer aus Leidenschaft
    (Web) Entwickler aus Leidenschaft
    <3 Vater aus Leidenschaft <3
    (prio in aufsteigender Sortierung ;) )


    ~~~~~~~~~~~~~~~~~
    1. Entweder man macht etwas richtig oder lässt es bleiben!
    2. Egal wie lange etwas dauert, Hauptsache es wird fertig (irgendwann)
    ------------------------
    Discord: Devidian#1334

  • echt beeindruckend wie das bisher seinen Lauf nimmt. Ich freue mich schon, wenn man es ohne groß andere Prog oder so nutzen kann.


    Dazu bin ich auch über den weiteren Verlauf gespannt 8)

Participate now!

Don’t have an account yet? Create a new account now and be part of our community!