Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Anfängerproblem: Möchte ein Online Spiel programmieren! (https://www.delphipraxis.net/108826-anfaengerproblem-moechte-ein-online-spiel-programmieren.html)

gangstarjoe 20. Feb 2008 07:46


Anfängerproblem: Möchte ein Online Spiel programmieren!
 
Hallöchen zusammen,
ich bitte hier einfach mal um Hilfe: Ich möchte ein Online-Multiplayer-Spiel programmieren. (nix aufwängides, nur ein Kartenspiel)
Eins kurz vorweg: Ich habe noch NIE irgendetwas programmiert, was über Oberstufenwissen hinaus geht! Ich studiere zwar Informatik *Hust*, aber mit WinControl etc. musste ich noch nie etwas machen. Sprich ich weiß überhaupt nicht, wie Delphi mit anderen Anwendungen und Windows kommunizieren kann. Ich hoffe auch, dass ihr mir nicht böse seid, wenn ich irgendetwas frage, was schon 100 andere gefragt haben... ich habe zwar recherchiert, aber mein Vorwissen hat in den seltensten Fällen ausgereicht, um mir einen Reim draus zu machen.

Also gut...

(1) Wie kann ich überhaupt über das Internet eine Verbindung zu einem anderen Rechner via Delphi bekommen?
(2) Ich habe da mal was von TServer/ClientSockets und Indy TCP gelesen, kann damit aber überhaupt nichts anfangen! Was ist das?
(3) Wie realisiere ich, dass irgendjemand Host und ein anderer Client ist?
(4) Wie tausche ich Daten zwischen Server und Host? Wie stelle ich sicher, dass die "richtigen" und alle Daten gesendet wurden?
(5) Was muss ich beachten, wenn ich hinter einem Router sitze? (firewall, forwarding...)
(6) Wie steht es mit Sicherheit? Kann so eine Online-Verbindung für "böse Zwecke" ausgebeutet werden?

Wäre ECHT TOLL, wenn mir jemand helfen würde !! Danke im Vorraus!
Gruß, gangstah

P.S. Ich nutze Delphi 7 Personal.

hoika 20. Feb 2008 07:55

Re: Anfängerproblem: Möchte ein Online Spiel programmieren!
 
Hallo,

(1) - (4)
Indy, das ist eine Komponentensammlung fürs Internet.
Das wirklich gute sind die Beispiele.
Es gibt z.B. eines für Client-Server (Host-Client).

Es gibt hier auch eine Bsp.-Videos,
die z.B. die Nutzung von Indy demonstrieren.
(bei den Turbo-Beispielen)


Heiko

Nuclear-Ping 20. Feb 2008 09:08

Re: Anfängerproblem: Möchte ein Online Spiel programmieren!
 
Vielleicht erstmal was kleines anfangen? "Hallo Welt"-Programme in verschiedensten Variationen sind sehr beliebt beim Einstieg in eine neue / andere Sprache. ;)

Sorry, wenn das vielleicht etwas sarkastisch klingt. Aber "Ich habe noch NIE irgendetwas programmiert, [...]" und dann gleich "ein Online-Multiplayer-Spiel"?

Störtebeker 20. Feb 2008 10:13

Re: Anfängerproblem: Möchte ein Online Spiel programmieren!
 
Also, erstmal ein herzliches Willkommen hier in der DP.
(Hat man bisher wohl vergessen)

:dp:

Ich weiß zwar nicht, mit welchen Programmiersprachen du schon gearbeitet hast, und wie weit dein Grundwissen bzgl Delphi aussieht, aber falls es deine ersten Erfahrungen mit Delphi sind, würde ich Nuclear-Ping recht geben, dass du dich halt erstmal mit der Umgebung von Delphi vertraut machst und dich langsam immer weiter reinarbeitest. So ein Online-Game ist schon ein "etwas" aufwenigeres Projekt, da bei sowas schon ein paar Sachen beachtet werden müssen.

MfG
Störtebeker

OregonGhost 20. Feb 2008 10:21

