Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 04, 2025 07:33

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Autor Nachricht
BeitragVerfasst: Sa Mär 07, 2009 07:53 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Okt 27, 2003 17:46
Beiträge: 788
Hallo.

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 :-)

_________________
www.audi32.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Mär 07, 2009 09:37 
Offline
DGL Member
Benutzeravatar

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.

_________________
http://3das.noeska.com - create adventure games without programming


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Mär 07, 2009 10:15 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Okt 27, 2003 17:46
Beiträge: 788
I have to learn more english :-/

At the moment is my program like this:


A Human open the TCP Server.
Clients can connect (Its only Humans play, no KI).
If 4 Clients connected then plays 5 Humans.


Is this good or is it better like this?:

A Human open the TCP Server and Client
Clients can connect (Its only Humans play, no KI).
If 5 Clients connected, then plays 5 Humans.


Is the first or second better?

_________________
www.audi32.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Mär 07, 2009 11:08 
Offline
DGL Member
Benutzeravatar

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

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Mär 07, 2009 12:24 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Okt 27, 2003 17:46
Beiträge: 788
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 ;-)

_________________
www.audi32.de


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Mär 07, 2009 12:42 
Offline
DGL Member
Benutzeravatar

Registriert: Di Mai 18, 2004 16:45
Beiträge: 2623
Wohnort: Berlin
Programmiersprache: Go, C/C++
Einige Spiele bieten ein Zuschauermodus an, dieser wird dann z.B. verwendet, bis das Spiel wirklich los geht.
Sowas kannst du z.B. machen.

_________________
"Wer die Freiheit aufgibt um Sicherheit zu gewinnen, der wird am Ende beides verlieren"
Benjamin Franklin

Projekte: https://github.com/tak2004


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Sa Mär 07, 2009 20:15 
Offline
Guitar Hero
Benutzeravatar

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


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 7 Beiträge ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

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.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.007s | 14 Queries | GZIP : On ]