Du bist nicht angemeldet.

Werbeanzeige

infusion93

Frischling

  • »infusion93« ist der Autor dieses Themas

Beiträge: 19

Wohnort: Frankfurt

Beruf: Informatikstudent

  • Private Nachricht senden

1

09.05.2015, 14:30

Welche Serversprache und welches Protokoll

Hallo liebe Community,
ich habe schon viel Erfahrung mit der Programmierung von Offline-Games gemacht. Nun möchte ich ein erstes Onlinespiel programmieren.
Hierbei soll es nicht auf Echtzeit ankommen, da es sich nicht um ein MMO oder ähnliches handelt, sondern lediglich Highscores, Freundeslisten, etc. synchronisiert werden. Die Daten sollten aber dennoch sicher ankommen, sie sollten also nicht "refused" werden, wenn gerade ein paar andere Anfragen auf dem Server liegen.
Der Client ist hierbei ein Smartphone, der Server läuft mit Linux. Nun frage ich mich, wie das Smartphone mit dem Server kommunizieren soll.
Zum einen gibt es ja die Möglichkeit, auf dem Server mit Java einen ServerSocket zu erstellen und dort auf einem Port "listen" bis ein Client ankommt und man diesen "accepted". Hier ist aber eine Grenze von 50 Clients auf einmal gesetzt, wenn ein weiterer Client ankommt, wird dieser "refused".
Zum anderen kann man mit HTTP-Requests via GET oder POST mit PHP kommunizieren. PHP ist aber nicht die sicherste Sprache und die Syntax ist auch gewöhnungsbedürftig.
Wenn es um Performance gehen soll, dann wäre sicherlich C/C++ eine gute Wahl.
Wie machen es denn andere Spieleentwickler? Wichtig ist noch, dass ich mit einer Datenbank arbeiten will, MySQL wäre hierbei gut geeignet für PHP und z.B. SQLite wäre gut geeignet für Java/C++.
Also: Welche Sprache? Welches Protokoll? (Welche Verschlüsselung?) Welche Datenbank?
Mit freundlichem Gruß:
Marcel Gebhardt

birdfreeyahoo

Alter Hase

Beiträge: 766

Wohnort: Schorndorf

Beruf: Junior Software Engineer

  • Private Nachricht senden

2

09.05.2015, 16:34

Also wenn es nur um Highscores und Achievements geht, bietet Google Play dir entsprechende Dienste schon an (und damit auch Server).
Du könntest doch mehrere Server laufen lassen (also auf einem physikalischen Server), ich meine mehrere Anwendungen, die auf verschiedenen Ports sind.
Du routest dann die Clients immer auf den richtigen Port, der noch frei ist und kannst Server dann auch beliebig runterfahren und starten, je nach Bedarf.

Musst halt schauen, dass es von der Performance passt.

Nimelrian

Alter Hase

Beiträge: 1 260

Beruf: Softwareentwickler (aktuell Web/Node); Freiberuflicher Google Proxy

  • Private Nachricht senden

3

09.05.2015, 16:38

(Eben im falschen Thread gepostet... wie peinlich)

Hi,

ich persönlich habe noch keine praktische Erfahrung mit der Nutzung von Datenbanken direkt aus Apps heraus, dennoch ein paar Einschätzungen meinerseits.
  • SQLite ist für mich eher ein DBMS für lokale Datenbanken. Firefox nutzt SQLite afaik für Cookies. Wenn du Einstellungen deiner App oder Highscores lokal abspeichern willst, würde ich zu SQLite greifen, aber darum geht es dir ja nicht.
  • MySQL mag ich persönlich nicht. Wieso? Nur ein paar Beispiele
  • MariaDB nutze ich, wenn ich eigentlich MySQL nutzen sollte/könnte/müsste. MariaDB ist OpenSource und wird unter anderem von den originalen MySQL-Devs gepflegt. Außerdem ist es ein Fork von MySQL, daher kann man eine MySQL DB normalerweise ohne Probleme durch eine MariaDB ersetzen.
  • PostgreSQL ist aktuell groß im Kommen. Ist eventuell auch einen Blick wert.

Nur eine kleine erste Einschätzung.
Ich bin kein UserSideGoogleProxy. Und nein, dieses Forum ist kein UserSideGoogleProxyAbstractFactorySingleton.

H5::

Treue Seele

Beiträge: 385

Wohnort: Kiel

  • Private Nachricht senden

4

09.05.2015, 17:48

Wir benutzen Serverseitig Go, jedoch erstellen wir keine Spiele. Die Sprache ist sicher nichts für jeden, aber ich habe sie wegen ihrer Einfachheit und Standard Library sehr lieben gelernt. Aus unerfindlichen Gründen mag ich aber auch Google Produkte.
:love: := Go;

infusion93

Frischling

  • »infusion93« ist der Autor dieses Themas

Beiträge: 19

Wohnort: Frankfurt