Re: Anfängerproblem: Möchte ein Online Spiel programmieren!
 
Bei so etwas speziellem wie einem Kartenspiel hast du außerdem die Möglichkeit, zunächst einmal eine Nicht-Multiplayer-fähige Version zu erstellen und dich in diesem Zuge mit Delphi und Windows vertraut zu machen. Wenn das dann alles rund läuft, kannst du immer noch den Multiplayer-Modus einbauen. Nimm dir nicht zuviel auf einmal vor, daran scheitern die meisten Projekte, ganz besonders Anfängerprojekte.

gangstarjoe 21. Feb 2008 10:38

Re: Anfängerproblem: Möchte ein Online Spiel programmieren!
 
Erstmal Danke für die schnellen und freundlichen Antworten !

Also ein normales (offline) Spiel zu programmieren sollte nicht sonderlich schwer sein. Mit der Delphi-Umgebung bin ich auch einigermaßen vertraut. Es ist schon so, dass ich sie das ein oder andere Mal für kleinere Projekte (mehr als 1000 Zeilen) benutzt habe. Der Punkt ist nur, dass ich bislang bei jedem Projekt innerhalb einer einzigen "Form" geblieben bin, da die Kernstücke irgendwelche Algorithmen und Funktionen waren.

Was mir aber gänzlich fehlt, ist eben das Wissen darüber, wie man in Delphi auf Dinge außerhalb einer "Form" zugreift (etwa: Zugriff auf Excel Datenbanken, Auslesen von Emails, Netzwerk, usw..).

Deshalb habe ich auch diese ganzen Fragen einmal gestellt, weil mir der Umgang mit (für mich) neuen Tools meistens deutlich leichter fällt, wenn ich das Prinzip dahinter verstehe bzw. weiß, was Delphi eigentlich macht und wodrauf man aufpassen muss. Entscheidend ist da für mich zum Beispiel auch der Punkt Router: Ich sehe im Moment nicht, wie Delphi da durchkommen will, aber das mag auch daran liegen, dass ich keine wirkliche Ahnung habe, wie das TCP/IP Protokoll arbeitet.

Wäre super, wenn mir jemand ein bisschen Theorie dahinter erklären könnte!

Danke soweit, Gruß an alle,
gangstah.

gangstarjoe 21. Feb 2008 17:09

Re: Anfängerproblem: Möchte ein Online Spiel programmieren!
 
***update***

So ich hab mir jetzt mal Indy installiert und komme __ÜBERHAUPT NICHT__ zurecht ! Ich hab mir die Version 10.xx für Delphi 7 runtergeladen und beim Installieren gabs auch keine Fehler. Aber sobald ich irgendwas mit Indy versuche, kommt sofort, dass er irgendeine *.pas Datei nicht gefunden hat. Die habe ich dann im "/Programme/Indy 10 für Delphi 7/" Verzeichnis irgendwo gefunden. Dann kannte er irgendwelche Klassen nicht, obwohl ich in den "uses" alles benutze (IdBaseComponent, IdComponent, IdTCPConnection,
IdTCPClient, IdHTTP).

Die angesprochenen Demos finde ich übrigens nirgendwo. Die, die man runterladen kann, produzieren bei mir Fehler wie oben und im "Demos" Verzeichnis sind keine. Kann mir da mal jemand ein paar Sachen zu erklären? Ich komme nämlich überhaupt nicht weiter!!

generic 22. Feb 2008 08:32

Re: Anfängerproblem: Möchte ein Online Spiel programmieren!
 
Vieleicht solltest du die Pfade deiner IDE bekannt geben?

Projekt / Optionen / Verzeichnisse

Oder globaler unter Tools / Optionen

hast du dich auch genau an die Installationsanleitung von den Indykomponenten gehalten?

gizzy 22. Feb 2008 16:15

Re: Anfängerproblem: Möchte ein Online Spiel programmieren!
 
Zitat:

Zitat von gangstarjoe
***update***

