Quest enemy counts

Wilhuf

Overanalyzer
Gender
Male
Guildcard
42011395
Can anyone help me find enemy counts for the list of quests below? If I understand correctly quests are described a special format, are these files publicly available and is the format documented somewhere?

PSO world seems to have the counts for Maximum Attack 3, but are they different from the Ver2 version used on this server?

Lost HELL PALLASCH
Fragments of a Memory
Gallon's Treachery
Rescue from Ragol
Forsaken Friends
Dark Research 2.0
Lost ????
MAXIMUM ATTACK 1 Ver2
Tyrell's Ego
Simulator 2.0
Mine Offensive
Prospective Horizons
Maximum Attack 4th Stage -1A-
Maximum Attack 4th Stage -1B-
Maximum Attack 4th Stage -1C-
Random Attack Xrd Stage (EP1)
Maximum Attack S (EP1)

Villianous Rift #1
Villianous Rift #2
Phantasmal World #1
Phantasmal World #2
Phantasmal World #3
Phantasmal World #4
Gal Da Val's Darkness
Random Attack Xrd Stage (EP2)
Revisiting Darkness
Dolmolm Research
The Twisted Tower
Raid on Central Tower
The Military Strikes Back
MAXIMUM ATTACK 2 Ver2
Singing by the Beach
Beach Laughter
Maximum Attack 4th Stage -2A-
Maximum Attack 4th Stage -2B-
Maximum Attack 4th Stage -2C-
To The Deepest Blue -MA4 Venue-
Maximum Attack S (EP2)

War of Limits 1
War of Limits 2
War of Limits 3
War of Limits 4
War of Limits 5
New Mop-Up Operation #1
New Mop-Up Operation #2
New Mop-Up Operation #3
New Mop-Up Operation #4
New Mop-Up Operation #5
Beyond the Horizon
MAXIMUM ATTACK 3 Ver2
Maximum Attack 4th Stage -A-
Maximum Attack 4th Stage -B-
Maximum Attack 4th Stage -C-
LOGiN presents ######
Maximum Attack S (EP4)
 
Last edited:
Yeah I guess I'm going to have to write my own script to extract this stuff based on the Tethealla source code. @Fudgenugget showed me this (http://qedit.info/index.php?title=Quests), but I can't find anything about the file format itself. I'm glad there's at least a public repository of all the quests.

Are there things I should watch out for? For example, the Maximum Attack 3 quest has more monsters than you can kill according to PSO World. They say you have to choose a path and that decides which/how many enemies you get.
 
Yeah I guess I'm going to have to write my own script to extract this stuff based on the Tethealla source code. @Fudgenugget showed me this (http://qedit.info/index.php?title=Quests), but I can't find anything about the file format itself. I'm glad there's at least a public repository of all the quests.

Are there things I should watch out for? For example, the Maximum Attack 3 quest has more monsters than you can kill according to PSO World. They say you have to choose a path and that decides which/how many enemies you get.
Yeah that's just a list of (sega only?) quests...
From what I understand, the quest files (at least those in a teth server) are made up of 2 parts, an object part and a script part.. the script part is compiled so that's stuff for a different topic, the object part that has the monsters is like a specific structure so it should be easy to read... however I have never tried anything with it... I might at some point.

The quests have all monsters on them and you cannot change how many mobs the quest has without recompiling it so no... maybe they meant that you cannot go back to another path so you cannot kill the rest (without cheating).
 
Yeah that's just a list of (sega only?) quests...

It seems to be limited to the Sega quests, yes, but site does have qst files for most of them. This should get me more than halfway there.

The quests have all monsters on them and you cannot change how many mobs the quest has without recompiling it so no... maybe they meant that you cannot go back to another path so you cannot kill the rest (without cheating).

It seems to be the latter, here's the article: http://www.pso-world.com/sections.php?op=viewarticle&artid=2401
That's the sort of stuff I won't be able to extract from the files easily.
 
