Announcement: Be excellent to each other.


Caravel Forum : DROD Boards : Bugs : Gate of Namedness
New Topic New Poll Post Reply
Poster Message
Sillyman
Level: Smiter
Avatar
Rank Points: 339
Registered: 09-08-2006
IP: Logged

File: Sillyman saves.player (197.3 KB)
Downloaded 23 times.
License: Public Domain
icon Gate of Namedness (+3)  
Um... I've gotten a name, but the door won't open, even though the room acknowledges my job....

Edit: Here's my saves.

____________________________
Who, me?
FNORD

[Last edited by Sillyman at 09-21-2007 01:18 AM]
09-21-2007 at 01:15 AM
View Profile Send Private Message to User Show all user's posts Quote Reply
TFMurphy
Level: Smitemaster
Rank Points: 3117
Registered: 06-11-2007
IP: Logged
icon Re: Gate of Namedness (+1)  
Yeah, duplicated here. Looks like the changes to activating pressure plates is the culprit here - before, Activate Item would deal with them as if it were an orb, but now, they're more consistent to actually being plates.

The characters on top of the pressure plates seem to be keeping the plate down, so an activation wouldn't do anything... so... sounds like the simplest fix would be to make sure those characters aren't pre-activating the plates, by making them flying entities. Changing their custom set to Wraithwing should do the job.

This is quite a serious showstopping bug in the hold, so it'll definitely need fixing, one way or another.
09-21-2007 at 01:50 AM
View Profile Send Private Message to User Show all user's posts This architect's holds Quote Reply
Sillyman
Level: Smiter
Avatar
Rank Points: 339
Registered: 09-08-2006
IP: Logged
icon Re: Gate of Namedness (0)  
So it is a bug... Good to know that it's not a problem with me! But now the Hold itself needs to be fixed, and that means a full re-install for everybody...

____________________________
Who, me?
FNORD
09-21-2007 at 01:58 AM
View Profile Send Private Message to User Show all user's posts Quote Reply
mrimer
Level: Legendary Smitemaster
Avatar
Rank Points: 5056
Registered: 02-04-2003
IP: Logged
icon Re: Gate of Namedness (+1)  
TFMurphy wrote:
Yeah, duplicated here. Looks like the changes to activating pressure plates is the culprit here - before, Activate Item would deal with them as if it were an orb, but now, they're more consistent to actually being plates.

The characters on top of the pressure plates seem to be keeping the plate down, so an activation wouldn't do anything... so... sounds like the simplest fix would be to make sure those characters aren't pre-activating the plates, by making them flying entities. Changing their custom set to Wraithwing should do the job.

This is quite a serious showstopping bug in the hold, so it'll definitely need fixing, one way or another.
Ugh. I can fix the TCB hold as you suggest, which would fix the bug in a full 3.1 install. However, when patching 3.0 TCB, the hold would remain the original version, so it would still be bugged. Hmm...we've got to figure a way to make the code work with the original hold version or put some ugly kludge in the code that will hack the TCB hold to fix this specific issue.

The simplest option I can think of is to allow ActivateItemAt to activate plates even when they're already depressed. Which is fine, I think, since the architect probably wants the plate to activate regardless of whether it's up or down at the moment, and also the activation command shouldn't actually make the plate go down (because now an on-off plate gets activated twice in succession when it pops back up at the end of the turn, which is clearly wrong). This change would also be more consistent with how pre-3.1 plate activating behavior was. Are there any problems with changing it to be this way?

____________________________
Gandalf? Yes... That's what they used to call me.
Gandalf the Grey. That was my name.
I am Gandalf the White.
And I come back to you now at the turn of the tide.

[Last edited by mrimer at 09-21-2007 03:15 AM]
09-21-2007 at 03:05 AM
View Profile Send Private Message to User Send Email to User Show all user's posts High Scores This architect's holds Quote Reply
TFMurphy
Level: Smitemaster
Rank Points: 3117
Registered: 06-11-2007
IP: Logged
icon Re: Gate of Namedness (+1)  
Hmmm.

