[Spiel] Chester

  • Den Code stelle ich euch nicht zur Verfügung. Es war für mich ein Projekt, um mich mit der Sprache auseinanderzusetzen. Dementsprechend wurde oft nur rumprobiert. Auch würde es keinen richtigen Blick in die Sprache gewähren und würde Anfänger evtl. verwirren. :)


  • Unzippen + Dekompilieren, mehr muss man doch nicht tun =O


    An sich richtig, aber irgenwdie auch nicht. Man bekommt nicht den Original-Code zurück, denn es ist sehr wahrscheinlich, dass der Compiler Optimierungen vorgenommen hat. Und wenn da ein Obfuscator drüber gegangen wär, dann würde man nur Buchstabensalat bekommen.


  • An sich richtig, aber irgenwdie auch nicht. Man bekommt nicht den Original-Code zurück, denn es ist sehr wahrscheinlich, dass der Compiler Optimierungen vorgenommen hat. Und wenn da ein Obfuscator drüber gegangen wär, dann würde man nur Buchstabensalat bekommen.


    Danke dafür Akeshihiro, hätte gerne den Original-Code um ihn vll. auf unsaubere Zeilen etc hinzuweißen.

  • Was willst du deobfuscaten? Es gibt keine Verweise mehr auf die Originalnamen der Symbole, die sind alle weg. Nen Obfuscator geht einfach über alle Symbole (Variablen, Methoden, Klassen, ...) drüber und benennt die um, mehr nicht.


    Ich weiß, aber unter AutoIt gibt es Deobfuscator, die wenigstens die Struktur wieder herstellen. Dass Variablennamen und alles futsch ist, ist ja klar.

  • S3cret
    Was meinst du mit Struktur?


    Zum Game: Keine Ahnung, wie ich das nennen soll, aber der "Flow" ist nicht flüssig oder wie auch immer. Kommt einem alles irgendwie künstlich vor, z.B. die Sprünge sind bissl langsam finde ich. Und ich habe es irgendwie geschafft mehrere Kisten in einander zu schieben bzw. fallen zu lassen. Und es gab nen Game Over obwohl mir nix auf den Kopf gefallen war. Und die Kisten verschieben sich zu hackelig, eine saubere kurze Animation wäre da schicker.


    Und auch wenn das hier nicht hingehört, aber der Quellcode sieht nicht nach Java aus, sondern nach .NET. Wenn ihr schon eine andere Sprache verwendet, dann haltet euch bitte auch an die sprachenüblichen Konventionen, das hat schon seine Gründe. Und dass da einige Sachen leicht merkwürdig sind, brauch ich ja nicht zu sagen, das weißt du ja schon ^^

  • Alles schön und gut :) Aber ich hätte auch gerne ein kleines Feedback :)


    Ich kenne deinen Kenntnissstand nicht so aber für den Anfang sieht das ganz gut aus.
    Sind aber noch ein paar Sachen vrebeserungswürdig, das Wegschieben der Kisten kommt mir ein bisschen komisch vor^^ Ein kleiner Timer wäre meiner Meinung nach hilfreich, so dass Kisten nicht sofort weggeschoben werden, sondern erst nach 300ms oder so, die der Nutzer weiterhin in eine Richtung drückt.


    S3cret
    Was meinst du mit Struktur?


    Naja, Struktur nicht direkt. Der Obfuscator ändert ja alle Texte, die sich ändern lassen in unleserlichen Text, der eigentlich überall gleich aussieht. Zumindest unter Autoit hat der Deobfuscator dafür gesorgt, dass man schneller wieder einen Überblick über den Code hatte und es einem leichter fiel wieder passende Variablennamen zu entwerfen. Sprich er hat die Variable AOAR87GH498ERS4EG9HZ4SSRT4SD68G4SDSDG umbenannt in etwas kürzeres und in eine einfache Zahl.

  • Achso ... Ja, mag sein, dass es sowas gibt, aber glaub mir, das hilft dir wenn überhaupt nur bei kleinen Projekten. Bei größeren Projekten wäre das vollkommen irrelevant, weil man selbst mit kurzen Bezeichnern nix verstehen wird. Und wer die Codes mit einer IDE auseinander nehmen wird, der wird sowieso Refactoring einsetzen, wodurch dann vollkommen egal ist, wie lang die generierten Namen sind.


    Es ist nicht unmöglich den Originalcode zu rekonstruieren, keine Frage. Die Frage ist eher, wie viel Aufwand und Zeit man bereit ist dafür zu investieren. Selbst bei kleinen Programmen wird das schon ordentlich Aufwand brauchen und je größer und komplexer das Projekt, desto schwieriger wird es auch. Hinzu kommt auch noch, dass ein guter Obfuscator nicht nur Umbenennungsmaßnahmen durchführt, sondern auch die Abläufe verändern kann, z.B. simple Anweisungen wieder weiter verschachteln oder auslagern in andere Methoden oder sogar Klassen. Was auch ein gutes Feature ist, ist das Einschleusen von unnützem Code, der für die Anwendung absolut keine Bedeutung hat, aber das weiß der "böse Bube" ja nicht und wird versuchen auch das zu verstehen, was auch wieder Zeit frisst. Der Sinn dahinter ist nicht, dass man das Programm dadurch komplett verstümmelt, sondern dass man den Leuten, die versuchen es zu analysieren, versucht die Lust daran zu nehmen, indem man es ihnen so schwer wie nur möglich macht und irgendwann lohnt es sich einfach nicht mehr. Minecraft ist so ein Beispiel. Das will ich gar nicht rekonstruiren, da sitzt man Monate dran, das lohnt sich überhaupt nicht.

  • die Sprünge sind bissl langsam finde ich


    Meinst du die "animation" Algemein oder einfach nur die Bewegung in die Höhe/Breite?


    Und ich habe es irgendwie geschafft mehrere Kisten in einander zu schieben bzw. fallen zu lassen.


    Das ist mir bekannt...Ich habe allerdings noch keinen Weg gefunden den Bug zu entfernen.


    Und die Kisten verschieben sich zu hackelig, eine saubere kurze Animation wäre da schicker.


    das Wegschieben der Kisten kommt mir ein bisschen komisch vor^^ Ein kleiner Timer wäre meiner Meinung nach hilfreich, so dass Kisten nicht sofort weggeschoben werden, sondern erst nach 300ms oder so, die der Nutzer weiterhin in eine Richtung drückt.


    Das werde ich dann noch einfügen :)


    Und auch wenn das hier nicht hingehört, aber der Quellcode sieht nicht nach Java aus, sondern nach .NET.


    Ich programmiere auch mit VB.net deswegen fließt da wohl auch etwas in Java mit rein. Nur wie kommst du darauf und was würde man in Java anders machen?


    Ich kenne deinen Kenntnissstand nicht so aber für den Anfang sieht das ganz gut aus.


    Es ist mein erstes Java-Projekt :)


    Danke für euer Feedback. Ich versuche so gut wie möglich das Spiel auszubessern :)

  • Die Höhe und Breite bei den Sprüngen sind eigentlich ok, wobei die Breite etwas weniger sein könnte, weil über zwei leere Plätze ohne Probleme zu hüpfen ist vielleicht etwas viel.


    Das mit .NET fällt sofort auf, das ist einfach so. Jede Sprache hat ihre Konventionen, an die man sich zwar nicht halten muss, aber sollte, denn die meisten tun es und lesen die Codes auch entsprechend. Wenn man dann einen Code vor der Nase hat, der sich nicht an die Konventionen hält, dann wird das Lesen oft schwer, nicht weil man es nicht kann, sondern weil es nicht zur Sprache passt und der Kopf das verweigert. Einige Konventionen für Java findest du hier: klick


    Das gilt natürlich für alle Sprachen. Jemand, der eine .NET-Sprache verwendet, der wird auch sofort sehen, wenn jemand etwas zwar in .NET geschrieben hat, aber nicht die üblichen Konventionen eingehalten hat, z.B. weil es Java-Stil ist oder auch was ganz anderes, C-Code z.B. hat auch einen sehr markanten Charakter.


    EDIT:
    Hier mal die gesamte offizielle Liste der Java-Konventionen: klick
    Ich kenn die auch nicht auswendig und niemand hält sich zu 100% dran, aber es sollte eine Richtlinie sein.