heise online
  • c't
  • iX
  • Technology Review
  • Mac & i
  • mobil
  • Security
  • Netze
  • Open Source
  • Developer
  • c't-TV
  • Download
  • Telepolis
  • Resale
  • Foto
  • Autos
  • Preisvergleich
  • Stellenmarkt
  • Abo
  • weitere Angebote
    • Shop
    • Artikel-Archiv
    • Veranstaltungen
    • Whitepapers
    • heise-marktplatz
    • IT-Markt
    • Tarifrechner
    • Jobs bei Heise

c't Magazin
  • Startseite
  • Artikel
  • c't-Projekte
  • Hotline & FAQ
  • Treiber & mehr
  • Kolumnen
Software zu Projekten Allgemeine Hinweise
Archiv-Suche Newsletter RSS-FeedRSS

c't › c't-Projekte

creativ'08: Programmierwettbewerb Asteroids
  • Login
  • Help/Guide
  • About Trac
  • Preferences
  • Wiki
  • Timeline
  • Roadmap
  • Browse Source
  • View Tickets
  • Search

Context Navigation

  • Start Page
  • Index
  • History
  • Last Change

Asteroids spielen über Internet

Die c't-Redaktion betreibt einen Server, gegen den man übers Internet Asteroids spielen kann -- außer Konkurrenz für den Wettbewerb! Damit kann man zum Beispiel testen, wie gut das eigene Programm mit Paketverlusten oder (womöglich gar wechselnder) Latenzzeit zurechtkommt.

Der Server hat die Adresse asteroids.heise.de (193.99.145.178) und lauscht auf Port 1979.

Sobald der Server von einem Client ein gültiges UDP-Paket mit Steuerinformationen empfangen hat (siehe  Details zum Wettbewerb), schickt er ab diesem Zeitpunkt alle Bildschirminhalte an den Client und drückt automatisch nach einer kurzen (aber variablen) Wartezeit den Startknopf. Sollte der Client lange genug leben, trennt der Server nach exakt fünf Minuten (18.000 Frames) die Verbindung. Von jeder Partie wird automatisch eine Aufzeichnung in dem für diesen Zweck erfundenen Dateiformat (Version 2) angefertigt und auf dem Server abgelegt.

Aufzeichnungen und Highscores im Internet

Auf der Seite  http://asteroids.heise.de/games/ kann man die zuletzt gespielten Partien und die Highscores bewundern.

Protokollerweiterung: busy und game over

Wenn ein Client den Server anspricht, während gerade ein anderer Client spielt, erhält er ein UDP-Paket mit dem Inhalt "busy x\r\n" zurück, wobei x die verbleibende Anzahl Frames bis zum Fünf-Minuten-Limit ist. Ungefähr nach dieser Anzahl von Frames sollte die Partie vorbei sein; sie kann natürlich früher enden, wenn ein schlechter Client spielt. Die Meldung "busy 0\r\n" bedeutet, dass der vorige Client abgehängt wurde, MAME jedoch noch auf das Spielende wartet.

Dem Client, der gerade spielt, schickt der Server ein Paket mit dem Inhalt "game over\r\n", wenn er die Verbindung zu ihm beendet hat.

Beide Pakete bringen die Referenz-Implementierung aus sample.zip mit der Meldung "Fehler 0 bei recvfrom()" zum Abbruch, weil sie ursprünglich nicht vorgesehen waren.

Protokollerweiterung: Name für die Highscore-Liste

Außer dem bekannten, 8 Byte langen "ctmame"-Paket versteht der Server jetzt auch ein genau 38 Byte langes Paket, das mit den 6 Byte "ctname" beginnen muss (nicht "ctmame"!), gefolgt von einem Freitext-String im UTF-8-Format (keine HTML-Entities!), aufgefüllt mit Nullbytes (bitte nicht mit Leerzeichen).

Wenn er dieses Paket nach Verbindungsaufbau, also nach einem ctmame-Paket, aber vor Beginn der eigentlichen Partie empfängt, speichert er den Namen mit ab und er erscheint später automagisch auf der  Webseite mit den Spielergebnissen.

Achtung: Dieses Paket bringt die ursprünglich für diesen Wettbewerb bereitgestellte MAME-Version zum Abbruch, da ihr Empfangspuffer dafür nicht groß genug ist.

Quellcode des Servers

Für Neugierige gibts den Quellcode des zurzeit laufenden Servers zur Einsicht im Wiki. Der Server läuft unter Windows; dieser Quellcode lässt sich unter Linux/Mac? OS so nicht kompilieren.

Download in other formats:

  • Plain Text

Trac Powered

Powered by Trac 0.11.7
By Edgewall Software.

http://www.ctmagazin.de/creativ/08/02/
http://www.ctmagazin.de/creativ/

  • Datenschutzhinweis
  • Impressum
  • Kritik, Anregungen bitte an c't-WWW
  • Mediadaten
  • Copyright © 2011 Heise Zeitschriften Verlag
  • International: The H, The H Security, The H Open Source