Multiplayer später einbauen? Sinnvoll?
Übersicht

![]() |
CykidBetreff: Multiplayer später einbauen? Sinnvoll? |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo Zusammen =)
Ihr kennt das Sicherlich, ihr seit schon sehr weit mit der Entwicklung eines Projekts und dann werdet ihr von außerhalb drauf hingewiesen "Hey, son Coop oder 'n Multiplayer würde noch gut passen!" . Bei mir ist es jedenfalls grade so und wenn ich denke was für ein Aufwand das wäre, gerade der Coop Modus. Wäre vermutlich leichter gewesen das von Anfang an auf dem Schirm gehabt zu haben damit das auch einfacher zu implementieren ist. Wie geht es euch damit? Setzt ihr solche features im nachhinein noch um oder ist euch der Aufwand zu groß? Anders soll der Code ja wiederverwertbar sein, und wenn das "Konstrukt" einen Netcode beinhaltet umso besser. Ich bin auf eure Erfahrungen gespannt, eventuell könnt ihr mich ja doch motivieren mich nochmal dran zu setzen ![]() Ein schönes Wochenende wünsche ich schonmal! |
||
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ein Code der auch für Netzwerk funktionieren soll muss dafür ausgelegt sein. Nachträglich was reinpfriemeln mag ja klappen, ist aber extremst aufwändig. Von daher würde ich deutlichst empfehlen ein Projekt schon zu Beginn auf solche key-Features zu durchdenken und es dann entsprechend von Beginn zu strukturieren.
Nicht jedes Game muss für Netzcode vorbereitet angelegt werden, das wäre falsch, da es einfach Konzepte gibt die dem widersprechen. Aber wenn, dann bitte von Beginn, und kein großangelegter Rewrite. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
Thunder |
![]() Antworten mit Zitat ![]() |
---|---|---|
BladeRunner hat recht. Nachträglich Multiplayer einbauen ist mühselig.
Außer in deinem Game sind Single und Multiplayer was verschiedenes (z.B. Single Player: story, und multiplayer: team deathmatch). Dann kannst du halt Types/Klassen und so wiederverwenden und musst sachen wie Physik nicht doppelt implementieren, aber dann wären halt trotzdem Single- und Multiplayer zwei verschiedene "Unterprogramme". |
||
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit |
![]() |
HolzchopfMeisterpacker |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ich habe bisher alle Spiele von Beginn weg entweder für Single- oder Multiplayer ausgelegt. Nachträglich das eine oder andere einzubauen, stelle ich mir als sehr grosse Herausforderung vor.
Meine Versuche, Spiele zu schreiben, die beidem fähig sind, bauten darauf, dass alle Objekte - also Spieler oder Figuren - einen Controller besitzen, der diese steuert. Der lokale Controller übernimmt dann im Singleplayer-Modus die Steuerung der eigenen Figur auf Grund der Eingaben, im Multiplayer-Modus zusätzlich noch die Bereitstellung der lokalen Ereignisse zur Übermittlung ins Netz. Die anderen Controller steuern dann externe Mitspieler, wo sie auch die Interpolation und ähnliches übernehmen, oder eben künstliche Intelligenzen. Zusätzlich kommt aber noch die Bereitstellung der Kommunikation - die Bewegungsdaten vom lokalen Spieler stehen nicht einfach so allen anderen zur Verfügung, du musst sie in geeigneter Weise an einen Server senden. Umgekehrt stehen die Daten der anderen Spieler nicht einfach so bei dir zur Verfügung. Diese kommen Paketweise an, müssen zugewiesen und ggf. Zeitlich geordnet werden. An die geeigneten und unzähligen ungeeigneten Verfahren sollte man sich in kleineren, nicht relevanten, Projekte herantasten. Und sollte das Spiel dann auch noch ohne dedizierten Host laufen, muss das Spiel in der Lage sein, Nachrichten nicht nur zu senden und zu empfangen, sondern auch noch weiter zu leiten. Also kurz: Du müsstest
Zwei dieser Punkte werden komplett neu gemacht, der dritte muss hineingeflickt werden. Alles muss exakt aufeinander abgestimmt sein, sonst ist der Frust garantiert. Also: Mir persönlich wäre der Aufwand zu gross, nachträglich Netzwerkfunktionalität einbauen zu wollen. MfG Holzchopf |
||
Erledige alles Schritt um Schritt - erledige alles. - Holzchopf
CC BY ♫ BinaryBorn - Yogurt ♫ (31.10.2018) Im Kopf da knackt's und knistert's sturm - 's ist kein Gedanke, nur ein Wurm |
![]() |
Mathias-Kwiatkowski |
![]() Antworten mit Zitat ![]() |
---|---|---|
kleiner tipp am rande,,, ich habe gelernt char bewegungen nicht frame abhängig zu machen, sondern zeitbasierend. falls du das schon wusstest dann sorry. | ||
Skype: Anarchie1984
http://projektworks.de/maxbase/ Icq - Erneuert am 21.08.2017 Yahoo - Erneuert am 21.08.2017 |
![]() |
DAK |
![]() Antworten mit Zitat ![]() |
---|---|---|
Die Antwort auf deine Frage ist: Kommt drauf an.
Ich programmiere gerne sehr wiederverwendbar. Ich achte darauf, das meine Programmteile sowohl vertikal als auch horizontal leicht austauschbar sind. Vertikal heißt, das Programm ist zuerst in Schichten aufgebaut (z.B. Anzeige, Verarbeitung, Speicherung). Diese Schichten lassen sich leicht austauschen. Damit kann ich z.B. die gleichen unteren Schichten verwenden und muss nur die Anzeigeschicht austauschen, wenn ich auf eine andere Geräteart portieren will. Auch kann man so leicht eine Verarbeitungsschicht austauschen und so Netzwerkfähigkeit rein bringen. Horizontal heißt, das die Schichten aus einzelnen Teilen (z.B. Types/Klassen) bestehen, die sich leicht und unabhängig von einander austauschen lassen. Auch das hilft sehr bei sowas. Ist der Code so oder ähnlich flexibel aufgebaut, dann kann man schnell mal was tauschen oder erweitern. Besteht das Programm nicht aus einzelnen, vergleichsweise unabhängigen, Teilen, sondern ist ein großes Knäul an Code, wo alles an allem dran hängt, dann brauchst du es gar nicht versuchen, da ist es teilweise einfacher, neu anzufangen. Was du ja im Endeffekt machen musst, ist die Verarbeitungsschicht an einen Server auslagern. Ist das nur schwer möglich, dann wird's nix. |
||
Gewinner der 6. und der 68. BlitzCodeCompo |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group