Announcement

Collapse
No announcement yet.

Riuga's Berlin Simulator

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Riuga's Berlin Simulator

    Granted, I should have posted this about two months ago, however various events have pushed back this simulator's release date to this day. This is quite the appropriate time for something this release since DN SEA is down and most aren't willing to try out other servers in the mean time. Without further ado, I hereby present the Berlin Simulator.



    Yes, this is not a joke. About two to three months back, Alexander managed to +13 his RuDN-L Dagger in one attempt, and I received an Epic Berlin Hero card from one of the attendance reward hero pouches. It donned on me that these were probably omens of some sort that Alexander and I should create a Berlin simulator, so here we are now.

    I. Download

    Download Link.

    Simply unpack and run. A standard ReadMe.txt is included for various disclaimers and information.

    II. Instructions and Information

    1) Enhance event buff increases are multiplicative (successRate *= 1 + eventBuff), i.e. for a 100% enhancement buff: (successRate *= 1 + 1.0F) = (successRate *= 2)
    2) Guild potion increases the enhancement success rate by 10% (successRate *= 1.1F)
    3) Hotspring buff increases enhancement success rate by 7% (successRate *= 1.07F)
    4) If both the enhancement event buff and either the guild potion or hotspring buff are active at the same time, the one with the higher multiplier will be applied. They do not stack.

    Easter egg hints:

    1) Berlin now has a sense of humor when you're upset, but not all the time.
    2) Rumors say that something happens if you consume 666 of each of your materials and 666,666 gold.

    Reverse engineering challenge:

    I'm usually not one to encrypt game assets as all forms of file encryption will eventually get cracked, however I decided to slap some basic "encryption" on the easter egg files to keep most laymen from figuring out the easter eggs prematurely. Since it's not very hard to crack, I decided to make it a challenge. Crack the encryption on the easter egg files and post the "encryption key(s)" onto this thread, along with a screenshot or two of the cracked images. You may use whichever method you wish to use, be it disassembling, memory and file analysis, and / or writing your own brute-forcing program (extracting texture and sound sample data from memory without finding the encryption key(s) does not count). As time goes on, I may give extra hints to aid in the cracking process. Good luck, and more importantly, have fun. Bonus points if you rewrite the decryption subroutine(s) in a language other than Assembly (be sure to upload the code as proof, and no, I will not accept convoluted C/C++ code that came straight out of a decompiler).

    III. Future Plans

    At this point in time, Alexander and I would like to focus entirely on AO. As such, no future updates should be expected, at least for a long while. Possible updates may include sound effects, support for the new enhancement system, and more easter eggs. I may also make the number of unique enhancement materials modifiable.

  • #2
    thank for sharing
    Hello



    Dragon Nest SEA

    Comment


    • #3
      Thanks this is amazing~
      Hello Sir! Please free to mention me or send me a private message if you need any assistance! I will try my best to help you to the best that I can!

      -Subscribed to every forum section except Trades-

      Discord: Couplord#5195
      NA IGN: SirCoup

      Comment


      • #4
        haha so i tried it and was actually fun. my RNG seems pretty high though (+12 for only 28kg) as compared to my usual RNG

        and then i tried +13 haha busted to +11 (- . - '') then i still have 8kg left to redeem myself. the cost for enhancement from +11 to +12 is around ~4.7kg but the simulator won't allow me to continue (gold appears in red). is this intended to happen? like a sanity check for us to stop even though we still have some golds left?
        I'm a slow learner, that's true. But I learn.



        I do not need to be watched over or minded or cared for. I'm not a child.
        I am the Lady of Winterfell, and I am home.

        Comment


        • #5
          WOW! How accurate is this from the real one? 80%? 90%? 100%?

          Comment


          • #6
            Originally posted by theredgumball View Post
            haha so i tried it and was actually fun. my RNG seems pretty high though (+12 for only 28kg) as compared to my usual RNG

            and then i tried +13 haha busted to +11 (- . - '') then i still have 8kg left to redeem myself. the cost for enhancement from +11 to +12 is around ~4.7kg but the simulator won't allow me to continue (gold appears in red). is this intended to happen? like a sanity check for us to stop even though we still have some golds left?
            I forgot to account for the golden goose discount inside the gold sufficiency check. I've uploaded the fixed version.

            -

            This is more or less a general PSA to those who are less technically inclined, but yes, there are different types of RNGs, and they aren't all created equal. For something such as enhancement and gacha boxes, I believe the most important trait in an RNG is its statistical properties. Yes, an RNG may be biased to output certain numbers / ranges of numbers over others depending on its quality, and it may generate numbers more unevenly compared to other RNGs (i.e. in relation to how closely it mimics, say, the "ideal" 2 fails per one success sequence in the early levels of L-grade enhancement). Something such as regular old rand() does not guarantee uniform distribution, for instance.

            So what RNG does DN use? I did some analysis on the server binaries, and we can safely rule out msvcrt::rand(). There are absolutely no calls to that. What about <random> from C++11? Well, it's lacking a dependency for an MSVCR that actually implements the C++11 standard library. advapi32::CryptGenRandom()? No calls to that either. I did, however, find some boost:: strings, so they could very well be using boost's random component. Alternatively, they could be rolling their own, which would be my first guess since the quality of their RNG seems rather poor to be boost's from my personal experience (which isn't a very solid reason, and it could just be a misuse of boost's random). Regardless, this information alone doesn't really tell us much of anything regarding RNG quality, but it is one step forward in the right direction.

            For the Berlin Simulator, I am using <random> from C++11; mt1997 into a uniform_int_distribution, seeded with time(0). This is a fairly statistical and high-quality RNG. If you would like to do further reading, you can look up "Mersenne Twister" and "uniform distribution".
            Last edited by Riugа; 09-03-2017, 01:09 AM.

            Comment


            • #7
              Originally posted by lindbergh View Post
              WOW! How accurate is this from the real one? 80%? 90%? 100%?
              As far as the RNG and success/fail/break/downgrade mapping go, I cannot say for sure. I know Vahr believes that downgrade and break are determined by a second roll, however there isn't any solid evidence for this. As such, my simulator determines the result in just one "roll". The RNG that I use is also not guaranteed to be the same as DN's, however I did make sure to use a very statistical and high quality RNG, which may even be better than what DN has to offer. The rates are based entirely on enhancement table dnt file and are 100% accurate.

              Comment


              • #8
                Hi Riuga,

                I tried out the simulator, and it seems to be consistent with what I've experienced over my time using and enhancing L-grades.

                Overall it's great for estimating costs and such, but would it be possible to add a function where you can set a base enhancement level? Instead of starting at +0, start at +10 instead?

                Though this is a minor issue, it's pretty time consuming to enhance everything to +10 before recording your attempts and overall cost. This is by no means a request, something like a suggestion maybe? If it's too much work to incorporate, it's fine if you don't do it.

                Thanks!

                Comment


                • #9
                  Here's what my full set of +12 rune costed. The lower piece and shoes were annoying and kept bouncing back to +10... Aww, that was exhausting...
                  Click image for larger version  Name:	rune_enhance.png Views:	1 Size:	16.9 KB ID:	81613

                  Edit: RIP... I hit the easter egg before I could +13 the mainhand weapon
                  Last edited by Gator; 09-03-2017, 10:14 AM.

                  Comment


                  • #10
                    Originally posted by Gator View Post
                    Here's what my full set of +12 rune costed. The lower piece and shoes were annoying and kept bouncing back to +10... Aww, that was exhausting...
                    Click image for larger version Name:	rune_enhance.png Views:	1 Size:	16.9 KB ID:	81613

                    Edit: RIP... I hit the easter egg before I could +13 the mainhand weapon
                    Thats roughly the cost in game, i would say quite accurate :/ , and scary.

                    They appeared, gleaming and victorious. Our Emperors, breathless, bathed you in savior's silk. Then came the sound. Across all our worlds,the ceremonial Naga drums. Ten solemn beats to declare the suffering was over. With each beat terror began to crush my throat. They were not stoic and silent. I tried to call out but only a strangled whisper escaped.
                    When the ninth beat rang a torrent of blood filled the stadium, loosed by divine blades.The drums,the Empire, fell silent forever.

                    Comment


                    • #11
                      Tried, targetting for +10 for my RuDL Sword later

                      1st Forgot to turn on Golden Goose. Cost 90kg +10
                      2nd Turn on Golden Goose. Cost 24kg +10
                      3rd Try to +13(w Goose buff obviously). Cost 72kg +13

                      Am i considered lucky?
                      My Characters
                      Based on Date Creation


                      thanks to faustius for providing the job icons~
                      Too lazy to update char list, maybe sometime i'll update it :v

                      Comment


                      • #12
                        Originally posted by vangeodee View Post
                        Hi Riuga,

                        I tried out the simulator, and it seems to be consistent with what I've experienced over my time using and enhancing L-grades.

                        Overall it's great for estimating costs and such, but would it be possible to add a function where you can set a base enhancement level? Instead of starting at +0, start at +10 instead?

                        Though this is a minor issue, it's pretty time consuming to enhance everything to +10 before recording your attempts and overall cost. This is by no means a request, something like a suggestion maybe? If it's too much work to incorporate, it's fine if you don't do it.

                        Thanks!
                        Implemented and re-uploaded.

                        -

                        Edit: I'll just leave my brute force +15 simulation results here.

                        Without jelly:



                        With jelly:



                        The reason it is more expensive with jelly is because it makes you perpetually stuck in the +10 ~ +14 range before you can hit +15. By breaking weapons, you start at earlier levels, thus you spend less per enhancement.
                        Last edited by Riugа; 09-03-2017, 10:07 PM.

                        Comment


                        • #13
                          Originally posted by Reyzha7 View Post
                          Tried, targetting for +10 for my RuDL Sword later

                          1st Forgot to turn on Golden Goose. Cost 90kg +10
                          2nd Turn on Golden Goose. Cost 24kg +10
                          3rd Try to +13(w Goose buff obviously). Cost 72kg +13

                          Am i considered lucky?
                          Yes you are
                          a lot of others spent like 200-500k golds to reach +13

                          However it's not guaranteed to have the same result later in-game, but atleast you've got the rough feeling of it

                          Comment


                          • #14

                            +13 main weapon: 268kg
                            +13 sub weapon: 315kg
                            +13 upper: 142k
                            +13 lower: 96k

                            Comment


                            • nelznolz
                              nelznolz commented
                              Editing a comment
                              terrible luck bruh.. i only spend around 115kg for main weap +13, including the approximate cost of materials. (Jelly 50g ea, HGEOL 20g ea, Garnet 30g ea)

                            • imlouminare
                              imlouminare commented
                              Editing a comment
                              yea, I hope this won't happen to me in game. lol

                          • #15
                            Originally posted by AoiKaze View Post

                            Yes you are
                            a lot of others spent like 200-500k golds to reach +13

                            However it's not guaranteed to have the same result later in-game, but atleast you've got the rough feeling of it
                            Meet the artist of this simulator.

                            -

                            Just an update regarding which RNG DN uses. I have found definitive signs of a Mersenne Twister engine in the server binaries, however I've ruled out the possibility of them using boost's random component. There is only one reference to most of the mt19937 constants inside the binaries, and they are directly used in imul and 'and' instructions. Boost's mt19937 supplies the mt19937 constants as parameters, so they should not be directly multiplied and and-ed. Additionally, the binaries are devoid of boost's mt11213b constants. Upon further analysis of the subroutines these constants are in, it seems awfully like the public domain mt19937 implementation. Again, this is not yet definitive as there are still a couple of constants from the public domain implementation that I have not checked. The possibility of an in-house mt19937 implementation is still on the table, however the good news is that we've basically narrowed it down to two possibilities.
                            Last edited by Riugа; 09-03-2017, 11:26 PM.

                            Comment

                            Working...
                            X