Drop function for photon drops

Sylverant is a homebrew open source server for Phantasy Star Online. Dreamcast users still play PSO online with this server even today! This is the official forum for both the online game server as well as the open source project itself. Feel free to post and get a gathering started online! We can also show you how to get connected!

Moderators: BlueCrab, Aleron Ives

User avatar
RyoDC
Mental DCEmu
Mental DCEmu
Posts: 353
Joined: Wed Mar 30, 2011 12:13 pm
Has liked: 0
Been liked: 0

Drop function for photon drops

Post by RyoDC » Sat Mar 08, 2014 4:09 pm

What is the drop function for photon drops?

Does it depend on some PRNG and factors? Then what are this factors?
Probability table for each monster? Planet of char?

Or it's not calculated each time you kill a monster?

Does all possible item drops for all monsters and crates are calculated before you enter the level?
Or it's calculated on fly when you slash the crate or kill a monster?

Would really be glad if some of you will uncover the details.

Thanks.
How do I try to build a Dreamcast toolchain:
Image
Lee
DCEmu Freak
DCEmu Freak
Posts: 53
Joined: Thu Mar 06, 2014 10:28 am
Has liked: 0
Been liked: 0

Re: Drop function for photon drops

Post by Lee » Sat Mar 08, 2014 8:44 pm

It's calculated as a tool random drop from the itempt, speaking for the client [gc and xbox] it's done on the fly by the host client, the leader of the room. Pdtops can drop from any monster as a result just like other tools like monomates etc.

I would assume you want more specifics but I'm on my tablet atm and don't have access to my own sources to provide examples
User avatar
RyoDC
Mental DCEmu
Mental DCEmu
Posts: 353
Joined: Wed Mar 30, 2011 12:13 pm
Has liked: 0
Been liked: 0

Re: Drop function for photon drops

Post by RyoDC » Sun Mar 09, 2014 1:10 am

By tool, you mean, item? What is itempt?
"host client" - you mean, the leader of the room client have the PRNG and his clients sends packets containing item code in responce when other players clients asks for an items?
speaking for the client [gc and xbox]
I'm more interested in pc version, pso bb :)
How do I try to build a Dreamcast toolchain:
Image
User avatar
BlueCrab
The Crabby Overlord
The Crabby Overlord
Posts: 5404
Joined: Mon May 27, 2002 11:31 am
Location: Sailing the Skies of Arcadia
Has liked: 1 time
Been liked: 16 times
Contact:

Re: Drop function for photon drops

Post by BlueCrab » Sun Mar 09, 2014 8:41 am

By tool, he means items that would normally be in a Green box, like Monomates, Monofluids, Disks, etc.

ItemPT refers to one of the files that is used by the game to determine drops. On PSO for PC and PSO for Dreamcast, this file is called ItemPT.afs. On the later versions of the game (GC, Xbox, BB), it's called ItemPT.gsl. This particular file has all the data relating to the chance that enemies/boxes drop anything and what types of stuff they'll drop when they do.

By the host client, he indeed means that the leader of the team does the calculations to determine what drops when anyone kills an enemy or breaks a box. It is the PRNG running on that client that determines what drops. Then that user sends out a packet detailing what dropped.

It's mostly the same on Blue Burst, except that the server does this rather than the leader of the team. Thus, in reality, the server could be using a completely different algorithm to figure out what drops than what the client does, if it is programmed in such a way.

You could take a look at the Sylverant code if you're really interested in how to do this kind of stuff (and you want to know more before Lee happens to come back with additional information, as he's pretty much the source on all of this stuff). The code for drops may be ugly, but it is at least well-commented. :wink:
User avatar
RyoDC
Mental DCEmu
Mental DCEmu
Posts: 353
Joined: Wed Mar 30, 2011 12:13 pm
Has liked: 0
Been liked: 0

Re: Drop function for photon drops

Post by RyoDC » Sun Mar 09, 2014 11:12 am

Thanks for your kind answer.

What packets does it send exactly?

