Page 3 of 6
Re: Drizzle22 is now out!
Posted: Thu Nov 12, 2009 1:14 pm
by ddb174
The Drizzle and shards thread has been de-stickied at mystonline.com ;)
Re: Drizzle22 is now out!
Posted: Thu Nov 12, 2009 2:02 pm
by diafero
I guess it was too much of an advertisement for Alcugs, Drizzle and the Offline KI

Re: Drizzle22 is now out!
Posted: Thu Nov 12, 2009 3:18 pm
by Dhelayan
nah, i think they're angry at you and dustin that the OfflineKI and Drizzle actually get attention and are alive...other than Open Source uru

Re: Drizzle22 is now out!
Posted: Fri Nov 13, 2009 1:17 am
by ddb174
The original attempt at realmyst just understood the object formats partially, and tried to create simple .3ds files. The plan was to then use pyprp to create the actual prps. But this didn't quite do all that I needed, and it also didn't understand which objects belonged to which Ages, strangely enough. (In Plasma v2 and v3, each Age has its own prps, but this was not the case for Plasma v1.)
The new attempt however, fully understands the syntax of every single object type in realMyst, and fully parses all cyan datafiles down to the byte. This includes all file structures: .dni, .vdb(both mdb and sdb), .nfnt, .idx, .beh, .hsm, .shp files. With this has come much better understanding of how realMyst works. And the new system directly generates prp files from an abstract representation, so it implements parts of Pyprp's functionality. This includes the generation of plMipMaps, hsGMaterials, and of course plDrawableSpans among other things. So far, the new attempt comes to around 22,000 lines of code, not including the new stuff in the regular objects intended to support this new compile/export.
Neither attempt was intended to be used by ordinary users, hence its presence under the advanced area. So it wasn't broken, you just weren't using it in the intended way. And the new attempt hasn't been moved into mainline Drizzle yet, so you can't even play with that yet.
Pretty much everything is different than Plasma v2 (which was changed to be heavily catered towards DirectX and allow objects to not be inlined, and really doesn't contain much else that's interesting in my books), but the one thing that stayed the same between realMyst and Pots was strangely enough animations. Those are bytewise identical. (Though the animation format was finally redone for MOUL.) Another interesting thing is the Xcmd system which actually works the same way as the PythonFileMods and partly explains why the PythonFileMods were done in such an inexpert manner.
In summary, I can link into primitive versions of the realMyst Ages, and the work now consists of adding support for more and more things. It's kind of surprising when I think of it, but I've now written over 130,000 lines of code for Drizzle. There's dozens of crazy features that aren't even used by anyone else, such as the ability to translate every single object in an Age, the ability to rename/renumber/repython an Age so that you can have multiple versions of an Age coexist, the ability to convert an Age to wireframe(actually very easy), the ability to replace all colliders with colliders corresponding to the visual surfaces, and the ability to distill a list of objects to a minimal size in another prp. I even whipped up a new Deepview2 that I use as a replacement for PrpShop and PageEditor, and I'm the only intended user.
I must be slightly mad :D
Re: Drizzle22 is now out!
Posted: Fri Nov 13, 2009 1:21 am
by Paradox
ddb174 wrote:I must be slightly mad

We're all slightly mad

Re: Drizzle22 is now out!
Posted: Fri Nov 13, 2009 1:22 am
by Atrion
Just my opinion but if someone were to take the time to write out instruction for how to do some of those advanced feature you spoke of, I think more people would use them, unless you prefer you stay the main user

Re: Drizzle22 is now out!
Posted: Fri Nov 13, 2009 2:04 am
by ddb174
I didn't mean that more people *should* be using them, but the realMyst thing reminded me of many deep places there are in Drizzle that people don't even know about. That's all.
Heh, some people even think the Moul->Pots conversion wouldn't be too difficult: after all, they're technically similar games right? But of course, they don't really know anything about it and are just guessing. So I was just thinking about some of the weird things in Drizzle. Everyone knows it has a built-in web server with a plugin engine, so that you can once again play no-longer-functional online games like The Riven Journals, right? You can even simply stick it on a server and then everyone can play them again, if you dare. I guess that one's old news :D
Re: Drizzle22 is now out!
Posted: Fri Nov 13, 2009 3:13 am
by Chacal
I used to be a hacker myself but I have no idea how you could analyze the RealMyst files. It's magic for me.
Re: Drizzle22 is now out!
Posted: Fri Nov 13, 2009 5:43 am
by diafero
I must be slightly mad

Indeed, including some kind of "well, there's that other open source project out there doing this, but I can re-implement it better" syndrome

(didn't you tell me there's a whole Python disassembler in Drizzle?)
Re: Drizzle22 is now out!
Posted: Fri Nov 13, 2009 2:54 pm
by ddb174
Reverse-engineering realMyst was far more difficult than reverse-engineering PlasmaV2, because you could tell how large objects in PlasmaV2 were supposed to be, so I made Drizzle notify me if it read too much or too little. RealMyst has everything jammed together into one ugly mess for the most part. Also, PlasmaV2 has handy object names and type numbers that you can use for some kinds of objects to quickly find them in the disassembly, whereas realMyst does not. Still, neither one had anything to make it easy, such as a pdb. Actually, Moul did have a pdb included accidentally at one point, but I don't use it for that, because I keep Drizzle clean of all copyright infringement, and using the pdb to reverse-engineer would be an extremely bad idea.
Yeah, test Drizzle has a full python demarshaller and a full python disassembler, and a partial python decompiler (I know how to finish it, but I didn't bother, as I lost interest part way through.) The only other software to do this, so far as I know, is Decompyle. And Decompyle was implemented in a pretty ugly way, including requiring binary modules for demarshalling, which is a huge pain and means Decompyle is not cross-platform (It's also not cross-platform because it requires the computer to be Little-Endian.)
In other words, Magic! :D