Yeah.. most of the time a blind monster count is just fine, but with stuff like this you have to be careful.

It's not a big deal anyway... I don't know how many of those monsters are "shared" between all paths... I mean, in an area that you will go through regardless of the path chosen... if you find an insane monster count, most probably there will be something like this.
 
This looks interesting! I'll be keeping an eye out :eek:
 
I've been working on parsing .qst files to extract monster counts automatically. This is the most insane file format I've ever encountered... It seems like they just decided to write whatever the original Sega servers send to the client to a file, prepended by a few headers and call it a file format. So .qst files indeed contain a .dat and a .bin file, but in interlaced chunks and including the packet headers from the client-server protocol. I guess it was easier to implement private servers this way. I've spent way more time on this than I originally anticipated, reading through source code of various servers and tools.

But, I've managed to write a program that can extract the monster counts from forest and caves so far.

Here's the output for Maximum Attack 4th Stage -A- for example:
Code:
Contains the following files:
quest144.dat (size: 17068)
quest144.bin (size: 6761)

Parsing .dat file.
Compressed size: 17068
Uncompressed size: 62128

Monster counts:
25 Grass Assassin
63 Poison Lily
14 Nano Dragon
43 Evil Shark
21 Pal Shark
28 Guil Shark
16 Pofuilly Slime

So we're getting there. I'll probably finish the program this week and then we'll have an easy way of figuring out enemy counts in quests.
 
That's awesome. Can't wait for it to be finished :3
 
That's exactly what the QST format is: Schthack took a log of how the server should send a muxed quest to the client and then just saved that packet log as a file. This way, all the server has to do is transmit the QST file verbatim to the client. If you store files in bin/dat format, then the server has to mux (and compress, if they're stored raw) the files before transmission, which is more work.

You really don't need to parse the QST files, though, since you could just use Qedit to extract the raw bin and dat files. ;)
 
That's exactly what the QST format is: Schthack took a log of how the server should send a muxed quest to the client and then just saved that packet log as a file. This way, all the server has to do is transmit the QST file verbatim to the client. If you store files in bin/dat format, then the server has to mux (and compress, if they're stored raw) the files before transmission, which is more work.

You really don't need to parse the QST files, though, since you could just use Qedit to extract the raw bin and dat files. ;)
No way I'd go into qedit to extract the data to later pass it onto an application to export the monster counts... better just do everything in the program, could even batch it.

All this rambling is not really related to what Wilhuf is doing but well... some dreams here.
It would be nice to have some new storage format for the quests... for example.. store multiple language scripts in the same file, this could be extended with a new editor that will let you see/modify the strings in the different languages (kinda like I did with the unitxt editor) so you have them all in sync... or even keep comments in the script (this one would be pretty useful lol).

All this requires a revamped format and editor, obviously server too... hopefully some day I'll have time to try all this, not today, not tomorrow tho.
 
No way I'd go into qedit to extract the data to later pass it onto an application to export the monster counts... better just do everything in the program, could even batch it.
My point was that it's not like you have to do this more than once per quest; the number of Boomas in Lost HEAT SWORD isn't going to change, so you only have to parse it once. You could save a lot of coding time by just supporting the raw dat file and converting any quest you want to parse into that format ahead of time.
 
@Aleron Ives, thanks for the history lesson. So Schthack was one of the people who actually reverse engineered the PSO server and protocol? And then he went on and implemented it?

@Soly, don't worry, the application works with .qst files, I figured out how it works from a tool written by Sodaboy and the Sylverant code. I also ported Sylverant's PRS decompression code to Rust as it seemed like a good way to see how easy it is to port code from C to Rust. I'm learning Rust as I'm writing this program, so I don't mind doing the work. I might give it a graphical user interface too if there's interest.

And yes a nicer quest format would be great, possibly with a scripting language instead of assembly.
 
So Schthack was one of the people who actually reverse engineered the PSO server and protocol? And then he went on and implemented it?
He was the first. Every PSO server that exists today is because of his work, not to mention every custom quest, since he wrote Qedit, too.

