BBServer (w.i.p)

Übersicht BlitzMax, BlitzMax NG Codearchiv & Module

Neue Antwort erstellen

bruZard

Betreff: BBServer (w.i.p)

BeitragMo, Sep 05, 2005 14:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Durch die Arbeit an Timemill entand vor längerer Zeit mal ein Modul um Gameserver zu listen ... jetzt habe ich es nochmal angepackt, allgemeiner gestaltet und in BMax Modulform gepackt ...

http://www.makegame.de/bbserve...server.zip

Ein Beispiel mit reichlich Kommentaren liegt bei und der Source des Moduls ist auch enthalten.

Am Wichtigsten bei der Implementierung war es mir dass _jeder_ die Server für sein Game listen kann und sich niemand um Datenbanken und PHP Scripts kümmern muss. Deshalb sind alle Games in meiner Datenbank gesichert und können mittels des Moduls auch von dort abgerufen werden.

    Im Moment funktioniert
  • Server an die Datenbank schicken
  • Serverliste abrufen (noch unformatiert)
  • Datum und Zeit des Serverstarts in verschiedenen Formaten abrufen
  • Server aus der Datenbank entfernen


Mir muss noch eine Benutzerfreundliche Methode einfallen die gelesenen Server aus der TList zu holen und darzustellen ...

Alle gelesenen Server werden in der Klasse "TBBServerList" gehalten.
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32

User posted image

Fetze

BeitragMo, Sep 05, 2005 15:17
Antworten mit Zitat
Benutzer-Profile anzeigen
yay!
bruZard, das ist klasse ^^

Ein großes DANKE von mir, insbesondere dafür, dass der Php-Kram entfällt Smile

bruZard

BeitragMo, Sep 05, 2005 16:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Kleines Update

die Methode Get() gibt nun eine Referenz auf die Serverliste zurück, diese kann man mittels einer For ... EachIn Schleife durchgehen.

Als erstes das Sample welches dieses verdeutlicht
Code: [AUSKLAPPEN]

Strict

Import Pub.bbserver


Local myServers:BBServer = New BBServer

myServers.Init("my 1337 g4m3")
myServers.AddServer("Ein Test",1234)


Local myList:TBBServerList = myServers.Get()

If myList<>Null
   For myList = EachIn myList._list
      DebugLog myList.title
   Next
EndIf
myServers.Kill()

End


...und dann muss nur noch die alte Version des Moduls durch die neue ersetzt werden (einfach den Link im ersten Post verwenden)

Die Datei bbserver_example2.bmx zeigt wie's geht.
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32

User posted image

bruZard

BeitragMo, Sep 05, 2005 20:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Neues Update (Link im ersten Post)

Es wird nun kein Passwort mehr übertragen, sondern nur noch die Info dass ein Passwort gesetzt wurde. Zudem findet Ihr auf www.makegame.de/bbserver eine erste Version der Serverlist in HTML Form. Einfacher kann man seine Games wohl nicht mehr bekannt geben Wink
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32

User posted image

Fetze

BeitragMi, Sep 07, 2005 18:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie sage ich der Serverlist, dass ich nur die Server bestimmter Spiele oder eines bestimmten Spiels sehen will? Geht das bereits?

Hummelpups

BeitragDi, Dez 20, 2005 7:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Wohl eher nicht, den Filter musst du dann wahrscheinlich selber
einbauen.

Bei der gelegenheit: BruZard, schon weiter gearbeitet? ;D
Finde dieses Modul seeeehr interessant.

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

bruZard

BeitragDi, Dez 20, 2005 9:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Liste der Dinge die mich abhalten weiter zu machen:

  • Ich wurde für drei Wochen durch eine Grippe umgeknallt
  • mein Sohn wurde geboren
  • Meine Freundin hat durch die Geburt schwere Verletzungen so dass ich mich um alles kümmern muss
  • Gerade zum Ende des Jahres hin ist mein Job wahnsinnig stressig und es bleibt kaum Freizeit

