Jump to content
Unity Insider Forum

Multiplayer in bestehendes Spiel integrieren?


Tiwaz

Recommended Posts

Moin moin,

 

ein Kommilitone will mit einem seiner Arbeitskollegen und mir ein MMO entwickeln.

Die andern beiden haben noch nie mit Unity gearbeitet und ich kenn mich bis dato auch noch nich allzu gut damit aus, weil ich mich bislang noch sehr dem Modellieren und Riggen bzw. seit kurzem auch dem Texturieren zugewandt habe.

 

Ein MMO finde ich aber, gerade für den Anfang, viel zu umfangreich und würde daher gerne erstmal ein kleines RPG bauen und zu nem günstigen Zeitpunkt mit einem Coop oder Onlinemodus erweitern. Idealerweise an meinem Projekt weiter arbeiten und wenn es läuft, zu einem Multiplayergame umfunktioniern.

An Programmier- und Netzwerkkenntnissen würde es uns bei der Umsetzung von nem Onlinemodus nicht mangeln ^^

 

Nun stellt sich mir aber die Frage:

Muss ein Onlinemodus konsequent von Anfang an mit implementiert werden oder kann man in Unity auch ohne zusätzlichen Aufwand das Spiel dann um einen solchen Erweitern?

 

Vielen Dank im Voraus

lg Tiwaz

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ist es nur nicht für MMOs gedacht oder nicht für MMOs geeignet? ^^

Scheiterts da an der Masse der Spieler?

 

Ich denke da so an Guild Wars1 oder Two Worlds 2 wo sich alle Spieler in einer Stadt treffen und für eine Mission oder so, ne eigene Kopie der Karte bekommen. Wäre sowas in Unity gut umsetzbar?

 

Um mal konkret einen Zeitpunkt zu setzen um das Spiel mit einem Coop oder Onlinemodus zu erweitern:

Das RPG soll lauffähig sein, sprich man soll mit seiner Figur in einer kleinen Welt (Dorf z.B.) rumlaufen können und mit NPCs/Dingen interagieren können. Danach soll die Möglichkeit zum Coop oder Onlinemodus kommen.

 

Wäre das schon zu spät?

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also Unity's Multiplayer wurde eigentlich für Spiele wie FPS Games etc. entwickelt, wo die Spieler selbst der Host sind. Große Server mit vielen Spielen sind eigentlich nicht so die Stärken. Bis zu einem gewissen Grad geht das auch, nur wenn die Anzahl der Spieler dann schonmal mehr als 100 erreicht, bekommt man schonmal schnell Probleme. Alternativ kannst du ja auch eine eigene Socketverbindung etc. Programmieren, wenn du da schon erfahrungen hast. Ist aber eigentlich unnötig da unity ja schon alles bietet. Nur halt nicht für riesen Server ausgelegt ist

Link zu diesem Kommentar
Auf anderen Seiten teilen

@Tiwaz

 

Nun stellt sich mir aber die Frage:

Muss ein Onlinemodus konsequent von Anfang an mit implementiert werden oder kann man in Unity auch ohne zusätzlichen Aufwand das Spiel dann um einen solchen Erweitern?

 

Bis zu einem gewissen Grad kann man vom Prinzip her ein vorhandenes Spiel um einen Onlinemodus erweitern. Allerdings ist es äusserst hilfreich, dies schon bereits wärend der Entwicklungsphase einzuplanen oder vorzubereiten.

Der MMO-Kern, so nenne ich ihn mal, ist allerdings meist schon ein Projekt für sich, der die grösste Herausforderung darstellt und an dem viele Projekte (z.B. "Will nen MMORPG proggen, wer macht mit?"), scheitern.

Ich werkel schon seit mehr als drei Jahren mehr oder weniger aktiv an einem Onlinerollenspiel und habe gerade mal solide Basics auf die Reihe bekommen und stricke nun mein geplantes Spiel drumherum. Abgesehen von nicht den nicht unerheblichen Herausforderungen wie die Anbindung an eine SQL Datenbank gestalteten sich ganz andere Probleme bei der Serversynchronisation. Meine grössten Herausforderungen waren das korrekte Anzeigen der Animationen und Bewegungen der anderen sichtbaren Onlinespieler oder das Handeln von Spieler A nach Spieler B. Wenn Items hin und wieder bei der übergabe an einen anderen Spieler "dupliziert" werden, ist das ein ernstzunehmendes Problem in einem MMO. Itemduping ist ein beliebter Schummelvorgang in Multiplayerspielen und kann ehrlichen Spielern echt die Laune vermiesen. Das sind Dinge, die einem beim entwickeln echt in den Wahnsinn treiben können, wenn es aus unerklärlichen Gründen und vor allem nur hin und wieder passiert.

 

