Martin Lantzsch
Software Entwickler
30. Dezember 2011

Neue Domains für Litotex

30. Dezember 2011 - Geschrieben von Martin - Ein Kommentar

Da die alten Litotex Domains litotex.de und freebg.de nun für’s erste weg sind (der Serveradmin ist nicht mehr mehr auffindbar und an die Domains kommt man ohne seine Einverständnis nicht herran), habe ich zwei neue Domains registriert. litotex.org und lttx.de.

Nun wird im IRC Channel mit den noch verbleibenden erst mal entschieden wie es mit Litotex weitergehen soll. Ob wir die bereits bestehende Codebase von Litotex 0.8 nutzen, auf NodeJS setzen oder doch ganz anders.

Stay tuned.

13. November 2011

Hobby Browsergame Entwicklung – noch sinnvoll?

13. November 2011 - Geschrieben von Martin - 7 Kommentare

Wie die meisten hier sicher wissen entwickle ich mit Elan Hobbymäßig Browsergames und bin auch ziemlich aktiv in der Szene. Zumindest war ich das bisher immer. In letzter Zeit hingegen frage ich mich immer öfter ob es das überhaupt „bringt“. Ich meine es gibt so viele kommerzielle Browsergame Firmen – gut, ich kenne zwei an der Zahl – die ein ganzes Großraumbüro voller Entwickler haben, die Tag ein, Tag aus nichts anderes machen als Browsergames zu programmieren, Designer die Bilder einer Qualität machen die mich selbst mit den Ohren schnackeln lässt.

Die Browsergame Zielgruppe von heute (meiner Erfahrung nach Kinder zwischen 10 und 16) fahren voll auf so was ab. Spielinhalt der so primitiv wie nur irgendwie möglich sein kann, bombasitische realitätsfremde Bilder und Integration zu Fratzenbuch und Co mit an Bord.

Bei uns Hobby Entwicklern sieht es ganz anders aus. Wir Schustern an unseren Spielen ein paar Stunden die Woche, malen Bilder mit den selben Händen aus denen auch vorher der Code entsprang und wir betreiben Linux Server die wir uns gerade so von unserem Einkommen leisten können.

Doch wir stampfen Spiele aus dem Boden, die Spaß machen – vielleicht sind sie nicht so schön anzusehen, tut uns leid, wir sind nun mal keine Grafiker doch wir haben eine Idee, eine Vision, ein Ziel. Und das lautet nicht so viel Kohle mit den Nutzern wie nur irgendwie möglich zu machen, sondern ein Spiel an den Mann zu bringen das sich lohnt zu Spielen.

Aus diesem Grund, JA es lohnt sich Hobbymäßig Browsergames zu entwickeln. Einerseits hat die Welt dann wieder Spiele die sich lohnen zu spielen, andererseits lernt man dabei sehr viel, da dieses „Geschäft“ sehr Facettenreich ist.

Browsergames – Welche Last verursachen diese?

23. Juni 2010 - Geschrieben von Martin - 4 Kommentare

Browsergames – jeder kennt eines, viele Spielen eines und so mancher hat selbst schon einmal eines Entwickelt. Doch welcher Aufwand ist es ein solches zu Entwickeln und wie Betreibe ich eines?

Welche Technik und Infrastruktur steckt hinter Browsergames?
Ein Browsergame ist im Grunde eine normale Webseite welche in PHP, Phyton, Perl oder sonst irgendeiner Programmiersprache Entwickelt sein könnte. Oft kommt dazu noch ein wenig JavaScript um es für den Nutzer ansprechender zu Gestalten.

Auf Serverseite sieht es auch meist gleich aus, es werkelt mindestens ein Linux Server mit der Verwenden Script Sprache und einer Datenbank, sowie einem Mailserver. Wird das Browsergame jedoch größer findet hier meist eine Trennung zwischen Web-, File-, Database- und Mail Server statt, da diese dann entsprechend optimiert und die Last somit besser verteilt werden kann.

Im Grunde ist das ganze bisher kein Hexenwerk, geht man aber ins Detail trifft einen der Schlag. Eine normale Webseite wird pro Besuch vielleicht 5 bis 10 mal aufgerufen, hierbei wird die Seite mit Menü und Konsorten aus einer Datenbank gelesen und falls das System schlau ist in einen Cache geschrieben. Bei einem Browsergame hingegen kann nichts gecached werden, da alles Dynamisch für den Spieler aufbereitet wird.

In Zahlen, eine Webseite hat pro Besuch 5 bis 10 Requests. Ein Browsergame kann auch mit diesen 5 bis 10 Requests auskommen, doch dazu kommen noch die AJAX Abfragen, welche nahezu sekündlich ausgeführt werden. Nehmen wir einmal an es wird alle 5 Sekunden eine AJAX Abfrage ausgeführt, dann sind wir schon bei ganzen 12 Weiteren Abfragen pro Minute (Man beachte im Normalfall sind es noch einige mehr!) das würde bei einer Durchschnitts Onlinezeit von 15 Minuten ganze 180 Requests ausmachen!

Wie optimiere ich meinen Server?
Gehen wir mal davon aus, das das Spiel perfekt auf die vielen Requests ausgelegt ist. Was kann man dann auf der Server Seite machen?

Einen kleinen schnellen Webserver verwenden, ich empfehle an dieser Stelle Lighttpd, welcher aus meiner Sicht sich für ein solche Unterfangen wesentlich besser eignet als Apache(2). In der Konfigurationsdatei können unter anderem auch diverse Module wie „webdav“, „rewrite“ und falls es nicht benötigt wird das Modul „accesslog“ deaktiviert werden. Je nach Bedürfnis können natürlich Module ein- bzw. abgeschaltet werden, allerdings sollte die Liste der aktiven immer so kurz wie möglich gehalten werden.

Seitens der Scriptsprache. Da hier keine explizit festgelegt wurde, an dieser Stelle nur einige allgemeine Hinweise. In den jeweiligen Konfigurationsdateien gibt es oft eine Reihe an Parametern, mit denen man Funktionen abschalten kann, welche nicht unbedingt benötigt werden, beispielsweise, das im Header gesendet wird, das diese Seite mit PHP Version 5.3.x erstellt wurde. Tipps gibt es in einschlägigen Webseiten, Foren und Blogs.

So wenig Dienste als möglich! Das sagt eigentlich schon alles, im Hintergrund sollte keine Sinnlosen Dienste wir FTP laufen, wenn diese gar nicht benötigt werden. Sollte es der Fall sein, das man einen dieser Dienste benötigt, einfach schnell via SSH einloggen und nach nicht einmal 10 Sekunden läuft der Dienst.

Gute Hardware ist die halbe Miete. Nicht nur Zuhause beim Entwickeln, auch Online erspart gute Hardware viele Schlaflose Nächte, in denen der Server überlastet ist oder sich aufgehängt hat. Ich empfehle so viel RAM wie möglich und einen Schnellen CPU.

Fazit
Browsergames sind wahre Ressourcenfresser, doch mit der richtigen Hardware, den Perfekten Einstellungen und natürlich Sauber und Performant geschriebenen Quellcode steht dem Spaß nichts mehr im Wege.

15. Mai 2010

Multi Accounts aufdecken

15. Mai 2010 - Geschrieben von Martin - 2 Kommentare

Heute geht für einen Leser ein Wunsch in Erfüllung. Viel Spaß beim lesen. Falls du dir auch einen Beitrag wünschen willst, schreib mir eine eMail.

Betreiber von Onlinespielen sowie Chats sind immer auf der suche nach sogenannten Doppel- oder Multi-Accounts, das sind Benutzer, die sich öfter auf einer Plattform wie einem Browsergame anmelden um dadurch Vorteile zu erhalten.

Das man sich dabei nicht nur auf sein Gespür verlassen sollte sollte natürlich auch klar sein, darum was kann man machen, damit solche User von vornherein keine Chance haben? Mit ist das sofort eine IP Sperre in den Sinn gekommen, gesagt getan, ich habe meine bestehenden IP Felder – welche die IP Adresse des letzten Logins beinhält – beim Login des Spielers nach seiner IP Adresse abgesucht und wenn sich ein User binnen weniger Stunden öfter als ein mal eingeloggt hat, hab ich ihm den Login untersagt.

Folgendermaßen sieht mein Script aus:

// IP Adresse vom User holen
$ip = $_SERVER['REMOTE_ADDR'];
// die Zeit ab der nach gleichen IPs gesucht wird
$time = time() - 24*60*60;
// nun kann die IP Adresse im users Table gespeichert werden
mysql_query("UPDATE users SET ip = '".$ip."' WHERE userid = '".$userid."'");
// nun können wir prüfen ob andere Benutzer mit dieser IP vorhanden sind
$count = mysql_num_rows("SELECT userid FROM users WHERE ip = '".$ip."' AND last_login > '".$time."'");
if($count > 1)
{
   die('TO MUCH USERS PER IP!');
}