Thinking it through, the simpler fix actually may be better overall. Toggle Plates under current conditions will activate twice (once via the scripted activation which makes them 'active', then again when the plate realised there's nothing on it and makes it 'inactive').

I suppose the base fix would be a switch (eActivationType) so we can just treat OAT_PressurePlate, OAT_ScriptPlate and OAT_PressurePlateUp as different. Alternatively, we could have OAT_ScriptPlate take priority so it can also work with broken plates, but that's purely a design decision. EDIT: And further reflection makes me think that it shouldn't - it's tough to fully explain a reasoning behind it, beyond that I don't think it'd feel right. I think it's more useful for it to stop working once a plate is broken, so, no changes there, in my opinion.

It's still a good idea to have the 3.1 full install use Wraithwing-based roles since we don't want those characters interfering with the plate, but yeah, it sounds like we'll get back more than what we'll lose if we change how scripted plates work again.

[Last edited by TFMurphy at 09-21-2007 03:26 AM]
09-21-2007 at 03:16 AM
View Profile Send Private Message to User Show all user's posts This architect's holds Quote Reply
mrimer
Level: Legendary Smitemaster
Avatar
Rank Points: 5056
Registered: 02-04-2003
IP: Logged
icon Re: Gate of Namedness (0)  
TFMurphy wrote:
Thinking it through, the simpler fix actually may be better overall. Toggle Plates under current conditions will activate twice (once via the scripted activation which makes them 'active', then again when the plate realised there's nothing on it and makes it 'inactive').
Yeah, I just realized that and edited my post above to discuss that very point.
I suppose the base fix would be a switch (eActivationType) so we can just treat OAT_PressurePlate, OAT_ScriptPlate and OAT_PressurePlateUp as different. Alternatively, we could have OAT_ScriptPlate take priority so it can also work with broken plates, but that's purely a design decision.
Yeah, that's conceivable. For now, I'm not changing how broken plates are handled.
It's still a good idea to have the 3.1 full install use Wraithwing-based roles since we don't want those characters interfering with the plate, but yeah, it sounds like we'll get back more than what we'll lose if we change how scripted plates work again.
Actually, I just reverted this hold change. I want the big orbs to be shown depressing the plates underneath, so the original land-based role is fine.

____________________________
Gandalf? Yes... That's what they used to call me.
Gandalf the Grey. That was my name.
I am Gandalf the White.
And I come back to you now at the turn of the tide.
09-21-2007 at 03:24 AM
View Profile Send Private Message to User Send Email to User Show all user's posts High Scores This architect's holds Quote Reply
coppro
Level: Smitemaster
Rank Points: 1308
Registered: 11-24-2005
IP: Logged
icon Re: Gate of Namedness (0)  
I'll bet you you could write a patcher for the data files. Since drod3_0.dat is static and unchanging, patching 3.0 data would be really easy if someone could write a sort of "metakit diff" that would only modify the relevant entries. You could easily determine which data version you had already based on a couple of key values.

Heck, you could even pack in a replacement version of the hold itself and just leave the media untouched.
09-21-2007 at 03:31 AM
View Profile Show all user's posts Quote Reply
mrimer
Level: Legendary Smitemaster
Avatar
Rank Points: 5056
Registered: 02-04-2003
IP: Logged
icon Re: Gate of Namedness (+1)  
coppro wrote:
I'll bet you you could write a patcher for the data files. Since drod3_0.dat is static and unchanging, patching 3.0 data would be really easy if someone could write a sort of "metakit diff" that would only modify the relevant entries. You could easily determine which data version you had already based on a couple of key values.

Heck, you could even pack in a replacement version of the hold itself and just leave the media untouched.
Yeah, I've considered all this long ago. It'll just take a while to implement. My idea is:
have a minimal patch.dat file included in the patcher that contains rows needing updating in drod3_0.dat.
When starting up DROD, it would look for patch.dat.
If it exists, it would open drod3_0.dat in write-mode, grab the entries in patch.dat, and replace rows in drod3_0.dat that have matching IDs with the rows from patch.dat.
drod3_0.dat is committed, and patch.dat is erased.
If anyone feels like writing the code that would do this, that would be very helpful to getting this idea off the ground.

____________________________
Gandalf? Yes... That's what they used to call me.
Gandalf the Grey. That was my name.
I am Gandalf the White.
And I come back to you now at the turn of the tide.

[Last edited by mrimer at 09-21-2007 03:43 AM]
09-21-2007 at 03:40 AM
View Profile Send Private Message to User Send Email to User Show all user's posts High Scores This architect's holds Quote Reply
coppro
Level: Smitemaster
Rank Points: 1308
Registered: 11-24-2005
IP: Logged
icon Re: Gate of Namedness (0)  
I can do this if someone can give me a good idea as the format of the output. A text file is not feasible, given the fact the data files can contain arbitrary binary data. I'm thinking a database along with an accompanying text files: the database contains the rows, and the text file provides diff functionality, but using row indices instead of text (note: I'm not optimizing for DROD's incremented IDs because I want to be able to use the resulting program for any sort of database, including one where things aren't all indexed by IDs).
09-23-2007 at 04:08 AM
View Profile Show all user's posts Quote Reply
Briareos
Level: Smitemaster
Avatar
Rank Points: 3516
Registered: 08-07-2005
IP: Logged
icon Re: Gate of Namedness (0)  
coppro wrote:
I can do this if someone can give me a good idea as the format of the output. A text file is not feasible, given the fact the data files can contain arbitrary binary data.
Ummm... if I do correctly understand that this is about patching drod3_0.dat - why not simply use any of the many existing binary diff/patch utilities to update it?

np: Kid606 - Sugarcoated (Resilience)


____________________________
"I'm not anti-anything, I'm anti-everything, it fits better." - Sole
R.I.P. Robert Feldhoff (1962-2009) :(
09-23-2007 at 10:19 AM
View Profile Send Private Message to User Send Email to User Visit Homepage Show all user's posts Quote Reply
coppro
Level: Smitemaster
Rank Points: 1308
Registered: 11-24-2005
IP: Logged
icon Re: Gate of Namedness (0)  
I don't know, other than that by using the metakit format you may be able to improve the size somewhat, depending on how it's stored. But it's a good programming exercise, so I'm going to do it anyway.
09-23-2007 at 04:20 PM
View Profile Show all user's posts Quote Reply
schep
Level: Smitemaster
Avatar
Rank Points: 864
Registered: 03-01-2005
IP: Logged
icon Re: Gate of Namedness (0)  
mrimer / coppro: Remember that some of us don't normally run DROD with permission to modify drod-3_0.dat. If the patching is going to be done by the DROD executable itself, I'd suggest giving DROD a commandline argument to patch-and-exit, and have the patcher immediately run DROD with that switch.

Briareos: I agree it sounds simpler to just do it from the patcher program. But google searches like "binary patch portable" don't bring up anything that jumps out at me. Any suggestions?
09-23-2007 at 04:47 PM
View Profile Send Private Message to User Send Email to User Show all user's posts This architect's holds Quote Reply
Briareos
Level: Smitemaster
Avatar
Rank Points: 3516
Registered: 08-07-2005
IP: Logged
icon Re: Gate of Namedness (0)  
schep wrote:
I agree it sounds simpler to just do it from the patcher program. But google searches like "binary patch portable" don't bring up anything that jumps out at me. Any suggestions?
http://www.daemonology.net/bsdiff/

The source code contains two files, one for the diff tool (10kB) and one for the patch tool (5kB), both in pure C. And it looks quite BSD-ish licensed to me, and the only dependency I can see is bzlib... What probably needs to be done is split up the file to be patched into several parts due to the memory use listed on the website.

Also, http://xdelta.org/ ... (GPLed)

np: Múm - They Made Frogs Smoke 'Til They Explode (Go Go Smear The Poison Ivy)

____________________________
"I'm not anti-anything, I'm anti-everything, it fits better." - Sole
R.I.P. Robert Feldhoff (1962-2009) :(
09-23-2007 at 05:00 PM
View Profile Send Private Message to User Send Email to User Visit Homepage Show all user's posts Quote Reply
trick
Level: Legendary Smitemaster
Rank Points: 2580
Registered: 04-12-2003
IP: Logged
icon Re: Gate of Namedness (+2)  
Briareos wrote:
http://www.daemonology.net/bsdiff/

The source code contains two files, one for the diff tool (10kB) and one for the patch tool (5kB), both in pure C. And it looks quite BSD-ish licensed to me, and the only dependency I can see is bzlib... What probably needs to be done is split up the file to be patched into several parts due to the memory use listed on the website.
I'm already using the bsdiff format as part of the new Linux patcher I've been fiddling with, which hopefully should be ready for use in time for the 3.1 release in some form. It could perhaps be used for Windows and Mac OS X as well.

Anyway, a patch.dat might still be required for Windows, since drod3_0.dat isn't treated as read-only by the Windows executable all the time, and a delta patcher like bsdiff requires identical files to work. A metakit-level patcher would be able to merge databases in a more intelligent way.

09-24-2007 at 06:53 PM
View Profile Send Private Message to User Send Email to User Show all user's posts Quote Reply
Briareos
Level: Smitemaster
Avatar
Rank Points: 3516
Registered: 08-07-2005
IP: Logged
icon Re: Gate of Namedness (0)  
trick wrote:
Anyway, a patch.dat might still be required for Windows, since drod3_0.dat isn't treated as read-only by the Windows executable all the time, and a delta patcher like bsdiff requires identical files to work. A metakit-level patcher would be able to merge databases in a more intelligent way.
Ugh... any hints towards why the data file is handled that way, but on one platform only? *wonders*

And is it going to stay that way? :|

np: Isan - Re-Spring My Sing Reverse (Music For Hairy Scary Monsters)

____________________________
"I'm not anti-anything, I'm anti-everything, it fits better." - Sole
R.I.P. Robert Feldhoff (1962-2009) :(

[Last edited by Briareos at 09-24-2007 07:05 PM]
09-24-2007 at 07:04 PM
View Profile Send Private Message to User Send Email to User Visit Homepage Show all user's posts Quote Reply
New Topic New Poll Post Reply
Caravel Forum : DROD Boards : Bugs : Gate of Namedness
Surf To:


Forum Rules:
Can I post a new topic? No
Can I reply? No
Can I read? Yes
HTML Enabled? No
UBBC Enabled? Yes
Words Filter Enable? No

Contact Us | CaravelGames.com

Powered by: tForum tForumHacks Edition b0.98.8
Originally created by Toan Huynh (Copyright © 2000)
Enhanced by the tForumHacks team and the Caravel team.