Von daher ist das erweitern um einen Onlinemodus in einem bestehenden Spiel mal nicht eben ohne grösseren Aufwand möglich. Planung ist das A und O, selbst in einem offline-RPG und viel wichtiger wenn es ein Onlinerollenspiel werden sollte.

 

Viel Erfolg und halte uns auf dem Laufendem ;)

Link zu diesem Kommentar
Auf anderen Seiten teilen

@timtrucker:

Ich glaub, dass die Spielerzahl sich deutlich unterhalb der 100 User aufhalten wird ^^ Denke das wird wenn dann ein Coop-Game dessen Spielerschaft sich auf uns und paar Freunde beschränkt :D

 

 

Dann sind auch so Bugs wie duplizierte Items zwar nervig und man will sie eigentlich fixen aber haben dann eher untergeordnete Priorität ^^

 

 

Und das mit so Herausforderungen wie SQL Datenbanken wird wohl nich so ein riesen Problem darstellen, da die anderen beiden neben unserem Informatikstudium noch in der Datenbank/Netzwerk Sparte arbeiten und da schon richtig Ahnung davon haben ^^

Der Initiator des Projekts hat da auch bereits vor dem Studium eine Ausbildung gemacht.

 

Und ich halt euch gerne auf dem Laufenden aber bisher ist das alles noch gaaanz wage in der Planung und noch nich wirklich überhaupt geplant, da wir wieder total Stress haben mit dem Studium und wohl nich allzu viel Zeit haben ^^

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • 2 weeks later...

Hallo habe eine Frage, wenn Mann Photon oder was eingenes, Schreiben möchte dann könnte Mann doch ein Spiel wo mehr als 20.000 Leute drauf, wenn Mann genug Server und so hat ???? Oder ist die Unity nicht dafür da?? ( die Programmierung werden Duch Richte C++ Coder geschrieben. )

Link zu diesem Kommentar
Auf anderen Seiten teilen

3000 Spieler ist eine beachtliche Summe die man erstmal aufbringen muss.

Außerdem bezweifle ich das sowas 1 Server packt man müsste die Spieler dann hin und her switchen können.

Mit der richtigen Lizenz von Photon kannst du unendlich viele Clients verbinden.

Problem ist halt ob der physische Server es dann packt.

 

EDIT:

Arbeite mit 2 anderen Leute an einem 2D MMO.

Und der Server ist nicht das größte Problem dabei sondern auch ein gutes Datenbankkonzept sowie die Client - Server Verbindung

Wir sind alle Fachinformatiker Anwendungsentwicklung haben da aber dann auch paar Probleme.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo Die Server das ist das Kleine Problemm Wir wollen ein cloud server Verbund uns Hollen

und mit Photon also Firma exitgames.com habe ich bald ein Termin 1 Woche.

 

 

Die Datenbank ist klar ist immer das schwehrste da ja ja sehr Schnell mehr als 200.000 zugrief kommen können. die Client anbinung habe ich mich selber mit Unity noch nicht so Beschäftig sondern mit andere Engine und habe auch gute Vorlagen von MMO. Server Code Teile.

 

Bloss Für mich ist zurzeit die Frage was zu Unity am besten ist.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich werkel, wie oben schon geschrieben, auch an einem kleinem Onlinespiel und sehe das Thema der Server als so ziemlich große Herausforderung.

 

Auf dem Papier ist das alles immer sehr schnell geplant, aber um ein qualitativ hochwertiges Onlinespiel zu entwickeln, muss man den stärksten Gegner gegenüberstehen: Dem Cheater.

 

Spielrelevante Dinge, z.B. Crafting, dürfen einfach nicht Clientseitig erstellt werden. Ebenso daß produzieren von Items oder gar das Berechnen von Erfahrungspunkten. Ich würde so ein Spiel nicht spielen wollen, wenn ich wüsste das andere Spieler ohne weiteres diese Lücke ausnutzen würden.

 

