PDA

View Full Version : PPS's random system discussion



Danex
07-09-2015, 12:26 PM
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:


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.


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).


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.


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.


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).


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.


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.



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.


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.



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 :)



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 :p


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

YoshiEnVerde
07-10-2015, 10:09 AM
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.

Zerana
07-10-2015, 10:26 AM
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.

YoshiEnVerde
07-10-2015, 11:34 AM
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:

If no data about the chosen card is passed, then we can easily assume the algorithm ignores our choice completely.
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:

Chance Time Panel
Get Card Panel
Integrate Card Panel

as well as a boatload of micro-events in between them:

Init event for each panel
View event for each panel
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:


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:

{
"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

Kotono
07-10-2015, 02:08 PM
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?

YoshiEnVerde
07-10-2015, 02:22 PM
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:

Player triggers a chance time event
Player is shown the choice panel
Player chooses a card position, triggering a chance time card choose event
App sends request for processing a chance time with a chosen card position
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)
Server checks the card corresponding to the selected position
Server processes the integration of checked card
Server returns the result JSON packet with current player data, answer data, integration data, and header
App recieves results and triggers the chance time choice reveal event
Player and App interact for the set of chance time card integration events and panel
Player is show whatever panel they came from before chance time event was triggered (with updated player data from response)


- - - Updated - - -


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)

Opalia24
07-10-2015, 03:28 PM
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.

Tenhou
07-10-2015, 03:46 PM
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 :D

YoshiEnVerde
07-10-2015, 03:53 PM
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):


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.
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.
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:

Modifying data packets to lie to your local app about spin results, which might, might, allow you to cheat the server.
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.
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.

CSocktaters
07-11-2015, 12:23 AM
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.

YoshiEnVerde
07-11-2015, 02:20 AM
No problem at all... not really any secret here.

The main point is that I'm a proffesional in the IT sector (mainly business intelligence and software development) with over a decade of experience.
That there gives me the ability to grab any program, and find some way of tracing the way it works (sometimes better, depends a lot on the language and design, really).

With that out of the way, I first saved the PeroPero Saimin page to the disk to get my hands on the game's swf file.
Then, I googled until I found a good enough Flash SWF decompiler, which basically tries to give you readable action script source code from a swf file.
After that, I just read the resulting code, trying to get a general idea of how the program worked.
Once I had a bare understanding of that, I looked for the part where gacha/chance was handled.

That's how I got the first part of my post (BTW, later I realized I had made a few mistakes in my assumptions, but by that time they were irrelevant).

Once I knew that the app was constantly asking the server for every scrap of data and every event processing, I opened one of my trusty packet sniffers.
I pinged Nutaku to get a general idea of what IP it was using, and then started watching over any TCP/IP packet that was moved between my machine and Nutaku.
Then, I basically played the game while watching the packets go by, until I had a good idea of how PeroPero's communication protocol worked (I can tell you, for example, that Nutaku handles the load balancing, making sure we all have access to the game no matter the consumption of bandwidth, by proxying everything through an Amazon AWS Service).

After that, it was just a matter of analyzing the HTTP packets to see what was being transmitted.
I waited until I got a Chance Time in the event spin, and started reading all the packets very closely.
The fact that the data is not encrypted at all helped inmensely (now that would have been a nightmare to bypass).


Once again, just enough experience to know what to look for, and what tools to use, and patience. Lots of patience.

BTW, if anybody wants to know, the tools used were FFDec for decompiling the swf file, and WireShark for packet sniffing. Besides that, just Sublime Text as text editor to power through pieces of code/data.

Danex
07-11-2015, 10:56 AM
Well, thanks YoshiEnVerde, your analysis pretty much solves the mistery xD.
Though I'd really like to be able to analyse the code further, but the conclusions makes sense to me, so I agree.

Didn't even wanted to use WireShark, but I guess there's no problem in just sniffing some packages and observe traffic.

Opalia24
07-11-2015, 12:04 PM
I am happy that server handle all because then people can only cheat by hacking the server which I am cetain to be notised.
So basicly no easy way to cheat :) :) :) :)

If the coding had been done badly our programmer friend and some cheaters could have made a cheat programs by now.
Very good that is not the case :)

RRYGO
07-12-2015, 02:16 PM
just to be sure...

the event ends on july 13 to be 14 or 12 to be 13?
on airi tips says the event runs till 8:00 am of july 13, but the button says it ends on july 24:00 (maybe sounds dumb but i prefer ask rather than "where the hell is my last day?")

YoshiEnVerde
07-12-2015, 06:08 PM
The next 5 hours and some minutes are all that's left of the event.
8AM EST is when the maintenance window will open, and the event will be removed.
Whether the event will still be available between 00:00 EST and 8:00 EST is unknown.

CSocktaters
07-18-2015, 01:06 AM
This post contains material regarding an exploit and should not be used maliciously.

So you guys probably know when you refresh the page with the chance time screen open you will have the word Resume over the button instead of go and upon clicking it the slots will mimic your previous outcome perfectly (If your roll ended in a 4th pseudo-streak in a row before refreshing then it will recreate that) and then bring up the card selection again for you to choose. Once you have chosen though there is no going back because if you choose to refresh after your selection the game will load and it will add a level to whatever card you received. Now with this in the game you can resume at any time and it won't cost you any stamina, seeing as you spent it already to get the chance time in the first place, and you can adjust your missions before selecting a girl. So saying if you had the Gift and Pero missions up but had no progress yet and there was a chance time queued up for you to resume, you could cancel one of these and select the Flirt mission to pick up a girl and see if you get whatever rarity you needed and make some progress with the quest. If you were to try and select the Chance mission it would not add any progress due to you hitting it earlier and the slot is just resuming where you left off. This is a little feature that has some potential to aid us but it doesn't stop there. After confirming that it will nab you whatever pseudo-streak you left off at I wondered if it kept the same information regarding step-up levels. I found out that if you refreshed after having a pseudo-streak you could easily continue refreshing until you got the desired step-up level that you wanted. From my understanding having a level 5 step-up does not guarantee that you will get an SR but I find that it makes it more common to get the SR and R card from the area you were farming.This is an exploit that should be ticketed to Nutaku and I just wanted to share what information I've gathered on the subject. I do not know how this works when you gift someone an N-wild but it probably can't be abused.

65 Refreshing from this point forward stores the pseudo-streak information.
66 Refreshing at the chance time screen will give you this.

chillinfar
08-03-2015, 09:27 PM
WTF moment.

Gacha-> bad roll (N card with lvl 100)-> SR upgraded.

I know that exists a rare chance to upgrade a R card when a lvl 100 N card got hit in Gacha, but is the first time that i see a SR. Anyway, chance is poor.

Unregistered
08-03-2015, 09:44 PM
WTF moment.

Gacha-> bad roll (N card with lvl 100)-> SR upgraded.

I know that exists a rare chance to upgrade a R card when a lvl 100 N card got hit in Gacha, but is the first time that i see a SR. Anyway, chance is poor.

This happen to me just a bit ago as well.

Opalia24
08-04-2015, 09:06 AM
If you girls are not max using a N-Gacha and no other items give:

A) 1x N-girls chance 80%.
B) 1x R-girls chance 18.5%.
C) 1x SR-girls chance 1.5%.

If alle N-girls are max getting a N-Girl have around 1% of level a R-girl and 1% chance of leveling a SR-girl.

With all N-girls maxed N-Gacha give:
A) 1x N-wild chance 78%.
B) 1x R-girls chance 19.5%.
C) 1x SR-girls chance 2.5%.

chillinfar
08-20-2015, 02:56 PM
I noticed some rotations in gacha from type +1 +2 (white or blue blink) or +3 (white blink only after 2-5 rolls). This even applies on GHQ, when you can find only N cards (the different one follow the sequence). No blink means usually +1, starting from the last position where the rarest card was found.

The random fact is when offers more than one card of the same type (specially with red blink) or character stucks on the same position, changing direction or rotation after that (once i found 2 SR and 1 R on the same place, then rotation goes on).

