Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

21

14.07.2014, 10:10

Wieso zum Teufel willst du den Server für ein Spiel, dass du in C# entwickelst unbedingt in Java geschrieben werden?
Mit C#+Mono kannst du auch Dedicated Server für Linux schreiben.
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

22

14.07.2014, 10:27

Der Server braucht offensichtlich die Geometrie-Daten der Welt auf der der Spieler herum läuft.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

23

14.07.2014, 10:39

C# + Mono habe ich nur schlechte erfahrung mit. Performance und Serverauslastung. Klar könnte ich das auch machen aber ich finde es ist eigentlich egal wie ich das nun bastel.

Außer natürlich es gibt eine möglichkeit über C# direkt alles einfacher zu machen. Dann bin ich sofort dabei.

Das einzige was mir spontan einfällt ist, dass ich die Klassen verwenden könnte (?) und somit schon einen einfacheren Start habe. Aber ansonsten fällt mir nicht ein warum ich C# benutzen sollte.

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

24

14.07.2014, 10:52

Andere Möglichkeit: versuch doch neben dem eigentlich Spiel auch den Server in Unity zu entwickeln. Der Vorteil daraus wäre, dass bereits alles notwendige (Level-Informationen, Physik-Berechnung, Skripte, ...) vorhanden wäre und im Grunde nur noch der Serverteil geschrieben werden müsste. (Ich hatte sowas bisher noch nicht probiert, umzusetzen, ich wüsste aber auf Anhieb nicht, warum es nicht funktionieren sollte.)
Bedenken muss man dabei, dass man dann beim Bauen des Spiel darauf achten muss, die richtige Konfiguration zu wählen, nicht dass der Client Szenen des Servers startet.

Ich würde es zwar grundsätzlich besser finden, wenn der Server Client nur das handhaben, was für sie selbst relevant ist (und nicht Code mitschleppen, der ohnehin nicht zur Ausführung kommen soll), allerdings hat man so einen weit geringeren Aufwand.
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

25

14.07.2014, 10:57

Die rede ist von einem DEDICATED Server. KEINEM im Spiel eingebauten. Ich benutze im moment Photon und der Server ist derzeit IM Spiel.
Da das aber viiiel zu teuer ist, möchte ich davon weg.

Ebenso möchte ich den Spielern anbieten auf Linux Servern das Spiel zu hosten. Und mit einem Grafischen fenster geht das kaum bzw. viel zu umständlich.

Deswegen standalone, raus aus dem Spiel.

Zudem soll nur der Server alles handhaben und kein Player, was aber im Spiel dann Theoretisch einer wäre wenn man es in Unity macht.

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

26

14.07.2014, 11:16

Die rede ist von einem DEDICATED Server. KEINEM im Spiel eingebauten. Ich benutze im moment Photon und der Server ist derzeit IM Spiel.
Da das aber viiiel zu teuer ist, möchte ich davon weg.

Ebenso möchte ich den Spielern anbieten auf Linux Servern das Spiel zu hosten. Und mit einem Grafischen fenster geht das kaum bzw. viel zu umständlich.

Deswegen standalone, raus aus dem Spiel.

Zudem soll nur der Server alles handhaben und kein Player, was aber im Spiel dann Theoretisch einer wäre wenn man es in Unity macht.

Anscheinend hast du nicht verstanden, was ich meine. Es wird zwar Unity verwendet, allerdings würde speziell für den Server ein Teil entwickelt werden, der dann auch separat exportiert und ausgeführt werden würde. Die "Kosten" des Servers kann man durchasu gering halten, indem er nichts darstellt (keine Kamera bzw. wenn, dann eine, die nur ein UI darstellt, nicht aber den eigentlichen Spielinhalt).
Bei anderen dedizierten Servern läuft es auch so, dass die gesamte Konfiguration vorher festgelegt wird und nach dem Start des Servers meist nur über Netzwerkkommunikation auch den Server zugegriffen wird. Bei dieser Variante wäre das nicht anders.

Ich habe diese Möglichkeit genannt, da man so ohne ein (kostenpflichtiges) Plugin für Netzwerkfähigkeit sorgen kann, aber dennoch die ganzen Features von Unity (bspw. Physik) nicht neu implementieren muss.
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

27

14.07.2014, 11:24

Das problem bei der Sache ist immernoch das es dann ein Spiel ist. Egal wie man es dreht und wendet. Bei anderen Dedizierten Server hat man kein Spielclient mit einer kamera und/oder GUI. Sondern eine Konsole. Und genau das möchte ich machen.

Alles andere ist viel zu umständlich oder kostenintensiv. Man könnte auch das Standard Unity Networkkram nehmen und sagen die leute sollen ihren Port freigeben. Aber das sind alles sachen die ich nicht möchte.

Nachher gibt es dann nur Server die Zuhause stehen und mit 1000ms Ping durch die gegend eiern.

Klar wäre es einfacher. Aber man muss sich auch mal die Hände schmutzig machen.
Ich habe bisher sehr gute ansätze bekommen und weiß wie ich es umsetzten könnte. Das einzige wirkliche Problem an dem ich grade hänge ist nur die Welt.

Kollisionen und alles müssen ja irgendwie berechnet werden.

LG

NachoMan

Community-Fossil

Beiträge: 3 885

Wohnort: Berlin

Beruf: (Nachhilfe)Lehrer (Mathematik, C++, Java, C#)

  • Private Nachricht senden

28

14.07.2014, 11:34

Mein Problem ist, dass ich mit Unity keine reinen Konsolenprogramme erstellen kann.
Der Server muss also über eine Grafikkarte verfügen...
"Der erste Trunk aus dem Becher der Erkenntnis macht einem zum Atheist, doch auf dem Grund des Bechers wartet Gott." - Werner Heisenberg
Biete Privatunterricht in Berlin und Online.
Kommt jemand mit Nach oMan?

29

14.07.2014, 11:38

@NachoMan: Gibst du meine Beiträge für andere verständlich wieder?

Irgendwie ist dein Beitrag genau das was ich sagen wollte.

Sacaldur

Community-Fossil

Beiträge: 2 301

Wohnort: Berlin

Beruf: FIAE

  • Private Nachricht senden

30

14.07.2014, 11:44

Was ist für dich ein Spiel? Für mich ist das abhängig davon, in wie weit der Benutzer (bzw. Spieler) damit interagieren kann und nicht, welche Art von Berechnung durchgeführt wird.
Auch habe ich doch bereits geschrieben, dass eine Kamera gar nicht erforderlich ist. Wenn maneine grafische Oberfläche bieten will, könnte man es über eine Kamera lösen, die nur das UI und nicht den Spielinhalt darstellt. Und eigentlich sollte bereits verständlich geworden sein, dass der Server dann auch nichts anderes als ein Server ist und nicht selbst als Client auftritt.
Abgesehen von der Darstellen müssen alle Berechnungen Serverseitig durchgeführt werden. Da man diese deaktivieren kann, hat man in der Hinsicht also im Grunde keinen Overhead.

Konsole:
Warum muss es unbedingt eine Konsole sein, die bei einer SSH(/Telnet)-Verbindung nach dem Start des Servers offen bleibt? Genauso könnte man sich über ein separates Tool mit dem Server verbinden und so die Administration durchführen. (Oder eine solche Konsole ist im Spiel selbst eingebunden.)

1000 ms...
Ich hatte bereits bei mir daheim einen Rechner als Server für das eine oder andere Spiel verwendet und bei einer DSL 25000 Leitung gab es keine Probleme mit zu hohen Pings.

Auch wenn das scheinbar das einzige verbleibende Problem ist, solltest du das nicht unterschätzen. Um die Leveldaten zu bekommen, musst du "nur" die richtigen Dateien (*.unity) einlesen und auswerten. Allerdings ist nicht jedes Gameobject ein Teil der Umgebung. Es muss also darauf geachtet werden, welche Collider vorhanden sind. Es muss darauf geachtet werden, welche Scripte vorhanden sind, damit deren Verhalten auch beim Server nachgebildet werden kann. Bei den Collidern muss darauf geachtet werden, ob diese Trigger, kinematisch sind, welcher Layer diesen zugeordnet ist und ob sie gerade aktiv sind. Das Ändern der Aktivität würde wieder über Skripte stattfinden.
Wenn du unbedingt die Physik nachbilden willst, könntest du dir PhysX nehmen und das gleiche nachbilden, was Unity intern macht. Auch hier muss wieder darauf geachtet werden, dass nur die Collider verwendet werden, die aktiv und keine Trigger sind (bzw. Trigger müssen anders gehandhabt werden). Die Ebenen und die möglichen Kollisionen zwischen diesen muss berücksichtigt werden, Veränderungen durch Skripte müssen beachtet werden usw.
Und da das noch nicht mal die Spiellogik selbst ist, sondern nur die Engine-Funktionalität, müssen natürlich auch alle Skripte erneut implementiert werden und während der gesamten Entwicklung dürfen keine Abweichungen zwischen diesen beiden Implementierungen entstehen.
Spieleentwickler in Berlin? (Thema in diesem Forum)
---
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].

Werbeanzeige