#exult@irc.freenode.net logs for 30 Dec 2012 (GMT)

Archive Today Yesterday Tomorrow
Exult homepage

[00:19:21] <Malignant_Manor> I've only bothered to get 20 samples. There's 2.705 avg game minutes to gain 1 hp. The lowest was 13 min to 10 hp. The highest was 47 min to gain 10 hp.
[00:22:56] <Malignant_Manor> I don't know where you would add the new hp gain for hp < 0 though.
[00:29:52] <-- Malignant_Manor has left IRC (Quit: ChatZilla 0.9.89 [Firefox 17.0.1/20121128204232])
[01:37:58] <-- Dominus has left IRC (Read error: Connection reset by peer)
[01:38:03] --> DominusExult has joined #exult
[01:38:04] --- ChanServ gives channel operator status to DominusExult
[02:47:55] <Marzo> DominusExult: when you can, could you try to see if the automaton in SI still calls guards?
[03:03:43] <-- Marzo has left IRC (Ping timeout: 260 seconds)
[05:22:04] <-- i30817 has left IRC (Remote host closed the connection)
[05:52:54] <-- ParuNexus has left IRC (Ping timeout: 264 seconds)
[09:28:23] <-- DominusExult has left IRC (Read error: Connection reset by peer)
[09:28:31] --> Dominus has joined #exult
[09:28:32] --- ChanServ gives channel operator status to Dominus
[09:37:50] --> DominusExult has joined #exult
[09:37:50] --- ChanServ gives channel operator status to DominusExult
[09:38:02] <-- Dominus has left IRC (Read error: Connection reset by peer)
[09:38:02] --- DominusExult is now known as Dominus
[09:42:46] <Dominus> uh oh, the not-call for guards works now, but...
[09:43:29] <Dominus> when you fight the automaton and he defeats you, you wake at monk island and they will teleport you back into the cell - but the automaton is gone!!!!
[09:45:23] <Dominus> oh and definitely needs better body placement handling
[09:45:56] <Dominus> I defeated him at his chair and his body was laying beyond the desk...
[11:39:22] --> DominusExult has joined #exult
[11:39:23] --- ChanServ gives channel operator status to DominusExult
[11:41:00] <-- Dominus has left IRC (Ping timeout: 264 seconds)
[11:41:01] --- DominusExult is now known as Dominus
[11:50:47] --> Marzo has joined #exult
[12:20:29] <-- Kirben has left IRC ()
[14:04:51] --> DominusExult has joined #exult
[14:04:51] --- ChanServ gives channel operator status to DominusExult
[14:05:14] <-- Dominus has left IRC (Read error: Connection reset by peer)
[14:05:14] --- DominusExult is now known as Dominus
[16:52:18] <Dominus> Marzo, I'll have to make some body placement test cases. I had horrible placements with the MoF automaton
[16:53:25] <Dominus> but the call for guards seems to be okay now
[16:59:57] <Marzo> Dominus: I read on the logs
[17:00:13] <Marzo> I did some experiments on body placement, but they were ruined by the draw ordering issues
[17:00:53] <Marzo> On another note: what should I consider to be 'movement keys' for the purposes of not closing the faces?
[17:01:09] <Marzo> Obviously, those that cause the avatar to walk
[17:01:42] <Marzo> But what about scrolling the screen or teleporting?
[17:02:16] <Dominus> hmmm
[17:03:04] <Dominus> maybe suspend all except for right click/space/esc to continue?
[17:03:38] <Marzo> Now that I have almost all the code in place?
[17:03:40] <Dominus> not sure, maybe that is too much and only the walk keys
[17:03:56] <Dominus> since, truly when you cheat you are asking for trouble :)
[17:03:57] <Marzo> :-p
[17:04:10] <Marzo> Right, walking/running keys only
[17:04:23] <Dominus> yes
[17:10:38] <Marzo> Well, it is working
[17:11:15] <Dominus> yay :)
[17:12:29] <Dominus> I'll prepare some test cases for body placement in the next few hours. right now it is "baby time"
[17:23:37] <Marzo> Dominus: committed; a good test is the save I sent you with the guardian face egg
[18:47:46] <Dominus> yes, works great. thanks
[18:48:18] * Dominus was wonering why the avatar is so slow in that save... but there is an enemy around that prevents the running :)
[18:48:46] <-- Marzo has left IRC (Remote host closed the connection)
[18:50:13] --> Marzo has joined #exult
[18:51:09] <Dominus> damn. there really is something fishy there with the automaton in MoF. I attacked him with the spells, he defeated me and I was teleported to Monk Island. On return that damn automaton was gone. at the house of the dead!
[18:52:17] <Dominus> with health -9
[18:55:34] <Dominus> (actually not at the hosue of the dead but at 4080/4080
[18:57:06] <Dominus> ah, that just means I defeated him but his body is hidden
[19:00:33] <Dominus> marzo: that's why I say body placement is off: https://dl.dropbox.com/u/7737184/mof.png
[19:00:48] <Marzo> I guess the body gets destroyed when you teleport elsewhere
[19:01:28] <Marzo> But it is fishy that he was still standing up this far
[19:02:24] <Dominus> perhaps or it is placed where I can't see it properly. as in the pic above. same thing happened there. I was teleported away and on retrun he lay there
[19:10:55] <Dominus> I'll really have to experiment later with paralyzing him and then kill him off in varios places there. I think when he was gone he was hugging an east wall and possible the broken south wall
[19:12:54] --> Malignant_Manor has joined #exult
[19:13:51] <Marzo> I think automatons are immune to paralyze
[19:16:17] <Malignant_Manor> I'm failing at stopping the Avatar from attacking asleep enemies. Sometimes it works. (I haven't even tested the fleeing part.)
[19:25:18] <Marzo> Dominus: Oh. I figured out what is going wrong
[19:25:45] <Marzo> No, wait -- nevermind
[19:25:50] <Marzo> Misreading something
[19:27:34] <Marzo> Well, in any case I partly know what is happening
[19:28:10] <Marzo> For your screenshot: the automaton is actually above the fence, but the render order is so borked up he renders as if below
[19:36:07] <-- Sevalecan has left IRC (Excess Flood)
[19:36:14] --> Sevalecan has joined #exult
[19:55:09] <Marzo> Dominus: another issue is that the wall in front of the automaton's desk has only two tiles in height as far as the game is concerned, despite it seeming to be taller due to the bars
[19:55:20] <Marzo> And there is the rendering issue I mentioned
[20:15:40] <Malignant_Manor> Marzo: What was the purpose of having sleep remove opponents (revision 5911 combat.cc)? This only seems to have happened in the original with the Avatar or people protecting an ally. (quick testing)
[20:17:34] <Marzo> It was to have people concentrate on opponents that are still fighting back
[20:17:59] <Malignant_Manor> I figured and it makes sense tactically.
[20:20:46] <Malignant_Manor> Like I said earlier, I'm trying to get the Avatar to not attack unconscious or fleeing opponents but enemies already targeted are causing problems.
[20:20:57] <Malignant_Manor> http://pastebin.com/GFXv5ZGs
[20:23:07] <Malignant_Manor> Marzo: Do you know how to fix this issue?
[20:25:19] <Marzo> Lets see: when Actor::asleep flag gets set, one could see if the avatar is attacking that NPC and have him stop if so
[20:26:05] <Marzo> Similarly, when the NPC starts to flee
[20:26:45] <Marzo> The former could be done in Actor::set_flag, while the latter would be in Combat_schedule::run_away
[20:27:33] <Malignant_Manor> Thanks, I'lll try that when I get a minute.
[20:29:08] <Marzo> Hrm. NPCs are never set to flee mode? Well, they still flee anyway
[20:45:44] <Marzo> Dominus: regarding rendering orders: one of the issues is related that z coordinates are being compared incorrectly: it treats an object that ends on a high place having to draw before an object that ends in a low place
[20:46:01] <Marzo> This causes the object lower down to draw after the object higher up
[20:46:40] <Marzo> But since the code was done in this incorrect manner, a lot has to be rewritten
[20:46:50] <Malignant_Manor> I saw the original engine draw a cyclops underneath a fire.
[20:48:00] <Marzo> Was it a tall fire?
[20:48:21] <Marzo> Well, the original was not perfect
[20:48:26] <Malignant_Manor> I'd have to check.
[20:48:41] <Marzo> But as is, Exult is doing things like drawing horseshit on the floor above a horse
[20:49:58] <Malignant_Manor> Npcs should likely have priority for rendering.
[20:50:30] <Malignant_Manor> campfire shape 825 is the fire the cyclops was behind.
[20:52:24] <Malignant_Manor> It's pretty tall, about the same as the Avatar or a few pixels shorter.
[20:53:44] <Malignant_Manor> z axis restricting shapes may be better for earlier rendering instead of npcs
[20:54:19] <Malignant_Manor> I have no clue really without testing and there are so many things to consider with rendering.
[20:57:50] --> i30817 has joined #exult
[20:58:08] <i30817> Oh shit. Sergm changed the libmt32 api.
[20:59:10] <i30817> No more base dir, the dosbox patch needs to be changed.
[20:59:20] <i30817> And exult's too.
[20:59:57] <i30817> Actually i was already thinking of using the patch he has on munt's repo for dosbox (less risk of breaking)
[21:00:14] <i30817> But he searches for the roms in the current (!) directory.
[21:00:34] <i30817> So at least that needs changing on a patch on top of the patch
[21:01:58] <Dominus> marzo, I see, but regarding the body placement, shouldn't bodies be placed on a saner spot? I don't recall how the original did it, but for Exult it seems sometimes insane how the bodies get placed. Unfortunately I didn't check whether that automaton body wasn't an obstacle.
[21:02:38] <Marzo> Dominus: I have tried something that seems to place the body very similarly to the original
[21:03:16] <Marzo> The downside is that if you kill the automaton in his chair in MoF, he will appear to be under the balcony unless you are nearby
[21:03:23] <Marzo> In which case he pops up
[21:03:40] <Dominus> i30817 , maybe you can have a talk with sergm to place the roms on a sane path in various operating systems.
[21:04:40] <Dominus> Marzo: I saw something similar with that svae I linked to in despise. a party member died and was placed halfway into the wall. when the avatar goes near the body is drawn fully, otherwise only parts are shown
[21:05:13] <Marzo> This is due to the way draw ordering is done
[21:05:33] <Marzo> Objects have draw order dependencies
[21:05:52] <Marzo> Some may need to be drawn before or after others, and some have no relation to one another
[21:06:07] <Malignant_Manor> I've had bodies stuck in walls in the original. Hackmove may have been active if body placement checks for it.
[21:06:53] <Marzo> When the configuration changes, a third object may force a different render order which causes the rendering order to change if the objects were previously unsequenced
[21:07:18] <Marzo> That was a redundant phrasing
[21:07:23] <i30817> In IE that draw ordering thing is done with regions embeeded in the map
[21:07:24] <i30817> but i suppose that was because there is nothing very dynamic about IE objects or avatars.
[21:07:45] <Marzo> Or the maps themselves
[21:07:52] <Malignant_Manor> IE has static backgrounds.
[21:08:19] <Malignant_Manor> There's no z axis either.
[21:08:32] <i30817> Yes, that's what i meant. The only stuff that moves there are npcs and items (loot)
[21:08:43] <i30817> So there is no need for the z
[21:09:01] <i30817> Typical bioware lazyness.
[21:09:15] <i30817> :)
[21:10:36] <Dominus> soooo... nothing to be done except a rewrite which would probably break Exult for quite some time and thus a big no at this point
[21:10:44] <Dominus> right?
[21:10:50] <Marzo> Basically, yes
[21:10:57] <Dominus> (except for the thing you mentioned you did)
[21:11:02] <Malignant_Manor> Marzo, the sleep flag setting solution seemed to have worked.
[21:11:21] <Marzo> I can try a few hacks for some improvements to draw ordering, but they have their limits
[21:11:55] <i30817> Marzo; is this related to when a object changes the Z of another object?
[21:12:09] <Dominus> let me know when I should test drive some changes. right now I have to go to bed and clear my head. death in the family...
[21:12:14] <i30817> Like the table elevating another object?
[21:12:39] <Marzo> Not quite
[21:12:47] <i30817> Because if the objects have all a Z value
[21:12:56] <i30817> Why wouldn't a sort work?
[21:13:09] <i30817> As in the z-buffer
[21:13:10] <Marzo> Because of lots of factors
[21:13:34] <wjp> Dominus: my condolences :-(
[21:13:50] <Marzo> Dominus: indeed, mine too
[21:13:52] <i30817> sorry dominus
[21:14:02] <Dominus> thanks guys
[21:14:09] <Dominus> good night
[21:14:15] <Marzo> Good night
[21:14:40] <Marzo> i30817: Let me give a concrete example: in BG, go to LB's castle in the courtyard (the one with the fountain)
[21:15:03] <Marzo> There are 2 overlapping trees in the bottom right corner
[21:15:21] <Marzo> In Exult, they are normally drawn with the leftmost on top
[21:15:44] <Marzo> But this is unstable because their drawn order is unsequenced in the engine
[21:16:21] <Marzo> If you walk below them going right, at some point their draw orders will change
[21:16:50] <i30817> I see it.
[21:17:06] <Marzo> This is because the avatar needs to be drawn below the trees, and he induces a different ordering in them
[21:17:20] <Marzo> They are still unsequenced in relation to one another
[21:17:49] <i30817> Ahh. How about a spacial sort in addition to the Z sort?
[21:18:02] <i30817> south to north
[21:18:04] <Marzo> Exult isn't doing a z-sort
[21:18:21] <Marzo> Well, it is, but not in a traditional z-buffer manner
[21:19:26] <Marzo> It is quite complicated and hackish, but there are comparisons for all directions
[21:20:04] <i30817> So the avatar has priority over the trees when south of them, and the trees have priority over the avatar when he is north of them
[21:20:22] <i30817> Bizarre. But there are Z-values?
[21:20:24] <Marzo> So the avatar appears to be walking under them, yes
[21:20:27] <Marzo> Yes
[21:20:49] <Marzo> All 3 dimensions are checked to determine draw order
[21:21:31] <Marzo> But as I pointed out, it is not doing it correctly for z coordinate, and changing that is quite tricky
[21:22:59] <Marzo> I was thinking of a z-buffer, but I haven't thought out all the details yet -- U7's cabinet projection is annoying to deal with
[21:23:46] <Marzo> And changing to a z-buffer would be too big a change before the release
[21:24:54] <i30817> It seems that 'fixing' the original algo is impossible due to missing information.
[21:25:54] <i30817> you'd need figure out that something is already behind another thing, and then make the sort stable. But that is precisely the missing information.
[21:26:55] <Marzo> I have been making drawings to make sense of the stuff, but I am still not close to figuring out a good way to sort the drawing order
[21:29:09] <Marzo> I used to think that drawing from left to right, near to far, bottom to top would yield the correct order, but I am not sure anymore -- the main issue is that objects often overlap in U7/SI
[21:29:40] <Marzo> For example, paintings in walls overlap with the walls, but are supposed to be drawn after the walls
[21:30:01] <i30817> Ohohoh.
[21:30:18] <i30817> z-buffer is not going to cut it then
[21:30:26] <i30817> At least alone.
[21:31:04] <Marzo> Hm. Make that near to far, left to right, bottom to top -- otherwise you end up with a wall clipping a portion of an NPC near but under it
[21:32:02] <Marzo> (which can happen already in Exult)
[21:46:40] <i30817> Those 'implicit' orderings need to be made deterministic, ideally with the same order of the static normal U7.
[21:46:42] <i30817> So that when redrawing happens, the objects affected can be sorted the same way.
[21:47:31] <wjp> it's not trivial to guarantee all these corner cases stay transitive
[21:52:09] <i30817> Making the relationship recursive?
[21:52:11] <i30817> Avatar bounding box affects tree A and B. Tree A bounding box affects tree B (or vice versa). Trees are on the same X; then you got to decide and decide consistently?
[21:52:44] <i30817> IDK if it kills efficiency.
[21:52:52] <i30817> or even if it works
[21:53:27] <Malignant_Manor> Should Exult be clearing the sleep flag when npcs are below 1 hp?
[21:54:05] <Marzo> Malignant_Manor: probably not
[21:54:30] <Marzo> I mean -- not on its own
[21:54:37] <Marzo> But usecode should be able to do it
[21:54:58] <Marzo> An awaken spell could be strong enough to wake even someone knocked unconscious
[21:55:11] <Malignant_Manor> I just had a FoV egg cause npcs to wake up. A bunch of them were unconscious from wounds. They all woke up.
[21:55:34] <Marzo> Did they wake up from damage?
[21:56:10] <Malignant_Manor> The egg removes sleep.
[21:56:13] <Marzo> Also: if the egg is an usecode egg, can you check the usecode function number?
[21:56:31] <Marzo> The egg is coded to remove sleep?
[21:57:36] <Malignant_Manor> It is 0x6bc
[21:57:44] <Malignant_Manor> I think it is an egg that does it.
[22:03:17] <Marzo> The egg explicitly awakens all non-party members
[22:04:21] <Malignant_Manor> Yeah, I'm wondering if it happens in the original if hp < 1 though.
[22:05:12] <Malignant_Manor> Exult's so much easier to test than the original engine.
[22:11:17] <Malignant_Manor> Awaken does not work on npcs < 1 hp.
[22:11:54] <Malignant_Manor> I knocked out one npcs and moved to the wake up area and it didn't wake up either.
[22:12:30] <Marzo> Since you can awaken them from the cheat screen, I would say that this should be a restriction on the intrinsic
[22:12:56] <Marzo> And maybe a couple other places
[22:13:25] <Malignant_Manor> I don't want to break anything so I leave that to you.
[22:19:46] <Malignant_Manor> I'll have to check and see if mana regens when hungry. I'll have to see what happens with mana at below 1 hp. I wouldn't think it would regen.
[22:25:04] <Malignant_Manor> mana does regen when hungry but not from < 1 hp regen timer
[22:27:28] <Marzo> Hrm. This one will be trickier
[22:27:53] <Marzo> Not really, no; got it too
[22:28:01] <Malignant_Manor> I also need to test to make sure the instant regen doesn't cause problems.
[22:28:42] <Malignant_Manor> I think out of range party members could pop right back.
[22:29:37] <Malignant_Manor> Would testing if minute == 0 work?
[22:30:07] <Marzo> Good point
[22:30:17] <Marzo> (re: out of range party members)
[22:31:05] <Malignant_Manor> I think that would screw up teleport at the very least.
[22:36:24] --> Kirben has joined #exult
[22:36:24] --- ChanServ gives channel operator status to Kirben
[22:38:04] <Malignant_Manor> Yeah, the heal full needs to go away.
[23:04:22] <Marzo> Malignant_Manor: all changes commited
[23:10:06] <Malignant_Manor> Oops. I don't know why I only left avatar->get_target()
[23:17:56] <-- sh4rm4 has left IRC (Remote host closed the connection)
[23:19:57] --> sh4rm4 has joined #exult
[23:19:59] <Malignant_Manor> Marzo: Any ideas on fade out doesn't always fade back in?
[23:20:35] <Marzo> No, have to check
[23:21:50] <Malignant_Manor> Besides that, we should probably be pretty okay for release (besides testing for new problems).
[23:22:26] <Malignant_Manor> Dominus will need to auto update the documentation to reflect the defaultkeys.txt description changes.
[23:23:04] <Malignant_Manor> I think I will look into which bit needs saved for combat state.
[23:23:50] <Malignant_Manor> Unless you want to mess with ranged combat or anything else.
[23:24:15] <Malignant_Manor> Exult's release will keep getting delayed if we let it.
[23:36:33] --> ParuNexus has joined #exult
[23:53:37] <Malignant_Manor> Marzo, is this okay? http://pastebin.com/av6MV0B7
[23:54:06] <Marzo> I think so
[23:54:12] <Marzo> Need to see if it works
[23:54:15] <Malignant_Manor> It works
[23:54:29] <Marzo> Then it is all good :-)