Any clue?
How do I try to build a Dreamcast toolchain:
Image
User avatar
BlueCrab
The Crabby Overlord
The Crabby Overlord
Posts: 5404
Joined: Mon May 27, 2002 11:31 am
Location: Sailing the Skies of Arcadia
Has liked: 1 time
Been liked: 16 times
Contact:

Re: Drop function for photon drops

Post by BlueCrab » Sun Mar 09, 2014 11:48 am

Packet type 0x62/0x6D (I don't remember which, off the top of my head), with a subtype of 0x60 is used to request a drop from an enemy, whereas subtype 0xA2 is used to request a drop from a box (the latter isn't used on the Dreamcast versions or on PSO for PC).

The item itself is sent to the team with type 0x60, subtype 0x5F.

Look at the Sylverant code for more information on how I handle those on the server (specifically, you'll probably want to look at the files subcmd.[ch]). I'm sure I'm probably doing stuff wrong, but it at least works. :wink:
User avatar
RyoDC
Mental DCEmu
Mental DCEmu
Posts: 353
Joined: Wed Mar 30, 2011 12:13 pm
Has liked: 0
Been liked: 0

Re: Drop function for photon drops

Post by RyoDC » Mon Mar 10, 2014 4:04 am

Interesting, what version of software SCHTHACK uses.
Maybe I can sneak into a executing code at runtime and look for a seed value. If it uses rand() function, of course.
How do I try to build a Dreamcast toolchain:
Image
User avatar
BlueCrab
The Crabby Overlord
The Crabby Overlord
Posts: 5404
Joined: Mon May 27, 2002 11:31 am
Location: Sailing the Skies of Arcadia
Has liked: 1 time
Been liked: 16 times
Contact:

Re: Drop function for photon drops

Post by BlueCrab » Mon Mar 10, 2014 6:51 am

Remember, drops are handled on the server on Blue Burst, and the server probably won't respond kindly if you try to insert your own drops into the packet stream. That, and I think the Blue Burst client required for Schtserv has anti-cheating stuff included with it too.

Simply put, if you're trying to cheat and get items you didn't earn, then you should stop now. Photon drops really aren't that hard to find. :wink:
User avatar
RyoDC
Mental DCEmu
Mental DCEmu
Posts: 353
Joined: Wed Mar 30, 2011 12:13 pm
Has liked: 0
Been liked: 0

Re: Drop function for photon drops

Post by RyoDC » Mon Mar 10, 2014 3:30 pm

Remember, drops are handled on the server on Blue Burst, and the server probably won't respond kindly if you try to insert your own drops into the packet stream. That, and I think the Blue Burst client required for Schtserv has anti-cheating stuff included with it too.
My idea got much further then just that.
I was thinking about affecting the enthropy source for the drop function on the server side to make photon drops appear more oftenly.

I even made a little research on that topic. I learned what is congruent generators is and researched a rand() function and built nice graphs showing the distribution of values in stream (and what can I tell, this distribution really looks uniform with some random peaks here and there which appear without any noticeable periodity\predictivity).

But the great idea was not even that.

I was reading a book on economics.
I thought about justice and equality in society.
And then I though on that in context of PSO.

For example, one player can spent a lot of energy playing PSO.
But he can met only a one PD during his playtime.

At the same time, we have another player, that spent, let's say, for example, 1/20 of a time then the first player (ans spent much less energy). But he found a 10 PD's, cause of stupid drop function.

The second player was just lucky.
And there's no equity in that.

You can play 100 hours and craft 0 PD, and you can play 20 minutes and find 10.

Like, chance of hitting the tail of a coin not increasing in time.

That's the weird thing.

Point of my research is to explore those random generation functions in terms of player's equality.

I want for distribution to be more fair and righteous.
How do I try to build a Dreamcast toolchain:
Image
User avatar
BlueCrab
The Crabby Overlord
The Crabby Overlord
Posts: 5404
Joined: Mon May 27, 2002 11:31 am
Location: Sailing the Skies of Arcadia
Has liked: 1 time
Been liked: 16 times
Contact:

Re: Drop function for photon drops

Post by BlueCrab » Mon Mar 10, 2014 4:01 pm

The early versions of PSO are quite bad in the PRNG department, from what I remember. That said, drops on schtserv most likely don't have that exact same problem, as (I'm assuming) they didn't recreate the bad PSO PRNG for the server.

