Lobby

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Doni

Betreff: Lobby

BeitragDo, Apr 13, 2006 23:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,
ich schreibe grad an nem Spiel,das über internet gehen soll!
Da sich ja nicht jeder die Ip merken will,will ich ne Lobby einbauen,so wie bei CS,Soldat,eigentlich allen Spielen über inet!

Leider hab ich keine Ahnung wie ich das machen soll,das die Leute wissen,wer schon nen Server eröffnet hat,muss sich da jeder auf nem Server registriern?und den rufen die anderen dann ab???

Das wäre bisher die einzige möglichkeit die mir einfallen würde,wenn es so geht,gleich noch ne Frage,wo bekomm ich so nen kostenlosen Server her?oder kann man das über Webspace machen?

hoffe ihr könnt mir helfen

Doni

nX^

BeitragFr, Apr 14, 2006 0:06
Antworten mit Zitat
Benutzer-Profile anzeigen
PHP und SQL.

Hummelpups

BeitragFr, Apr 14, 2006 0:10
Antworten mit Zitat
Benutzer-Profile anzeigen
du musst via BB ein PHP skript aufrufen das verschiedene
Daten in einer Datenbank speichert. Beispielsweise:

deinedomain.de/server.php?name=testserver&ip=213.15.2.133

so nun fügt das PHP script dies in eine Datenbank ein.
mit einer anderen PHP datei könnte man nun die Datenbank anzeigen
lassen und so alle server auflisten.

für einen anfänger sicherlich schwierig da man progr. sprachen übergreifen
proggen muss.

IMurDOOM
blucode - webdesign - Ressource - NetzwerkSim
BlitzBasic 2D - BlitzMax - MaxGUI - Monkey - BlitzPlus

BtbN

BeitragFr, Apr 14, 2006 10:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich empfehle dir, die IP nicht an das PHP-Script zu senden, sondern das PHP-Script die IP herausfinden zu lassen.
Dann must du dir nämlich keine Sorgen um Netzwerk-Interne IPs machen.

x-pressive

BeitragSa, Apr 15, 2006 8:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich würde den "Game Browser" nicht direkt ins Spiel mit einbinden, sondern als Launcher programmieren. Erst, wenn man dort einem Spiel beitritt, wird dann das eigentliche Spiel (exe mit jeweiliger Host IP als angehängter Parameter) aufgerufen. Das hat den grossen Vorteil, das du erstens z.B. Blitz+ zum Programmieren für den Game Browser benutzen könntest (was viel schneller und zeitsparender geht, als das ganze GUI, Scrollbars etc. selbst zu coden) und vor allem kannst du so einen Launcher dann bei jedem deiner Spiele ohne grosse Arbeit wiederverwenden und musst das nicht jedesmal aufs neue in ein Spiel einbauen.
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL
 

Doni

BeitragSa, Apr 15, 2006 23:50
Antworten mit Zitat
Benutzer-Profile anzeigen
danke alle

@x-pressive:
dein Vorschlag hört sich recht gut an.Leider verstehe ich von programmieren mit internet nicht viel,gibt es für so was nen Tut?um so nen Launcher zu machen?

x-pressive

BeitragSo, Apr 16, 2006 1:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Tutorial direkt zum Thema kenne ich keines. Ich kann dir nur mal im Groben erklären, wie ich das zumindest gelöst habe und mit welchen Themen du dich dafür halt auskennen müsstest:

Der User startet den Launcher (würde Blitz+ dafür nehmen, einfach, weil es sehr hilfreich ist, wenn man ein GUI dafür benutzt und sich das nicht erst selbst schreiben muss). Dieser Launcher nimmt zuerst mal per TCP Stream (siehe Online-Hilfe) Kontakt zu einem PHP-Script auf, das bei dir auf dem Server liegt.

Dieses PHP Script auf dem Server verwaltet alle laufenden Spiele (Name des Spiels, Anzahl Spieler, die IP des jeweiligen Hosts etc.) in einer MySQL-Datenbank. Wenn der Launcher sich nun bei diesem Script meldet, schickt das erst einmal eine Liste zurück mit a) allen laufenden Spielen und b) allen Spielen, bei denen noch Teilnehmer möglich sind, die sich also noch im Wartemodus befinden. Diese werden dann alle im Launcher in einer Liste angezeigt (mehr oder weniger komfortabel).