Und selbst professionelle Onlinespiele sind vor Cheater und Exploiter nicht sicher.

 

 

 

Also:

 

Unity ist schon sehr Multiplayertauglich und es gibt brauchbare Tutorials für SmartFox und Photon. Wenn es allerdings ans Eingemachte geht, weit tiefer als ein "simpler" Capture The Flag - Shooter, also mit Spielern, die hart an ihrem Equip arbeiten und sich darauf verlassen daß der Netcode sicher und zuverlässig arbeitet, stösst man an einige Grenzen, die man mit ein wenig Kreativität verschieben kann.

 

 

Schlechtes Beispiel:

 

1. Spieler trifft Monster, Client berechnet Schaden

2. Client lässt Monster bei 0 Lebenspunkten sterben und wirft Loot & Gold ab

3. Spieler hebt Loot & Gold auf, Client speichert dies direkt in die SQL Datenbank

 

Hier passiert quasi alles im Client, direkt beim Spieler. Es ist ziemlich simpel, Variabeln für relevante Dinge wie Gold oder XP im Speicher auszulesen oder sie zu modifizieren.

 

Gutes Beispiel:

 

1. Spieler trifft Monster, Client sendet Treffer an Server

2. Server berechnet Schaden und sendet den aktualisierten Lebensstatuts an den Client zurück

3. Falls Server den Tod des Monsters berechnet, wird dies entsprechend gesendet.

4. Erfahrungspunkte werden dem Spieler Serverseitig in der SQL DB guteschrieben.

5. Lootobjekt wird serverseitig erstellt und temporär in der DB gesichert.

6. Spieler nimmt Loot, Server prüft und bestätigt dies und weist das Item dem Spieler in der DB zu

7. Client prüft ob Lootitem echt ist (DB Check) und zeigt dieses im Client an

 

Dies stellt vielleicht nicht den perfekten Workflow dar. Aber es zeigt auf, wie enorm wichtig die serverseitige Gamemechanik ist. Viele Leute wären froh, wenn sie ein halbwegs funktionsfähiges "schlechtes Beispiel" hätten, vom zuverlässigen synchronisieren anderer Spieler (werden mal angezeigt, mal aber auch nicht), mal abgesehen.

 

 

Deshalb gibt es selbst nach 2-3 Jahren bei mir noch nicht wirklich viel visuelles zu sehen, da ich ich mich mehr mit dem Kern auseinander setze und mich über jeden kleinen Erfolg freue. Aber ich bin auf dem guten Weg und bin dicht dran, die wichtigsten Gamemechaniken serverseitig ablaufen zu lassen.

 

Huch, der Beitrag ist länger geworden als er sollte. Ich hoffe ich bin nicht zu weit vom Thema abgerutscht.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Muss ich zustimmen und man findet immer wieder neue Dinge die man verbessern müsse.

 

Noch ein Beispiel wäre:

Spieler kauf Item vom Händler, die Position des Items beim Händler und der Händler(Id oder Name) wird an die Server gesendet ->

Server prüft ob das Item existiert beim JEWEILIGEN Händler und ob der Händler in der Nähe des Spielers ist ->

Kosten des Items werden aus der DB genommen und vom Spieler abgezogen ->

Spieler sendet ein Paket an Server um Gold und Inventar zu aktualisieren.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ich überfliege gerade nur den Thread...

 

Unity nutzt halt eine P2P Verbindung.

Im Internet (und darum geht's ja meistens) Pseudo-P2P. Der NAT-Facilitator, den du da benutzt, ist quasi der zentrale Server.

Außerdem spricht nichts dagegen, Host und Client nicht gleichberechtigt zu machen, den Host auf dem Server mit -nographics selber zu starten und die Clients im Zweifelsfall das Nachsehen haben zu lassen :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ja mit den Probleme Kennen wir schon und haben es für eine andere Engine fast fertig gehabt bloß dann haben wir die neuen Kosten gekommen und die waren mal sozusagen zu hoch und darum suchen wir ja eine neue Engine.

 

Also ein Rohen mmo Server haben wir schon der auch geht.

 

Bloß Welt weit wie photon und alle Betriebssystem haben wir zurzeit noch nicht und eben denn neu Aufbau auf Unity müssen wir alles machen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

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

×
×
  • Neu erstellen...