#pentagram@irc.freenode.net logs for 27 Feb 2009 (GMT)

Archive Today Yesterday Tomorrow
Pentagram homepage


[00:01:38] <-- ShadwChsr has left IRC ()
[00:15:12] --> ShadwChsr has joined #pentagram
[00:36:35] --> Fingolfin has joined #pentagram
[00:36:35] --- ChanServ gives channel operator status to Fingolfin
[00:40:56] <ShadwChsr> Check this out: http://www.lua.inf.puc-rio.br/luanet/lua2il_jucs.pdf
[00:41:12] <ShadwChsr> It talks about mapping Lua bytecode to MSIL (.NET bytecode)
[00:46:11] <pupnik> newat
[00:46:16] <pupnik> neat
[00:48:40] <ShadwChsr> Usecode -> lua bytecode translater -> lua VM -> lua decompiler, hehehe ;)
[00:56:43] --> watt has joined #pentagram
[00:56:43] --- ChanServ gives channel operator status to watt
[01:07:24] <-- ShadwChsr has left IRC ()
[01:49:40] --> ShadwChsr has joined #pentagram
[01:55:16] <ShadwChsr> What's the easiest way to get the tounge of flame?
[02:11:57] <pupnik> eat Scotch Bonnet peppers
[03:19:41] <ShadwChsr> Just out of curiosity, has anyone tried disassembling u8.exe to see how their sorter worked?
[04:29:20] <-- Darke has left IRC (kornbluth.freenode.net irc.freenode.net)
[04:29:20] <-- ShadwChsr has left IRC (kornbluth.freenode.net irc.freenode.net)
[04:29:29] --> ShadwChsr has joined #pentagram
[04:30:34] --> Darke has joined #pentagram
[05:04:39] <pupnik> i'd be amazed if someone did, ShadwChsr
[05:04:52] <ShadwChsr> You'd be surprised ;)
[05:08:55] <watt> 16-bit execute and might be a DMCA issue - I don't recall anyone going that route.
[05:10:16] <watt> A few of the guys did get a chance to talk to Jason Ely though IIRC
[05:10:34] <ShadwChsr> Cool :)
[05:11:07] <ShadwChsr> I was surfing around on Zack Simpson's site today ;)
[05:17:02] <watt> Hmm.. my makefiles for mac tend to run configure more than needed... starting to annoy.
[05:27:40] <ShadwChsr> Have you guys seen this?
[05:27:43] <ShadwChsr> http://www.mine-control.com/zack/patterns/gamepatterns.html
[05:27:52] <ShadwChsr> It's like a recipe book on how to write Ultima, at a high level ;)
[05:28:02] <ShadwChsr> Written by the guy who wrote Usecode
[05:29:06] <ShadwChsr> Then again, you probably have since it matches Pentagram ;)
[05:34:23] <-- Fingolfin has left IRC ()
[06:27:53] <watt> So... I think the need unit tests for the item sorter... pick items coords the we know what we should be seeing and create a few simple asserts for them in a testing tool.
[06:34:00] <watt> ok... it's time to actually sleep :-)
[06:45:48] <pupnik> neat
[06:46:05] <pupnik> cheers watt
[06:52:10] <-- ShadwChsr has left IRC ()
[07:52:40] --> pupnik_ has joined #pentagram
[08:08:57] <-- pupnik has left IRC (Read error: 101 (Network is unreachable))
[08:08:58] <-- Darke has left IRC (Read error: 54 (Connection reset by peer))
[08:24:33] --> Darke has joined #pentagram
[13:02:33] <-- Kirben has left IRC ()
[14:20:40] <-- pupnik_ has left IRC (Read error: 60 (Operation timed out))
[14:22:51] --> pupnik has joined #pentagram
[14:31:14] <-- watt has left IRC ()
[14:52:51] --> watt has joined #pentagram
[14:52:51] --- ChanServ gives channel operator status to watt
[16:22:39] --> peewee_RotA has joined #pentagram
[16:22:46] <peewee_RotA> Hello
[16:23:18] <peewee_RotA> No newb questions today. I promise :p
[16:39:32] <pupnik> i wish i could even ask newb questions
[16:39:39] <pupnik> i havent had time to play U8 or pentagram
[17:11:46] <peewee_RotA> My sympathies. I generally can't go without beating U8 once a year.
[17:46:43] --> ShadwChsr has joined #pentagram
[17:56:30] <-- ShadwChsr has left IRC ()
[18:13:50] <-- Mrrrrz0r has left IRC (Read error: 113 (No route to host))
[18:25:04] <peewee_RotA> Are there any regular remorse or regret players here?
[18:52:02] <pupnik> dunno what that is
[18:52:13] <pupnik> did you try some of the Spiderweb Software games, peewee_RotA ?
[18:52:23] <pupnik> i found them to be great, in the spirit of ultimas
[18:52:58] <wjp> I've spent far too many hours playing avernum and geneforge :-)
[18:53:14] <wjp> trying to postpone playing GF5 currently... not sure how long I'll manage :-)
[18:53:35] <peewee_RotA> I just watched some gameplay footage of no regret. I didn't realize how radically different the gameplay was.
[18:54:09] <pupnik> wjp i hope you become rich and famous or whatever your heart desires
[18:54:14] <pupnik> thanks
[18:54:32] <pupnik> ^^ hero
[18:55:59] <peewee_RotA> They certainly look interesting
[19:00:13] <peewee_RotA> I'm currently struggling with Serpent Isle
[19:00:45] <peewee_RotA> Although it is overall more appealing to me than the Black Gate was, it is even less intuitive (if I thought that was possible)
[19:10:03] --> ShadwChsr has joined #pentagram
[19:20:48] <peewee_RotA> There's no shadows in here. Sorry but you'll have to chs somewhere else. :p
[19:22:01] <wjp> ShadwChsr: to get a tongue of flame, use the avatar cheat menu -> endgame -> create blackrock fragments
[19:22:29] <peewee_RotA> Is that the gargoyles cheat guide.
[19:22:48] <peewee_RotA> To click on the avatar. To select engame from the cheat menu. To get blackrock framents.
[19:23:32] <wjp> To be unsure.
[19:24:43] <ShadwChsr> Weird, I could have sworn I tried that but the tongue of flame never showed up.
[19:24:51] <ShadwChsr> Never got the dialog tree with Mythran
[19:25:19] <wjp> it creates them on the floor
[19:25:26] <wjp> you need to pick it up manually
[19:25:49] <ShadwChsr> Ahhhhh
[19:25:57] <wjp> oh, and also: hi :-)
[19:26:43] <ShadwChsr> :D
[19:52:02] --> Mrrrr has joined #pentagram
[19:57:11] <-- ShadwChsr has left IRC ()
[19:57:12] <peewee_RotA> gotta run
[19:57:14] <peewee_RotA> cya
[19:57:16] <-- peewee_RotA has left IRC ("Leaving")
[20:05:54] --> ShadwChsr has joined #pentagram
[20:08:48] <ShadwChsr> Did you check out the game pattern link I posted yesterday? ;)
[21:49:02] --> Kirben has joined #pentagram
[21:49:02] --- ChanServ gives channel operator status to Kirben
[22:31:27] <ShadwChsr> Wjp, you here?
[22:33:31] <pupnik> he is in many places
[22:33:48] <wjp> and this is one of them
[22:33:49] --- Lord_Nightmare is now known as LordNAway
[22:35:09] <ShadwChsr> :)
[22:35:38] <ShadwChsr> Most of the time people idle so it's hard to know
[22:35:46] <wjp> yeah :-)
[22:36:01] <ShadwChsr> Up for talking I_*()? ;)
[22:36:34] <wjp> always :-)
[22:36:58] <ShadwChsr> I read your response in the mailing list
[22:37:00] <wjp> (I'll be going to bed soonish, though)
[22:37:57] <wjp> sorry if it sounded a bit more negative than I intended. I woke up with a bit of a headache, so that may have filtered through into the tone of the email
[22:38:11] <ShadwChsr> No worries
[22:38:33] <ShadwChsr> I agree with you completely about minimizing the amount of logic in there, and mapping to preexisting functions
[22:39:19] <ShadwChsr> I dug a bit through the existing intrinsics, and I think most already do map pretty cleanly over other functions, aside from some ARG_ITEM_FROM_PTR and whatnot
[22:40:16] <ShadwChsr> There are a few that are more complex - but I think they really help make the case to move them out of the other classes
[22:40:52] <wjp> what I mainly want to prevent is having to trace through an extra file when trying to debug a problem with a usecode script
[22:42:05] <wjp> if all it does is call an existing function, that's probably an acceptable level of extra overhead
[22:42:35] <ShadwChsr> Yeah, I know what you mean.
[22:43:25] <ShadwChsr> I don't know if there's a clean way around that, but I think the real benefit is avoiding unnecessary dependencies in otherwise lightweight classes.
[22:43:49] <ShadwChsr> I tend to think of Items and other "game objects" as part of the model - only having dependencies to other parts of the 'model' (world) but nothing else.
[22:44:05] <ShadwChsr> "dumb leaf classes" for lack of a better term.
[22:44:55] <ShadwChsr> I_bark is an example - it causes the Item class to have a dependency on both the gump system, a specific process, and the kernel
[22:47:01] <Colourless> we set things up the way they were as they more closely match what the original engine did
[22:47:21] <Colourless> all the 'intrinsics' in the original game were member function pointers
[22:47:39] <wjp> Item _objects_ don't have this dependency, though. It's only a static class function
[22:47:52] <wjp> hi Ryan
[22:47:59] * ShadwChsr nods
[22:48:23] <ShadwChsr> With C++ and header files though, it effectively does create a type of dependency though.
[22:48:47] <ShadwChsr> I completely agree with you Colourless
[22:48:58] <wjp> I let the compiler worry about dependencies of that type :-)
[22:49:21] <ShadwChsr> Yeah, but with all the cross dependencies any minor change basically recompiles everything.
[22:49:39] <ShadwChsr> It also depends on the goals of the engine too - is it "just" a U8 engine, or do you envision people creating their own games in it, ala exult studio?
[22:49:40] <Colourless> only if you change headers
[22:50:52] <Colourless> my one problem with your change, you required things to be public members that weren't public before
[22:51:30] <Colourless> yes you could use 'friend' functions or classes, but they violate the rules of don't use friend if there is another way which would be the way things already are
[22:51:31] <ShadwChsr> There were about two, and I admit one was a nasty kludge (the string one)
[22:52:18] <ShadwChsr> Yeah - friend classes would basically go full circle - back where we started
[22:52:54] <ShadwChsr> I envisioned it more of a stepping stone - most of them map over existing methods and the few more complex intrinsics get cleaned up.
[22:53:19] <ShadwChsr> The ucmachine string code already had a few "todo" items near it (or it seemed that way) so I felt it was acceptable as a short term solution to open up the public method.
[22:53:48] <ShadwChsr> I also added a public method for music control, but it seemed to make sense to add a "stopMusic" method to pair along with playMusic.
[22:54:43] <Colourless> i prefer things the way they are (as if you couldn't already tell) one thing it does is you look at the intrinsics list and you know what sort of object the intrinsic is used on
[22:55:14] <Colourless> if you really wanted to, you could just split the intrinsics off into their own files for each class rather than take them out of the class
[22:55:24] <ShadwChsr> Usecode was written for a 16 bit dos game - I felt that by isolating it into a layer, you could potentially open up a lot of new opportunities for new games written using the engine (ala exult studio)
[22:56:01] <wjp> that's not something I think we should do without an explicit design of that layer, though
[22:56:02] <ShadwChsr> I'm not an expert in usecode, but there are probably a few 'less than stellar' parts to it.
[22:56:38] <wjp> I find that generalizing things for a potential future situation often doesn't produce something that will fit any eventual real future situation
[22:58:02] * ShadwChsr nods
[22:58:16] <wjp> Redesigns/generalizations are much easier when there are two specific things that need to be supported
[22:58:41] <ShadwChsr> It was a fringe benefit I saw, but not the main goal.
[22:58:42] <Colourless> is there a specific example that you were thinking that would be advantagous with the new system
[22:59:13] <ShadwChsr> Primarialy I wanted to reduce what I saw as unnecessary coupling (and circular class references), as well as statics around types that weren't really "part" of that type.
[22:59:22] <ShadwChsr> They influence the type, but they fail the "is-a" test.
[23:00:07] <ShadwChsr> The types are used more as a loose grouping rather than an entity in the OO sense.
[23:01:24] <wjp> that's not really an argument
[23:01:56] <wjp> I don't think we should have rigidly following certain design principles as a goal
[23:02:36] <wjp> I agree that it can indicate areas for improvement, but not as a reason unto itself
[23:02:49] <Colourless> could just make them non static member functions... i have a whole set of templated and macros to grab argument types from function definitions... but i don't think we want to put them in pentagram
[23:06:10] * ShadwChsr nods
[23:08:21] <ShadwChsr> Over time there's a lot of creep though
[23:08:41] <ShadwChsr> Right now there's a lot of interdependencies between what seem like independent layers.
[23:09:45] <ShadwChsr> Entities manipulate the screen gumps and processes, processes manipulate screen gumps and entities, etc
[23:10:04] <ShadwChsr> Ultima 8 was probably designed like that, but I think there's just so much more potential.
[23:10:30] <ShadwChsr> But my focus is probably different :)
[23:10:52] <ShadwChsr> Sometimes I like to "clean" code, and I also like the idea of building worlds.
[23:12:23] <ShadwChsr> I don't think that necessarialy means the engine has to increase the scope beyond U8, but I still think that a more layered approach will make it easier to extend at a future date.
[23:12:34] <ShadwChsr> Otherwise you've painted yourself into a corner.
[23:12:47] <wjp> on the file layer I prefer the 'logical' cleanliness of functions being easy to locate to the 'header dependency' cleanliness
[23:13:40] <ShadwChsr> It's really the cross dependencies that concern me more than anything.
[23:14:07] <wjp> as for cleaning up logical dependencies between gumps/processes/items, I'd be in favour of that
[23:14:24] <ShadwChsr> It's too easy to just add a light I_Whatever and add a bunch of kernel-manipulation code as private methods right into classes where they don't belong.
[23:14:43] <ShadwChsr> It's kind of like a temptation having the includes there ;) "just this once" hehe
[23:15:01] <wjp> well, there's a fixed set of intrinsics. There won't be much more adding :-)
[23:15:45] <ShadwChsr> Adding an include is a really nice mental barrier for a programmer, IMHO ;)
[23:16:25] <ShadwChsr> At least with the people I've worked with, having it there is kind of like saying "It's okay to use these types in this class". Most people can't think about the logical structure of the entire system all at once
[23:17:55] <ShadwChsr> maybe a better approach then would be to think about how the systems interact as layers (if that hasn't been done already) and slowly work through the existing code, as it makes sense to do so.
[23:26:29] <ShadwChsr> Sorry that I'm babbling a bit :)
[23:28:05] <wjp> any concrete suggestions for reducing complexity would of course be welcome
[23:28:11] * ShadwChsr nods
[23:28:21] <ShadwChsr> I guess I have two questions: What's the final goal of the project, and what do you need to move the project into alpha (or beta) stage?
[23:28:42] <ShadwChsr> The project's been a bit quiet lately and I have interest (and energy) to work on it :)
[23:28:51] <wjp> final goal would depend on the set of the developers of course :-)
[23:29:14] <wjp> moving into alpha or beta... well... polishing it mainly
[23:30:26] <wjp> pentagram is fairly close to being fully playable, I think
[23:30:47] <wjp> there are those annoying camera issues you found, and combat AI is rather suboptimal
[23:32:16] <wjp> and we probably need some kind of Windows installer that creates a basic config file with the correct paths
[23:34:30] <ShadwChsr> You could probably change the game path / game detection script a bit to work around that
[23:36:51] <ShadwChsr> An installer would be cool but you almost want to package a different installer per target game
[23:37:08] <ShadwChsr> That way you could hook up to the Windows Game Explorer and directly launch U8 with the Pentagram engine.
[23:40:13] <wjp> windows game explorer?
[23:40:58] <ShadwChsr> http://www.microsoft.com/windows/windows-vista/features/games-explorer.aspx
[23:41:07] <-- watt has left IRC ()
[23:41:07] <ShadwChsr> They're improving it in Windows 7 too.
[23:41:28] <wjp> fancy
[23:41:29] <ShadwChsr> Also does things like automatic updates
[23:47:38] <ShadwChsr> Would you be open to me putting together an architecture document for Pentagram?
[23:47:55] <ShadwChsr> Nothing set in stone, just a proposal that could be changed to fit the current implementation or it's goals.
[23:54:31] <wjp> hm, in principle, sure
[23:54:58] <wjp> but to be fair to you, I have to add that I may not have the time to look it as closely as it would warrant
[23:55:29] <ShadwChsr> Ahhh