Bei der Programmierung meines Spieles, steht ich vor folgender Frage.
Wie Strukturier ich es am besten?
Es geht darum, dass es ja einen Server gibt und mehrere Clients.
Der Server spielt auch mit ... sollte ich dann alle aktionen 2 mal programmieren, einmal für server einmal für clients?
Oder sollte ich lieber dem Server noch einen Client zusätzlich machen?
Was sagt ihr?
Denn dem entsprechend muss ich ja auch meine Klassen deklarieren
Registriert: Di Jul 01, 2003 18:59 Beiträge: 887 Wohnort: (The Netherlands)
Programmiersprache: fpc/delphi/java/c#
1 Server
1..? (Human) Clients
1..? (Computer) Clients
So you can keep the server simple.
The computer clients can also run on the server as a sperate proces simulating an human client. E.g. it does not even have to reside on the same computer as the server.
Depending on your needs the server could also use webservices on port 80. E.g. on the server you could even use php on standard hosting account. Problem then is how to initiate events from the server like e.g. change of environment e.g. it starts raining.
So the real chalenge is how to communicate between server and clients (human or artificial). Do you let the clients poll or are you going to something like p2p. Lots of questions also.
Registriert: Di Mai 18, 2004 16:45 Beiträge: 2623 Wohnort: Berlin
Programmiersprache: Go, C/C++
Noeska versteht dich auch auf Deutsch ^^.
Die 2. Variante ist besser, also dein Client Startet im Hintergrund den Server.
Dein Client enthält dann das Interface, um die benötigten Settings für den Server zu machen und wenn du Starten drückst wird im Hintergrund ein neuer Prozess(server) gestartet und dein client connected auf localhost auf den entsprechenden port. Dein Server kann dann z.B. noch die Settings über Netzwerk Socket lösen, dann würdest du einfach prüfen ob die Einstellung von der Localhost IP kam und wenn nicht wird der Befehl verworfen.
Dies geht bei Shootern und so weiter Prima aber bei Tunieren also wo alle Teilnehmer gleichzeitig starten sollen, da muss der Server schon laufen und alle connecten können.
Also könnte es sinnvoll sein, noch ein flag zu benutzen, welches dein client nicht nach serverstart connected sondern erst, wenn alle slots belegt sind oder andere Bedingungen erfüllt sind.
_________________ "Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren" Benjamin Franklin
Achso ok.
Also, es ist ein Strategie spiel, ähnlich AOE oder C&C mit wesentlich weniger Daten Es gibt zB. 30 Planeten.... dann kann man andere colonieren oder wie man das nennt und kann kampfschiffe bauen ...
Ähnlich WinHo wenn das einer kennt? nur halt in 3D und bissl abgeändert, nicht rundenbasiert.
Wenn der Server schon läuft, und alle sind connected (ink. mir, localhost) dann drücke ich start und kann loslegen... ist doch ok?
Da brauch ich nicht unbedingt einen neuen prozess oder?
PS: Aber ich versteh nicht alles in Englisch ... und ich geb mir mühe wenn einer englisch schreibt, auch so zu Antworten ... hilft mir ja auch
Registriert: Do Sep 25, 2003 15:56 Beiträge: 7810 Wohnort: Sachsen - ERZ / C
Programmiersprache: Java (, Pascal)
Ich würde es so machen wie Noeska schreibt.
Die Clients, egal ob Mensch oder KI nutzen das selbe Interface zum Server. Somit macht es am Ende keinen echten unterschied für die Businesslogik (im Server) ob du lokal gegen die KI spielst, oder über netz mit Menschen, oder eine Mischung aus beidem.
Jeder Client, ob KI oder Mensch, muss sich zu einem Server connecten. Das kann dann z.B. localhost sein, oder aber auch ein entfernter Rechner.
Der Vorteil dieser Struktur ist, dass du theoretisch auch richtige Server erstellen kannst, die auf gehosteten Rechnern laufen. Da gibts dann einfach ne Website die du aufrufst, und über der du einen neuen Serverprozess starten kannst zu dem sich dann Spieler connecten können.
_________________ Blog: kevin-fleischer.de und fbaingermany.com
Mitglieder in diesem Forum: 0 Mitglieder und 6 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.