Seite 1 von 1

Netzwerkfähiges Spiel programmieren

Verfasst: Freitag 23. Mai 2008, 09:51
von Markus12
Hallo Freunde,
ich möchte ein kleines Spiel mit Python programmieren, das ich zum Beispiel mit Freunden über ein lokales Netzwerk spielen könnte.

Nun habe ich im Internet irgendwas von Protokollen gelesen, und Sachen, die gar nicht damit zu tun haben und viel zu kompliziert sind, deswegen wollte ich mal fragen, ob jemand weiß, wie man so etwas machen könnte?


Viele Grüße Markus :-)

Verfasst: Freitag 23. Mai 2008, 14:14
von BlackJack
Das kommt sehr auf das Spiel an. Wenn es etwas ist, was nicht in "Echtzeit" funktionieren muss, sondern eher in Richtung Karten- oder Strategiespiel mit Zügen/Runden geht, würde ich das Programm in Server und Clients aufteilen die mit XML-RPC kommunizieren. Oder Pyro benutzen wenn es Python-Only bleiben kann/soll/darf.

Re: Netzwerkfähiges Spiel programmieren

Verfasst: Freitag 23. Mai 2008, 14:22
von keppla
Markus12 hat geschrieben:Nun habe ich im Internet irgendwas von Protokollen gelesen, und Sachen, die gar nicht damit zu tun haben und viel zu kompliziert sind, deswegen wollte ich mal fragen, ob jemand weiß, wie man so etwas machen könnte?
Es ist zu befürchten, dass diese "viel zu komplizierten Sachen" genau so kompliziert sind, wie sie müssen, und leider doch was damit zu tun haben.

Ein "Protokoll" ist eine konvention darüber, was für daten die einzelnen Netzwerkteilnehmer austauschen, und wie sie das tun. Beispielsweise müssten für ein Strategiespiel die Positionen der Figuren, die Lebensenergie etc. ausgetauscht werden.

Entweder denkst du dir ein eigenes Protokoll aus, oder du guckst, ob ein vorhandenes deine Bedürfnisse abdeckt.
"Allgemeingeeignet" sind recht häufig RPC-protokolle, allerdings ist bei Spielen die Frage, ob die bezüglich geschwindigkeit und streaming-eigenschaften (was interessieren dich die Daten von vor 10 minuten) passend sind.

Hast du schon das eigentliche Spiel fertig?

Verfasst: Freitag 23. Mai 2008, 18:14
von Markus12
Danke für eure Antworten erstmal :-)

BlackJack hat schon genau das richtige angesprochen.
Ich wollte nämlich als Spielerrei ein netzwerkfähiges Monopoly programmieren. Oder Poker, das sind einfach Dinge, die ich mal ausprobieren möchte und mich interessieren.

Ist also rundenbasierend.

Deswegen meine Frage nun:
eher in Richtung Karten- oder Strategiespiel mit Zügen/Runden geht, würde ich das Programm in Server und Clients aufteilen die mit XML-RPC kommunizieren.
Was genau muss ich jetzt machen bzw. mit welchen Modulen muss ich mich beschäftigen? :D


Ich habe bis jeztt noch nichts angefangen umzusetzen, da ich dachte, dass sich dadurch die Programmstruktur stark verändert, wie ich mir vorstellen kann. Deswegen habe ich noch nichts gemacht.

Viele Grüße Markus :)

Verfasst: Freitag 23. Mai 2008, 19:25
von lunar
Die Doku lesen, insbesondere diejenigen Teil, bei denen xmlrpc im Namen vorkommt ;)

Verfasst: Montag 26. Mai 2008, 08:34
von keppla
Was genau muss ich jetzt machen bzw. mit welchen Modulen muss ich mich beschäftigen? :D
Du könntest z.B.http://json-rpc.org anfangen, und etwas ganz Simples, wie z.B. einen "message of the day"-Server und client schreiben.
Ich habe bis jeztt noch nichts angefangen umzusetzen, da ich dachte, dass sich dadurch die Programmstruktur stark verändert, wie ich mir vorstellen kann.
Nicht notwendigerweise. RPC steht für "Remote Procedure Call", was darauf rausläuft, dass du eine Funktion aufrufst, die dir auch wie bekannt einen Wert zurückgibt, die eigentliche berechnung aber auf einem anderen Rechner ("remote") stattfindet.
Wenn du schon ein Spiel hast, wäre der erste schritt, globale variablen o.ä. zu vermeiden, das Spiel in einen client- und einen serverbereich zu teilen, und dafür zu sorgen, dass client und server nur mit einigen funktionen kommunizieren, die du dann ver-RPC-en kannst.