I identified three different kind of rotations (could be more), i.e +1 +1 +2 -3 or -2 -2 +1 -1.

This is just a theory, i need some feedback from other users if they got rotations like mine.

Note: i'm not in the discuss if data is preloaded on client or server side, Yoshi already did a good job explaining how client works. What i'm discussing this time is about permutation over the position of the results.

And about R or event gacha, i don't know if these rotations works (card reveal or no use)

Kaiio
09-04-2015, 02:53 AM
7 fails in a row with three Os and three Xes leads me to believe the cards are generated after you make your choice and some hidden dices with lower chances are rolled.

chillinfar
09-04-2015, 03:31 AM
Gacha and doors has a rotation. In fact, if you see your fails and where was those correct answers you can intuit about where can be the next one.

However, PPS random system is based on certain moment when rotation is changing. You can see a pattern anyway, but is on the moment.

Learn something called permutation.

lolix
09-04-2015, 04:27 AM
Gacha and doors has a rotation. In fact, if you see your fails and where was those correct answers you can intuit about where can be the next one.

However, PPS random system is based on certain moment when rotation is changing. You can see a pattern anyway, but is on the moment.

Learn something called permutation.

I agree. Doors have some rotations. For example i noticed 3 common patterns when doing the pero gambit. At 50-50% chances , i noticed that the next patterns apear more often then others :

1. Top left , middle bot , top rights are Os
2. Top left , top middle , bot middle Os
3. Bot left , top middle , bot right are Os.

This 3 are what i've noticed apear from time to time , with higher frequency then others at 50-50% (probably because they are simetric paterns , so it was easier to notice ). That's why i usually pressed the top left and top middle usually , since those have the highest chance if we consider the 3 patterns. Obviously , there might be other patterns , or it might be actually random as **** and it was a simple coincidence in my case. Regardless , would be cool if anyone else could test and confirm this with me

Overload
09-04-2015, 05:30 AM
I agree. Doors have some rotations. For example i noticed 3 common patterns when doing the pero gambit. At 50-50% chances , i noticed that the next patterns apear more often then others :

1. Top left , middle bot , top rights are Os
2. Top left , top middle , bot middle Os
3. Bot left , top middle , bot right are Os.

This 3 are what i've noticed apear from time to time , with higher frequency then others at 50-50% (probably because they are simetric paterns , so it was easier to notice ). That's why i usually pressed the top left and top middle usually , since those have the highest chance if we consider the 3 patterns. Obviously , there might be other patterns , or it might be actually random as **** and it was a simple coincidence in my case. Regardless , would be cool if anyone else could test and confirm this with me

Saw that also quite often, it's rly the best to always go top left or mid, same goes for chances, most of the time, at least for me it's mid top or bot.

YoshiEnVerde
09-04-2015, 10:35 AM
There isn't actually any rotation. And most definitely not any predetermined pattern.
What you're all seeing is pure unadulterated coincidence, caused by a lot of internal/backend stuff intersecting at the right time.

Anybody that's ever even bothered to try (or learn) doing something random in a program will tell you that there's actually a loooooooooooooooong mathematical calculation done, with initial data gathered from some supposedly random place in your operative system, which is used to return the pseudo-random values you asked for.

These values are usualy decimal numbers that go from 0 to 1 (e.g.: 0.947104038462357230439), which then is multiplied by your target range to get a random integer.
Other implementations just grab random bytes (up to the amount needed for the value type you requested) and perform binary shifting and operations on the bytes to get you the pseudo-random.

The thing is that, sometimes, this results in very similar data being used for consequent fetches (well, consequent for you, as the server has probably done some few hundred thousands of RNG fetches, both for other players and for internal functionalities, between your two clicks), which results in very close values.
It doesn't help that a typical RNG fetch for this game is only in the (1,6) range, or (1,6)->(1,100) for gachas/chances, as that means that out of 4k billion random number you can get from the RNG (that's the posible values of an Integer in Java), they all get smushed up into 100 possible results at best (1 for each % in the rarity chance table). Bottom line? Your RNG could have gotten anything from 0 to 42,949,673 and still count as "lowest 1%" (a.k.a. "Definitely a N-Rarity Card")

chillinfar
09-04-2015, 12:34 PM
I understand. Due to low quantity of objets to permute (6 on PPS), that random system can place answers in common positions. The only what is possible to calculate with current data is the frequency of some results on certain timelapse. And it isn't ensure that the next answer will be the correct.

We can't know how PPS is managing this (i saw your demo decompiling main program), if is pure random or has a pattern (or mix both to make the shape that has a pattern, fooling the player as you guess). Results are the only data available to work and may be different for each player.

I'll try to see pos of gachas later. I was seeing this many times, but i never wrote this to a text file.

YoshiEnVerde
09-04-2015, 02:35 PM
I understand. Due to low quantity of objets to permute (6 on PPS), that random system can place answers in common positions. The only what is possible to calculate with current data is the frequency of some results on certain timelapse. And it isn't ensure that the next answer will be the correct.

We can't know how PPS is managing this (i saw your demo decompiling main program), if is pure random or has a pattern (or mix both to make the shape that has a pattern, fooling the player as you guess). Results are the only data available to work and may be different for each player.

I'll try to see pos of gachas later. I was seeing this many times, but i never wrote this to a text file.

I agree we can't accurately know how they do this. However, we can put more weight in the more logical or common solutions for a game such as this.
The main point to remember is that the server behind this isn't made to handle your game, but a couple million JP players, sending service requests at least every couple of seconds.

That means the server needs to be able to balance a load of possibly hundreds of thousands (or even millions) of requests per second.
In such kind of architecture, you tend to try and minimize any superfluous bit of logic that is pretty much useless to you...

As such, why add some weird rotating pattern to your code, when just randomizing crap works the same?
Applying a pattern requires keeping the pattern stored somewhere (either hardcoded or in database), fetching it, mapping the input data into something that can be put through the pattern, applying the pattern, mapping the results to the required response, and only then returning the value.

Just to make a comparisson:

The simple randomizer works like this:

Fetch six RND decimals between 0% and 100%.
Apply step-ups.
Map the 6 results to the "Rarity Table".
Fetch a new RND decimal for each mapped range.
Fetch data from the IDed cards.
Build and return JSON object.


Against a pattern:

Fetch the pattern list.
Fetch a RND decimal to choose pattern.
Fetch the chosen pattern.
Fetch six RND decimals based on the pattern.
Map the 6 results to the "Reward Patterns Table".
Fetch a new RND decimal for each mapped range.
Fetch data from the IDed cards.
Build and return JSON object.


As you can see, patterning is a more complex process.
Also, all fetches and mapings that aren't for RND values imply a call to a database, which can take up to 10k times more to process that a logical process. That's 2 for RND vs 4 for Patterns. So, not only is it more complex (meaning more processing times, more RAM needed, more caching calculated, etc) it actually has twice the delay times corresponding to DB accesses.

All that for something that just having a good randomizer will do equally as good? For no apparent reason besides we wanted a pattern in there?
That's just no good for implementation times, manteinance costs, server costs, etc.

chillinfar
09-05-2015, 12:41 PM
Outside from that discussion i found something interesting: Trends ("tendencias"), and something in statistics named in spanish as "moda" (the most common elements from gathered data). I apologize to don't explain this correctly and confuse it with patterns.

In gacha as example, one R/SR card can't take the same position more than 3 times on consecutive turns. This happens even when other R cards are available, try it.

Extra stage from gambit event showed an opposing example, i never found a 2;6 entries as correct ones, but i saw 2;4, 2;5, 1;4, 3;6, 1;2, 1;6... and even 2;4 (mirror of the "missing" element). Post a screenshot if you see one.

This is not related with the random system, this time i'm discussing it's results. However, seeing that behavior can help on some situations.

YoshiEnVerde
09-05-2015, 01:29 PM
Outside from that discussion i found something interesting: Trends ("tendencias"), and something in statistics named in spanish as "moda" (the most common elements from gathered data). I apologize to don't explain this correctly and confuse it with patterns.

In gacha as example, one R/SR card can't take the same position more than 3 times on consecutive turns. This happens even when other R cards are available, try it.

Extra stage from gambit event showed an opposing example, i never found a 2;6 entries as correct ones, but i saw 2;4, 2;5, 1;4, 3;6, 1;2, 1;6... and even 2;4 (mirror of the "missing" element). Post a screenshot if you see one.

This is not related with the random system, this time i'm discussing it's results. However, seeing that behavior can help on some situations.

Ahh, good old math for probabilities :o
Be careful... when I said there are no patterns, I meant there are no programmed patterns.
Do something in a computer enough times, and a statistical pattern will emerge.
Sadly, such a thing won't be found by us checking a couple of accounts a couple of times. We're talking about compiling enough data that we could more or less find a pattern in the RNG generator

chillinfar
09-05-2015, 04:52 PM
Those measures aren't detected on 1 day but weeks (except pero gambit, but thanks to stamina i was seeing a lot of results on last and extra stages). It still be a small part of data to detect a potential "pattern", so i prefer to use the other (and realistic) term, trends.

And trends can change over time. However, in Gacha if we simplify the elements to type of cards we got a nice scheme to find a good chance hunting R cards. Remember that N gacha always have (at least) 1 R card, we are lucky to see this condition, which is not present in GHQ or stages.

EDIT: Finally a 2;6 in event.

YoshiEnVerde
09-07-2015, 07:48 AM
Except, N-Gacha don't always have one R-card. The base for N-Gacha is 6xN. It's just that the probability for having one of those be R is too high to not have an R in there most of the time.

254
Got this one about 5 minutes ago
And trends don't differ from normal statistics. They are most definitely not used as a base for calculations.
Trends are used when the data you are meassuring is of a highly mutable type, and thus won't allow you to build a test sample big enough for what you need (or make building such sample a very fast paced and expensive process) and then invalidate it in too short a time.

When such a thing happens, you build the best sample you can in your "non-mutable" lapse of time (the lapse of time the data won't shift so much it invalidates your previous data).
Onle then, you can apply/study trends, by repeating that sample building all over again, and analyzing how the two samples change lapse after lapse (and thus, finding out the way the changes might happen over time).

The whole scientific set of calculations for trends give you the tools to do similar calculations as base statistics on said shifting data. But they won't give you anything accurate if you didn't have any starting data, Just starting from 0 with trends will fail as much as using common statistics on shifting data

chillinfar
09-07-2015, 11:13 AM
In card list says 96% chance. That's why is very uncommon to see a 6N deck on N gacha (i found it ONCE in the whole time that i'm on this game).

Neko
09-07-2015, 12:25 PM
that pic is from GHQ though xd

blacksaber
09-07-2015, 10:16 PM
Finally hit level 50, and started leveling the maxed out cards. Does anyone know the max level for a card once you start using the ex wild cards?

blobz
09-07-2015, 11:08 PM
Finally hit level 50, and started leveling the maxed out cards. Does anyone know the max level for a card once you start using the ex wild cards?

at lvl 50 its +5, you unlock aditional levels later

Opalia24
09-08-2015, 01:55 AM
N-Wild, R-Wild and SR-Wild can only get Cards to level 100.
N-Gacha, (R-Gacha and SR-Gacha) , Ex-Wild, Kurito and and spins can take Cards to level highrt than 100 if you unlock levels higher than 100.
I would suggest only to use Ex-Wild on SR-Girls that can not gain Ex-level froms spins or N-Gacha

blacksaber
09-08-2015, 02:01 AM
Thanks for the response. Wasn't really intending to use the ex wilds so quickly (I'm a hoarder. Is is that man whore? I get them confused). Just wanted to get an idea of when the pluses may stop.

YoshiEnVerde
09-08-2015, 08:37 AM
that pic is from GHQ though xd

Yup, it is. However, the game server doesn't make any difference between different chance/gacha rolls. It only changes the chances for each rarity and card depending on the place it was called from.

Fact is that the chances of getting a 6N spin is actually harder than getting an 1SR spin, but it's there.