Autor Beitrag
Doomlittle
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 37

Win XP Home
D7 Prof
BeitragVerfasst: Sa 09.07.05 00:19 
Da sich meine Frage auf mehrere Themengebiete bezieht, wußte ich nicht so ganz in welche Kategorie ich diese posten soll. Allerdings bezieht sich das Ganze auf ein Onlinegame, was ich versuche zu programmieren und bin daher in diesem Forum wohl am Besten aufgehoben. Wenn nicht, bitte ich die Moderatoren dies zu verschieben.

Jetzt aber zu meinem Problem:

Es gibt derzeit relativ viele Browsergames, bei denen aber die (grafischen & funktionellen) Möglichkeiten bedingt durch Serverauslastung und Funktionalität von JS und HTML begrenzt sind. So versuche ich mich derzeit an einem Projekt, das ähnlich wie beim Browsergame mit Werten aus einer SQL Datenbank arbeitet.
Das Ziel soll es sein, ein Programm (sprich Client) zu erstellen, der sich mit dem Server / mit der Datenbank verbindet und so eine Interaktion mit anderen Benutzern möglich macht.

Ein erster Versuch mit der SQLConnection Komponente zeigte mir, dass dies nicht der richtige Weg sein kann - denn bei jedem Start des Clienten wird das Passwort für die SQL Tabelle abgefragt. Und der Benutzer soll sich ja lediglich in seinen Account einloggen können um dann ein paar Sachen durch Aktivitäten (Bauen, Forschen, Angreifen) zu ändern.

Ich bitte jetzt gar nicht um die große Code Hilfe sondern eine Idee bzw einen Hinweis diese Möglichkeit galant zu lösen. Welche Komponenten sind für eine derartige Lösung notwendig und auf welche Probleme kann man bei den Wegen stoßen.

Ein Danke im Vorraus.
Doomlittle


Moderiert von user profile iconmatze: Topic aus Multimedia / Spiele / Grafik verschoben am Sa 09.07.2005 um 10:45
Doomlittle Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 37

Win XP Home
D7 Prof
BeitragVerfasst: Sa 09.07.05 18:47 
Ich hab mich jetzt mal mittels Suche im Internet etwas weiter informiert. Der beste Weg scheint offensichtlich eine Webservice Variante zu sein. Das Tutorial dazu ist zwar recht aufschlußreich, aber wirklich weiter hilft es mir nicht. Dazu fehlt immer noch die SQL Verbindung im Webservice :?
Alstar
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 827



BeitragVerfasst: Sa 09.07.05 18:50 
Hallo!

Erstmal um das zu klären: Was willst Du jetzt programmieren? Ein Online-Browser-Game oder ein Online-Game als Win32-Anwendung?

Alstar
Doomlittle Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 37

Win XP Home
D7 Prof
BeitragVerfasst: Sa 09.07.05 19:09 
Hatte mir schon gedacht, dass so eine Frage kommt.

Das mit der Begriffserklärung ist etwas schwer, denn normalerweise spielt man solche Games ja über den Browser. Ich möchte jetzt anstatt HTML/PHP zu nutzen das Ganze über eine grafische, mit Delphi programmierte Oberfläche von der SQL Datenbank abfragen bzw Werte in sie eintragen. Kein Browsergame aber auch kein herkömmlicher Client wie bei World of Warcraft. Das aber direkt mit der SQL Datenbank zu verbinden geht nicht, weil man dann als Benutzer die DB Zugangsdaten wissen müßte - und das sollen die Benutzer ja nicht ;)
Deswegen jetzt mein Zusatz mit der "wahrscheinlichen" Lösung als Webservice.

Es ist etwas schwer zu erklären, wenn du eVo kennst weißt du vielleicht was ich meine.
Alstar
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 827



BeitragVerfasst: Sa 09.07.05 19:18 
Nein, kenne ich nicht, aber gut.

Es ist sowieso schwer von einer Anwendung auf eine SQL-Datenbank eines Webservers zuzugreifen, weil die das meißtens garnicht erlauben.
Aber, wenn Du so ein Game wirklich mit Delphi machen möchtest, kannst Du ja eine PHP-Seite erstellen, die Du dann mit Parametern aufrufst und die dir dann alles in die SQL-Datenbank einträgt oder ausgibt.
Lösen kannst Du das z.B. mit der Indy-HTTP-Komponente.

Beispiel: In der Tabelle X, in der Spalte Y soll der Wert Z eingetragen werden. Dann könnte man eine PHP-Site mit idHTTP aufrufen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
var
  back: TMemoryStream;
begin
  back := TMemoryStream.Create;
  idHTTP.Get('http://soundso.de/game/action.php?put=X;Y;Z', back);
  // Was machen, Auswerten etc
  back.Free;
end;


In "back" steht halt einfach der Quelltext der Site drin, die der Browser ausgegeben hätte. Die Programmierung des PHP-Skriptes überlasse ich dann mal dir :wink:

Alstar
Doomlittle Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 37