So ich hab mir jetzt mal Indy installiert und komme __ÜBERHAUPT NICHT__ zurecht ! Ich hab mir die Version 10.xx für Delphi 7 runtergeladen und beim Installieren gabs auch keine Fehler. Aber sobald ich irgendwas mit Indy versuche, kommt sofort, dass er irgendeine *.pas Datei nicht gefunden hat. Die habe ich dann im "/Programme/Indy 10 für Delphi 7/" Verzeichnis irgendwo gefunden. Dann kannte er irgendwelche Klassen nicht, obwohl ich in den "uses" alles benutze (IdBaseComponent, IdComponent, IdTCPConnection,
IdTCPClient, IdHTTP).

Die angesprochenen Demos finde ich übrigens nirgendwo. Die, die man runterladen kann, produzieren bei mir Fehler wie oben und im "Demos" Verzeichnis sind keine. Kann mir da mal jemand ein paar Sachen zu erklären? Ich komme nämlich überhaupt nicht weiter!!

Vielleicht hättest du dir vorher erst mal die Stabile 9er Version runterladen sollen. Das es Probleme beim Installieren gibt ist nicht selten.
Grundvoraussetzung ist das du dein Delphi 7 ordnungsgemäß Installiert hast. Und alle Einträge in der Regestrierung vorhanden sind!
Dann müsste eigentlich alles funktionieren.
Wichtig ist natürlich das du dir das richtige Indy raussuchst.

Vielleicht deinstallierst du nochmal Indy und installierst es unter den oben genannten Umständen wieder.

Viele Grüße

gangstarjoe 24. Feb 2008 00:23

Re: Anfängerproblem: Möchte ein Online Spiel programmieren!
 
Hm, Indy funktioniert jetzt eigentlich. Im Moment ist mein Problem folgendes:
http://forum.delphi-treff.de/showthr...381#post165381

opfer.der.genauigkeit 24. Feb 2008 12:28

Re: Anfängerproblem: Möchte ein Online Spiel programmieren!
 
Deine Fehlermeldung findest du hier.
Ansonsten schau doch mal für ein wirklich simples Beispiel hier nach.

MfG

gangstarjoe 24. Feb 2008 16:22

Re: Anfängerproblem: Möchte ein Online Spiel programmieren!
 
Also zunächst mal Danke an alle, die noch bestrebt sind, mir zu helfen.