That said, I wouldn't count on any sane way to affect the PRNG on a server without either A) getting yourself banned or B) it taking far more work than would be useful to do.

Also note that the chance of getting each item is defined in the ItemPT file that the server uses. These have entries for each section ID and difficulty level, which also explains why some people find it easier to get certain types of items.
User avatar
K_I_R_E_E_K
Mental DCEmu
Mental DCEmu
Posts: 302
Joined: Mon Oct 27, 2008 6:47 pm
Has liked: 0
Been liked: 0

Re: Drop function for photon drops

Post by K_I_R_E_E_K » Mon Mar 10, 2014 4:43 pm

If you need a server to test your ideas you can always ask EDEN server staff team as they have a test server exactly for that kind of stuff, it has 1 account and i think they might let you tweak a few things so you can test it yourself.
Image
User avatar
Aleron Ives
DCEmu Nutter
DCEmu Nutter
Posts: 811
Joined: Wed Jan 05, 2011 2:15 pm
Location: California
Has liked: 0
Been liked: 0
Contact:

Re: Drop function for photon drops

Post by Aleron Ives » Mon Mar 10, 2014 4:55 pm

RyoDC wrote:For example, one player can spent a lot of energy playing PSO.
But he can met only a one PD during his playtime.

At the same time, we have another player, that spent, let's say, for example, 1/20 of a time then the first player (ans spent much less energy). But he found a 10 PD's, cause of stupid drop function.

The second player was just lucky.
And there's no equity in that.
This is a fundamental flaw in all games that have fake difficulty in the form of randomised item drops and is not limited to PSO. You can change the drop formula to make drops easier, but you can't fix the inherent unfairness of random drops without removing them completely and making all items obtainable through non-random means (such as quest rewards). The game has too many items to make that a practical solution, though, which means we're forced to accept the inequity of random drops.
"Fear the HUnewearl."
Image
Lee
DCEmu Freak
DCEmu Freak
Posts: 53
Joined: Thu Mar 06, 2014 10:28 am
Has liked: 0
Been liked: 0

Re: Drop function for photon drops

Post by Lee » Mon Mar 10, 2014 5:17 pm

psobb at one point, actually used to kinda handle drops itself, haven't checked with a proxy lately but the client used to tell the server what to drop when you break a box for example, on sega they used to have very much fun with this inserting their items in to the fixed box code and getting anything they wanted. Obviously we parse the maps server side and tell the client what we want them to have not what the client wants. Solved a lot of headaches.

Anyway you're not going to be able to affect the server in any meaningful way using the client or intercepting data between them, the server also knows what should be on the floor when you kill / break a box so any attempt to manipulate this on pickup is going to be a massive red flag anyway, it actually triggers an id miss match anyway. There's no seed on the client for drops the server does all the heavy lifting and just tells the client what it wants it to have after all is said and done.

Anyway since you are being a douche bag and attempting to cheat on a server where we do not allow it i will not supply you with any more information now. If you want to cheat at pso, run your own server.
User avatar
RyoDC
Mental DCEmu
Mental DCEmu
Posts: 353
Joined: Wed Mar 30, 2011 12:13 pm
Has liked: 0
Been liked: 0

Re: Drop function for photon drops

Post by RyoDC » Tue Mar 11, 2014 5:24 pm

Image
Anyway since you are being a douche bag
Oh thank you! Nice to hear that!
attempting to cheat on a server
Oh really? Did I?
If you want to cheat at pso, run your own server.
You have completely flip and perverted my original intent inside out.

