#exult@irc.freenode.net logs for 2 Jan 2003 (GMT)

Archive Today Yesterday Tomorrow
Exult homepage

[00:08:16] --> kuran has joined #exult
[00:20:38] --> Kirben has joined #exult
[00:20:38] --- ChanServ gives channel operator status to Kirben
[00:28:12] <-- Fingolfin has left IRC ("42")
[00:39:29] <-- wjp has left IRC ("Zzzz....")
[01:30:39] <-- kuran has left IRC ()
[01:36:29] --> kuran has joined #exult
[02:34:09] <-- Dark-Star has left #exult ()
[02:57:33] <-- kuran has left IRC ()
[04:10:40] <-- matto has left IRC ("This feeling.. inside me. Finally found my life, I'm finally free. No longer torn in two.")
[04:20:09] --> ShadwChsr has joined #exult
[04:20:15] <ShadwChsr> hey
[05:13:11] <-- ShadwChsr has left IRC (Read error: 104 (Connection reset by peer))
[06:34:23] --> ShadwChsr has joined #Exult
[06:35:11] --> Kirben2 has joined #exult
[06:35:12] <-- Kirben has left IRC (Read error: 104 (Connection reset by peer))
[06:40:06] --> Kirben has joined #exult
[06:40:06] <-- Kirben2 has left IRC (Read error: 104 (Connection reset by peer))
[07:50:35] --> wjp has joined #exult
[07:50:35] --- ChanServ gives channel operator status to wjp
[07:50:58] <wjp> hi
[07:51:12] <DarkeZzz> Hi!
[07:57:50] * wjp sighs at emerge -pu world
[07:58:17] * DarkeZzz laughs! Haven't done one recently? *grin*
[07:58:21] --- DarkeZzz is now known as Darke
[07:58:43] <wjp> gnome 2.0.2 -> 2.0.3
[07:58:43] <wjp> hmmm
[07:59:41] <wjp> probably not worth the compile time
[07:59:56] <wjp> hm, gcc 3.2.1
[08:00:05] * Darke ahhs. Just did an upgrade to kde from 3.0.4->3.0.5. Was amusing since he did it whilst running it, and parts of the new interface changes (file open boxes, fur instance) changed for the new apps he opened up, but not for the old ones. *grin*
[08:00:11] <Darke> That, however, is worth it. *grin*
[08:00:21] <wjp> oh, and mozilla 1.2.1/galeon 1.2.7
[08:00:26] <wjp> :-)
[08:00:43] <wjp> I did a live-upgrade from RH72 to RH80 before... pretty much the same results :-)
[08:01:13] <Darke> I also suggest if you've got the diskspace to do a `emerge -pub whatever` or important programs. Makes life a whole lot simpler if they've subtly b0rk3n the new ebuild. *grin*
[08:01:21] <Darke> s/or/on/
[08:02:47] <wjp> -b? backup or something?
[08:03:01] <Darke> In any event, it's something to start before you leave work/go to bed. *grin*
[08:03:04] <Darke> Create a binary package.
[08:03:15] <Darke> No need to recompile everything to roll back then, just reinstall the package.
[08:03:28] <wjp> ah
[08:07:06] * wjp looks at perl's build
[08:07:18] <wjp> how... different
[08:07:26] <wjp> to be expected, I guess :-)
[08:08:15] <Darke> How do you mean? *grin*
[09:31:56] <ShadwChsr> anyone awake? :)
[09:32:03] <wjp> sure
[09:32:20] <ShadwChsr> What kind of programming do you do for exult?
[09:32:26] <ShadwChsr> (or pentagram)
[09:32:44] <wjp> anything I feel like, basically :-)
[09:33:02] <wjp> I've done some work on about every subsystem
[09:33:21] <ShadwChsr> Do you have any idea how the pentagram object sorter (renderer) works?
[09:33:34] <ShadwChsr> I heard someone (colourless?) solved it, finally
[09:33:45] <wjp> yeah, it's supposed to be near-perfect now
[09:33:49] <ShadwChsr> I'm interested in the how the algorithm or it's concepts work
[09:33:53] <wjp> haven't looked at it since, though
[09:34:02] <ShadwChsr> there's almost nothing written (that I've found) on how to sort complex graphics like that
[09:34:02] <wjp> did you look at the pentagram source?
[09:34:13] <ShadwChsr> CVS or the targz?
[09:34:33] <wjp> which targz?
[09:34:47] <Darke> Likely have to be cvs. Any tar files will likely be rather old.
[09:35:03] * wjp didn't know we had any of those
[09:35:17] <ShadwChsr> ahh zip, sorry
[09:35:28] <ShadwChsr> I just assume all you linux people would have a .tar.gz before a .zip ;-)
[09:35:35] * Darke has a memory of a cvs tarball/zip being around *somewhere*. *grin*
[09:35:53] <ShadwChsr> the snapshot is recent though.. ~1-2 weeks old
[09:35:56] <ShadwChsr> how long ago did he solve it?
[09:36:00] <Darke> More then likely. Was probably packaged by a windows person anyway. *grin*
[09:36:08] <wjp> longer than that, IIRC
[09:36:20] <ShadwChsr> Up for some theoretical discussion? :)
[09:37:04] <wjp> comparison function is in ShapeManger.cc
[09:37:12] <wjp> ScreenShape::operator<
[09:37:41] <wjp> I think
[09:37:46] <ShadwChsr> looks right
[09:38:12] <ShadwChsr> Here's what I've managed to figure out so far:
[09:39:08] <ShadwChsr> By using "Inside UO", I can tell that every object & tile is the same size (44x44)
[09:39:27] <ShadwChsr> to render larger objects in UO, they cut them up into smaller chunks, so they each individual chunk fits perfectly onto a "tile"
[09:39:57] <ShadwChsr> voila, no render bugs, with the exception of when you throw players into the mix, but clearly they didnt get that right (ever see the screenshot on the UO box with the horse's head thats cut off by the wall?)
[09:40:11] <ShadwChsr> I based my game on that concept because, well, its the only vague idea i had ;-)
[09:40:45] <ShadwChsr> From discussions here on U8, I think all sprites are "intact", and it has a complex sorter. It also doesn't have normal "tiles", in fact, the grid system is smaller than a pixel(?)
[09:40:49] <ShadwChsr> am I right so far? :)
[09:41:15] <wjp> AFAICT, yes
[09:41:28] <ShadwChsr> Question is, what should I do? :)
[09:41:53] <ShadwChsr> continue with the "tile" route, and just use some of the pentagram sorter concepts on top of that?
[09:42:00] <ShadwChsr> go 100% "u8ish"?
[09:42:33] <wjp> well, if all objects are the same size, it'll simplify the sorter a lot
[09:42:36] <ShadwChsr> I have no clue how it sorts... most other "isometric developers" online basically work on civilization-style games :P
[09:42:43] <wjp> even if they're not always exactly on tile boundaries
[09:43:10] <ShadwChsr> not all of them though - for example, a dragon would take up multiple "tiles"
[09:43:17] <wjp> the theory isn't that complicated; basically you have two 3d boxes, and need to determine which one is 'in front'
[09:44:03] <ShadwChsr> right now I have collision boxes, and it allows multiple collision boxes per object (for complex objects). I guess I should add an "object boundary" as well, and sort by that?
[09:44:38] <wjp> that might work, yes
[09:44:46] <ShadwChsr> any idea what U8 uses?
[09:44:46] <wjp> of course you could get problems with the complex objects you mentioned
[09:45:20] <ShadwChsr> From a screenshot someone made for me of pentagram with bounding box mode on, it seems to have one bounding-box per object
[09:45:50] <wjp> yes
[09:46:38] <ShadwChsr> I haven't played u8 in awhile, and when i played it last it was before i started working on my engine, so i didnt really look for limitations...
[09:46:42] <wjp> some 'objects' consist of a couple of internal objects, though
[09:46:50] <wjp> (but that's rare)
[09:46:52] <ShadwChsr> do you think there are any major pitfalls with that method?
[09:46:59] <ShadwChsr> what do you mean about the internal object thing? :)
[09:49:20] <ShadwChsr> multiple sprites & bounding boxes "glued" together?
[09:49:24] <wjp> yeah
[09:49:45] <wjp> something that 'looks' like a single object but in fact consists of several
[09:49:49] <wjp> it isn't used often, though
[09:49:56] <ShadwChsr> ahhh I call that a "supertile" :-)
[09:50:11] <ShadwChsr> though, in my case it's a little different
[09:50:51] <ShadwChsr> How does it handle the disappearing roof issue?
[09:51:42] <wjp> in exult it simply ignores all objects above a given height
[09:52:12] <wjp> detecting if you're indoors is really ugly... it checks a hardcoded list of 'roof' tiles to see if you're under one
[09:52:21] <ShadwChsr> thats what my code does - if an object defined as a "structure" is above the player, it removes all objects at that height and above
[09:52:30] * wjp nods
[09:52:32] <ShadwChsr> but my worry is that it will look weird in certain situations
[09:52:56] <Darke> Chopping off the tops of trees and the like?
[09:52:57] <ShadwChsr> say, if your player was a mouse and you went in a mouse hole, and all of a sudden the building is cut in half and items disappear from on top of tables
[09:53:15] <ShadwChsr> yeah, exactially.. but u7 was designed to chop tops off trees so you can see under them ;)
[09:53:30] <wjp> that's why the player is roughly the same height as a story of a building :-)
[09:53:59] <ShadwChsr> True, but it still would be cool to have animal players.. remember sherry (sp?) in ultima 6? :-)
[09:54:10] <ShadwChsr> going to get the key in the rat hole
[09:54:21] <wjp> SI has you playing as a snake for a while
[09:54:47] <wjp> I think we actually cut off at a fixed level
[09:54:51] <ShadwChsr> lemme guess - the snake has a bounding/collision box the same height as a human? :)
[09:54:54] <wjp> not depending on the player's height
[09:55:14] <ShadwChsr> well mine doesn't depend on the player's height, it depends on the ceiling height above the player - thats where it cuts it off
[09:55:22] <wjp> no, the snake is actually smaller so you can crawl through a small hole (like in U6)
[09:55:29] <ShadwChsr> ahhh
[09:55:36] <ShadwChsr> thats right
[09:55:49] <wjp> hm, that might cause weirdness when buildings have different ceiling heights
[09:55:58] <ShadwChsr> yeah :(
[09:56:13] <ShadwChsr> But it allows for more varied buildings, like a 10 story tower ;-)
[09:56:32] <wjp> well, the number of stories isn't limited by it
[09:56:51] <ShadwChsr> Any ideas on how I can have it dynamic but not look weird? In some games it just removes the building's roof, but that's because it's pre-rendererd
[09:56:57] <wjp> just that every 1st ceiling, every 2nd ceiling, etc.. have to be at the same height
[09:57:37] <wjp> (or at least the same in a game area)
[09:57:58] <wjp> or you could try something fancy like only chopping off the roof of the building you're in
[09:57:59] <Darke> Wouldn't an easier method be to slice off everything above player z-axis+specific_height no matter what 'level' they were on?
[09:58:18] <wjp> that would cause really weird effects when walking up stairs
[09:58:23] <ShadwChsr> Thought of that, but what about something like a high torch on a wall?
[09:58:45] <Darke> (That is, anything who's base *starts* above the z-axis+height.)
[09:59:24] <ShadwChsr> What advantages would that have opposed to the cut off at ceiling-above-player method?
[09:59:30] <Darke> Torch collision box would have the same height as the collsion box of the wall it's ok.
[09:59:57] <Darke> Smoother transition in theory.
[10:00:03] <wjp> I'd try to keep this code as flexible as possible, anyway, so you can experiment with it
[10:00:04] <wjp> :-)
[10:00:13] <ShadwChsr> :)
[10:00:43] <ShadwChsr> I tried the method I outlined and it worked, I just haven't tried making any super-complex levels yet
[10:00:49] <Darke> Variable floor heights would be another.
[10:01:40] <ShadwChsr> ok, how about a trickier problem
[10:02:17] <ShadwChsr> To give the illusion of night, in most cases you modify the gamma (or if your using a 3d engine in my case, set the ambient lighting colour)
[10:02:28] <ShadwChsr> so by default (day) it would be 255,255,255 (white)
[10:02:49] <ShadwChsr> At night, you set it to something like 60,60,100 (more blue since human eyes are more sensitive to blue at night)
[10:03:00] <ShadwChsr> problem is, the whites are still "too white"
[10:03:39] <ShadwChsr> It's just leveling the grey-level pixels, not the white & black ones, so white stays white, even at night. So how do I get around that? :)
[10:03:43] <wjp> gamma leaves pure white untouched, btw
[10:04:14] <wjp> but I don't know how ambient light works exactly
[10:04:25] <ShadwChsr> I'm using a 3d renderer to render 2d graphics, so I can use the ambient color setting, but it basically does the same thing as a "colored gamma"
[10:05:23] <ShadwChsr> so what do games like u7 do to get around that?
[10:05:34] <wjp> u7 has a different night-time palette
[10:05:38] <ShadwChsr> ahhhh
[10:06:04] <ShadwChsr> u8, the same I imagine, since it's still dos based
[10:06:07] <wjp> but I guess what you want isn't a gamma effect
[10:06:18] <wjp> but more of something that scales down all colour values
[10:06:22] <ShadwChsr> I want some sort of effect, just not sure what it is
[10:06:23] <ShadwChsr> yeah
[10:06:28] <ShadwChsr> like a histogram
[10:06:50] <ShadwChsr> Except in this case it's running through the 3d pipeline
[10:07:11] <wjp> I'm afraid I don't know how to get such an effect in any 3d renderer, though
[10:07:32] <ShadwChsr> now, when I play unreal tournament and they decrease the ambient lighting, I don't see white - so clearly it is reducing the values, but in my case it isn't, so there must be a trick to it
[10:08:10] <Darke> Not using 'pure' white, but using a slightly impure white?
[10:08:22] <ShadwChsr> yeah possibly... they probably avoid that colour
[10:08:24] <ShadwChsr> How do you figure out pixel (screen)->tile coordinate conversion?
[10:08:38] <ShadwChsr> I have 2d working, but how do you know when the player drags the object onto a table, for example? :)
[10:09:12] <ShadwChsr> someone mumbled something about rays on an isometric programming board once, but thats the only clue I have
[10:09:15] <wjp> even when using non-pure white, it'll still remain much brighter than the rest when using gamma
[10:09:28] <wjp> that someone was right :-)
[10:09:35] <ShadwChsr> *grin*
[10:09:47] <ShadwChsr> I could understand a ray in a 3d environment, but what about a 2d? :-)
[10:09:47] <wjp> every pixel corresponds to a ray in the 3D world
[10:10:22] * ShadwChsr nods
[10:10:40] <wjp> the question is how to pick a point on that ray
[10:11:03] <ShadwChsr> how does u7 do it?
[10:11:05] <wjp> I'm not quite sure, in fact
[10:11:08] <ShadwChsr> err exult, I should say
[10:11:24] <ShadwChsr> could always just fake it
[10:11:41] <ShadwChsr> err nah that wouldnt work
[10:11:42] <ShadwChsr> hmm
[10:11:52] <wjp> well, you have to fake it, since there's no way to tell for sure which 3d point a player means
[10:12:20] <ShadwChsr> works for things like tables, you do the conversion on the 2d ground plane, and when it collides with another object, you place it on top of that object
[10:12:38] <ShadwChsr> problem is, the heigher the collision, the farther away the object you're moving gets from the cursor
[10:12:59] <wjp> yes
[10:13:11] <ShadwChsr> and you also run into problems with, say, a ledge with open space underneath (cant remember his name, but think of the smartest guy in britannia's store room)
[10:14:55] <wjp> it's a bit of a tricky problem
[10:14:56] <ShadwChsr> Alagner :)
[10:15:18] <wjp> it's probably fairly safe to assume that you'll always want to place an object on top of something
[10:15:29] <wjp> (a floor, table, shelf, or whatever)
[10:15:47] <ShadwChsr> yeah
[10:16:04] <ShadwChsr> or the ground
[10:16:31] <Darke> Safe to assume? Pretty much gauranteed unless you have means of levitating objects. *grin*
[10:17:02] <wjp> Darke: well, there's cases where you want to throw stuff
[10:17:06] <ShadwChsr> well, what about a map editor?
[10:17:15] <wjp> and that
[10:17:32] <wjp> you want 100% control over the placement in a map editor, though
[10:17:46] <ShadwChsr> yeah, thats a different story though.. since you need to place in midair ;-)
[10:18:05] <Darke> wjp: Sure. But surely you want to throw stuff *at* something. Being it a wall/door/npc/floor/whatever. You'd still need some sort of 'solid' target.
[10:18:22] * wjp nods
[10:19:55] * wjp hmmms
[10:22:43] <wjp> the problem with an object getting too far from the cursor can't really be avoided
[10:22:57] <wjp> you could put the object in mid-air if you have gravity
[10:23:17] <wjp> (against the object instead of on top of it, for example)
[10:23:30] <ShadwChsr> Well I dont really want to place it in midair, I just want it at very least, "u7ish" object placement ;-)
[10:24:02] <Darke> wjp: Hmm... wouldn't that work in u8? Since we need to have basic physics stuff. *grin* Could even simulate breaking things like bottles and the like that way.
[10:24:47] <ShadwChsr> well, in u8 you would always place on the ground, but the avatar would throw in an arc from his hand
[10:24:56] <ShadwChsr> the velocity would determine if it would break or not :)
[10:25:00] <wjp> breaking was done in usecode, wasn't it?
[10:26:00] * Darke thinks so. Hmm... maybe that could be the function one of the 'events' we don't know much about?
[10:26:24] <ShadwChsr> if it only exists in bottles/glasses, probably ;)
[10:26:57] <wjp> hm, pity I can't run the original U8 here
[10:27:26] <wjp> (or not without rebooting, anyway)
[10:27:53] <ShadwChsr> Hmmm i thought u8 ran in windows?
[10:27:59] <ShadwChsr> oh wait, your a linux person ;)
[10:28:50] <Darke> There's a 'release()' function that it might be. Will hunt. *grin*
[10:29:59] <wjp> a bottle only has events 0 (look) and 1 (use)
[10:30:35] <wjp> a chair has event 6, which calls an intrinsic with parameter 0x22a
[10:30:44] <wjp> 0x22a is a shape with name 'brokchar'
[10:30:52] <wjp> too much of a coincidence for me :-)
[10:30:56] <ShadwChsr> ahhhhhh
[10:30:57] <ShadwChsr> ;)
[10:31:13] <wjp> oh, I also noted this before, it seems. (it's in my original event notes, anyway)
[10:31:18] <ShadwChsr> :)
[10:39:50] <Darke> It looks like the engine was hard coded to break thrown things though, if it happened.
[10:41:13] <ShadwChsr> if? :)
[10:41:27] * Darke has never played u8. *grin*
[10:41:43] <ShadwChsr> oh ;)
[10:51:51] <ShadwChsr> night!
[10:51:55] <ShadwChsr> thanks for your insight :)
[10:52:06] <-- ShadwChsr has left IRC (Read error: 104 (Connection reset by peer))
[11:05:42] --> slacked has joined #exult
[12:24:53] --> Dark-Star has joined #exult
[12:28:46] <-- slacked has left IRC ("Client Exiting")
[12:49:00] --> Nadir has joined #exult
[12:49:00] --- ChanServ gives channel operator status to Nadir
[12:49:06] <wjp> hi
[12:49:17] <Darke> Hi.
[12:49:51] <Nadir> hi
[12:49:54] <Nadir> happy new year
[12:52:18] <wjp> happy new year
[12:52:32] <Darke> Hoppy New Year. *grin*
[12:59:14] <-- Kirben has left IRC ("System Meltdown")
[14:03:57] --> Colourless has joined #Exult
[14:03:57] --- ChanServ gives channel operator status to Colourless
[14:04:21] <Colourless> hi
[15:02:59] --- Colourless is now known as Cless|Away
[15:28:27] --- Cless|Away is now known as Colourless
[15:35:06] <-- Nadir has left IRC ("I like core dumps")
[16:20:33] --- Colourless is now known as Cless|Away
[16:56:12] --- Darke is now known as DarkeZzz
[17:51:42] --> kuran has joined #exult
[18:55:23] --> ShadwChsr has joined #exult
[18:55:23] <-- kuran has left IRC (Read error: 104 (Connection reset by peer))
[19:13:16] --- Cless|Away is now known as Colourless
[19:13:26] <-- Colourless has left IRC ("casts invisibility")
[20:17:46] --> Piku has joined #exult
[20:18:04] <Piku> hello there
[20:18:15] <matto|wookin> pikuchu!
[20:18:34] <Piku> ah this place is dusty!
[20:18:47] <matto|wookin> if it is, I blame Darke
[20:18:54] <Piku> haha that's everyone called me :)
[20:19:20] <Piku> hey alexandes just pointed me to this room
[20:19:36] <Piku> u know ? the one who ported U7 to zaurus
[20:19:44] <matto|wookin> oh yes.. the Frenchman
[20:20:00] <Piku> I'm just happened to interested in porting to my PPC
[20:20:12] <matto|wookin> coool
[20:20:17] <Piku> and heard that colouress is working on it
[20:20:28] <Piku> seen him around?
[20:20:45] <Piku> did u happened to own any ppc?
[20:20:58] <matto|wookin> I saw him a few hours ago... and I have never owned a PPC
[20:21:12] <matto|wookin> for that matter, I know next to nothing about what they are
[20:21:52] <Piku> mmm ... just wanted to know that how many u7 fans out there who also want the "U7 mobile version" like me
[20:22:08] <Piku> PPC = pocket PC
[20:22:20] <Piku> just like a Palm PDA
[20:22:36] <Piku> but from microsoft and much more powerful than palm
[20:23:30] <Piku> imagine ...how u can play U7 in your hand all the time ,any place ......<me drooled>
[20:36:47] --> kuran has joined #exult
[20:40:38] <Piku> anybody still there?
[20:42:08] <-- Piku has left IRC (Remote closed the connection)
[20:45:24] <-- kuran has left IRC ()
[20:45:36] --> kuran has joined #exult
[21:29:43] <ShadwChsr> whats an "egg", in ultima terms?
[21:30:03] <ShadwChsr> a little hidden entity/object that triggers code?
[21:31:22] <wjp> yes
[21:31:53] <wjp> eggs can create monsters, run usecode, trigger traps, trigger other eggs, change weather, play sound/music, ...
[21:33:14] <ShadwChsr> do they have a range? or do you need to actually step right on them?
[21:36:12] <wjp> that's variable
[21:36:27] <ShadwChsr> radius?
[21:36:30] <ShadwChsr> rect?
[21:36:44] <wjp> hm, I think it's a rect in U7
[21:36:56] <wjp> but there are several triggering criteria
[21:37:17] <wjp> proximity and its inverse (both for either the avatar or any party member)
[21:37:26] <wjp> getting triggered by other eggs
[21:37:34] <wjp> having an object placed on top or removed
[21:37:48] <wjp> (and probably some other I can't think of right away)
[21:38:46] <ShadwChsr> Can I do this:
[21:38:46] <ShadwChsr> bool Object::operator> (const obj2& compareEntity) const {
[21:38:46] <ShadwChsr> return !(this < obj2);
[21:39:02] <ShadwChsr> theoretically that isnt true, but I don't care about ==, since i'm sorting
[21:39:37] <wjp> it should *this
[21:39:46] <wjp> s/should/should be/
[21:40:09] <wjp> and the header is kind of weird
[21:40:25] <wjp> don't you mean (const Object& obj2) ?
[21:40:26] <ShadwChsr> perfect, that did the trick
[21:40:50] <wjp> but you should probably fix it to handle == correctly too
[21:40:53] <ShadwChsr> yeah, i modified that when i pasted it here so you would understand, just missed it a little
[21:40:55] <ShadwChsr> should read
[21:41:02] <wjp> if anything to avoid nasty surprises
[21:41:07] <ShadwChsr> bool Object::operator> (const Object& obj2) const {
[21:41:15] <wjp> or just don't supply a >
[21:41:57] <ShadwChsr> it's comparing two bounding boxes for rendering
[21:42:13] <ShadwChsr> so it will always need to be drawn before or after, equals isn't an option ;-)
[21:42:41] <wjp> well, you generally want == if you compare an object with itself
[21:43:30] <wjp> ah well, it's probably just my mathematical sense of correctness :-)
[21:45:47] --> slacked has joined #exult
[21:56:57] <wjp> time for me to go; g'night
[21:57:05] <-- wjp has left IRC ("Zzzz...")
[23:56:47] <ShadwChsr> Any idea how occlusion is determined in pentagram? :)
[23:56:53] <ShadwChsr> seems like magic to me :P hehe