Internet Game

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
fail
User
Beiträge: 122
Registriert: Freitag 11. Januar 2013, 09:47

Ich wollte zusammen mit ein paar Freunde ein Internetspiel machen also Client herunterladen aber wie bei WOW das man gegeneinander spielt.
Für den Client wollte ich PyGame nehmen.
Aber wie geht das mit dem Server, ich hatte mir das so überlegt das es auf dem Server ein spezielles File hat mit den Informationen über die Spielwelt und das dann der Client dieses sieht und verarbeiten kann und dann die Veränderungen die der Spieler an der Spielwelt gemacht hat schickt. Stimmt das so vom Konzept?
BlackJack

@fail: Du brauchst auf dem Server (Rechner) einen Server (Programm), den den Zustand der Spielwelt kennt und Veränderungen die Clients an der Spielwelt vornehmen entgegennimmt und den neuen Zustand an die Clients verteilt. Wie man das konkret macht, hängt unter anderem von der Art des Spiels ab. Ein rundenbasiertes ”Brettspiel” hat zum Beispiel andere Anforderungen als ein Ballerspiel.
fail
User
Beiträge: 122
Registriert: Freitag 11. Januar 2013, 09:47

was muss ich zu dem thema server lesen? Gibts da ein gutes tutorial?
xeike
User
Beiträge: 83
Registriert: Donnerstag 28. Februar 2013, 09:58

Du könntest dir mal die Funktionen innerhalb des Moduls "socket" ansehen. Damit kannst du eine Netzwerkverbindung aufbauen.

Wenn du eine Netzwerkverbindung hast, kannst du Daten durch die Gegend schieben, bei denen es egal ist, ob es sich um einen Chat oder um Spieldaten handelt.

Wenn du beispielsweise ein TicTacToe-Netzwerkspiel bastelst, dann muss der Server das Spielfeld verwalten und sich um die Computerzüge kümmern. Der Client, also der menschliche Spieler, macht dann lediglich die Eingaben, schickt sie an den Server, der wertet diese aus und bestimmt, ob sie gültig sind und schickt dann ein gültiges Spielbrett zurück.

Probiere für den Anfang mal etwas leichtes aus und sammel so Erfahrung. Ein Chat ist schon schwer, wenn man gerade anfängt, aber leicht, wenn man sich ein wenig auskennt.

Kannst dir auch SocketServer (http://docs.python.org/3/library/socketserver.html) anschauen. Socket (http://docs.python.org/3/library/socket ... t-families) sollte aber auch erst einmal genügen.

Xe
fail
User
Beiträge: 122
Registriert: Freitag 11. Januar 2013, 09:47

Kann ich mit tkinter das game machen oder sollte ich pygame nehmen
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

fail hat geschrieben:Kann ich mit tkinter das game machen oder sollte ich pygame nehmen
Es kommt drauf an! ;-)

Ich vermute ehrlich gesagt, dass es Dir noch stark an den Grundlagen von Python und der Programmierung an sich fehlt... da würde ich mich erst einmal auf das wesentliche beschränken. GUIs erfordern *immer* das Wissen über Nebenläufigkeit - ein fertiges GUI-Toolkit erleichert es einem insofern, als dass man keine eigene Eventloop bauen muss, wie z.B. bei PyGame. Andererseits erfordern sie quasi immer das Beherrschen von OOP, was einem Anfänger auch oftmals fehlt.

Da Du ja ein online Spiel erstellen willst, vermutlich auch noch "Echtzeit" fähig, kommen da dann noch komplexe Anforderungen an Netzwerkkommunikation und mögliche Protokolle hinzu.

Ziemlich viel für jemanden, der - pardon - seine Fragen in einer eher unbedarften Manier äußert ;-)

Vielleicht irre ich mich ja auch, aber wenn Du wirklich ein Anfänger bist, dann übernimmst Du Dich bei einem solchen Projekt vermutlich. Evtl. wäre es klüger, die Anforderungen ein wenig runter zu schrauben und ggf. ein Konsolenspielchen zu erstellen. Für dieses kannst Du Dir ja vornehmen, später Netzwerkfähigkeit dazu zu packen. Wenn das dann läuft, spendierst Du dem ganzen eine GUI, usw. Also Schritt für Schritt und nicht alles auf einmal :-)
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
BlackJack

Ich würde mich da Hyperions letzten Absatz anschliessen. Implementiere ein „Nicht-Echtzeitspiel”, zum Beispiel ein Karten- oder Brettspiel, und zwar mit einer möglichst sauberen Trennung zwischen Spiellogik und Benutzerinteraktion. Da kann man dann eine GUI drauf setzen. Und wenn das läuft, kann man eine Netzwerkschicht zwischen Anzeige — dann Client — und Spiellogik — dann Server — einziehen. Das alles gleich von Anfang an und als Anfänger wäre schon ziemlich heftig.
Antworten