Anyway, thank you guys for your sincere thoughts and comments.
I will continue to investigate PSO protocol and random functions (as well as random processes).
The game has too many items to make that a practical solution, though, which means we're forced to accept the inequity of random drops.
I don't think this is the only one solution, actually. For example, after each unsuccessful flip of coin we can increase the probability of item drop, that it, the further you get, then more chance you get. There's a lot of solutions I think. Really lot.
Anyway you're not going to be able to affect the server in any meaningful way using the client or intercepting data between them, the server also knows what should be on the floor when you kill / break a box so any attempt to manipulate this on pickup is going to be a massive red flag anyway, it actually triggers an id miss match anyway. There's no seed on the client for drops the server does all the heavy lifting and just tells the client what it wants it to have after all is said and done.
I'm not that stupid for not to understand all those aspects and that most of the game logic are placed on the server side, not a client side, and pretty much everything (incoming data) are validated and tested. Also I'm not that dumb to try to cheat on a schtserv from my account (or any account whatever - be banned by ip address is not a good perspective as the same by the guild card).

What I voiced here was just some crazy assumptions, believe me, I'm not gonna spend my entire life sitting in interactive disassembler and search for answers in tons of opcodes, or analyzing it's code with static analysis tool hoping to find some strcpy accepting more symbols that it has to accept (old good buffer overflow attack).

Or you really think I'm gonna affect entropy generator or inject myself into a running code with some shellcode?

Jesus Christ, Lee, you make me sad.
How do I try to build a Dreamcast toolchain:
Image
User avatar
Aleron Ives
DCEmu Nutter
DCEmu Nutter
Posts: 811
Joined: Wed Jan 05, 2011 2:15 pm
Location: California
Has liked: 0
Been liked: 0
Contact:

Re: Drop function for photon drops

Post by Aleron Ives » Tue Mar 11, 2014 7:12 pm

RyoDC wrote:I don't think this is the only one solution, actually. For example, after each unsuccessful flip of coin we can increase the probability of item drop, that it, the further you get, then more chance you get. There's a lot of solutions I think. Really lot.
You could do that, although that would require storing the number of times a player has killed each type of enemy so the server would know how to influence their drop rates, which would be a real pain. With each BB account holding four characters, four difficulties per character, and several dozen different enemies spread across three episodes, that's a lot of data for the server to track for a single account.
"Fear the HUnewearl."
Image
User avatar
K_I_R_E_E_K
Mental DCEmu
Mental DCEmu
Posts: 302
Joined: Mon Oct 27, 2008 6:47 pm
Has liked: 0
Been liked: 0

Re: Drop function for photon drops

Post by K_I_R_E_E_K » Wed Mar 12, 2014 7:06 am

If you think the data you're getting here needs to be filtered to the point where it becomes painfull (such as ignoring the trolling and flaming that the moderators aren't really dealing with) you can always try eden server staff team for help, either publicly or privatly as long you explain things in detail and you are honest about your intentions then it won't be a problem getting some info (teorical and pratical) without having to deal with disrespect.
Some of things i did on eden were done with staff aproval and even the staff helped me take certain screenshots, a ship problem was left unchecked so i could hang forever when entering it, that and players still had a ship to play on (main ship)

So if you really want to know how things work, maybe you can contact them, explain your goal and it's possible they might even give you an enviroment to test theories.
Obviously there will be limitations, if you for example get 10 PBs in your test, they will most likely ask you not to share them with the community players, just like the items i have by running the game once, they are only for me.

Who knows, maybe you'll end up improving the server in some new way.
Image
User avatar
BlueCrab
The Crabby Overlord
The Crabby Overlord
Posts: 5404
Joined: Mon May 27, 2002 11:31 am
Location: Sailing the Skies of Arcadia
Has liked: 1 time
Been liked: 16 times
Contact:

Re: Drop function for photon drops

Post by BlueCrab » Wed Mar 12, 2014 8:37 am

Let me ask flat out, what is your intention in all of this, RyoDC? Why do you specifically want to know about Photon Drops on Blue Burst? No offense, but I've read through everything in the thread, and the only constant I see is that you are saying that not enough Photon Drops seem to drop for some people, which would logically lead many people (myself included) into believing that you wish to find some way to cheat the system and get it to drop more Photon Drops.

As Aleron Ives already said in the thread, this is a problem in any online game, pretty much. Drop rates are uneven and sometimes completely unfair to certain people that may want certain items.