And yes a nicer quest format would be great, possibly with a scripting language instead of assembly.
It's almost guaranteed that Sega wrote the official quests in C and then had a compiler that would generate quest assembly for PSO. I don't really think that the quest assembly is complicated enough for it to be worthwhile to try to make a homebrew compiler, especially when we will probably never know what every opcode does, since Sega never used quite a few of them.
 
My point was that it's not like you have to do this more than once per quest; the number of Boomas in Lost HEAT SWORD isn't going to change, so you only have to parse it once. You could save a lot of coding time by just supporting the raw dat file and converting any quest you want to parse into that format ahead of time.
Yeah, but my point was that you have to actually do it, if they were just a few quests but there are quite a bunch, not to mention that after coding it well... it will be coded and you'd have learned about it, which I'll do sometime probably not soon but it'd be required if I want to make a ship server in C#

@Wilhuf I know lol, I was just ranting a bit.
Are you going to make it edit the data? I don't really think a GUI would be necessary if you are not going to implement any sort of edits (and even then it might not be 100% required)... unless you just want to add it for the hell of it, I usually do with my C# apps.

Also, are you gonna put this up somewhere?
I feel weird asking this since I haven't released anything mine yet, neither server nor tools, although is easy to figure out stuff out of non obfuscated C# programs.
 
He was the first. Every PSO server that exists today is because of his work, not to mention every custom quest, since he wrote Qedit, too.

I had no idea, I owe him some gratitude. Did he ever write anything about the process? It seems like a huge undertaking and I'm very curious how he tackled it.

Also, I remember your name from years ago on Schthack, I'm sure you answered many of my questions there too. Glad to see you here.

Also, are you gonna put this up somewhere?
I feel weird asking this since I haven't released anything mine yet, neither server nor tools, although is easy to figure out stuff out of non obfuscated C# programs.

I'll distribute the executable and might put the source code on Github. But before I distribute the code, I'm going to have to clean it up and also figure out how to license it. Since I ported the Sylverant PRS code it would probably have to be LGPL. What's holding you back from releasing your server/tools/source code?
 
@Sodaboy or @Matt, or anyone else with access to the server, could any of you give me the quest files used by Ephinea? It would save me some work downloading them all from the unofficial qedit wiki and that way I can be sure I'm using the exact files Ephinea uses. I'll post the result in the guides forum, so everyone can use the info.

Oh and I just came across your tools topic again, Soly. Nice work, even though I don't know what most of them do exactly. :p
 
I don't know if they want to give you new quests used in the server but you can get all those that come with tethealla in this download http://files.pioneer2.net/spsos_ship_v.143.zip

Here are the same quests but renamed to be name.qst instead of questID.qst
I'll change them to id_name.qst at some point, I already did with another folder but this other folder contains private quests so I can't share it.
http://files.pioneer2.net/soly/Files/quest.7z

I don't know, showing other people my code as in how I do stuff kinda frightens me? lol.
I sort of consider them unfinished and don't like the idea of giving unfinished stuff (but that's just me)
I'm not someone who likes to collaborate (at least while being the head of a project) so I don't like the idea of having people suggest changes or stuff at the code level.
And I like TFS.
 
Thanks for the links, Soly.

After a good week or so I've finally managed to finish my little program. Read more about it here.

I've included a CSV file with all the enemy counts from the quests in the spsos_ship_v.143.zip file you linked me to. I'm not entirely sure whether it managed to extract all the counts, as it doesn't report errors nicely yet. But I'm working on that.

And about open sourcing your code, you're under no obligation to do anything if you decide to go that route. If you don't want to collaborate or take suggestions, you don't have to. But at least people could learn from your code. :) Although I can definitely understand that you don't want share something you feel is unfinished and don't want to deal with the attention.
 

Attachments

  • quest_enemy_counts.zip
    8.6 KB · Views: 98
Back
Top