Aber ich kann mir jetzt noch so viele "einfache Beispiele" angucken wie ich will... Solange niemand in der Lage ist, mir zu sagen, was an meinem total banalen Programm ( http://forum.delphi-treff.de/showthr...381#post165381 ), was noch viel einfacher ist als jedes Beispiel, falsch ist, komme ich keinen Millimeter weiter. Ich bin jetzt auch ziemlich kurz davor, das ganze auf sich beruhen zu lassen... Ich meine, was bringt mir diese sche*** Indy-Komponente, wenn es da scheinbar schon die Königsdisziplin ist, zwischen Server und Client Textnachrichten zu tauchen und umgekehrt. (und das einzige was ich versuche ist ja, dem Clienten die Zahlen von 1 bis 15 als Strings zu senden)

Wie in dem Forum Link von "Opfer-der-Genauigkeit" scheint bei mir das Problem auch bei dieser "ReadLn" bzw "WriteLn" Funktion zu liegen. Mehr kann ich dazu aber nicht sagen, weil ich ein totaler Neuling bin und keine Ahnung habe, wie die beiden Funktionen arbeiten. Was ich auch nicht verstehe, ist wo der Sinn der Indy-Komponente liegt, wenn man dann sowas wie "Memo1.Lines.add(Connection.IOHandler.ReadLn)" nicht benutzen kann, weil man "im Leben manchmal Pech hat".

Außerdem weiß ich immernoch nicht, wann dieses OnExecute aufgerufen wird... Ach das ist doch alles ****....

Naja falls noch jemand sieht, wie man mein Problem löst, wäre ich sehr dankbar.

Gruß,
gangstah

Prototypjack 24. Feb 2008 18:30

Re: Anfängerproblem: Möchte ein Online Spiel programmieren!
 
Zitat:

Zitat von gangstarjoe
Außerdem weiß ich immernoch nicht, wann dieses OnExecute aufgerufen wird... Ach das ist doch alles ****....

Naja falls noch jemand sieht, wie man mein Problem löst, wäre ich sehr dankbar.

Zu Indy gibt/gab es (zumindest zu dem Zeitpunkt als ich damit einmal das Vergnügen hatte), ein sehr detaillierte Hilfe (ich kann natürlich nicht das gesamte Dokument beurteilen, aber meine Fragen wurden absolut ausreichend beantwortet). Suche dir einfach die passende Seite (zu OnExecute), dort sollte stehen, ab welchem Zeitpunkt dieses Event aufgerufen wird und auch aus welchem Grund.

Zitat:

Zitat von gangstarjoe --> Delphi-Treff
Hat jemand eine Ahnung, wodran das liegen kann? Hab schon in einem anderen großen deutschsprachigen Delphi Forum gefragt *hust*, aber da konnte/wollte mir keiner helfen.

Das finde ich persönlich nicht nett. Helfen wollen wir hier so ziemlich alle, es ist halt schade wenn man nicht genau denjenigen erwischt der sich mit eben dieser Materie auskennt. Aber, es wäre auch zuviel verlangt diesen jemand 10 Minuten nach dem Abschicken des Posts zu erwarten, also erst einmal ein paar Tage warten und selbst dann finde ich solche Aussagen ("konnte/wollte") ungerechtfertigt und unhöflich.

Zitat:

Zitat von gangstarjoe
***update***

Das ist als "push" zu verstehen und wird nicht gerne gesehen. Wenn du etwas anfügen willst, dann nutze bitte den Edit-Button, oben rechts in deinem Beitrag. Pushen ist im allgemeinen erst nach 24 Stunden "erlaubt".

Zitat:

Zitat von gangstarjoe
Aber ich kann mir jetzt noch so viele "einfache Beispiele" angucken wie ich will... Solange niemand in der Lage ist, mir zu sagen, was an meinem total banalen Programm

Es werden nur selten Lösungen maßgeschneidert, wo bliebe denn dann das "aha"-Erlebnis des Fragenden? Ich bin mir auch sicher, das es ziemlich viele Beispiele zu Indy gibt (einige dürfte sogar direkt im Package dabei sein, sonst: Google). Ich traue mich mit fast 100% Sicherheit zu sagen, dass es mindestens ein Beispiel da draußen gibt, welches bei dir den zündenden Ansatz hervorrufen kann.

Ich will dich jetzt keinesfalls maßregeln oder etwas in der Art. Siehe es bitte als konstruktive Kritik.

Viel Glück noch & Grüße,
Max

DataCool 24. Feb 2008 19:14

Re: Anfängerproblem: Möchte ein Online Spiel programmieren!
 
@GansterJoe:

Also erstmal vorweg Indy9 und Indy10 funktionieren beide sehr gut,
ich arbeite fast täglich mit Indy und realisiere damit
komplexe Client/Server Lösungen, VoiceOverIP, Cam2Cam und vieles mehr.

Zu Deinem "simplen" Problem, muss ich 2 Sachen sagen :

1. Lass das mit dem Online-Spiel, Du ersparst allen hier viele unnötige Fragen,
das ist einfach zu komplex für den Anfang.

2. RTFM ! Wenn man schon sich Code aus diversen Bps zusammen kopiert,
sollte man auch wissen was man tut.

Wer hat Dir gesagt das Du TIdCmdServer anstatt TIdTcpServer verwenden sollst ?

TIdCmdServer ist von TIdTcpServer abgeleitet und arbeitet mit CommandHandler !

Teste Dein Projekt mal bitte mit TIdTcpServer und bitte bitte benutz die Hilfe
da stehen manchmal auch nützliche Sachen drin ;-)

Greetz Data


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:10 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz