+ Reply to Thread
Page 1 of 4 123 ... LastLast
Results 1 to 10 of 38

  1. PeroPero
  2. PeroPero Seduction Integration

  1. #1

    Join Date
    Jul 2015
    Location
    Chile
    Posts
    266
    Credits
    292

    PPS's random system discussion

    Welcome! xD Since the discussion about how PPS handles the random cards picks from the user got enough attention, I'm opening this thread so we can continue arguing without spamming the other thread.

    So, the polemic (lol) mainly is if whether PPS actually calculates which card you're gonna get from chance rolls/gachas before you make your choice, or if it really places each possible card "under" the 6 face-down cards we see when choosing.

    To save time, I'm gonna quote each comment written about this subject. Also, that could help Kotono to clean the other thread if he wants, without loosing this random discussion xD:

    Quote Originally Posted by Tenhou
    Might be a major coincidence, but i've noticed SR cards appearing in specific slots depending on which card it was. In my case Runa appeared in the middle and left top ones everytime she appeared in explore. Same tactic with N-gacha, really, so i have every SR card you can get from N-gacha because i just kept pressing that one spot i saw them appear on and they did so again. Has worked for every card i wanted, like Akie Ibara always appearing for me in the top middle and lower right. Sure, can be a coincidence, but i have managed to get a lot of SRs with this specific trick.
    Quote Originally Posted by Danex
    Now that you mention that, I'm really curious about how PPS handles a random card pick from the player.

    I remember that in Marvel Avengers Alliance (a Facebook game for those who haven't played it), in some situations you had to choose between 9 possible squares to receive a random reward. Some guys from that community started to analyse the game's code and realized that the game calculates the prize you won from the random pick before you actually choose anything. Being that said, at the moment the random choice spawned, the reward was already decided, but the game simply displayed the rest of the possible rewards on the rest of the squares depending on the one you choose.

    If PPS's random picks works the same way, then we're more depending on probabilities than we would on our own choices ('cause everyone tends to have a pattern when choosing).
    Quote Originally Posted by Kotono
    If that were the case, then the purpose of card reveals would be void.
    It also means guaranteed SR tickets would not function the way they currently do.
    Quote Originally Posted by CSocktaters
    That is odd because I have gotten every single N card and almost all R cards (missing 3) from the gacha possible by clicking in the top right corner. The theory is interesting but we don't have near enough evidence to prove it.
    Quote Originally Posted by Tenhou
    I have every SR, R and just missing the newest N from the gacha. I was simply much going for the SR cards the way i described previously and just kept clicking specific spots, which eventually also gave me all the other cards. For me, N and R cards seem to show up a bit everywhere, while SR cards have specific spots. Haven't seen a single SR card that wasn't in its own 1-2 designated spots, no exceptions (well, some of them had up to 3 spots, but still).
    Quote Originally Posted by Xanthius
    This topic was brought up around the game's launch time over at ulmf, to which user omp1234 posted

    To those thinking the chances of a rare card are 1/6: No.

    This is how these types of games get you.

    The 6-card layout is nothing but a mind-game, just like Valve's CS:GO gun slot. Your chances for rare or higher cards are a static percentage, usually around 30%. What you get on this percentage scale is applied to whatever card you click on, on-the-spot. It's random number generation that only LOOKS like a 6-card monte.

    Not matter what card you click on, you have the same exact chances of getting a rare or higher card, because the cards are generated AFTER you make your decision, not before.

    FOR EXAMPLE: Say the game shows you 6 face-down cards, and you have a chance to draw an SSR card. Your chances of drawing that SSR card is NOT 1-in-6. It's about 0.05%. The 1-in-6 is a trick, and what you get will be decided on an RGN after you click, which will very likely fall outside of the SSR hit range. But the game will reveal one of the other cards as the SSR card an make you think you were 'so close'. You weren't.

    This is how all gacha mechanics work in F2P games.
    While there aren't any verified facts of how the PPS system works, I have also played a few F2P games using a similar mechanic where this was proven to be the case.
    Quote Originally Posted by Opalia24
    I once wrote down how many time I saw a SR and how often I got the SR. The result was close 1 in 6.
    It seems players in this game in not cheated with the probility.
    I lost the data but will collect more and also on which space got the sr-girl.
    Quote Originally Posted by Kotono
    Second, I get a LOT of SR cards, leading me to believe the 1 in 6 chance is quite true. Even if the face down cards is just a ploy, fact is I still get the SRs a lot.

    It's also true that I've never seen an SR appear without the step up animation. But it is true that I have seen them NOT show up even after the animation played quite often.
    Quote Originally Posted by Danex
    So in theory PPS should work quite much like M:AA and other F2P games.
    Well, if the system worked fine for older games of this kind, it kinda makes sense that other games stick to it.

    Guaranteed SR Gachas shouldn't have problems with this system, since the difference would be the maths that the program does to determine wheter you get a card or not.
    Bad thing we can't put hands on the code to test it (without risking massive ban hammers LOL xD), but again, leaving the probabilities to the program avoids us the risk that our own biases represent.

    Thanks Xanthius for the info.
    Quote Originally Posted by RRYGO
    math or superstition...everything works when someone wants something...

    good thing is math doesnt cares about superstition, so, even if i try with the second, it will not affect me negatively
    Quote Originally Posted by Xanthius
    And definitely agree with you on getting lots of SR cards. PPS seems very generous with its probabilities no matter how you look at it...lady luck never favors so many people at a time
    Quote Originally Posted by Opalia24
    I numbered the 6 Cards spots this way:

    1 2 3
    4 5 6

    I recorded how many time the SR-Girl was in each of the 6 spots:

    SR1: 3 times
    SR2: 5 times
    SR3: 6 times
    SR4: 6 times
    SR5: 4 times
    SR6: 6 times
    Total 30 times I saw 1 SR-Girl.
    I would expect 30/6 = 5 times to get the SR-girl . I got her 4 times. Last gave I tested I got more SR-Girl then expected.

    No spot seems a lot better than the other spots.

    Same for R-girls:

    R1: 54
    R2: 50
    R3: 39
    R4: 44
    R5: 52
    R6: 46
    Total 285 R girls seen.
    Expected R-Girls got 285/6 = 47.5 R-Girls obtained 57.

    Total 229 Chance spins.

    If you dont use items chances seems to be around:
    N-girl 78,5%
    R-girl: 20%
    SR-Girl: 1,5%
    I still support the idea of the game doing the maths before the actual selection made by the players. By doing so they (devs) can keep the probabilities clean, and also if they want to modify the particular % of a card, they could without much problem, which means that if they want to give better chances for us to get SR or whatever, it should just be a matter of changing certain numbers.

    Hope this helps for something xP
    LoV ID: Danex (RIP LoV)
    PPS ID: 574023 (Dropped)
    Currently Playing: MWA

    My signature :3 Newbie stuff, don't kill me :c



  2. #2

    Join Date
    Jul 2015
    Location
    Argentina
    Posts
    157
    Credits
    179
    The main problem with the testing done is that it's all probability maths.
    You could collate all the spins from all the active players in a month, and the results would still be only the probability of getting a certain rarity in a certain slot.
    It would not reflect if you have that probability because of pre-choice math or post-choice math.

    The only way with this would be to crack open the code of the app and check it.

    If I had any experience with flash programming I'd do that myself, just to satisfy my curiosity.

  3. #3
    I gotta say that this is a very cool topic. Honestly I wish that I am able to do some practice runs in the very low level areas to see just how often the R's and SR's come up in various places in the 6 card selection, but right now I am in the bonus zone. However, I will say this...I have noticed, on many occasions, that specific SR cards tend to show up in the same spots quite a bit.

    For example..about the only card I can remember off the top of my head btw...Runa Kamiwano SR card that tends to show up fairly frequently in the event slots tends to show up very often in the bottom left corner.

    Now, I don't know if this is simply coincidence, random luck, or if specific SR cards have a habit of showing up in a certain squares more frequently than in the rest of the 'choices', but it would be nice if someone could figure this out.
    PeroPero: Zerana (879179) 55 out of 62 PeroFriends
    Osawari Island: CR20OG4XY3FGUTSJJ8599 (10 out of 10. Ty everyone ♥)


    Kamihimi Project R:

    ID: 879179
    Name: Zerana
    Eidolon: Phoenix lvl 55 (Will always change my main Eidolon to match event weakness)
    45 out of 49 Friends



    Mononofu: White Lilly Battle Princesses

    Friend ID: Zerana
    31 out of 50 Friends



    Flower Knight Girl: 818588405 (27 out of 31 Allies)

  4. #4

    Join Date
    Jul 2015
    Location
    Argentina
    Posts
    157
    Credits
    179

    Lightbulb

    Well, as far as my limited ActionScript knowledge can let me trace the code from decompiling the SWF file:

    Everything you do in the app (and I really mean everything; from clicking the splash screen button to buying items in the shop) is mapped into a tuple (name, flags, data object) and sent to the server for processing.

    Be aware that the following are just my guesses, and they can be completely wrong. Without access to the server code, or debugging/tracing the code during a playthrough, I cannot be sure of anything.

    Chance Times have four possible events (not counting the roulette spin ones, where you have one for each possible response, including each color stepup):
    • Step Up Finished: This one should trigger after all the step up spins are done. It should send the step up value to the server for chance event building (as far as I can guess, normal Chance Times are just treated as Step Up Lvl 0); and return the data needed to build the selection panel.
    • Chance Selected: This one should trigger after you have selected the card to open. It should send your selection to the server, and return the data needed to show results.
    • Open Card: This one should be the event that adds the reward card to your collection (or leves up the card if not new). It shouldn't send any new data, and return the data needed for adding/fusing the card.
    • Open Card Finished: This one should trigger after you've finished the card event (adding/fusing the card to your collection).


    There's also a lot of Gacha events and constants, but they all seem to be about the Gacha Window in the main app (where you choose the gacha to use, view the card lists, etc).

    I'm currently trying to see if any data is passed to the Chance Selected event regarding chosen card. The algorithm itself will remain unreachable for us, but depending on the data passed there, we'll know a bit of how this works:
    1. If no data about the chosen card is passed, then we can easily assume the algorithm ignores our choice completely.
    2. If data about the chosen card is passed, then we'll know the choice is relevant. Now, wether the cards are pre-calculated or not won't be reflected here, but it might be heavily implied so if this data is returned to the server.


    Okay, delving a bit more,

    I've found enough panels and event notifications to confirm that there are three parts to a chance time:
    1. Chance Time Panel
    2. Get Card Panel
    3. Integrate Card Panel

    as well as a boatload of micro-events in between them:
    1. Init event for each panel
    2. View event for each panel
    3. Action events for each step:
      • Select
      • Select Result
      • Select View
      • Use Item
      • Confirm Item
      • Use Item Result
      • Open Cards


    Once again, if the selection has an impact on the algorithm is unknown to us. Each step could be there for the simple purpose of keeping track of each interaction with the player, as well as for the need of selection values.



    And, finally, because my curiosity wouldn't allow me to leave this alone, packet phishing has led me to:

    After trawling through a lot of data with WireShark, and after understanding how the app works in sync with the server, I've located the following web service path as the call from the SELECT CARD event:

    Code:
    GET /Raidboss_Event-Chancetime/choice?playerId=853603&sessionId=26BLongBase64SessionId&format=json&select=5&token=20BLongHexadecimalTokenId
    Ignoring the session and token IDs (which I have erased for security reasons), and my User ID, we can see that the selection code is actually passed (5 here meaning bottom middle card).

    After decoding the 2.8KB block of data returned by that call, you get:
    Code:
    {
        "contents":{
            "player":{
                "playerId":"853603",
                "level":"35",
                "exp":{
                    "value":"36094",
                    "max":"37165"},
                "gold":"15402",
                "friend":{
                    "value":39,
                    "max":"39"},
                "actionPoint":{
                    "value":"88",
                    "max":229,
                    "recoverFinishTime":1436559511,
                    "recoverTime":8442,
                    "recoverInterval":60},
                "battlePoint":{
                    "value":0,
                    "max":6,
                    "recoverFinishTime":1436552659,
                    "recoverTime":1590,
                    "recoverInterval":300},
                "thumbnail":{AvatarImageURLsObject}
                "boost":false},
            "answer":[
                {"cardId":"121",
                 "src":{CardImageURLsObject},
                 "name":"Yukiko Hosaka",
                 "rarity":"N",
                 "level":84,
                 "at":"220"},
                {"cardId":"108",
                 "src":{CardImageURLsObject},
                 "name":"Maiko Mikami",
                 "rarity":"R",
                 "level":25,
                 "at":"660"},
                {"cardId":"49",
                 "src":{CardImageURLsObject},
                 "name":"Yukie Takenouchi",
                 "rarity":"N",
                 "level":69,
                 "at":"340"},
                {"cardId":"14",
                 "src":{CardImageURLsObject},
                 "name":"Mayumi Hashiguchi",
                 "rarity":"N",
                 "level":100,
                 "at":"200"},
                {"cardId":"46",
                 "src":{CardImageURLsObject},
                 "name":"Iori Kodama",
                 "rarity":"N",
                 "level":100,
                 "at":"260"},
                {"cardId":"44",
                 "src":{CardImageURLsObject},
                 "name":"Rio Iguchi",
                 "rarity":"N",
                 "level":100,
                 "at":"230"}],
            "card":{
                "before":{
                    "cardId":"46".
                    "src":{CardImageURLsObject},
                    "name":"Iori Kodama",
                    "rarity":"N",
                    "level":100,
                    "at":"2590"},
                "after":{
                    "cardId":"",
                    "src":{PeroImageURLsObject},
                    "name":"300 pero",
                    "rarity":"",
                    "at":""}},
            "isItem":1},
        "header":{
            "status":"OK",
            "error_msg":null}}
    The JSON code returned is quite self explanatory. There's all the data from my account (contents.player), all the data from the response (contents.answer), and the header data (header).

    You can also see how the answer contains all six cards to show (contents.answer.[0]), as well as the before/after data for adding/integrating the selected card (contents.answer.card), and the fact the returned card is actually an item/pero (contents.answer.isItem).

    I forgot to take a screenshot, but I can say the array of returned cards is in the exact order of revealed cards (Top-Left being 1st, Bottom-Right being 6th)

    This means that the selected value does impact the result returned by the server.
    However, once again, there's no data to point to any possible choice algorithm. What's more, the way the data is returned completely negates any chance the selection value being sent to the server may mean it does impact the choice itself, as it might just be sent so that the server knows how to build that response JSON object

    Last edited by YoshiEnVerde; 07-10-2015 at 01:46 PM.
    PPS ID: 853603 (YoshiEnVerde)
    Osawari Invite: 40VRKO15D3C537UUC2F4F

  5. #5
    Wait, does that mean you can see what the cards are beforehand, or did it not tell you the card data until you selected one?

  6. #6

    Join Date
    Jul 2015
    Location
    Argentina
    Posts
    157
    Credits
    179
    I will toss my coin to the choice-affects-algorithm size, mainly because from a programming view, if cards were pre-calculated (and not impacted by choice) it would be easier for the server to send all the result data when the chance event triggers, and just emulate the whole choice process locally.
    Instead, the server is contacted after the choice has been made, and returns all the data to show the result and apply the integration.

    My guess is that if goes something like this:
    1. Player triggers a chance time event
    2. Player is shown the choice panel
    3. Player chooses a card position, triggering a chance time card choose event
    4. App sends request for processing a chance time with a chosen card position
    5. Server runs an algorithm that creates 6 cards in an ordered fashion, based on all the chance time event's parameters (What stage is this? Is it a Gacha Ticket? 4th Event Ticket without an SR appearing? There were 4 stand up spins? etc)
    6. Server checks the card corresponding to the selected position
    7. Server processes the integration of checked card
    8. Server returns the result JSON packet with current player data, answer data, integration data, and header
    9. App recieves results and triggers the chance time choice reveal event
    10. Player and App interact for the set of chance time card integration events and panel
    11. Player is show whatever panel they came from before chance time event was triggered (with updated player data from response)


    - - - Updated - - -

    Quote Originally Posted by Kotono View Post
    Wait, does that mean you can see what the cards are beforehand, or did it not tell you the card data until you selected one?
    All the data from all 6 cards is returned as part of the answer to your choice. So no, you have no data before you choose your card.

    - - - Updated - - -

    The interesting part is that you could alter incoming and outgoing packages to force the game into giving you chance times (or whatever you want to get); but it would probably raise a hacking flag in the server at worst, or leave traces that can be found by admins at best (depending on the level of validation strictness the server does on each player's state).

    I'm actually glad with that, as I despise people laming a game with hacks, even as a COD minmaxer with the skills to build hacking apps (specially so)
    PPS ID: 853603 (YoshiEnVerde)
    Osawari Invite: 40VRKO15D3C537UUC2F4F

  7. #7
    I hope PeroPero server is the only one to know then hidden Cards untill a player pick a Card. If our computer have info about what the hidden Cards are before we pick a Card cheaters can make a simple program that enables them to have a free Card reveal all the time. The PeroPero server would not be able to see that the cheater have read some info in there own computers memery as long as the cheaters dont change the info.

    I dont like cheaters and hope the PeroPero is code is better than some other free Card games. I am no hacker and I newer made any tools like that. I am just interested to understand the game better so I can max my SR chance with in the Laws of the game. So I do statistic to see if Cards are better in some spots that others spots.

    I know from real slot mashimes that the owners some time chance the reward chance. If a mashine is unpopular they raise win chances. They dont tell players ablot this, When players discower it is a real good mashine owener lower win chances again. I newer really gamble for Money but I find interesting to try to find optimal tacktics.
    Last edited by Opalia24; 07-10-2015 at 03:46 PM.

  8. #8

    Join Date
    Jun 2015
    Posts
    1,916
    Credits
    1,639
    This was some nice data you gathered, really interesting. I must say your guess at how it works seems appropriate, with the server generating the cards after the answer has been sent.

    Thanks for the insight

  9. #9

    Join Date
    Jul 2015
    Location
    Argentina
    Posts
    157
    Credits
    179
    Quote Originally Posted by Opalia24 View Post
    I hope PeroPero server is the only one to know then hidden Cards untill a player pick a Card. If our computer have info about what the hidden Cards are before we pick a Card cheaters can make a simple program that enables them to have a free Card reveal all the time. The PeroPero server would not be able to see that the cheater have read some info in there own computers memery as long as the cheaters dont change the info.

    I dont like cheaters and hope the PeroPero is code is better than some other free Card games. I am no hacker and I newer made any tools like that. I am just interested to understand the game better so I can max my SR chance with in the Laws of the game. So I do statistic to see if Cards are better in some spots that others spots.
    I do have the skills and know-how to build such tools, but my sentiments mirror yours exactly. I could crack the flash code easily and trace everything to see how the algorithm worked, but I'd hate it if somebody (myself included) ever used such knowledge to cheat the game.

    As far as I can tell, the server does keep track enough to not be hacked this way (or, at worst, for admins to be able to trace any such cheating):

    1. Every time you hit the big pink GO button, your local app asks the server for your next spin result. That allows the server to actually make sure you're not changing packets to get the spin you want.
    2. Every time you enter chance time, your local app is only capable of letting you choose from 1 to 6, and then ask the server to draw the 6 random cards and tell you which one you got, and how that affects your current collection. That allows the server to avoid players from laming the chance time process.
    3. Every time you do anything that comunicates with the server, your app recieves an update to your stats (exp and pero included) from the state saved in the server. That means at the very least the server keeps those values recorded, and updates them on any triggered event.


    The only things you might be able to lame are:
    1. Modifying data packets to lie to your local app about spin results, which might, might, allow you to cheat the server.
    2. Duplicating a used my card reveal packet before executing the select chance time card event, in order to always get the cards data before selection.
    3. Modifying data packets, just like on item 1, but for focus related events, like attacking guards and such.


    However, just by looking at the average packets moved, you can tell that all these cheats would leave a very big neon-flashing marquee on any attempt, easy for admins to find.
    And that's only if the server doesn't bother to validate every passing packet, which would automatically raise a red flag for any admin to check.
    PPS ID: 853603 (YoshiEnVerde)
    Osawari Invite: 40VRKO15D3C537UUC2F4F

  10. #10
    May I ask how you learned how to do this? I don't want to intrude on your secrets but I've always been curious as to how some people go about manipulating their way into what should be safe information.

Posting Permissions

  • You may post new threads
  • You may post replies
  • You may not post attachments
  • You may not edit your posts
  •