Win XP Home
D7 Prof
BeitragVerfasst: Sa 09.07.05 20:11 
Darum geht es ja gerade, ich möchte eigentlich gar nicht mit PHP arbeiten weil ich das eher schlecht als recht kann. Dann hätte ich nämlich auch direkt ein Browsergame im normalen Stil programmieren können :wink:
Alstar
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 827



BeitragVerfasst: Sa 09.07.05 20:16 
Ja. Aber wie gesagt: Du kannst meißtens von Appliktionen nicht aus SQL-Datenbanken zugreifen.
Aber du kannst auch bei nicht allen Webspace-Anbietern ein Webservice benutzen. Also ich würde dir schon raten mit PHP ein kleines Interface zu bauen und mit Delphi dann den Rest. Damit musst du so wenig wie möglich mit PHP arbeiten und kannst das meißte mit Delphi erledigen.

Alstar
Gekko
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 49

Win XP, Vista
Visual C# Express, Python Ruby
BeitragVerfasst: Sa 09.07.05 22:05 
user profile iconDoomlittle hat folgendes geschrieben:
Darum geht es ja gerade, ich möchte eigentlich gar nicht mit PHP arbeiten weil ich das eher schlecht als recht kann. Dann hätte ich nämlich auch direkt ein Browsergame im normalen Stil programmieren können :wink:

Die Programmiersprache ist hauptsächlich WURSCHT. Wenn Du vorhast ein derartig grosses Projekt durchzuführen, sollstest Du zumindest den Willen aufbringen JEDE Sprache zu erlernen, die du benötigen könntest. Nach dem Motto: kannst Du eine Sprache, kannst du auch alle anderen (solange du fähig bist die Doku zu lesen *g*).

Ein paar Gedanken meinerseits zu dem Thema:

Falls Du sowas wirklich realisieren willst kommst Du eigentlich nicht ohne einen eigenen Rechner rum, der direkt im Internet hängt, da Du so die grösstmögliche Flexibilität der Realisierung hast. Was aber vor allem bedenkt werden sollte ist, dass Du unbedingt abschätzen können musst, wie hoch der Traffic sein wird, da Du sonst schnell in finanzielle Schwierigkeiten kommen kannst (es gibt Leute, die spielen ununterbrochen Onlinegames *g*)

Womit wir schon beim Thema Sicherheit wären.
Wie realisierst Du die Verbindung zum Server? Ich denke mal, dass es üblicherweise so gemacht wird: Man sendet Daten an den Server, und der Server selbst (!!!) nimmt die Modifikationen an der Datenbank durch, generiert die notwendigen Daten für den Client und sendet die Daten anschliessen an den Client zurück, der diese dann in der GUI auswerten kann. Falls Du vorhast mit dem Client DIREKT an der Datenbank rumzupfuschen würde ich Dir raten das Ganze nochmal von vorne zu überdenken! Der Client sollte keine Chance haben zu sehen, wie die Daten verwertet werden, sonst hast du Hackorz, Skripties und Cheater am Hals.


Weitere Gedanken:

Lohnt es sich einen Rootserver hinzustellen?
Möchtest du das Spiel von Deinem eigenen Server hosten?

Wenn ja, schnapp Dir irgendeine Linuxdistribution (Debian z.B.), klinke Dich für 5 Jahre aus dem Internet aus und LERNE, LERNE, LERNE.
Ansonsten, bist DU derjenige, der vom Staat zur Rechneschaft gezogen wird, wenn über Deinen Server Kinderprnz verteilt werden! Und das will ja nun wirklich KEINER.

An Deiner Stelle würde ich auf alle Fälle Trockenübungen durchführen (installier auf einem Deiner Computer ein DBMS und eine Programmiersprache, die Client/Server kann - ich würde mal Perl empfehlen *g*) und danach vielleicht mit einigen Freunden in einem VPN Tests durchführen.

Yo, das waren nurmal die Gedanken, die mir hierzu schnell durch den Kopf geschossen sind.

Schau dir mal noch folgende Webseiten zur Referenz an:

www.hyperiums.com
die haben ein Webfrontend (mit Java Serverpages), und einen Javaclient. (sehr gut, kostet aber wenn man ordentlich mitzocken will)

www.spacenations.de
die haben nur ein Webfrontend, alles in Perl realisiert. (freies Spiel und VIEL VIEL besser als hyperiums *g*)

mfg, und happy coding, Gekko


Edit: nochwas solltest Du lernen, bevor Du anfängst: das Client/Server Protokoll sollte verschlüsselt sein ;)
Sniffen ist supereinfach, nur auswerten sollte es nicht sein!
Doomlittle Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 37

Win XP Home
D7 Prof
BeitragVerfasst: So 10.07.05 01:06 
user profile iconGekko hat folgendes geschrieben:
Die Programmiersprache ist hauptsächlich WURSCHT. Wenn Du vorhast ein derartig grosses Projekt durchzuführen, sollstest Du zumindest den Willen aufbringen JEDE Sprache zu erlernen, die du benötigen könntest. Nach dem Motto: kannst Du eine Sprache, kannst du auch alle anderen (solange du fähig bist die Doku zu lesen *g*).


