Jump to content
Unity Insider Forum

Unity Client - Linux Server


Shalafi

Recommended Posts

Hi,

die Frage hat nur peripher mit Unity zutun.

Ich möchte (bzw. bin dabei) ein Online RPG zu erstellen.
Der Client läuft natürlich unter Unity.

Den Server würde ich gerne auf einem Linux-Server laufen lassen, allerdings nicht mit Unity.

Welche Möglichkeiten hab ich als Programmiersprache für den Server?
Macht es Sinn, bzw. ist es ohne Weiteres möglich, den Server in C# zu entwickeln und dann auf dem Linux Server laufen zu lassen? (Mono?).
Alternativ wäre noch Java eine Möglichkeit. Kann man da auf Windows Entwickeln und dann auf den Linux-Server hochladen und starten? Oder muss ich da auch auf einem Linux-Rechner entwickeln?

Oder gibt es noch einfachere Möglichkeiten? Für Tipps bin ich dankbar ;)



Gruß

 

 

 

 

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich kann dir nur berichten, dass es mit Java kein Problem darstellt. Mit C# unter Linux habe ich keine Erfahrung, lese aber gerade Mono und .Net Core wird unter Linux unterstützt. Nach meiner Erfahrung lässt man C# dann aber eher auf Windows-Servern laufen und die meisten Cloud-Anbieter bieten beide Servertypen an.
Da jetzt Java und C# sich doch ziemlich ähnlich sind würde ich in deinem Fall dann eher in Java entwickeln.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

Danke für die Antwort.
Wenns möglich ist, würde ich gerne nen Linux Server verwenden, da er einfach billiger ist.

Kann ich denn mit Java lokal auf Windows entwickeln und dann das Programm auf dem Linux-Server laufen lassen?

Meine Java-Zeit ist leider schon ein paar Jahre her, und da waren es auch nur Android Apps ;)



Gruß

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja, du musst auch nicht den ganzen Server "neu" entwickeln. Man nimmt beispielsweise einen Tomcat-Server (ist derzeit recht verbreitet), dieser läuft sowohl auf Windows als auch auf Linux problemlos. Im nächsten Schritt entwickelt man dafür beispielsweise ein Servlet (in Java) welches die Kommunikation mit den Clients implementiert. Das fertig programmierte Servlet wird dann auf den bereits laufenden Tomcat unter Linux deployed. Während der Entwicklung lässt man den Server dann lokal unter Windows laufen. Ein Servlet ist zumindest für kleinere Games völlig ausreichend, aber selbst größere Games könnte ich mir damit gut vorstellen, wenn man entsprechend die Skalierbarkeit mit einplant. Die Verwendung eines Tomcat hat auch den Vorteil das einige "sicherheitsrelevante" Mechanismen bereits implementiert sind und man sich darum nicht mehr im Detail kümmern muss. Zudem kann man in der Entwicklung ein "Hot-Deploy" einrichten wobei der Server nicht neu gestartet werden muss, wenn man Änderungen am Servlet deployen möchte.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi,

Tomcat ist doch ein Webserver, oder?
Kann man da mit Sockets arbeiten, oder läuft was alles über Web-Requests?

Bei Web-Requests bin ich mir nicht sicher, wie performant das Alles dann wird, da man ja zB bei Json auch jede Menge Overhead hat.
(Ich bin eigentlich Web-Entwickler, aber eher PHP, dH ich könnte doch auch einen Apache nutzen, oder?)


Gruß

 

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja ist ein Webserver (und Apache kann man natürlich auch verwenden) und die Kommunikation läuft über HTTP, aber HTTP zu verwenden sollte für einen Gameserver in Ordnung sein. Klar hat HTTP einiges an Overhead das durch die Leitung geht, daher kann eine Lösung wohl auch ein TCP-Server oder sowas sein, aber damit kenne ich mich nicht aus. Ich denke je höher der Traffic des Spiels später sein wird desto mehr sollte man vielleicht in Richtung TCP gehen um Bandbreite zu sparen. Man kann sogar mit Unity einen "schlanken" Server bauen, hätte den Vorteil das Client und Server zusammenpassen.
Und dann gibt es auch noch Frameworks wie Photon- oder Smartfox-Server ... Einige Smartphonespiele verwenden sowas und sind vollkommen zufrieden damit.

Hier hat auch mal jemand danach gefragt, aber so genau kenne ich mich mit Socket-Programmierung nicht aus:

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Moin,

in der Regel wird bei Game Servern TCP, oder UDP verwendet.

Du kannst einen TCP Server ohne Probleme in C# mit .Net Core auf Windows entwickeln und auf Linux laufen lassen. Der Linux Server muss nur .Net Core installiert haben.
Es gibt eine Reihe von Videos, die zeigen, wie man einen TCP Server für Unity in .Net Core baut: Tom Weiland

Wenn du den Server rein aus Interesse an der Materie selber machen möchtest hast du damit auf jeden Fall schon einmal einen Anhaltspunkt.

Wenn dich Networking nicht so interessiert und du lieber weiter an deinem Spiel arbeiten möchtest, würde ich dir eher raten auf etwas zurückzugreifen, was schon existiert. 
Ich persönlich bin kein großer Fan von Photon, weil du da pro CCU zahlen sollst. Habe aber schon ziemlich viel gute Erfahrung mit Mirror gemacht, das ist kostenlos, Open Source und hat eine gute Dokumentation.

 

Liebe Grüße

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wichtig ist die Frage wo du die Physik, Collider und so was berechnen willst.

Ich selbst schreibe meinen Server in Unity. Dort läuft auch eine Map und die NPC's werden dord berechnet und alles.
Diesen builde ich dann Headless als Linux build.

Es wird also grafisch nichts berechnet aber ich kann die Grundfunktionen, Physik, Collider und alles auf dem Server berechnen.

Wenn du alles auf dem Client berechnen lässt wird es leicht hackbar nach meinen Erfahrungen.

Schau dir doch mal die Videos von Tom Weiland an.
Das ist ein Kollege der mal eine gute Tutorialreihe dazu gemacht hat. (C# Networking Tutorials)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...