Another thing to note is that many people in the PSO world don't respond very kindly to anyone wanting to even change the drop rates of PSO at all. Hell, I had people complaining about the availability of server-side drops on Sylverant even though they use the same rates as the games themselves (at least on the ship Iselia they do and pretty much will). The people complaining had no intention of ever using the server-side drops either, they were just worried that people they played with would use them and thus be tainted by the fact that I use a different PRNG than PSO does internally. Yes, just the random number stream being even slightly different made some people extremely unhappy with me having server-side drops available as a feature on Sylverant. Some people are that specific about their views that things should be played exactly to Sega's specifications.

I suggest that if you're serious about wanting to study PSO's protocols and such that you look at the code of the open-source PSO servers out there. You have 3 to pick from, each focusing efforts in different places. If you really want to learn about Blue Burst specifically, look at the code to Tethealla's ship server. It'll have the most data on Blue Burst of all the PSO servers out there with source code released. If you're more interested looking at the broad picture of all the different versions of PSO out there, then look at Newserv and Sylverant. If you're specifically interested in drops, look at Sylverant's code for a general idea of the process -- I've documented exactly what my code does in the comments in the source code for that part, so you don't even have to process my loopy code. :wink:
Lee
DCEmu Freak
DCEmu Freak
Posts: 53
Joined: Thu Mar 06, 2014 10:28 am
Has liked: 0
Been liked: 0

Re: Drop function for photon drops

Post by Lee » Wed Mar 12, 2014 1:49 pm

Basically you're too dumb to figure out the files yourself, and too stupid to look at the source code, yet you try to insult me, the one who basically did most of the foundation work, which the server side drops system in soda's server is based on, and quite a bit of bluecrabs implementation too.

Also note it was bluecrab who mentioned you where using it to cheat the system.

You make me sad.
User avatar
RyoDC
Mental DCEmu
Mental DCEmu
Posts: 353
Joined: Wed Mar 30, 2011 12:13 pm
Has liked: 0
Been liked: 0

Re: Drop function for photon drops

Post by RyoDC » Thu Mar 13, 2014 5:45 pm

Lee wrote:Basically you're too dumb to figure out the files yourself, and too stupid to look at the source code, yet you try to insult me, the one who basically did most of the foundation work, which the server side drops system in soda's server is based on, and quite a bit of bluecrabs implementation too.

Also note it was bluecrab who mentioned you where using it to cheat the system.

You make me sad.
Well, you know, we can drop in long sheaf of arguments here, but let's keep things simple.
You insulted me, calling me 'douchebag'. As far as you can know (I hope you know), when you insult people, they strongly tend to do the same thing in return. Even more, they act pretty aggressively. They can even hit you, or harm you physically.
I'm not kinda of a guys, who get mad each time someone accused them, especially at the Internet.
But when it happens without a reason, or logic argument, I tend to wonder.

I hadn't look at the source code not because I'm dumb, or stupid.
I did it because I decided first to ask for a general information, whatever I can gather on topic. And I knew, that guys here are pretty much kind and benevolent, that they could always help.

I really didn't expected that somewhere out of the dark will came such an arrogant and unpleasant person as you, so I really didn't (and even couldn't) expect such a development of our talk.

Also, don't try to pass the buck to the BlueCrab, cause you was the first who started throwin' the snubs.

What else can I say.

At the weekend I finally will have some free time so I can look into the code (which was my initial idea to do after gathering info from forums).
Last edited by RyoDC on Fri Mar 14, 2014 5:42 pm, edited 1 time in total.
How do I try to build a Dreamcast toolchain:
Image
tueidj
Insane DCEmu
Insane DCEmu
Posts: 115
Joined: Wed Aug 15, 2012 12:05 pm
Has liked: 0
Been liked: 0

Re: Drop function for photon drops

Post by tueidj » Thu Mar 13, 2014 9:57 pm

BlueCrab wrote:The early versions of PSO are quite bad in the PRNG department, from what I remember.
That's actually surprising, I know the PRNG in the gamecube versions is a lot better than what rand() normally does (r = r * a + b). It looks more like a hash function, which would be expected for a decent PRNG.
Post Reply