Online-RPG

Übersicht BlitzBasic Beginners-Corner

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen

 

X0r

Betreff: Online-RPG

BeitragMi, Feb 07, 2007 21:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo! Ich würde gerne ein Online RPG programmieren, jedoch fehlt mir der Ansatz fürs "Onlinegaming".

Auf was muss ich besonders achten?
Wie funktioniert das mit dem Server?
Muss ich die Daten des Spielers einfach in eine Datei auf dem Server klatschen oder wie?
Was ist, wenn jemand die .exe Datei disassembliert und die Serverdaten ausliest? Gibt es hierfür einen richtigen Schutz? Wie machen es die professionellen Onlinegames-Programmierer?
Was ist mit Hacks? Wie kann ich dafür einen idealen schutz einbauen?
 

Dreamora

BeitragMi, Feb 07, 2007 21:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Beschäftige dich erst mit einfacheren Dingen.
Deine Fragen zeigen leider recht deutlich das du keine Ahnung hast wie Spiele funktionieren, geschweige denn wie das mit Server - Client Unterteilung läuft. Vor allem bist du dir nicht des ausmasses eines solchen Projekteks bewusst, selbst ein Shooter ist ein "kleines" Projekt im vergleich dazu.

Solltest du es allerdings umbedingt lernen wollen, benutz die Board Suche und Google nach UDP, Netzwerkprogrammierung und Client - Server

Aber bevor du dich mit Multiplayer beschäftigst, empfehle ich dir die RPG Tutorials auf robiste.de durchzumachen, damit du dir ein Bild machen kannst, wieviel Arbeit es werden wird und ob du gewillt bist 12-24 Monate dran zu arbeiten.

moved, da falsches Forum.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.

Tankbuster

BeitragMi, Feb 07, 2007 22:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist wirklich viel Arbeit! Ich hab vor einiegen Wochen auch mit sowas angefangen, und muss sagen, das es viel schwerer ist, als man es am Anfang für möglich hält!^^
Zitat:
Was ist mit Hacks? Wie kann ich dafür einen idealen schutz einbauen?

Sei einfach kreativ. Wenn der Client z.B. die Position eines Spielers zu schnell ändert (speedhack) wird dieser client vom server getrennt. Very Happy
Twitter
Download Jewel Snake!
Windows|Android
 

X0r

BeitragDo, Feb 08, 2007 17:06
Antworten mit Zitat
Benutzer-Profile anzeigen
>Deine Fragen zeigen leider recht deutlich das du keine Ahnung hast wie Spiele funktionieren

Aha. Was willst du damit genau sagen? Dass ich etwa nicht weiß, wie die CPU die Daten verarbeitet und DirectX die Grafikkarte anspricht...etc?
Hat nichts mit meiner Frage zu tun, tut mir leid.

Ich wollte im großen un ganzen nur wissen, wie das mit dem Server funktioniert.
 

Dreamora

BeitragDo, Feb 08, 2007 17:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein, deswegen weil du dir Gedanken machst, wenn jemand die EXE disassembled, das dann am Server Probleme entstehen. Den Server wird der Spieler kaum haben also kann er ihn ja auch nicht disassemblen und der Client enthält keine Serverdaten, denn es ist ja der Client, nicht der Server.

Aber um aufs Thema zurück zu kommen: Es gibt nix spezielles auf das du achten musst, denn das gesamte Konstrukt eines RPG ist schon recht komplex, ein Online RPG wird insofern noch schlimmer das die ganzen Daten die man eh schon handhaben muss dann auch noch von einem Server auf alle Clients gesynct werden müssen und die auch bei allen Spielern an der gleichen Stelle sein müssen. Will heissen da kommt ein nicht unerheblicher Aufwand für das Schreiben eines entsprechenden Netzwerk Layers hinzu, dann auch noch Interpolationstechniken, da sonst die Spieler für andere Spieler du die Welt teleportieren würden. Und halt das was sonst noch dazu gehört, wie einen Server haben (entweder zu Hause aufm eigenen PC oder einen dedicated mieten. Auf einem Webserver kann man den nicht laufen lassen)
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

X0r

