Register for your free account! | Forgot your password?

You last visited: Today at 01:09

  • Please register to post and access all features, it's quick, easy and FREE!

 

Emulator entwickeln - Wie anfangen?

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Aug 2009
Posts: 9
Received Thanks: 2
Question Emulator entwickeln - Wie anfangen?

Kreuzigt, steinigt ... mich, wenn es so einen Thread schon mehrmals gab. Aber das Forum ist mittlerweile so gewachsen, dass man nur schwer etwas findet.

Also Hallo erstmal,

ich interessiere mich für Private Server / Emulation im allgemeinen. Vorerst nicht für ein bestimmtes Spiel. Nur wie fange ich an? Wie kann ich einen Emulator erstellen, wenn mir keine Serverfiles zur Verfügung stehen?

Datenpakete sammeln? Welche Programmiergrundlagen brauche ich dafür?
Vielleicht kann jemand der schon mal einen Emulator (Aion etc) entwickelt hat, kurz stichwortartig die Vorgehensweise erläutern. Vielleicht wird dann auch schnell klar, dass es doch nicht das richtige für mich ist



blafatz is offline  
Thanks
2 Users
Old   #2
 
elite*gold: 1
Join Date: Jul 2008
Posts: 74
Received Thanks: 91
Zunächst Solltest du dir eine Programmiersprache Aneignen ich kann dir nur c# Empfehlen dann solltest du dich mit den grundlegenden Sachen was Networking angeht schlau machen ich personlich bin gerade dabei einen Warrock emulator zu entwickeln in c#
wenn du dich im Networking auskennst dann solltest du Evtl. noch reverse engineering aneignen um die Packet Verschlüsslung rauszufinden oder du nimmst ein game wo die verschlüsslung und entschlüsslung schon public ist dann fällt das naturlich weg wenn du dann die verschlüsslung hast solltest du dir ankucken wie das packet system aufgebaut ist, da hat jedes game sein eigenes system wenn du das hast schreibste dir nin Packetsniffer ich persönlich benutze meine eigene() Basis immer wieder so wenn du das hast analysierte ersma die datenpacket schreibst dann ein passendes hanlding system und den kann los gehen

have fun

mfg mathias1000


Mathias1000 is offline  
Thanks
2 Users
Old   #3
 
elite*gold: 0
Join Date: Apr 2009
Posts: 177
Received Thanks: 42
Als erstes solltest du C#, C, C++ etc können.
Reverse Engineering ist auch vom Vorteil wenn die Spielpackete verschlüsselt sind.
Was sind Packets?
- nichts anderes als Anweisungen

Oft sind diese Packets verschlüsselt, dadurch kann sie kein mensch lesen.
Um Packets entschlüsseln zu können müsste man den Client debuggen und den entschlüsselungs Algorythm finden.

Solltest du diesen haben, gehts weiter.
Das nächste Problem ist, das die Packets von Game zu Game anders aufgebaut sind und du deren Aufbau brauchst z.B:

07 0A 00 05 00 07 00 1E

07 = nachfolgende länge
0A = packet header (sagen wir mal fürs laufen)
00 = muss dazwischen gesetzt werden für die trennung
05 = coordinate x
00 = siehe oben
07 = coordinate y
00 = siehe oben
1E = laufgeschwindigkeit

Währe eine anweisung um nach 5,7 mit der Geschwindigkeit 30 zu laufen.
Das ist auch meist der längste teil, alle Packets zu identifizieren. Dafür sucht man sich am besten ein Team.

Jetzt zu dem Server/Client:

Der Client ist nichts anderes als die Grafische oberfläche dort,
der Server sendet eine Anweisung ein Monster anzuzeigen , der Client zeigt die Grafik, der Server sendet eine Anweisung um das Monster zu bewegen, der Client bewegt das Monster.
Der Server macht die ganzen Berechnungen, Handled sowie speichert alles.
Z.B du willst dich bewegen, der Client sendet ein movement Packet, der Server überprüft dies und speichert die neuen Koordinaten in der Spieler Struktur und sendet anschließend allen anderen Spieler auf der Map nen Packet, das der Spieler nach x,y läuft (Damits anzeigt)

Hoffe das man das nun grob verstehen kann.
BrendonHomo is offline  
Thanks
2 Users
Old   #4
 
elite*gold: 0
Join Date: Aug 2009
Posts: 9
Received Thanks: 2
Danke euch. Jetzt weiß ich grob wie das ganze abläuft


blafatz is offline  
Old   #5
 
elite*gold: 0
Join Date: May 2007
Posts: 26
Received Thanks: 1
Smile