So genug ge*whine*ed, ich denke dass ich Anfang nächsten Jahres weiter arbeiten kann.
PIV 2,4GHz - 1GB DDR 333 - ATI Radeon9600 - WinXP - DX9.0c - BMax 1.14 - B3D 1.91 - 1280x1024x32

User posted image

Fetze

BeitragDi, Dez 20, 2005 11:57
Antworten mit Zitat
Benutzer-Profile anzeigen
Für alles ausser Punkt 2 mein Beileid und gute Besserung Wink

Jan_

Ehemaliger Admin

BeitragFr, Dez 23, 2005 9:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Alles gute Bruz,

freut mich, das du einen Sohn bekommen hast.
between angels and insects

Farbfinsternis

BeitragDo, Aug 10, 2006 18:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Version 0.5 ist in Arbeit
    geplante Änderungen
  • verbessertes Web-Frontend:

    • Template-basiert um das PHP Modul den eigenen Wünschen anzupassen wenn man auf einem eigenen Webserver eine Serverlist einrichten möchte
    • Gameliste nicht mehr als DropDown implementiert, sondern als sortier- und filterbare Liste am linken oder rechten Bildschirmrand (Template gesteuert)
    • Sortierfunktion für Server
    • Ausblenden von unerwünschten Servern (Private, Clan-Server, Ignore-List etc.)
    • Angabemöglichkeit wieviele Server pro Seite gelistet werden sollen
    • Server können Icons (16x16px) an das PHP Script schicken. Dieses Icon wird vor dem Server angezeigt. "Trusted Server" können Configs auf dem Webserver erstellen (unten mehr dazu)
    • Der Servername kann formatiert werden: Code: [AUSKLAPPEN]
      [b][c=255,0,0]M[/c][/b]y Server
      erzeugt eine Ausgabe mit fettem "M" welches rot dargestellt wird.
    • "Trusted Server": per EMail Kontakt können "Trusted Server" eingerichtet werden. User die solch einen Server fahren bekommen ein eigenes Webfrontend in welches sie Ihr Game konfigurieren dürfen. "Trusted Server" werden vom Administrator per Hand in die Datenbank eingetragen und werden an Kriterien gebunden sein (wie lange läuft das Game bereits sichtbar online, ist der Serveradmin vertrauenswürdig etc.)

  • Verbesserte und erweiterte Filteroptionen im Modul zur Sortierung der Serverliste
  • verbessertes und vereinfachtes Interface zur Implementierung des Moduls in eigene Internet-Games
  • ein zweites Modul ist in Arbeit welches MaxGUI verwendet um bspw. einen Gamebrowser zu programmieren. Dieses Modul importiert bbserver.mod und bietet erweiterte Funktionen zur Anzeige der Serverliste.
  • Statistiken werden verstärkt implementiert um dem Serverbetreiber jederzeit Einsicht in die Aktivitäten zu geben die auf dem Server passiert sind
  • BBSPing() : Funktion die es jedem Gameserver ermöglicht angepingt zu werden. Das Webfrontend oder das aufrufende Programm erhält damit Daten über Latenz und Spielerzahl. Dieser Wert ist nur 3 Byte groß, somit ist er klein genug um auch während des Spiels versendet zu werden. Andauerndes pingen und damit lahmlegen des Servers habe ich auch bedacht. Es ist nur alle 10 Sekunden möglich einen Server zu pingen.
  • Daten welche für die Statistik erhoben werden, werden in einer SQLite Datenbank untergebracht (hier nochmal mein Dank an Rene Aye)


Mal gucken ob Jan_ noch etwas hinzufügen möchte Wink
Farbfinsternis.tv

Farbfinsternis

BeitragMo, Aug 14, 2006 20:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Noch nicht viel zu sehen, aber unter folgender Adresse könnt Ihr das Frontend in der Entwicklung beobachten:

http://bruzard.ath.cx/bbserver2/

Dieser Server ist nicht der schnellste da es nur ein Apache auf Debian ist der über eine 6k DSL Leitung angebunden ist. Die Geschwindigkeit auf einem "echten" Server ist natürlich wesentlich besser.
Farbfinsternis.tv

Jan_

Ehemaliger Admin

BeitragDi, Aug 15, 2006 8:37
Antworten mit Zitat
Benutzer-Profile anzeigen
hm,

unerwartet, das ich deine Lust zum Coden darran so geweckt habe.
-Leider, sieht meine Version schon etwas anders aus.

mal schauen.
(nettes Interface)
between angels and insects

Hummelpups

BeitragDo, März 01, 2007 11:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Jan haste mal weiter gearbeitet? Wäre interessiert an deinem Code.
Hab vor es beim kommenden Spiel zu implementieren und bevor ich mir
das alles selber schreibe guck ich doch erst mal so, wies mit dem Modul
hier aussieht Wink Erspart mir natürlich ne menge Zeit Very Happy

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

Farbfinsternis

BeitragMi, März 07, 2007 19:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Version 0.33 ist beinahe fertig ... da fehlt ja kaum noch was zur 0.5 Wink

    Derzeit fertig:
  • verbessertes Interface
  • Filter-Methoden welche vor dem Aufruf von mybbserver.GetServerList() aufgerufen werden. So sortiert ein bbserver.Set_Sortby("title"); bbserver.Set_Order(SORTORDER_ASC); die Serverliste nach den Namen der Server in aufsteigender Reihenfolge.
  • GetServerlist() liefert nun eine TList mit Objekten vom Typ TServerList zurück. Die Abfrage der Server ist simpel: Einfach per EachIn die Liste abgrasen und detailierte Infos auslesen.
  • Es besteht nun die Möglichkeit einen hinzugekommenden Spieler direkt an den MasterServer zu melden, ebenso wie ein Spieler der das Game verlässt gemeldet werden kann. Dies geschieht in wenigen Millisekunden und sollte den Spielablauf nicht bremsen. Der Vorteil ist dass man jederzeit mit GetServerList() erfragen kann wieviele Spieler auf diesem Server zu Gange sind.
  • Das Modul verwaltet keine Game-Liste mehr. Beim initialisieren des Moduls per "myservers:TBBServer = TBBServer.Init(host:String, game:String)" wird der Parameter "game:String" verwendet um das Spiel zu bestimmen für welches man im weiteren Verlauf des Programms die Server verwalten möchte. Games werden dauerhaft in der Datenbank hinterlegt und können einfach per PN oder EMail angemeldet werden. Zwar ist ein Tool geplant welches diesen Vorgang automatisiert, jedoch bin ich gerade bei V0.32b und will noch nicht zuviel für weitere Versionen versprechen.
  • Es ist jederzeit möglich (und teilweise notwendig) die Daten des Servers zu modifizieren. Wie schon geschrieben geht das sehr fix. I.d.R. dauert ein Update zwischen 10 und 50 Millisekunden.
  • Der Quelltext der PHP-Seite wird nun, entgegen früherer Aussagen, doch komplett Open-Source. Einfach aus dem Grund dass ich nicht Gott bin und einige hier sicher mehr Ahnung von PHP und Sicherheit in PHP Scripts haben als ich. Das gesamte Paket wird einer eigenen Lizenz unterliegen. Dieses ist noch nicht in Endgültigkeit ausgearbeitet hat aber bereits Eckpunkte: Jeder darf das Modul, das PHP Script und das MySQL Dump frei verwenden. Kommerzielle Ambitionen müssen allerdings ihren Obulus abtreten welcher derzeit in der Höhe von 9,90 € pro gelistetes Game geplant ist. Hat User XYZ also seine Games "Tetris2050" und "Sudoku1Million" sind für ihn einmalig 19,80 € fällig. Möchte er auf meinem Server hosten sind weitere 4,99 € pro Monat zu löhnen. Im Übrigen wird mit Release für jeden die Nutzung meiner Datenbank kostenpflichtig. Wer eine eigene Datenbank besitzt darf BBServer inkl. PHP Script und MySQL Dump kostenfrei nutzen wenn sein Spiel ebenfalls kostenlos ist.


So, dann steuern wir mal auf die nächste Version zu um schnellstens auf 0.5 zu kommen Wink
Farbfinsternis.tv

Farbfinsternis

BeitragDo, Sep 13, 2007 18:01
Antworten mit Zitat
Benutzer-Profile anzeigen
So, fast exakt ein halbes Jahr vergangen ... Zeit für ein Update.

  • erstens: Nein, es gibt derzeit keinen neuen Download
  • zweitens: alles bleibt anderes
  • Das Modul wurde in makegame.server umgewürfelt
  • die Geschichte ist wesentlich diffizieler und komplexer geworden als geplant.
  • Die ServerListe ist zwar (dank unausgereiftem BRL OOP Konzept) immer noch direkt ansprechbar, ich empfehle aber die Benutzung über das neue Interface welches das Type "TServerManager" bietet.
  • Viele Parameter wurden per Default belegt und das PHP Script ist wesentlich fehlertoleranter geworden.
  • Das Type TServerManager wird über die Funktion Init() initialisiert und verlangt in jedem Fall die Paramter "game" und "version". In früheren Versionen der Serverliste konnte das Modul noch verschiedene Spiele halten, ich hielt das für unsinnig da das Modul ja immer in ein Game eingebettet werden muss und habe diese Funktionalität entfernt.
  • Der Funktion Init() können zudem noch Host, Port und Script des PHP-Managers übergeben werden. Diese Parameter sind per Default an meinen Server gebunden und müssen nicht belegt werden.
  • User die auf meinem Server ihre Games listen wollen dürfen dies kostenlos tun wenn ihr Game ebenfalls kostenlos ist.
  • Neue Methode "GetServerCount()": Diese kann (muss aber nicht) mit diversen Daten gefüttert werden um bspw. nur die Server zu listen die das Game in Version xx und nur die Maps in Version xx und nur die Mods in Version xx fahren.
  • Wer sich an das offizielle Interface hält darf jetzt einen eigenen Server nur noch erstellen wenn zuvor der ServerManager initialisiert wurde. Ich habe keinen Exception-Handler geplant der andere Vorgehensweisen verhindert, wer meint er könnte sich um das Interface drücken muss halt mit undefinierten Ergebnissen leben.
  • Die Methode "CreateServer()" liefert nun eine Referenz auf ein Objekt vom Typ "TLocalServer" zurück. Dies ermöglicht es besser mit der ServerListe zu kommunizieren da die öffentlichen Serverliste keine dedizierten Daten enthält wie die UniqueID des Servers. Nur über diese ID darf man seinen eigenen Server in der Datenbank manipulieren.
  • "CreateServer()" wurde um die ellenlange Parameterliste kastriert und erwartet nun eine TList mit Parametern.
  • Methoden die sicherheitsrelevant sind senden ihre daten nun in einem POST-Array und nicht mehr über den Request.
  • Das Modul verwendet jetzt zwei externe Module: Zum einen BNetEx von Vertex und zum anderen das Modul makegame.httpsend dessen Quelltext auf den Vorlagen von skn3[ac] aus dem engl. Board basiert.
  • Der PHP Part verwendet nun Includes für Fehlermeldungen die per Paramter "lang" steuerbar sind. Das Default-Module trägt den Namen "error_messages.de.php", wird per "&lang=en" die Sprache "en" für "english" übertragen importiert server.php das Modul "error_messages.en.php". Die Funktionalität zum ändern der Sprache ist auf BMax Seite noch nicht implementiert.
  • geplant: Es wird die Möglichkeit geben direkte SQL Query's zu senden. Diese werden Serverseitig auf ihre "Gefährlichkeit" geprüft und PHP möchte in gewissen Fällen eine Rückmeldung ob dieser Vorgang tatsächlich ausgeführt werden soll. Es wird nicht möglich sein die Tabelle direkt einzutragen, stattdessen muss im SQL String der Tabellenname mit einem * definiert werden. Ein "DELETE FROM" wird ebenso ignoriert wie ein "TRUNCATE", das Modul stellt eigene Methoden für diese Funktionalität zur Verfügung. Wo es verwendet werden kann: "SELECT * FROM * WHERE game_name=%game_name% AND game_version=%game_version% AND map=%map_name%"
  • geplant: Ein kleines Linux-Programm wird auf Servern die das erlauben (und auf jedem Fall auf meinem) laufen das alle Server pingt und auf die Antwort "IN_PROGRESS" wartet. Diese Funktionalität wird durch das Server-Modul bereitgestellt. Alle Server die nicht antworten werden aus der Datenbank gelöscht
  • geplant: Mit dem Modul wird ein ein Linux-Tool geliefert welches durch PHP aufgerufen wird und die aktuelle Zahl der Spieler und den Ping zurückgibt. Dieses Tool wird bei den wenigsten Hosts laufen, deshalb wird eine ähnliche Funktion in das Server-Modul integriert. Dort muss das Modul jedoch alle Server selbst anpingen.

Ich habe sämtliche kommerziellen Interessen für dieses Modul über Board geworfen und werde nur noch dort Forderungen erheben wo mit diesem Modul Geld verdient wird.
Farbfinsternis.tv

Farbfinsternis

BeitragFr, Sep 14, 2007 18:05
Antworten mit Zitat
Benutzer-Profile anzeigen
    Update 14.09.07
  • Die erste benutzbare Version ist fertig, wird derzeit getestet und wird am Dienstag für Linux und Windows released.
  • Direktes SQL wird noch nicht released weil der Parser auf der Server-Seite noch Zicken macht, wir wollen ja nicht jedes SQL Snippet verarbeiten.
  • Die Webpage zum betrachten der Serverliste wird dann auch noch nicht existieren, wichtiger ist es dass auf BMax Seite alles funktioniert
  • Alle Pläne für eine BB, B+ oder B3D Version liegen auf Eis. Um fertig zu werden konzentriere ich mich auf das BMax Modul
  • in der 0.7er Version noch nicht released aber fest vorgesehen ist der Support für LUA. D.h. das später die Module axe.lua und axe.luascript nötig sind. Derzeit beschränkt es sich auf vertex.bnetex, makegame.httpsend wird mitgeliefert.
Farbfinsternis.tv

Farbfinsternis

BeitragMo, Sep 17, 2007 18:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Der verwendete Code von skn3[ac] macht extreme Zicken. Ein Post an 1&1 schicken macht keine Probleme, bei all-inkl.com kommt kein Content-Length an und IP Adressen gehen garnicht weil angeblich der Name nicht aufgelöst werden kann.
Ich dachte ich würde mit seinem Code Zeit sparen und muss nun noch mehr Zeit investieren um das Problem zu fixen.

Wenn alles (andere) trotzdem gut läuft werde ich das Modul morgen dennoch releasen, allerdings mit dem fetten Hinweis dass er nicht bei jedem Provider anwendbar ist. Mal gucken was skn3[ac] da für Rotze gebaut hat.
Farbfinsternis.tv

Farbfinsternis

BeitragDi, Sep 18, 2007 15:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Die im letzten Post beschriebenen Probleme mit skn3[ac]'s Code waren nicht einfach so lösbar. Also habe ich mir ein neues Modul gebastelt welches die Aufgabe löst für die ich eigentlich den Code von skn3[ac] verwenden wollte (siehe HTTP POST Module). Dadurch dass ich nun doch mehr Code schrauben musste als geplant schaffe ich es heute nicht mehr die Serverlist zu releasen, zudem will ich noch das Update für die OnlineHighscore fertig machen und releasen. Das wird höchstwahrscheinlich heute noch passieren.

[EDIT]
Das Modul ist fertig und das Update der Highscore geschafft, zwar steht noch ein Sicherheitsupdate für die Highscore an, aber ich denke dass ich morgen dennoch eine erste Version der neuen ServerList-Software releasen kann.
[/EDIT]
Farbfinsternis.tv

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Codearchiv & Module

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group