BeitragDo, Feb 08, 2007 21:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Nein, deswegen weil du dir Gedanken machst, wenn jemand die EXE disassembled, das dann am Server Probleme entstehen. Den Server wird der Spieler kaum haben also kann er ihn ja auch nicht disassemblen und der Client enthält keine Serverdaten, denn es ist ja der Client, nicht der Server.


Das ist ja auch klar. Aber ich will ja vielleicht eine Anmeldefunktion programmieren, die dann auf den Server zugreift und Dateien hochladet etc.
Nur mal so: Netzwerk allein ist kein Spiel, also behaupte bitte nicht, ich hätte 0 Ahnung.

Oder ich habe das alles falsch verstanden und auf dem "Server" muss das Spiel die ganze Zeit mitlaufen, nichts mit hochladen etc..

Tankbuster

BeitragDo, Feb 08, 2007 21:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Zitat:
Oder ich habe das alles falsch verstanden und auf dem "Server" muss das Spiel die ganze Zeit mitlaufen, nichts mit hochladen etc..

Natürlich muss das Spiel nicht durchlaufen. Den Server wirst du jawohl anders Proggen als den Client. Also musst du nur den Server laufen lassen, aber das Spiel ist ja im Client!^^
Twitter
Download Jewel Snake!
Windows|Android
 

X0r

BeitragDo, Feb 08, 2007 21:33
Antworten mit Zitat
Benutzer-Profile anzeigen
>Den Server wirst du jawohl anders Proggen als den Client. Also musst du nur den Server laufen lassen, aber das Spiel ist ja im Client!^^
Hä? wie im Client? Ich muss doch dann eine "spezielle Version" für mich programmieren, die aufm Server läuft und dann die "Client Version" für die Klienten.
 

Dreamora

BeitragDo, Feb 08, 2007 22:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Nun genau genommen brauchst du 3 Programme:

1. Server Software um einen dedicated Server zu machen
Server enthält:
- Die gesamte Spiellogik
- Keine Grafik, nur Konsole und evtl Windows GUI
- Vermutlich Scriptsprache (BlitzLUA / BVM) und eine Anbindung an eine MySQL Datenbank

2. Client Software damit man auch auf dem Server dann spielen kann:
Client enthält:
- gesamte grafische Seite, man will ja was sehen das net nur aus Text besteht.
- Keinerlei Spiellogik. Die ist komplett Serverside. Das einzige was der Client enthält sind Interpolationsroutinen damit das Spiel nicht "abgehackt" läuft (in 2D nicht umbedingt nötig). Ansonsten ist der Client nur etwas was Usereingabe via Netz zum Server sendet, damit dieser darauf reagiert.

3. God Client: Ist grösstenteils der normale Client. Hauptunterschied ist, das er es erlaubt die Welt zu verändern. Will heissen ich würde den Welteditor etc in einen modifizierten Client integrieren. Dann kannst du dir Weltendesigner und GMs für dein Spiel organisieren die 0 Plan haben von Programmieren und trotzdem die Welt mitgestalten können.
Eventuell kann man hier sogar einen Event Designer integrieren der es erlaubt dynamische Objekte zu designen.



Von diesen 3 Programmen wird ausser dir und eventuellen Teammembern nur der normale Client (2) beim Enduser ankommen.
Da dieser allerdings nichts macht ausser "gut aussehen" und "Eingabe an den Server weiterleiten", kann der User damit nichts über den Server in erfahrung bringen, da kann er disassemblieren wie er will.
Das höchste was er hinbekommen kann ist via Packet Sniffing dein Netzwerkprotokoll zu versuchen zu verstehen.
Wenn dein Server jedoch Packete überprüft die Reinkommt ob die so überhaupt sein können (Bewegungsdistanz ok, Klick an einen Punkt den der User nicht sehen kann und solche Dinge)