Quote:
Originally Posted by Mathias1000 View Post
Zunächst Solltest du dir eine Programmiersprache Aneignen ich kann dir nur c# Empfehlen dann solltest du dich mit den grundlegenden Sachen was Networking angeht schlau machen ich personlich bin gerade dabei einen Warrock emulator zu entwickeln in c#
wenn du dich im Networking auskennst dann solltest du Evtl. noch reverse engineering aneignen um die Packet Verschlüsslung rauszufinden oder du nimmst ein game wo die verschlüsslung und entschlüsslung schon public ist dann fällt das naturlich weg wenn du dann die verschlüsslung hast solltest du dir ankucken wie das packet system aufgebaut ist, da hat jedes game sein eigenes system wenn du das hast schreibste dir nin Packetsniffer ich persönlich benutze meine eigene() Basis immer wieder so wenn du das hast analysierte ersma die datenpacket schreibst dann ein passendes hanlding system und den kann los gehen

have fun

mfg mathias1000
Interessanter Thread! Ich würde dir gerne ein paar Fragen stellen:

1. Wie lange hast du c# und Networking gelernt bist du selber angefangen hast an einem Privat Server zu arbeiten?
2. Wie lange dauer tes bis einer halbwegs läuft?
3. Wieviele Leute arbeiten an einem Privat Server?
4. Kann man sich auf einem privatserver dan auch Sachen ercheaten die es sonst nur im Itemshop gibt?
Xell1987 is offline  
Old   #6
 
elite*gold: 10
Join Date: Aug 2012
Posts: 813
Received Thanks: 106
Quote:
Originally Posted by BrendonHomo View Post
Als erstes solltest du C#, C, C++ etc können.
Reverse Engineering ist auch vom Vorteil wenn die Spielpackete verschlüsselt sind.
Was sind Packets?
- nichts anderes als Anweisungen

Oft sind diese Packets verschlüsselt, dadurch kann sie kein mensch lesen.
Um Packets entschlüsseln zu können müsste man den Client debuggen und den entschlüsselungs Algorythm finden.

Solltest du diesen haben, gehts weiter.
Das nächste Problem ist, das die Packets von Game zu Game anders aufgebaut sind und du deren Aufbau brauchst z.B:

07 0A 00 05 00 07 00 1E

07 = nachfolgende länge
0A = packet header (sagen wir mal fürs laufen)
00 = muss dazwischen gesetzt werden für die trennung
05 = coordinate x
00 = siehe oben
07 = coordinate y
00 = siehe oben
1E = laufgeschwindigkeit

Währe eine anweisung um nach 5,7 mit der Geschwindigkeit 30 zu laufen.
Das ist auch meist der längste teil, alle Packets zu identifizieren. Dafür sucht man sich am besten ein Team.

Jetzt zu dem Server/Client:

Der Client ist nichts anderes als die Grafische oberfläche dort,
der Server sendet eine Anweisung ein Monster anzuzeigen , der Client zeigt die Grafik, der Server sendet eine Anweisung um das Monster zu bewegen, der Client bewegt das Monster.
Der Server macht die ganzen Berechnungen, Handled sowie speichert alles.
Z.B du willst dich bewegen, der Client sendet ein movement Packet, der Server überprüft dies und speichert die neuen Koordinaten in der Spieler Struktur und sendet anschließend allen anderen Spieler auf der Map nen Packet, das der Spieler nach x,y läuft (Damits anzeigt)