Der User hat nun zwei Möglichkeiten: entweder einem der wartenden Spiele beizutreten oder ein eigenes, neues Spiel zu eröffnen und dann auf Teilnehmer zu warten.

Ein neues Spiel eröffnen:

Eröffnet er ein eigenes Spiel, gibt er im Launcher ein, wie das Spiel (die Session) heissen soll, wie viele Spieler er sucht, was auch immer. Diese Daten werden nun (per TCP Stream) an das PHP-Script geschickt, das diese Angaben nun in der MySQL-Datenbank speichert. Ausserdem speichert das PHP-Script auch noch die IP-Adresse dieses Users, da alle späteren Teilnehmer ja die IP zum Host brauchen.

Der Launcher tauscht nun alle 60 Sekunden oder so Daten mit dem PHP-Script aus, das ihm mitteilt, ob sich bereits Teilnehmer eingefunden haben.

Einem Spiel beitreten:

Klickt der User auf ein Spiel in der Liste des Launchers (die alle 60 Sekunden oder so aktualisiert wird), sendet der Launcher das dem PHP-Script auf dem Server. Das wiederrum holt sich aus der MySQL-Datenbank alle Infos zu diesem Spiel (wie viel Teilnehmer bereits warten, die jeweiligen Spielernamen usw.) und aktualisiert auch gleich nebenbei den Eintrag in der Datenbank (ein Spieler mehr, Name des neuen Spielers).

Spiel starten:

Wenn der Host auf "Spiel starten" klickt, wird die IP-Adresse des Hosts an alle wartenden Teilnehmer geschickt und die jeweiligen Launchers der wartenden User starten dann das Spiel mit den jeweiligen Paramtern (spielen als Client oder Host, falls Client, noch die IP des Hosts mit übergeben. Der Launcher bleibt im Hintergrund geöffnet (Blitz+ verbraucht im "Leerlauf" so gut wie keine Resourcen).

Gleichzeitig schickt der Launcher die Information, daß das Spiel gestartet wurde, an das PHP-Script auf dem Server, damit es das Spiel in der Datenbank als "besetzt" markiert. Es können also so lange keine Spieler beitreten, bis das Spiel wieder beendet wurde (konkret: bis der Hostwieder das Spiel beendet hat und z.B. einen "Continue"-Button im Launcher drückt).

Wichtig ist, das die IP-Adressen der Hosts aus Sicherheitsgründen niemals sichtbar sind und nur "intern" verwaltet werden. Sonst können die Leute jeden möglichen Schabernack damit treiben.


Du siehst, ,daß das nicht sooo einfach ist und ein bisschen Know How verlangt -aber wenn du dich nur ein bisschen in folgenden Themen auskennst, ist das eigentlich kein grosses Problem:

Arrow Blitz <> Server Kommunikaton mittels TCP Stream (Blitz Online Hilfe, siehe OpenTCPStream, WriteLine etc.)

Arrow HTTP Header. Einen HTTP-Header musst du senden, wenn du mit einem Script auf dem Server Kontakt aufnehmen bzw. Daten austauschen möchtest (Infos zu HTTP-Headern gibt es hier im Board, siehe Suchfunktion)

Arrow PHP-Kenntnisse. PHP ist recht easy und kann wirklich schnell erlernt werden. In der Regel reicht schon ein gutes Buch oder Tutorial aus dem Web.

Arrow MySQL-Kenntnisse. Da das PHP-Script alle Daten (es können u.U. sehr viele auf einmal zusammenkommen) in einer Datenbank ablegen sollte, müsstest du dich auch noch mit den Grundlagen von MySQL auskennen, einem Datenbanksystem, das fast alle Webhosts anbieten und sicher auch deiner, auf dem deine Website liegt.

Das macht am Anfang schon etwas Arbeit -aber gerade deshalb meinte ich ja, das es ein Vorteil ist, wenn man sich die Mühe nur einmal macht und ein wiederverwendbares System schreibt, das man mühelos mit jedem anderen zukünftigen Game benutzen kann.
• BLITZ SHOWCASE:
PARTICLE CANDY • PARTICLE CANDY FOR iPHONE • SPRITE CANDY • DON'T GET ANGRY! 2-3 • CLICK CLACK XL
 

Doni

BeitragSo, Apr 16, 2006 16:06
Antworten mit Zitat
Benutzer-Profile anzeigen
danke!ich glaub das werd ich machen! Very Happy
Danke für die mühe Wink

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group