Elementar ist auch, dass das Netzwerkprotokoll so aufgebaut ist, dass nicht der Client Daten ausfiltert, die der Spieler nicht sehen sollte (gestealthte Spieler, Dinge die der Spieler sowieso nicht sehen kann und so), sondern das der Server die prinzipiell garnicht erst versendet.
Das ist auch bezüglich Traffic und Bandbreite eine gute Sache, aber nicht ganz leicht, da ein sauberes und performantes Ghosting sehr komplex ist, aber es lohnt sich auf jeden Fall. Wenn der Client nämlich Dinge filtert, die der User nicht sehen soll, dann wird es immer einen geben der die Packete so verändert beim reinkommen, dass er sie doch sieht. Das kann ich dir garantieren, egal wie gut verschlüsselt es war Smile

Und sorry wenn ich oben ein wenig übertrieben habe. Ich weiss das du kein Anfänger bist im allgemeinen Sinne.
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

X0r

BeitragSo, Feb 11, 2007 17:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Erstmal Danke für die Erklärung. Jetzt ist mir alles klar.


>Und sorry wenn ich oben ein wenig übertrieben habe. Ich weiss das du kein Anfänger bist im allgemeinen Sinne.

Im Netzwerkbereich hast du Recht, ja. Habe mich damit nie wirklich beschäftigt. Aber das nächste mal nicht einfach drauf los sagen" N00b". Denn Netzwerkprogrammierung ist nicht alles, Dreamora.
 

Moses

BeitragDi, Feb 13, 2007 14:58
Antworten mit Zitat
Benutzer-Profile anzeigen
hmmm ein 'online-rpg' ... ein weiter begriff ... ist es ein 'online pen and paper' reicht das hochladen von dateien unter umständen aus ... php+html auf einem webserver könnten dafür reichen ... eine bb anwendung mit client-server betrieb event. leicht überzogen Wink

willst du aber ein wow verschnitt egal ob 2d oder 3d basteln wirds komplexer, da hier zeitnaher datenabgleich nötig ist um einen flüssigen spielfluss zu gewährleisten ...´

wenn man die sache technisch betrachtet ist das zwar immernoch dateiversenden aber man verschickt quasi immer nur 'zeilenweise' sachen an eine datei auf dem server, und dieser arbeit dann auch 'zeilenweise' diese datei ab und sendet gegebenenfalls auch eine 'zeile' zurück

beispiel:

serverlogik ist alle einkommenden blub's mit bla zu quitieren und andersherum.

client: blub
server: bla
client: bla
client: blub
server: blub
client: blub
server: bla
server: bla

an dem beispiel sieht man auch gleich ein problem, dass der server in abhängigkeit von dem was er grade macht nicht immer gleich schnell antwortet.

oben hatte ich ja schon was von häppchenweisen schreiben in 'dateien' geschrieben, um eine soche empfangsdatei zu eröffnen muss der server diese datei anlegen und auf einer adresse am rechner auf eingehende daten warten um diese in die datei zu packen ... er 'horcht' also an einem port.

der client macht selbst seine datei an einem port auf um die antworten zu empfangen, wenn es den welche geben soll, und sendet an den server auf dem richtigem port etwas was der server versteht (zb. "bla") ... ist das bla übers netzwerk in der datei des servers angekommen .. bemerkt er dies und handelt entsprechend seiner logik ... sendet sendet also zb. "blub" zurück an den clienten ...

so das ist erstmal eine erläuterung(bestimmt ausbaufähig) wie das alles funktionieren könnte ...

es gibt zwei protokolle die blitz für den transfer von daten unterstützt UDP und TCP ... UDP versendet daten nur einfach so blind zum server und stellt nicht sicher, dass diese überhaupt oder vollständig übermittelt wurden ... wenn man das aber will muss man sich seine eigenen prüfroutienen schreiben (wird oft gemacht bei wichtigen informationen im spiel) oder ganz auf TCP umsatteln ... oder beides benutzen auf unterschiedlichen ports ... die paketprüfungen von TCP sind natürlich ein leistungskiller was die geschwindikeit der netzwerkommunikation angeht.

wie man das ganze nun mit blitz macht wurde schon in etlichen tutorials beschrieben ... die suchfunktion sollte also was brauchbares liefern ...

als einstieg würde ich einen kleinen udp-chat schreiben mit benutzerverwaltung etc. ... das ist dann auch schon ein teil der für ein online-rpg nützlich sein könnte.

