2017-07-05 22 views
-3

alle!Swift Real-Time Multiplayer Online-Spiel

Ich bin dabei, ein Echtzeit-Multiplayer-Spiel zu machen. Stellen Sie sich ein Burgspiel mit zwei Spielern vor, in dem jeder Spieler eine Burg verteidigen muss. Die Idee ist, dass jeder Spieler sein eigenes iPad hat und Abwehrkräfte abstützen, Soldaten entsenden und Projektile mit seinem eigenen Gerät abfeuern kann.

Offensichtlich sollten sich diese Änderungen auf beiden Geräten gleichzeitig widerspiegeln (z. B. wenn Spieler 1 ein Projektil abfeuert, sollte seine Bewegung auf beiden Bildschirmen gleichzeitig animiert werden).

Meine Frage ist, was ist der beste Weg, um das zu erreichen? Angenommen, ich bin in Swift mit SpriteKit in der Lage, Einzelspieler-Apps zu entwickeln, weiß aber nichts über Multiplayer-Online-Programmierung. Vielen Dank für Ihre Zeit!

P.S. Wäre es nützlich, serverseitige Swift zu lernen?

P.P.S. Ich habe dieses Thema in der vergangenen Woche recherchiert und habe nicht gefunden, was ich brauche. Jede Hilfe wäre willkommen! Jeder, der online eine Frage stellt, scheint bereits bestimmte Dinge zu wissen, die ich nicht kenne.

+0

Ich werde keine Antwort auf diese Frage schreiben, da ich noch nicht wirklich Spieleentwicklung gemacht habe, aber einige Bereiche mit Interesse gelesen habe, da zwei Clients so nah wie möglich in Echtzeit zu synchronisieren ist eines dieser harten Probleme . https://developer.valvesoftware.com/wiki/Source_Multiplayer_Networking Valve haben ein kleines bisschen geteilt, wie sie das Problem angehen. Dies könnte etwas sein, das Sie in Netzwerken auf niedrigerer Ebene lesen möchten. –

+0

Danke, @ marcus.ramsden! Ich werde diesen Artikel lesen! – retrovius

Antwort

2

Sie haben eine Menge lernen über Multiplayer zu tun, bevor Sie Ihr eigenes Spiel machen

tauchen in

Die Idee ist, dass Sie einen Server haben, entweder auf einem Computer gehostet, die Sie besitzen oder eine Web-Service wie AWS

In diesem Server haben Sie eine Art von Datenbank und eine Art von Game-Server auf einem Port ausgeführt.

Es gibt zwei Arten von Transportprotokollen, TCP und UDP. Sie können diese nachschlagen, aber für Ihr vorgeschlagenes Spiel scheint TCP, was Sie brauchen

Sie schnelle Anwendung verbindet sich mit dem Server und sendet alle Daten tun, was der Spieler tut. Der Server sendet eine Antwort mit dem aktuellen Stand des Spiels.

Der Server simuliert alle Spiellogik. Stellen Sie sich den Code als den Code vor, den Sie schreiben würden, um das Spiel in einem Einzelspieler-Spiel funktionieren zu lassen, außer auf einem Server, so dass Spieler den Client nicht hacken und betrügen können

Denken Sie an den Client als ein dummes Terminal nur senden Button Klickt auf den Server und erhält Updates über den Spielstatus. Es sollte kein Spiel Logik anders als Rendering und die Vorhersage für die Fluidität

Zum Spielentwicklung Stapelaustausch Griff wahrscheinlich für weitere Informationen, oder einfach nur eine Google-Suche auf Multiplayer-Videospiel-Programmierung

Swift ist nicht die beste Wahl für Ihren Server. Ich persönlich benutze Netty in Java für meinen Server-Spielcode.

+0

Vielen Dank für Ihre ausführliche Antwort! Das sind Dinge, die ich alleine nicht verstehen konnte (ich bin mir sicher, dass ich nicht einmal weiß, welche Fragen ich stellen muss).Ich habe ein paar Follow-up-Fragen: Es gibt etwas relativ Neues namens serverseitige Swift (ich fand ein kostenloses Tutorial dazu). Wäre es das, was ich verwenden würde, um die Spiellogik zu schreiben und sie auf einen Server zu legen, auf den die dummen Clients zugreifen können? Ich nehme auch Rob Percivals Web Development Course auf Udemy. Würde das Vervollständigen mir helfen, mehr von dem zu verstehen, was ich tun muss? Danke noch einmal! – retrovius

+0

@retrovius Hier ist ein guter Link im Multiplayer-Netzwerk: [link] (https://gafferongames.com/networking-for-game-programmers/what-every-programmer-needs-to-know-about-game-networking/) –

+1

@retrovius Web-Entwicklung und Programmierung für Multiplayer sind zwei sehr unterschiedliche Dinge. Web-Entwicklung konzentriert sich mehr auf die Erstellung von Websites und die Integration von Server-Side-Logik und Datenbanken mit Webseiten und HTML und Javascript. Ich denke, es wäre gut, damit anzufangen, da es Ihnen hilft, ein besseres Verständnis von Netzwerken im Allgemeinen zu bekommen, aber es ist nicht das, was Sie für ein Spiel wollen. Web-Entwicklung verwendet High-Level-Frameworks wie asp.net oder Java EE zu programmieren, und hat nicht die Konfiguration, die Sie benötigen. Sie müssen eine niedrigere Ebene Netzwerk-Framework verwenden, so dass Sie die totale Kontrolle über die Entwicklung haben –