Beruf: Informatikstudent

  • Private Nachricht senden

5

09.05.2015, 19:28

Also wenn es nur um Highscores und Achievements geht, bietet Google Play dir entsprechende Dienste schon an (und damit auch Server).
Ich möchte ja eine plattformunabhängige Datenbank haben (iOS, Android, WP), das lässt sich so nicht mit Google Diensten lösen.
Du routest dann die Clients immer auf den richtigen Port, der noch frei ist und kannst Server dann auch beliebig runterfahren und starten, je nach Bedarf.
Clientseitig kann ich ja in einen Timeout reinlaufen und es dann über einen anderen Port probieren, aber wie löse ich das ganze serverseitig? Über weitere Threads? Wird das nicht die Performance ordentlich herunterschrauben?
PostgreSQL ist aktuell groß im Kommen. Ist eventuell auch einen Blick wert.
Vielen Dank, habe schon davon gehört, diesem aber noch keinerlei Aufmerksamkeit geschenkt. Ich werde mir das mal genauer anschauen :D
Wir benutzen Serverseitig Go, jedoch erstellen wir keine Spiele.
Okay, ich sehe die Sprache spezialisiert sich auf Nebenläufigkeit, das ist für Server immer gut zu gebrauchen. Wie sieht es mit Datenbankkompatibilitäten aus? Ich habe auf die Schnelle nichts viel dazu gefunden. :huh:

Vielen Dank schonmal für die Antworten ^^

xardias

Community-Fossil

Beiträge: 2 772

Wohnort: Santa Clara, CA

Beruf: Software Engineer

  • Private Nachricht senden

6

09.05.2015, 20:03

Vielleicht waere AppEngine etwas fuer dich? https://cloud.google.com/appengine/docs
Vorteil waere, dass man sich um Skalierung keine grossen Gedanken mehr machen muss. Die API ist auch sehr nett und ne gute Gelegenheit mal was mit Go zu programmieren :)
Nachteil ist, dass man ziemlich an die Platform gebunden ist und nicht so einfach wechseln kann.

Julién

Alter Hase

Beiträge: 725

Wohnort: Bayreuth

Beruf: Student | Hilfswissenschaftler in der Robotik

  • Private Nachricht senden

7

09.05.2015, 21:53

Mir hat persönlich Python (Stackless Python !!! ) zugesagt. Es ist einfach, funktional und vertrauenswürdig.
Nur wenn du PHP schon komisch findest, dann wirst du von Python überrascht sein, was für Syntaxmöglichkeiten es denn gibt,
I write my own game engines because if I'm going to live in buggy crappy filth, I want it to me my own - Ron Gilbert

infusion93

Frischling

  • »infusion93« ist der Autor dieses Themas

Beiträge: 19

Wohnort: Frankfurt

Beruf: Informatikstudent

  • Private Nachricht senden

8

09.05.2015, 22:41

Mir hat persönlich Python (Stackless Python !!! ) zugesagt. Es ist einfach, funktional und vertrauenswürdig.
Nur wenn du PHP schon komisch findest, dann wirst du von Python überrascht sein, was für Syntaxmöglichkeiten es denn gibt,
Mit Python habe ich mich auch schon auseinandergesetzt, sollte ich hierbei auf HTTP-Requests oder auf Sockets setzen? Kann man mit Python überhaupt auf einem Port lauschen?

Vielleicht waere AppEngine etwas fuer dich? https://cloud.google.com/appengine/docs
Vorteil waere, dass man sich um Skalierung keine grossen Gedanken mehr machen muss. Die API ist auch sehr nett und ne gute Gelegenheit mal was mit Go zu programmieren :)
Nachteil ist, dass man ziemlich an die Platform gebunden ist und nicht so einfach wechseln kann.
Ja, der Nachteil reicht, um diese Idee auszuschließen, ich möchte nämlich auch auf iOS und Windows Phone setzen.

Julién

Alter Hase

Beiträge: 725

Wohnort: Bayreuth

Beruf: Student | Hilfswissenschaftler in der Robotik

  • Private Nachricht senden

9

09.05.2015, 23:23

Python is life. Python is everything.

Du kannst mit Python sogar eigene Protokolle einführen,
wenn dir HTTP zuwider ist, aber ich würde dir abraten, da HTTP und Derivaten meist gut durchdachte Protokolle sind.
I write my own game engines because if I'm going to live in buggy crappy filth, I want it to me my own - Ron Gilbert

Stazer

Alter Hase

Beiträge: 468

Wohnort: Berlin

Beruf: Student

  • Private Nachricht senden

10

10.05.2015, 09:38

Kommt für mich auch immer darauf an wie schnell das ganze entwickelt werden soll. Ich kenne AppEngine nicht, aber wenn du kaum Zeit hast, nimm einfach HTTP. Ob Du dann PHP oder Python (du kannst auch javascript nehmen) ist dir überlassen.

Werbeanzeige