eine andere sachen währe den server event. wenn er komplexer wird nicht mit blitz zu schreiben, c++, python oder java sind zwecks objektorientioerter programierung und weil deren kompilate/bytecode auch auf nicht widows-servern laufen können günstiger, denn bb braucht eine w32 umgebung mit directx was es nur unter windows gibt ...

ich hoffe es war verständlich und nicht all zu unrichtig(ich denke einige werden die augen gerollt haben) erklärt ...

mfg moses
 

X0r

BeitragDi, Feb 13, 2007 15:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Meinte ich auch so. Einfach Userdaten hochladen etc.
Den Rest kann man ja mit UDP|TCP machen.

Natürlich ist jetzt das Problem: Wer ist Server?
Dann könnte man es ja so machen, dass Derjenige der Server ist, der sich als erstes eingeloggt hat.

Ist jetzt aber egal. Für einen Server will ich momentan kein Geld ausgeben, und mein P4 frisst zu viel Strom.


Ich mach dann ma nen Spaceshooter oder sowas.
Jetzt ist ja das Problem, dass die Serverliste von irgendwo kommen muss. Das könnte man doch über ne Webspace machen, richtig? Wie machen das die professionellen Programmiererunternehmen wie Valve, Irrational Games etc.?
Wenn ja, was ist dann mit disassemblieren?
  • Zuletzt bearbeitet von X0r am Di, Feb 13, 2007 15:47, insgesamt einmal bearbeitet

Tankbuster

BeitragDi, Feb 13, 2007 15:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Du kannst diene PC auch als Server benutzen, indem du eine DNS einstellst! Razz
Twitter
Download Jewel Snake!
Windows|Android
 

X0r

BeitragDi, Feb 13, 2007 15:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Öhh? Natürlich kann ich das.

StepTiger

BeitragDi, Feb 13, 2007 15:48
Antworten mit Zitat
Benutzer-Profile anzeigen
oder du nutzt einen Dyn-DNS Dienst.

Das mit dem einloggen kannst du für Online-RPGs gleich vergessen, wegen des riesigen Speicherplatzes, der benötigt wird.
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.
 

Dreamora

BeitragDi, Feb 13, 2007 17:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Natürlich ist Netzwerk nicht alles. Aber in einem explizit darauf ausgerichteten Spiel ist es ein SEHR elementarer Bestandteil, denn nix zerstört den Spielspass so weitreichend wie mieser Netzcode der zu allgemeinem Lag, "Teleportieren" und "Tod weil monster da ich es aber nicht gesehen" führt.
Denn dann könntest du dir das ganze gleich sparen, das wird niemand freiwillig ausserhalb einer LAN spielen Smile

Was Server angeht: Wenn du keinen Mieten willst, dein P4 zuviel Saft zieht und so, guck doch ma nach nem P3 mATX tower. Gibt sicher leute die sowas los werden wollen Smile Am besten ohne Grafikkarte oder mit onboard, dann kommste mit recht wenig Strom weg. (bei mir wird mein altes Pentium-M Notebook bei dem alles was net nötig ist deaktiviert ist und der rest total runtergetaktet für solche zwecke genutzt. Kommt mit weniger Strom weg bei dem Betrieb als dein Tower im Standby Smile )
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen.
 

X0r

BeitragDi, Feb 13, 2007 17:08
Antworten mit Zitat
Benutzer-Profile anzeigen
Und was ist jetzt mit der Serverliste?

Tankbuster

BeitragDi, Feb 13, 2007 17:13
Antworten mit Zitat
Benutzer-Profile anzeigen
Weil du ja eine Dyn DNS hättest, wüsste jeder Client deine IP!
Von deinem Rechner (server) würden sie dann die Infos bekommen!^^
Twitter
Download Jewel Snake!
Windows|Android
 

X0r

BeitragDi, Feb 13, 2007 17:18
Antworten mit Zitat
Benutzer-Profile anzeigen
warum nicht alles auf eine webspace?

Tankbuster

BeitragDi, Feb 13, 2007 17:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist im Prinzip das gleiche, ob du nun einen Server im web oder deinen Pc als Server benutzt.*denkichmal*
Twitter
Download Jewel Snake!
Windows|Android

Gehe zu Seite 1, 2  Weiter

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group