[PAUSIERT] Varoke Emulator - Einfach ein weiterer Emulator

  • Viel Erfolg bei der Entwicklung deines Emulators. Ich empfehle dir dich vorab über Programmierfehler und Sicherheitslecks zu informieren. Jedes Retro Hotel hat mindestens eine Lücke und das muss wirklich nicht sein :P

  • Viel Erfolg bei der Entwicklung deines Emulators. Ich empfehle dir dich vorab über Programmierfehler und Sicherheitslecks zu informieren. Jedes Retro Hotel hat mindestens eine Lücke und das muss wirklich nicht sein :P

    Alpha Series hat aus ihm herausgesprochen. :aws:

    Wünsche dir auch viel Glück mit deinem Projekt. Werde ab und zu mal im Thread vorbeischauen.

  • Hey,

    leider konnte man deinen Snippets nicht wirklich viel entnehmen (.. hätte man eigentlich gleich weglassen können). Mich persönlich würde vor allem die Architektur des Servers (Verteilung der Räume / "Aufräumer" Tasks - Thread Pool?) interessieren sowie das Datenbankhandling (ORM?)

    Da du jetzt noch weit am Anfang vom Projekt stehst wäre es außerdem sinnvoll jetzt noch einmal auf die letzte veröffentlichte Client-Version zu updaten (Wenn man das viel später macht, kommen immer irgendwelche Fehler mit rein, die man erst nach Monaten bemerkt).

    Hier noch ein paar Sachen aus eigener Erfahrung:

    * Das was mich bei IDK bis jetzt immer am meisten geärgert hat (war danach zu faul es zu ändern) war der Raum-Zyklus. Am Anfang beginnt alles noch relativ harmlos, doch dann, man schenkt dem Server einen Moment nicht seine komplette Aufmerksamkeit, kommen Sachen wie das Zurücksetzen von Carried Items, Roller, die Nutzer bewegen, etc.. die man dann einfach mal reinrotzt (Btw: Pass auf, dass in jedem Fall immer alle Daten synchron sind! - Hilft dir beim Aufrechterhalten der Stabilität des Emulators)

    Spoiler anzeigen


    Hatte später mal eine Idee, um diesen Messi-Zyklus zu verbessern:

    Externer Inhalt gist.github.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

    Externer Inhalt gist.github.com
    Inhalte von externen Seiten werden ohne Ihre Zustimmung nicht automatisch geladen und angezeigt.
    Durch die Aktivierung der externen Inhalte erklären Sie sich damit einverstanden, dass personenbezogene Daten an Drittplattformen übermittelt werden. Mehr Informationen dazu haben wir in unserer Datenschutzerklärung zur Verfügung gestellt.

    * Versuche deine Klassen so abstrakt und klein wie möglich (übertreibs aber auch nicht) zu halten. Damit meine ich, keine Raum-Klassen, die über 1.700 Zeilen groß sind.. Da verliert ja jeder den Überblick. Lieber alles aufteilen in Klassen wie "RoomEntityManager" oder derartiges. Es ist außerdem wichtig, Strukturen, die für mehrere Klassen gelten, immer miteinander kompatibel zu machen (Interfaces, abstrakte Klassen..), damit du sie irgendwann im Code wiederverwenden kannst.

    Beispiel:

    -> Jedes Objekt in einem Raum weiß von seinem Raum.
    ---> Jedes "Bodenobjekt" weiß von seinen Raum-Koordinaten
    -----> Jedes Wesen weiß von einer Richtung, in welche es guckt.
    -------> Jeder Spieler weiß von seiner Session
    -------> Jeder Bot weiß von seinen Aufgaben (Auf Fragen antworten etc..)
    ---------> Jedes Tier weiß von seinen Statistiken (Erfahrungslevel etc..)
    -----> Jedes Bodenmöbelstück weiß von seiner Rotation
    ---> Jedes "Wandobjekt" weiß von seinen Wand-Koordinaten
    -----> Wandmöbelstück

    Mir persönlich gefällt deine Package-Struktur nicht. Trenne am besten die Logik vom Rest (Server-Client-Kommunikation) total ab, indem du die Parser und Composer für Nachrichten in ein Package wie z. B. "communication" packst mit den "Unterkategorien".. "parsers" und "composers" oder "incoming" und "outgoing". Stell dir einfach immer die Frage: Wäre ich jetzt kein Client-Nutzer, könnte ich die gleichen Aktionen für meinen Raum / User / Navigator (..) leicht über Programmcode bewirken?

    Was die Sicherheit angeht: Neben dem Standardkram immer gucken, ob es denn für einen Nutzer eine Möglichkeit gibt, ein nicht gewollte Szenario herbeizurufen (Bspw. einen ungültigen Figure-Code.. etc.)

    Es scheint als würdest du eine Verschlüsselung nutzen, zumindest hast du Klassen dafür. Wenn du keine RSA-Keys, die du nicht selbst generiert hast oder oft öffentlich zeigst, verwendest, kannst du eigentlich RC4 gleich deaktivieren und Konstanten für die Keys benutzen, damit der Client nicht abschmiert.

    Cheers,
    Steve Winfield

  • [UPDATE 16. Februar 2016]

    Einiges hat sich in der Zwischenzeit getan!

    - Umgestiegen auf die neuste Habbo Version - PRODUCTION-201602082203-712976078
    - Neuer Pfadfinder (A*)
    - Update auf Netty 4.0 (Ja, hab immer noch Netty 3.5.9 verwendet..)
    - Neue Package-Organisation
    - Thread Pool (nachdem ich einen Timer für den Raum-Zyklus verwendet habe xD)
    - Boden & Wandmöbelstücke kann man nun platzieren, bewegen und aufnehmen
    - Bodenmöbelstücke kann man stapeln
    - ein paar Optimierungen am Code

  • Dein Essentials 5 ist schon ein super Build geworden, bin mal gespannt wie es bei diesem Projekt weiter geht.
    Hast bisher eigentlich noch nie enttäuscht und viele Projekte auch beendet und released.

    Weiter so!

    Freundliche Grüsse,
    Forex

    source.gif

    image.png

  • Sieht super aus Dario.
    Lass dir Zeit dabei. Und vorallem lass dein Privatleben/Ausbildung nicht dadurch beeinträchtigen :)

    Ein Emulator in Java wäre sicher etwas, das der Szene mal wieder etwas Schwung verleiht.
    Hast du das ganze schon einmal auf Linux probiert, wäre interessant ob es mit dort auch so smooth läuft wie auf OS X.

    Auf Github würde ich das ganze auch erst stellen, sobald man erkennt in welche Richtung der Emulator gehen soll, jetzt kommen ja erst die Basis-Features.
    Wie bereits erwähnt würde ich auch immer darauf achten, die neusten Habbo Versionen zu verwenden, um später auftretene Bugs auszuschließen.

    Den Thread auf Ragezone würde ich auf alle Fälle erstellen, dort sammeln sich ja die Leute unserer Spezies ^^ Man kann dort sicher Rat bekommen, falls man mal nicht weiter weiß.

    Und @__clok Das Java nicht umbedingt ressourcensparend ist, ist ja bekannt. Dafür läuft Java auf fast jeder noch so abgeranzten Plattform ^^ Und seine Codebase gammelt ja nicht vor sich rum, kann man ja wohl erkennen was er in dieser Zeit schon erledigt hat ;)

    Also, wie bereits erwähnt,

    Viel Erfolg & motivation :rolleyes:

  • Ja / Nein.
    Ich habe lediglich den Source Code auf GitHub hochgeladen (und commite ab und zu auch etwas, je nach Laune)
    Hab die letzte Woche nicht wirklich viel am Projekt gearbeitet, weshalb ich es unnötig fand, den Thread zu pushen.

    Natürlich gehts weiter mit Varoke.

  • Habe mal ein pull request eingereicht. Beschreibung sollte genug aussagen, hab's bei mir im Emulator ähnlich gelöst.
    Plus Emulator scheint den gleichen Fehler zu haben, zumindest passiert genau das selbe auch bei boon.pw

    Mit freundlichen Grüßen

    Edit; Ist nicht getestet, da ich am Schul PC bin und ich hier leider keine Java IDE habe. Das Grundkonzept dahinter sollte aber verständlich sein.

    sashiri ist administrator von retrotown und er macht gute arbeit daumen hoch emoji :)

    admin von mailmaus dem besten wegwerfmail anbieter in 2024 (gewählt von namenhaften anbietern wie chip, computer bild und spiegel)

    ZdkFTG1.png
    XMPP: ecb2@cock.li
    YzY3SuH.png
    how to habbo.st

  • [UPDATE 2. März 2016]
    Hab mal wieder etwas commited:
    - Würfel
    - Teleporter
    - Habe angefangen, den Emulator zu dokumentieren (kp ob ich das weiter so machen soll xD)

    Hier noch ein kleiner Screenshot:

    Spoiler anzeigen


    @ECB2 danke dafür, doch vielleicht hast du übersehen, dass das ein paar Zeilen weiter oben schon steht :D

Jetzt mitmachen!

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