Ich habe nie abgestritten, dass ich nicht den Willen besitze jede Möglichkeit zu nutzen um mein Projekt durchzuführen. Allerdings sehe ich nicht vor PHP zu benutzen, wenn es andere Wege gibt die mit meinen Fähigkeiten vereinbar sind. Wenn jemand Auto fahren will lernt er auch nicht Klavier spielen. ;)

Zitat:
Falls Du sowas wirklich realisieren willst kommst Du eigentlich nicht ohne einen eigenen Rechner rum, der direkt im Internet hängt, da Du so die grösstmögliche Flexibilität der Realisierung hast. Was aber vor allem bedenkt werden sollte ist, dass Du unbedingt abschätzen können musst, wie hoch der Traffic sein wird, da Du sonst schnell in finanzielle Schwierigkeiten kommen kannst (es gibt Leute, die spielen ununterbrochen Onlinegames *g*)


Ich kenne mich recht gut mit Traffickosten und Browsergames aus. Das Ganze soll ja nicht direkt für mehrere Tausend Leute an den Markt gehen sondern erst einmal als Trockentest auf meinem localhost laufen.


Zitat:
Womit wir schon beim Thema Sicherheit wären.
Wie realisierst Du die Verbindung zum Server? Ich denke mal, dass es üblicherweise so gemacht wird: Man sendet Daten an den Server, und der Server selbst (!!!) nimmt die Modifikationen an der Datenbank durch, generiert die notwendigen Daten für den Client und sendet die Daten anschliessen an den Client zurück, der diese dann in der GUI auswerten kann. Falls Du vorhast mit dem Client DIREKT an der Datenbank rumzupfuschen würde ich Dir raten das Ganze nochmal von vorne zu überdenken! Der Client sollte keine Chance haben zu sehen, wie die Daten verwertet werden, sonst hast du Hackorz, Skripties und Cheater am Hals.


Wie ich schon im zweiten Beitrag von mir sagte: Die Idee den Client direkt mit der Datenbank zu verbinden habe ich bereits überworfen, nicht nur aus dem von dir genannten Grund. Deswegen kam auch meine Frage nach der Webservice Benutzung auf.


Zitat:
Lohnt es sich einen Rootserver hinzustellen?
Möchtest du das Spiel von Deinem eigenen Server hosten?

Wenn ja, schnapp Dir irgendeine Linuxdistribution (Debian z.B.), klinke Dich für 5 Jahre aus dem Internet aus und LERNE, LERNE, LERNE.
Ansonsten, bist DU derjenige, der vom Staat zur Rechneschaft gezogen wird, wenn über Deinen Server Kinderprnz verteilt werden! Und das will ja nun wirklich KEINER.


Siehe oben, für einen Trockentest steht localhost zur Verfügung, mit neueren Programmen ala XAMPP braucht man nicht mal großartige Kenntnisse ;)

Zitat:
An Deiner Stelle würde ich auf alle Fälle Trockenübungen durchführen (installier auf einem Deiner Computer ein DBMS und eine Programmiersprache, die Client/Server kann - ich würde mal Perl empfehlen *g*) und danach vielleicht mit einigen Freunden in einem VPN Tests durchführen.


Einem deiner Computer *grins* Ich gehöre noch zu den Leuten, die lediglich einen PC + ein Notebook besitzen ;)
Auf meinem PC läuft zur Zeit Apache mit MySQL (bei XAMPP mitgeliefert *g*). Warum ich jetzt aber eine neue Programmiersprache lernen soll wenn es mit Delphi auch gehen muss/sollte, versteh ich nicht. Ich setze mich erst gerne mit der einen Möglichkeit auseinander bevor ich mich mit einer anderen abgebe :)

Zitat:
Yo, das waren nurmal die Gedanken, die mir hierzu schnell durch den Kopf geschossen sind.


Dafür danke ich dir auch, allerdings bin ich meiner Frage ob und wie so etwas mit Delphi realisierbar ist kein Stück weiter :D
Gekko
ontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic starofftopic star
Beiträge: 49

Win XP, Vista
Visual C# Express, Python Ruby
BeitragVerfasst: So 10.07.05 02:46 
Mittels Apache und CGI auf Windows könntest Du es versuchen (da Du ja eh XAMPP zum rumprobieren hast). Vielleicht findest Du einige Tutorials, die erklären, wie das mit Delphi geht (Google spuckte z.B. folgende interessante Seite aus tothpaul.free.fr/uscgi.htm).
Dann verwendest du quasi ,statt PHP oder Perl, Delphi um HTML zu senden.
Schwuppdiwupp, und Du hast schon ein Webinterface.

Für ein Webservice und Webclient stöber mal da rum: www.dsdt.info/tutorials/index.php?cat=7.
Das hier fand ich beim Googlen auch ganz lustig: www.dsdt.info/tipps/index.php?id=598 8).

lg, Gekko