Frage: Wie kann ich mein eigenes Emulator programmieren?

  • programmsprache aussuchen, lernen und anfangen zu schreiben. "Katalog etc" => am besten mit Cache wie es auch in phx ist mit dictionarys um schnellere Zugriffszeiten zu ermöglichen und db zu entlasten. Im client wirds dann nur an bestimmte stellen eingefügt also an bestimmte Positionen des containers vom katalog

  • Hey, zuerst einmal musst du, wie oben schon genannt, die Programmiersprache die Dir gefällt oder dazu geeignet ist aussuchen.

    Du musst Fähigkeiten erfüllen wie Erfahrungen in

    • Multi-Threading
    • Binary reading & writing
    • Packet Managing
    • Filesystem Managing
    • Logging
    • (Als NLP) CPU Architektur
    • wissen von Dynamic & Static IP Handling
    • (Als NLP) Memory al-/delocation

    Wenn du noch ein Anfänger, oder kein Freund von eigenen Bibliotheken schreiben bist,
    dann solltest du zum .NET Framework 4.5/4.6 greifen. Unterdem .NET Framework agieren folgende brauchbare Sprachen:

    • C#
    • Visual Basic
    • C++/CLI
    • Oxygene

    Damit bist du zum Beispiel bei einem "commercial used" Server mit automatisierten Updates einen Schritt weiter als einem Native-L-Programmer, da du Zugriff auf Bibliotheken hast die dir das Auslesen einer XML per HTTP ermöglichen, dir erlauben mehrere Datentypen zu konvertieren ohne großen Aufwand.

    Falls du aber schon Fortgeschritten und ein Freund von eigenen Bibliotheken schreiben bist, stehen dir

    • C
    • C++
    • Ada (A#)
    • Rust
    • Perl
    • Erlang

    und viele weitere zur Verfügung! Nehmen wir an, du hast dich für C & C++ entschieden. C für das "Directory-Handling" & C++ für den eigentlich Teil.
    Was du nun jedoch beachten solltest ist, dass dir keine Bibliothek zur Verfügung steht die dir direkt das Auslesen einer XML per HTTP erlaubt. Versuchen wir anhand eines Beispiels zu erleutern wie kompliziert (aber auch Spaßig) es ist mit native code zu arbeiten. Wir wollen einen kleinen simplen, nicht so fortgeschrittenen Updater schreiben. Was zu beachten ist HTTP & XML reading;

    • fstream, ifstream & ofstream sind schließlich lokal

    Erstellen wir erstmals eine Header-Datei namens ExternC.h:


    Perfekt! Unser kleines C-Skript ist bereit und kann nun C++ Unterstützen.

    Nun erstellen wir eine Header-Datei namens PackageManager.h in der wir per 'Namespace' strukturiert vorgehen:


    & we're done. Nice! Bevor wir mit der C++-Datei PackageManager.cpp anfangen, lädst du dir die Chilkat- & rapidxml-Bibliothek herunter. Binde diese in dein Projekt mitein, oder verlinke mit -I (gcc/g++);
    VORSICHT: Chilkat & rapidxml werden in diesem Beispiel nur verwendet, um die Antwort hier, die eh nicht schon groß genug ist, nicht zu vergrößern!

    Okay, you're done? Nice; Jetzt erstellen wir die C++-Datei PackageManager.cpp:


    Die update.xml wird temporär heruntergeladen & nach dem Auslesen sofort wieder gelöscht! Daten die gespeichert werden müssen, werden im Ordner "Saved" verschrieben.

    Nachdem die C++-Datei (Einstiegsmethode) main.cpp:


    angefertigt wurde, kreieren wir nun die update.xml im Verzeichneis wie im Code oben angegeben:

    XML
    <?xml version="1.0" encoding="UTF-8"?>
    <update>
    	<version>0.1.0</version>
    	<type>patch></patch>
    	<root>container/</root>
    	<methodTags>Sockets;Stability;C;DLL;EXTERNAL</methodTags>
    	<PackageData>_11032015.package</PackageData>
    </update>

    und eine patch_11032015.package im Verzeichnis wie im Code oben angegeben:

    C
    /* Erstelle ein Hallo Welt Programm, öffne die Ausgabe-Datei mit dem HxD-Editor und exportiere sie. Füge die Ausgabe in diese Datei (patch_******.package) ein. */


    Nachdem wir das nun alles haben, kompiliere das Projekt/die Skript-Dateien per Visual Studio/GCC/G++.

    Erstelle mit Notepad++ eine leere Datei namens Server.exe und speichere sie beim Updater ab. Du kannst auch eine bestehende App verwenden, du musst sie eben nur in Server.exe umbennen! Führe den Updater aus & falls alles geklappt hat (was es auch sollte) kannst du Server.exe starten und schauen ob deine neue gewollte Ausgabe aus dem Patch übernommen wurde.

    MfG,
    RegeretSam

    PS:
    *Falls du einfachere und simplere Codes haben möchtest, adde mich in Skype: masteret.sam

    2 Mal editiert, zuletzt von RegeretSam (3. November 2015 um 22:44)

  • Hi Danke dir!

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!