Omsi2 - Multiplayer

Das Forum befindet sich im reduzierten Betrieb. Die Addon- und Supportforen bleiben weiterhin verfügbar.
Bitte beachte, dass OMSI nicht mehr weiterentwickelt wird. Ein Teil der Entwickler widmet sich inzwischen der Entwicklung eines neuen Simulators. Weitere Informationen zum LOTUS-Simulator findest Du hier.
Ein communitybetriebenes Nachfolge-Forum wird hier verlinkt, sobald es gegründet und bereit ist.
  • naja, ich kenne mich da nicht zu 100% aus. Evtl könnte man ein Program mitlaufenlassen, welches die Positionsdaten an den Server sendet. Aber ob es eine Möglichkeit giebt, dies ohne Eingriff ins Hauptprogramm zu bewerkstelliegn, kann ich so nicht sagen, evtl giebts da aj eine Schnitstelle oä. Und vlt würde sich Marcel auch bereiterklären, da ein kleines Bisschen mitzuwirken, wenn sich genug Leute dafür aussprechen würden, und sich da wirklich jemand konkret damit mit auseinandersetzt. Villeicht ist es ja möglich, das über das selbe Systhem zu machen, wie das, wenn man den letzten Stand einer Karte läd, denn da stehen ja auch alle Userfahrzeuge an der selben stelle, wie beim letzten Mal.

  • MiPa: Den FSX Multiplayer kenne ich auch, fliege selber.


    Der Unterschied ist eben, dass man ATC haben kann (gut, käme einer Leitstelle in etwa gleich, aber das müsste ja auch erst entwickelt werden) und der Flugsim bietet da schon etwas mehr.
    Mit einem Bus auf der Linie bleibt das Prinzip eigt. immer gleich, im Flugsim gibts VFR, IFR und dabei noch die Unterteilung ob man jetzt Kunststücke fliegt, oder eine kleine Prop durch die Berge steuert.


    Kann man sich jetzt drüber streiten

  • Man könnte es wegen der KI Vielleicht wie beim ETS2 MP machen das es vielleicht erstmal keine KI geben tut.

    Da DU diese Signatur mit deinen Keksen voll gekrümelt hast, wird hier gerade geputzt.
    aus dem Grund siehst du hier keine Signatur.
    Also schäm dich und krümel diese Signatur nie wieder voll.

  • Edit:
    Evtl. eine Idee für die Umsetzung. Es könnte einen Server geben, auf dem Omsi installiert ist. In diesem Omsi könnten verschiedene Addons (Maps, Busse) installiert sein. Diesen Maps könnte man dann "einfach" nur beitreten. Der Host bestimmt das Datum, Wetter, evtl. KI Einstellungen...


    Könnte ne´Option sein, hoffe ich konnte helfen...


    So vielleicht...

    :D

    Bremsen geht immer, Gaß geben erst recht...


    LG
    OmsiGamer

  • Dass ein OMSI-Multiplayer aktuell nicht umsetzbar ist, wurde hier ja bereits hinreichend ausgeführt. Dennoch möchte ich kurz ein Konzept vorstellen, welches funktionieren könnte, wenn OMSI bestimte Voraussetzungen erfüllen würde.


    Voraussetzungen:
    OMSI müsste der Plug-In-Schnittstelle erlauben, Fahrzeuge in der Welt zu platzieren/entfernen und der Schnittstelle Schreib- und Lesezugriff auf Position, Ausrichtung usw. eben dieser Fahrzeuge einräumen. Außerdem muss das Plug-In die Möglichkeit haben, OMSI für einen Moment "schlafen zu legen".


    Die Idee:
    Es gibt nun eine Server-Software, eine Client-Software (Im Prinzip ein OMSI-Plugin) und einen "Admin-OMSI-Client", welcher nach Möglichkeit auf dem selben Rechner wie der Server läuft und der in der Lage wäre, alle Kacheln einer Map darzustellen (Wenn auch nicht graphisch). Jener OMSI-Client ist der einzige, auf dem die Berechnungen für die Logik hinter der OMSI-KI ausgeführt werden. Dieser Client schickt dann seine Informationen (Welche durch die Client-Software ausgelesen werden) für jedes einzelne Fahrzeug an den Server. Bevor der Client nun aber neue Berechnungen durchführt, wartet er erst auf den Server, der ihm lediglich die Veränderungen (durch andere Spieler) zurückgibt. Diese empfängt der Client ebenfalls über die Client-Software. Nun können wieder Berechnungen durchgeführt werden.
    Der normale OMSI-Spieler verbindet sich mit dem Server und teilt diesem regelmäßig mit, auf welcher Kachel er sich befindet und welche Kacheln er geladen hat. Daraufhin empfängt er die Positionen aller (dem Server bekannten) Fahrzeuge auf der selben Kachel und den angrenzenden (geladenen) Kacheln. Der Spieler-Client müsste dem Server im Gegenzug mitteilen, was das Spieler-Fahrzeug treibt, auf welcher Kachel es sich befindet und welche Kacheln bereits (vor)geladen wurden.


    Das ganze nochmal als Schaubild:


    Die auszutauschende Datenmenge zwischen dem Server und den "normalen" Clients wäre also relativ gering und an der Performance dürfte sich für den normalen Spieler nichts ändern (Die Anzahl der geladenen Fahrzeuge wird ja effektiv nicht größer). Die Problematik besteht darin, dass unglaublich große Datenmengen zwischen Server und Master-Client ausgetauscht werden müssten und der Master-Client die Berechnungen für die ganze Map durchführen müsste. Das würde natürlich die Anzahl der möglichen (KI-)Fahrzeuge drastisch beschränken. Vielleicht hat ja jemand Lust, die Idee(n) aufzugreifen und ggbf. weiter zu verfeinern

    ;)

    Aber aktuell scheitert das Konzept ja ohnehin schon daran, dass die dafür nötigen Plug-Ins nicht auf die OMSI-Fahrzeuge zugreifen könnten.

    Erste Hilfe bei sprachlichen Unfällen: seitseid.de - dass-das.de - deppenapostroph.info - deppenleerzeichen.info - einzigste.info

  • Die Idee ist schön, klar. Wie ein Multiplayer (Server/Client-Struktur) funktioniert, wissen die meisten Programmierer ja.


    Dass ein OMSI-Multiplayer aktuell nicht umsetzbar ist, wurde hier ja bereits hinreichend ausgeführt. Dennoch möchte ich kurz ein Konzept vorstellen, welches funktionieren könnte, wenn OMSI bestimte Voraussetzungen erfüllen würde.


    Voraussetzungen:
    OMSI müsste der Plug-In-Schnittstelle erlauben, Fahrzeuge in der Welt zu platzieren/entfernen und der Schnittstelle Schreib- und Lesezugriff auf Position, Ausrichtung usw. eben dieser Fahrzeuge einräumen. Außerdem muss das Plug-In die Möglichkeit haben, OMSI für einen Moment "schlafen zu legen".


    Und das tut es momentan nicht und wird auch, da bin ich mir ziemlich sicher, nicht implementiert.


    Da kannst du dann auch andere Spiele nehmen, die das nicht von Haus aus können. Es ist und bleibt ein schwieriges Hinterfangen.

  • Der Ansatz ist sehr gut, aber - du sagst es bereits - hätte hätte Fahrradkette

    ^^


    Das Plugin müsste sowohl Schreib- als auch Leserechte von Fahrzeugen (und übrigens auch Personen) haben, was aber aus Entwicklersicht nahezu unmöglich ist, mit wenigen Zeilen umzusetzen, weil die Berechnungen ja auf dem Spieler-PC gemacht werden.


    Rein praktisch werden aber neue Probleme dazukommen:
    - Mehrere Busse fahren auf demselben Kurs gleichzeitig
    - Uhrzeiten müssten synchronisiert werden
    - durch unterschiedliche Frames läuft die Simulation nicht auf jedem PC gleich schnell


    Edit:
    Eine weitere Schwierigkeit wird folgendes sein: Es gibt 2 Arten von Fahrzeugen, KI und Spieler. Da es immer nur ein Spielerfahrzeug (dessen Funktionen, etc. berechnet werden) gibt, fällt das schonmal raus. KI-Fahrzeuge folgen aber zwingend einem Pfad, was aber nicht geht, da bei jedem Spieler sein eigener Bus das Spielerfahrzeug ist.

    Wir sehen uns alle in der WebDisk wieder :-)

    https://reboot.omsi-webdisk.de/community/

  • Der Ansatz ist sehr gut, aber - du sagst es bereits - hätte hätte Fahrradkette

    ^^


    KI-Fahrzeuge folgen aber zwingend einem Pfad, was aber nicht geht, da bei jedem Spieler sein eigener Bus das Spielerfahrzeug ist.


    Deshalb ja das schreibbare Koordinatensystem. Der Server übernimmt quasi den Pfad, der aber dann nur vom Spieler die Koords übernimmt.

  • Das Plugin müsste sowohl Schreib- als auch Leserechte von Fahrzeugen (und übrigens auch Personen) haben, was aber aus Entwicklersicht nahezu unmöglich ist, mit wenigen Zeilen umzusetzen, weil die Berechnungen ja auf dem Spieler-PC gemacht werden.

    Das kommt darauf an, wie die Plug-In-Schnittstelle arbeitet. Hier ein wenig Pseudo-Code:

    Code
    1. if(Server.HatNeueWerte)
    2. Fahrzeug.setAttribute(Server.getAttribute());
    3. else
    4. Fahrzeug.setAttribute(Logik.getAttribute());

    An sich wäre das gar nicht mal so viel Aufwand. Aber wie gesagt: das kommt darauf an, wie das Plug-In-System von OMSI intern funktioniert.


    Rein praktisch werden aber neue Probleme dazukommen:
    - Mehrere Busse fahren auf demselben Kurs gleichzeitig

    Das könnte man unterbinden, indem jeder Client dem Server mitteilt, ob er ein bereits vorhandenes Fahrzeug ersetzen, oder aber ein komplett neues Fahrzeug ergänzen möchte.


    - Uhrzeiten müssten synchronisiert werden

    Die einfachste Variante wäre hier wohl, dass die Clients die Uhrzeit des Servers bzw. des Master-Clients übernehmen.


    - durch unterschiedliche Frames läuft die Simulation nicht auf jedem PC gleich schnell

    Das Problem hatte ich gar nicht mehr auf dem Schirm, bzw. ich dachte, es sei durch OMSI 2 behoben worden. Aber an sich ist das ja auch kein allzu großes Problem. Die Uhrzeit würde ja nach Punkt 2 ohnehin regelmäßig synchronisiert werden und die Abweichungen dürften eigentlich nicht so extrem sein, als dass sich ein Fahrzeug merklich langsamer bewegt o.ä. Die Synchronisation findet ja außerdem nicht nach Ingame-Zeit, sondern nach Rechner-Zeit statt.

    Erste Hilfe bei sprachlichen Unfällen: seitseid.de - dass-das.de - deppenapostroph.info - deppenleerzeichen.info - einzigste.info

  • Nächste Hürde: Hat der andere Fahrer Licht an? Woran sehen wir das? Jedes Fahrzeug kann für den Zustand der Tür eine eigene, andere Variable besitzen.
    Man kann doch nicht via Plugin alle möglichen Variablen abonnieren und verarbeiten. Das wäre viel zu viel Aufwand. Auch für OMSI intern, da diese Daten dann nach jedem Frame durch das Plugin geschoben würden.

  • Also um es hier mal auf dem Punkt zu bringen : Einen Multiplayer in Omsi wird es zum Aktuellen Stand von Omsi2 nicht geben und warscheinlich auch nicht in naher Zukunft . Aber wer weiß wenn es Omsi4 oder so gibt.

    :D
  • Guten Tag....


    also wie ich sehe, sind einige für den Multiplayer und einige nicht, was ich aber nicht wissen wollte. Einige sind gegen mich aufgehetzt , einige wollen es versuchen zu klären.
    Nun habe ich meine Vorangehweise überdacht und eine neue Liste angefertigt, nebenbei habe ich nun einige Dinge versucht und ein wenig gegoogelt. Ich musset Feststellen, dass es ein wenig schwerig sein könnte, aber einige meinte mir schreiben zu müssen, dass es nicht auf Heute auf Morgen gehen würde, wer hat dies den behauptet?
    Meine Idee ist, erstmal ein wenig rum zuversuchen und ein wenig mir das anschaue, wie man zum Beispiel sein Programm auf einer Datenbank zu greifen kann, später auf einem Server, der Slots zur Verfügung stellt.
    Die Welt der Programmiersprache C++ ist sehr groß, deshalb würde ich mich freuen, wenn man mir unter die Arme greifen könnte, wegen einer Stabilen Verbindung herzustellen. Mir ist bewusst, dass es ein OmsiForum ist, aber es hat was mit Omsi zu tun. Nebenbei möchte ich nun auch meine Liste hier vorstellen, wo Knackpunkte bestehen und wo nicht. Auserarbeitung der Punkte sollte gewiss eine Zeit dauern, aber durch die Hilfe der Userschaft aus diesem Forum und anderen Foren, sollte es Machtbar sein.... Alles nach der Zeit.



    Knackpunkte:


    • Perfonce im Keller.... = Nun gut, dass wird man sehen, wie es sich auswirkt... Wie gesagt ein exteres Programm soll es werden.... (Noch nicht so viel Gedank gemacht)
    • Ampel & KI .... = Ja, ich würde vorschlagen, dass man erstmal das Programm zum laufen bringt , dann versuchen, dass andere drauf kommen können und dann geht es um die Feinheiten.
    • Zuhohe Belastung des Servers.... = Interne Reglung im Kopf....
    • Ping-Einstürze.... = n.i.A.
    • Zugriff aufs Hauptprogramm .... = n.i.A

    Meine Idee ist es, erstmal weiterhin dran zu bleiben, aber auf Anschubsweise mir gedanken machen kann, wie ich es aufbauen tue. Bis Weihnachten 2014 werde ich es nicht schaffen, aber auch nicht am Anfang 2015... Gute Dinge wollen weile haben...

    :whistling:

    Aber danke, dass ihr zahlreich eure Antworten gesetzt haben.


    Grüße
    1697_Berlin_

  • Deine Mühe in Ehren, aber was nicht machbar ist, ist nicht machbar. OMSI bietet einfach aktuell nicht die Möglichkeiten, ein solches Konzept umzusetzen.


    Wenn ich deinen Post übrigens richtig verstanden habe, hast du noch nie programmiert. Warum du dann direkt mit C++ und einem solch umfangreichen Projekt anfangen möchtest, ist mir schleierhaft.

    Erste Hilfe bei sprachlichen Unfällen: seitseid.de - dass-das.de - deppenapostroph.info - deppenleerzeichen.info - einzigste.info