(Geschrieben in PHP)
Dies wäre nun die Brutale Lösung (Kann allerdings durch zusätzliche Filter wie z.B. Punkte entschärft werden), welche alle Multi Account Spieler Aussperrt. Das kann allerdings auch negative Nebeneffekte haben, und zwar können so Familien, Wohngemeinschaften und Büros diese Seite nicht mehr nutzen, da dort alle über einen Internet Anschluss ins Internet gehen und somit eine IP Adresse haben.

Deswegen empfehle ich solange sich der dadurch entstandene Schaden der durch solche Doppelaccounts entsteht in Grenzen hält erst ein mal ein Script zu schreiben, welches alle Doppelaccountspieler auflistet, um diese explizit zu befragen oder ihre Accounts zu überprüfen.

Folgendermaßen hab ich das einmal für ein Mafia Browsergame gemacht:

$query = mysql_query("SELECT ip, userid, username FROM users");
while($users = mysql_fetch_array($query))
{
  // nun gehen wir alle user nach und nach durch
  // falls auch hier ein Zeitlimit benötigt wird, kann das von oben übernommen werden
  $count = mysql_num_rows("SELECT userid FROM users WHERE ip = '".$users['ip']."'");
  if($count > 1)
  {
    // nun da es ja offensichtlich ein Multiaccount Spieler ist, wird er ausgegeben
    // wenn gewünscht könnte man auch in diesem Schritt Informationen zu den
    // gespielten Accounts holen, allerdings würde das dieses Beispiel sprengen
    echo $users['username'] - $users['ip'];
  }
}

(Geschrieben in PHP)

Nun haben wir 2 Möglichkeiten in Betracht gezogen wie man mit Doppelaccounts fertig wird. Ich hoffe sie finden Anklang, und Helfen den Admins bei ihrer Täglichen Arbeit.

5. Januar 2010

Litotex BrowsergameEngine

5. Januar 2010 - Geschrieben von XxDennisxX - 6 Kommentare

Litotex, erreichbar unter http://litotex.de, ist eine OpenSource GameEngine, die vom FreeBG-Team entwickelt wird. Die Vorgängerversion ist auch unter dem Namen „Landkampf Lite“ bekannt, die ursprünglich vom Browsergame Landkampf, http://landkampf.net, entstammt. Wie bereits erwähnt ist der Quellcode unter der GNU General Public License v. 3 stehend OpenSource.

Funktionalität
Das FreeBG-Team ist bemüht, die GameEngine soweit wie möglich neutral zu halten. Manche Module eignen sich hierfür besser, andere wiederum schlechter. Doch Ziel des Projektes ist es, sich auf kein bestimmtes Genre zu fixieren.

Grundgelegene Funktionen:

  • 4 unterschiedliche Rassen, mit jeweils unterschiedlichen Gebäudearten, Funktionen, Kampfeinheiten und natürlich verschiedenen Parametern (z.B.: Bauzeit, Kampfstärke,..)
  • zur Zeit in 2 Sprachen verfügbar (Deutsch/Englisch)
  • in ACP erleichtert die Verwaltung des Spiels (z.B.: Einheiten-, Forschungs- & Gebäudeeditor)
  • Allianzsystem mit integriertem Forum
  • IGM
  • dynamisches Kampfsystem
  • Bauschleife für die Einheiten

Allerdings werden von Seiten der Entwickler weder für Gebäude, noch für Kampfeinheiten Bilder angeboten. Falls Interesse besteht, können diese gegen Entgeld von einem Grafiker erstellt werden (Icons, Kampffeld, Karte,…).

Entwicklung
Natürlich bietet das Team im Entwicklerforum Support für alle Anfragen, die ihre GameEngine betreffen. Modifikationen dritter Hand, die von fremden Anwendern programmiert und veröffentlich werden, werden nach unserer Überprüfung natürlich auf Wunsch eingebaut oder zum Download angeboten. Seit der Version 0.7 unterstützt Litotex auch Module, welche durch eine integrierte Modul Schnittstelle installiert werden können.

Systemvoraussetzung

  • Webspace mit FTP Zugriff
  • PHP ab Version 4.0
  • Eine MySQL Datenbank ab Version 3.5x
  • Folgende PHP Konfigurationen:
  • register_globals On/Off
  • safe_Mode Off

Bewertung
Dafür das Litotex noch in Kinderschuhen steckt, macht es bisher schon einen Sehr guten Eindruck, es wird zwar nach wie vor von einem Starken Strategiegenre geprägt, allerdings lässt sich dies durch das neue Modul System ausmerzen.
Auch wir werden uns auf kommende Versionen von Litotex freuen.