Hoffe das man das nun grob verstehen kann.
Eine gute Erklärung, damit man halbwegs versteht, wie es abläuft. Mit dieser Hilfe kann man schon gut anfangen und mit Google etwas Material zu den einzelnen Schritten suchen.
GodHacker is offline  
Old   #7

 
elite*gold: 44
Join Date: May 2010
Posts: 2,053
Received Thanks: 1,742
Quote:
Originally Posted by Xell1987 View Post
2. Wie lange dauer tes bis einer halbwegs läuft?
3. Wieviele Leute arbeiten an einem Privat Server?
4. Kann man sich auf einem privatserver dan auch Sachen ercheaten die es sonst nur im Itemshop gibt?
Wie lange die Entwicklung dauert hängt wohl sehr stark von verschiedenen Faktoren ab:
  • Wie komplex ist das Spiel? Je mehr Funktionen ein Spiel hat, desto mehr muss man nachbauen: Gruppen, Gilden, Instanzen, KI (künstliche Intelligenz), Spielumgebung (Räume/RPG/Open World), Waffensysteme (Schusswaffen wie bei Shootern brauchen Flugbahnberechnungen...), Dimensionen (v.a. 3. Dimension, also Höhe -- Schwerkraft?).
  • Was macht der Client, was der Server? Das kann je nach Spiel variieren. Ein "guter" Server sollte Informationen von Clients zumindest auf Plausibiltät prüfen ("geht das überhaupt?" / "darf der das?"), sonst haben Cheater leichtes Spiel.
  • Was heißt fertig? Emulatoren sind oft ein laufendes Projekt, denn auch die Originalserver werden weiterentwickelt. Neue Features und Versionen müssen (oder wollen) nachgebildet werden.
    Eine neue Map oder ein neues Item sind nicht großartig schwierig, ein komplett neues Feature (z.B. Gildensystem) hingegen schon.
    Viele Emulatorprojekte - v.a. die OpenSource-Vertreter - machen ihre Software auch schon öffentlich, bevor überhaupt ein stabiler oder "fertiger" Zustand erreicht wird.
  • Wie akribisch wird das Projekt von wie vielen Entwicklern verfolgt?
    An manchen Projekten arbeiten vielleicht zwei bis zehn Freunde, an anderen kann jeder durch öffentliche Commits, Bugreports und Informationen beitragen (Social Coding). Gutes Beispiel dafür ist wohl der .
Die Entwicklung eines ersten "Prototyps" der halbwegs lauffähig ist, kann sehr stark variieren. Bei simplen Browsergames kann man womöglich schon nach wenigen Arbeitsstunden testen, bei hochkomplexen Spielen wie Shootern oder MMORPGs (wobei auch da jeweils starke Unterschiede existieren) kann eine erste Testversion Wochen in Anspruch nehmen.


Die Analyse dar Paketstruktur und -verschlüsselung ist wohl das unberechenbarste Kriterium für den Aufwand der Entwicklung. Alles weitere ist zumindest ansatzweise vorhersehbar (Netzwerk, Nutzdatenhaltung, Speicherung, Spielfunktionen).


Wenn man gute Arbeit macht, kann man einen Emulator vermutlich besser vor Cheatern schützen als es das Original kann.
Mashkin is offline  
Old   #8
 
elite*gold: 0
Join Date: Apr 2010
Posts: 2,829
Received Thanks: 4,146
Und vorallem: Auf Motivations "Durchhänger" gefasst machen.
Eventuell dir noch jemanden ins Team holen, alleine kann das sehr schnell schief gehen.

Arbeite zur Zeit auch im Team an einem PServer. Davor hatte ich und mein Team Partner jeweils alleine an einem Server gearbeitet.
Wir beide hatten die Lust dann ziemlich schnell verloren.

Jetzt arbeiten wir zusammen und das Ding flutscht 1A. Klar gibt es hin und wieder durchhänger, aber irgendwie pusht man sich dann leichter wieder auf.


Allerdings: Wenn du noch absolut keine Ahnung vom Programmieren hast, such dir erstmal andere, kleine, Projekte.
Viele unterschätzen die Arbeit die ein PServer macht.


Elektrochemie is offline  
Reply



« Previous Thread | Next Thread »

Similar Threads
GTA: SA:MP - UCP Entwickeln (Frage)
Hi, Ich habe eine Frage und zwar will ich ein eigenes UCP für mein Realife Script erstellen, meine Frage wäre wie fange ich so etwas an also z.b....
1 Replies - Grand Theft Auto
Bot Entwickeln [GER]
Hallo Leute, Ich suche deutsche Scripter die mit mir einen eigenen Bot machen . Wer interesse hat bitte melden und weiteres erfährt ihr dann ...
29 Replies - DarkOrbit
Spiel entwickeln wie Terraria
Hallo, mein name ist rene ich hab seid einiger zeit ein spiel wie terraria zu entwickeln nur das es pvp basierend ist naja ich suche jemanden der...
7 Replies - General Coding
[TUT]Eigenes OS(Betriebssystem entwickeln[TUT]
Ein eigenes Betriebssystem schreiben Das wohl interessanteste Thema in der Programmierung. Wohl jeder Programmierer träumt davon, einmal ein OS...
5 Replies - Off Topic
Online spiel entwickeln
Hi, Es gibt ja viele anfragen wie man ein online spiel entwickelt. Dafür gibt es ein spezielles Programm Namen Realm Crafter. Dieses könnt ihr...
63 Replies - Tutorials



All times are GMT +1. The time now is 01:09.


Powered by vBulletin®
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Abuse
Copyright ©2017 elitepvpers All Rights Reserved.