"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

[JAVA] Client - Server System für Onlinespiel

vossi 05.02.2004 - 01:38 956 10
Posts

vossi

been there, done that
Avatar
Registered: Feb 2003
Location: Vienna
Posts: 1436
Ich habe vor als kleines Projekt in Java 4 gewinnt über Internet (Java Applets) gegeneinander spielen zu lassen aber so sicher als möglich.

Vorher dachte ich einfach die Applets auf die MySQL datenbank zugreifen zu lassen wobei hier ein problem liegt da diese Applets ja irrsinnig leicht zu decompilieren sind.

Jetzt wüsste ich gerne ob jemand schon eine sinnvolle und erprobte weise kennt sowas zu realisieren bzw. den Applet Code so zu verschlüsseln das niemand mehr auf die MySQL User Daten kommt alternativ dachte ich daran am Server ein Java Programm laufen zu lassen das ganz normal mit dem Applet kommuniziert wobei hier aber das Problem des mehraufwandes ist immer eine gültige Session ID zu haben und alle Befehle abstimmen zu müssen.

Ich hoffe ihr habt sinnvolle Ideen die mir vielleicht hier weiterhelfen da diese Entscheidung ja doch sehr grundlegend für das Projekt ist.

crashman

OC Addicted
Avatar
Registered: Oct 2001
Location: Vienna
Posts: 891
mh warum mysql als verbindendes element zwischen den applets ?
Kann mir das net ganz vorstellen??
aber mit rmi sollte das kein problem sein falls keine ärgeren firewalls zwischen den clients sind. Wenn ja wirst du wohl rpc händisch machen müssen.

Sir_Gunslinger

Bloody Newbie
Registered: Sep 2003
Location: Vienna
Posts: 23
eine TCP connection wär auch ne Alternative....;)

vossi

been there, done that
Avatar
Registered: Feb 2003
Location: Vienna
Posts: 1436
naja mysql deshalb weil auf dem server die ergebnisse gespeichert werden müssen

crashman

OC Addicted
Avatar
Registered: Oct 2001
Location: Vienna
Posts: 891
Zitat von vossi
naja mysql deshalb weil auf dem server die ergebnisse gespeichert werden müssen

naja ist das net mit kanonen auf spatzen schiessen??
Ich würd das eher in einer Datenstruktur in der Serverklasse speichern die beim runterfahren des server serialisiert gespeichert wird.

vossi

been there, done that
Avatar
Registered: Feb 2003
Location: Vienna
Posts: 1436
nein ist es absolut nicht .. das ganze wird per klein gemacht und sollte dann schon 200-500 leute gleichzeitig aushalten .. der server wird NIE heruntergefahren

gue

Addicted
Avatar
Registered: Feb 2003
Location: Linz
Posts: 400
Also ich würde das Konzept von crashman empfehlen: Du lässt einen zentralen Server rennen und die Applets kontaktieren diesen dann mittels RMI oder einer selbst implementierten Schnittstelle (wobei aber RMI zwecks Einfachheit zu empfehlen ist). Der Server wertet die Daten aus und kann die Ergebnisse in die Datenbank schreiben. Das hat auch den Vorteil, dass Cheaten so gut wie unmöglich ist ;) und dass die Applets nicht auf die Datenbank zugreifen müssen, sondern nur die im Server implementierte Logik.

Der Server könnte zB die Schnittstellen haben, dass ein neues Spiel aufgemacht wird, die Liste aller verfügbaren Spiele abgerufen wird und - wenn ein Spiel gestartet ist - dass ein Spieler seine Marke in eine Spalte reinwirft.

HTH

vossi

been there, done that
Avatar
Registered: Feb 2003
Location: Vienna
Posts: 1436
ja so dachte ich mir das auch danke .. nur würd ich die schnittstelle selber programmieren da ich RMI nicht kenne (bzw. nichtmal weiss was das ausgeschrieben bedeutet :p )

Ecraft

Here to stay
Registered: Mar 2002
Location:
Posts: 1096
RMI - Remote Method Invocation

du wirst es noch zu schätzen lernen (oder auch hassen :D)

tutorials gibts wie sand am meer, eines davon
http://java.sun.com/docs/books/tutorial/rmi/index.html

crashman

OC Addicted
Avatar
Registered: Oct 2001
Location: Vienna
Posts: 891
wenn du es mal "überrissen" hast kannst du in 5 minuten wirklich brauchbare client server gerüste erstellen.
Ein Problem ist halt nur daß es recht empfindlich auf firewalls reagiert.

atrox

in fairy dust... I trust!
Avatar
Registered: Sep 2002
Location: HTTP/1.1 404
Posts: 2782
rmi ist schon ein segen, mußt halt wegen der berechtigungen der VM aufpassen. eine alternative möglichkeit, währe ein "spiel"-objekt zu serializieren und per tcp zu übertragen.
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz