#exult@irc.freenode.net logs for 11 Mar 2003 (GMT)

Archive Today Yesterday Tomorrow
Exult homepage

[00:24:32] <-- armav has left IRC ("Client Exiting")
[00:46:00] <-- DarkeZzz has left IRC (capek.freenode.net irc.freenode.net)
[00:46:38] --> DarkeZzz has joined #exult
[00:46:38] --- ChanServ removes channel operator status from DarkeZzz
[00:55:06] <-- Dark-Star has left #exult ()
[02:13:02] <-- Matt_O has left IRC (Read error: 54 (Connection reset by peer))
[03:01:31] <-- DarkeZzz has left IRC (capek.freenode.net irc.freenode.net)
[03:01:44] --> DarkeZzz has joined #exult
[03:13:35] --> luis_amiga has joined #exult
[03:51:19] --> Matt_O has joined #exult
[04:08:10] <-- Servus has left IRC ()
[04:17:24] --> ShadwChsr has joined #exult
[05:05:09] --> Yuv422 has joined #exult
[05:20:13] --> Colourless has joined #Exult
[05:20:13] --- ChanServ gives channel operator status to Colourless
[05:20:38] <Yuv422> hi colourless
[05:20:44] <Colourless> hi
[05:20:59] <luis_amiga> Ultima 8 support are planned ?
[05:21:24] <Colourless> not in exult... pentagram though.... that's a different matter all together
[05:21:40] <luis_amiga> pentagram ? what is it exactly ?
[05:22:04] <Colourless> as stated before, just because the pentagram team is a proper subset of the exult team doesn't mean anything :-)
[05:22:15] <Colourless> pentagram is pretty to ultima8 as exult is to ultima7
[05:22:21] <luis_amiga> ah
[05:22:25] <luis_amiga> an then ?
[05:22:29] <luis_amiga> where are pentagram ?
[05:22:42] <luis_amiga> lazy coders ?
[05:22:48] <Colourless> http://pentagram.sourceforge.net/
[05:23:17] <Colourless> pentagram isn't really usable yet though
[05:23:29] <Yuv422> Colourless: I've been looking at using the pent config system in my U6 engine. ;)
[05:23:56] <Yuv422> as I can't be bothered writing one from scratch.
[05:24:12] <Colourless> config system being what? the *nix configure stuff, or the xml style .cfg support>
[05:24:25] <Yuv422> xml config support
[05:24:46] <Yuv422> I haven't even looked at autoconf/make yet.
[05:24:51] <luis_amiga> 2 months, 2 weeks, 7 days
[05:24:53] <luis_amiga> good
[05:24:53] <Yuv422> doing it all in project builder ATM.
[05:25:01] <luis_amiga> slow but secure
[05:25:06] <luis_amiga> no ? hahahah
[05:25:15] <Colourless> well, the pentagram config stuff should be fairly simple to use
[05:25:24] <Yuv422> yeah it looks nice
[05:25:42] <Yuv422> just need to bend the file io stuff to my system ;)
[05:25:53] <Colourless> don't know how entirely robust it is though. it hasn't really been tested that much. it is based on exults code, but with a number of modifications
[05:26:19] <luis_amiga> why pentagram has slow development ? at the moment, exult is the principal project ?
[05:26:19] <Yuv422> yeah wjp suggested I use the pent version over the exult version.
[05:26:46] <luis_amiga> pentagram + exult ?
[05:26:52] <luis_amiga> projects unification ?
[05:26:53] <luis_amiga> ??
[05:27:12] <Colourless> originally it was seen that pentagram and exult should 'reuse' certain parts of the code. But we decided that we didn't entirely think that what exult did in the code that was going to be reused was correct for us
[05:28:02] <luis_amiga> why
[05:28:04] <luis_amiga> why ?
[05:31:02] <Colourless> well, we wanted pentagram to be really oo, and keeping compatibilty with exult can be limiting in regards to being able extend.
[05:31:13] <Colourless> oo being object orientated
[05:33:09] * ShadwChsr nods
[05:33:42] <ShadwChsr> Colourless - I'm working on an OO isometric RPG too, really striving for the clean reusable code, maybe we should look at sharing some tools as well
[05:33:54] <ShadwChsr> making a really nice isometric "code set"
[05:33:57] * ShadwChsr shrugs
[05:34:39] <Colourless> that said, The pentagram 'old' tools and programs are pretty much based on code that should still be compatible with exults, but pentagram new is quite different.
[05:35:10] <Colourless> nice clean code, even if it's not reused by another is still nice.
[05:35:21] <Colourless> makes it easier to maintain
[05:36:26] <ShadwChsr> Exult kind of outgrew its original idea :)
[05:36:45] <Yuv422> isn't that called recoding. ;)
[05:37:19] <Colourless> exult very much outgrew its original idea. it was only meant to be a map viewer, not a game engine :-)
[05:37:38] <ShadwChsr> :)
[05:38:00] <Yuv422> I think there are still some references to exult "the map viewer" in the source ;)
[05:38:02] <ShadwChsr> How much of the usecode is the same between u7 and u8?
[05:38:15] <Colourless> usecode is not similar at all
[05:38:27] <ShadwChsr> basically a new engine from the ground up, I imagine
[05:38:33] <Colourless> yep pretty much
[05:38:50] <ShadwChsr> How much do you have done?
[05:39:05] <ShadwChsr> still pretty early or is it partially playable (walk around, collision detection, some usecode, etc)
[05:39:40] * Yuv422 looks forward to the day when U4,U5,U6,U7 and U8 are all playable with rewritten game engines. *g*
[05:39:47] <Colourless> in theory the usecode interpreter should be about done. but pretty much everything else needs doing. map loading is done, afaik, but nothing else
[05:40:17] <ShadwChsr> I was designing my system with similar ideas to the UO/U8 engines (isometrically speaking ;-)
[05:40:46] <ShadwChsr> I started with the actual graphics engine though, started some input code, I have collision detection, etc
[05:40:52] <ShadwChsr> I wonder how much of that would be of use to you
[05:41:00] <luis_amiga> ShadwChsr: Ultima Online open-source engine ?
[05:41:02] <Colourless> we like to compare ourselves to the original u7 and u8 programmers. it's easy too tell that the original programmers learnt a lot from ultima7 and did things differently in u8. We are similar since we learnt a lot from exult, and are doing things differently in pentagram
[05:41:08] <ShadwChsr> luis: no
[05:41:22] <Yuv422> I miss the good old iso games... everything is 3d now :(
[05:41:26] <ShadwChsr> Yeah me too
[05:41:45] <ShadwChsr> I'm just working on a new engine, but similar to UO... kind of a hobby thing. Not trying to clone it though
[05:42:05] <luis_amiga> ShadwChsr: no ? why ? UO is very used
[05:42:06] <ShadwChsr> I need a creative outlet. Some people write, others draw - for me, it's game design. Thats why I'm programming the engine
[05:42:07] <Colourless> isometric and 3d need not be mutually exclusive
[05:42:15] <ShadwChsr> theres nothing out there that lets me express myself creatively the way I want
[05:42:39] <luis_amiga> i prefer 2D and isometric games than 3D, im rare ? :)
[05:42:55] <ShadwChsr> Well the way I'm designing mine it should be possible to have 3d characters later on fairly easily
[05:42:59] <Colourless> u7 and u8 were in there own strange way sprite based 3d isometric
[05:43:03] <ShadwChsr> maybe even 3d objects that are tile based
[05:43:05] <Colourless> s/there/their/
[05:43:30] <ShadwChsr> I really want to make a 3d isometric engine with tiles, each wall tile, then you choose the texture, etc. Instead of dropping down a whole house mesh with no interior, just a decoration
[05:43:38] <ShadwChsr> I think it would allow much larger, much more creative worlds
[05:43:47] <luis_amiga> OFFTOPIC: any was gamed Tales of Tamar ? www.tamar.net
[05:43:47] <ShadwChsr> Not so much being a slave to the art dept ;)
[05:44:06] <ShadwChsr> what was different about u8?
[05:44:10] <Colourless> having a world editor that sort of acted like The Sims build mode would be fairly easy to use
[05:44:48] <ShadwChsr> Yeah, maybe not *that* easy but fairly close
[05:44:53] <ShadwChsr> drag n drop
[05:44:53] <ShadwChsr> :)
[05:45:06] <luis_amiga> any are probe these game ?
[05:45:19] <luis_amiga> www.tamar.net
[05:45:19] <ShadwChsr> It's ambitious but I've gotten this far so I don't see why I cant complete it
[05:45:32] <luis_amiga> see the url
[05:45:35] <luis_amiga> seems interesant
[05:45:45] <Colourless> <ShadwChsr> what was different about u8? - In regards to what?
[05:46:16] <ShadwChsr> Well, as opposed to a "normal" way of doing isometric
[05:46:27] <ShadwChsr> you said u8 had it's own strange way of doing things
[05:46:38] <luis_amiga> ShadwChsr: Tales of Tamar was ambitious, hand-made graphics, :)
[05:46:41] <ShadwChsr> I understand u7, but not u8, seemed fairly normal :)
[05:47:21] <Colourless> well both u7 and u8 use 3d collision detection and bounding boxes
[05:47:29] <luis_amiga> any seen this game ? what thinks about this ?
[05:47:34] <luis_amiga> ?
[05:48:20] <Colourless> only difference between the world in u7 and u8 is the projection (u7 is skewed, u8 is not) and u7 was strictly tilebased, while u8 world has precision to less than the size of a pixel
[05:48:50] * ShadwChsr nods
[05:49:07] <Colourless> in both games objects has x, y and z coords. they both had width, height, and depth
[05:49:47] <ShadwChsr> In my system i still have the idea of traditional "tiles" of a certain size, each tile is given a numeric index (1,2,3, etc). However, the actual coordinate system is floating point, so you can position an object at 2.5, which is halfway between tiles 2 and 3
[05:50:00] <ShadwChsr> As opposed to just having a very very very small coordinate system
[05:50:31] <luis_amiga> offtopic: Tales of Tamar is a turn-based Play By Email (PBEM) strategy-game which, through the use of modern techniques, also offers the features of a massive multiplayer game and thus joins players from all around the world into the one game world.
[05:50:38] <luis_amiga> any know this ?
[05:50:47] <ShadwChsr> yeah but play by email isn't really my kind of game
[05:50:57] <luis_amiga> no ? ok...
[05:51:07] <luis_amiga> i probe this game... and... i like it
[05:51:08] <luis_amiga> hehe
[05:51:47] --> Yuv422_ has joined #exult
[05:52:20] <Yuv422_> hmm I appear to have cloned myself.
[05:54:24] <luis_amiga> cloned ?
[05:54:26] <luis_amiga> :P
[05:54:27] <-- Colourless has left IRC (Read error: 54 (Connection reset by peer))
[05:54:28] <luis_amiga> yes
[05:54:29] <luis_amiga> hehe
[05:54:45] <Yuv422_> ;)
[05:55:07] --> Colourless has joined #Exult
[05:55:07] --- ChanServ gives channel operator status to Colourless
[05:55:42] <luis_amiga> if i prefer 2D and isometric games, i like PEBM games... im a lot rare and crazy ?
[05:55:52] <luis_amiga> and... im a radical amiga user !!
[05:56:14] <Yuv422_> do you use a real amiga or an emulated one?
[05:56:24] <luis_amiga> real amiga !
[05:57:00] <Yuv422_> did origin release U7 on the amiga?
[05:57:09] <Colourless> no
[05:57:24] <Yuv422_> what about the worlds of ultima?
[05:57:33] <Yuv422_> or was U6 the last amiga ultima?
[05:57:58] <Colourless> u7 was pc only (forgetting the abomination known as the snes version)
[05:58:26] <ShadwChsr> eww
[05:58:32] <ShadwChsr> I had blocked that out of my memory ;P
[05:58:39] <ShadwChsr> evil piece of software that it is :(
[05:59:08] <luis_amiga> any other with amiga here ?
[05:59:17] <luis_amiga> i dont think but...
[05:59:24] <Colourless> i think that the wou games were pc only too
[05:59:38] <Yuv422_> ah k
[05:59:44] <luis_amiga> any like the berra style games ? hehe
[06:02:44] <-- Yuv422 has left IRC (Read error: 110 (Connection timed out))
[06:03:03] --- Yuv422_ is now known as Yuv422
[06:03:09] <Colourless> savage empire was released on snes as well as pc
[06:03:24] <Colourless> martian dreams was pc only
[06:03:46] <Yuv422> Did you like wou games colourless?
[06:03:52] <Yuv422> +the
[06:03:54] <Colourless> never played them
[06:04:24] <Yuv422> I've only played martin dreams. I thought it was good.
[06:04:45] <Yuv422> hopefully It's not too far removed from U6.
[06:05:25] <Yuv422> I haven't tried to play it in bochs yet.
[06:05:46] <luis_amiga> berra is a amiga game
[06:05:57] <luis_amiga> graphic adventure, hardcore
[06:06:06] <luis_amiga> drugs, violence, sex...
[06:06:08] <luis_amiga> hehe
[06:06:29] <Yuv422> ah k
[06:11:41] <-- luis_amiga has left IRC (Read error: 104 (Connection reset by peer))
[06:13:00] <Yuv422> hmm I don't seem to have endl in std namespace...
[06:13:25] <Yuv422> where should this be declared?
[06:13:47] --> timofonic has joined #exult
[06:13:53] <timofonic> hi
[06:14:05] <Yuv422> hey
[06:14:06] <Colourless> hi
[06:14:36] <Yuv422> hmm doesn't seem to be used anyway.
[06:15:03] <Colourless> it's in one of the stream headers. make sure that you don't have .h on any of your C++ standard library headers
[06:15:20] <Yuv422> right
[06:16:14] <Yuv422> where do I go for stdc++ references?
[06:17:01] <Yuv422> does the gnu stdc++ have a set of man pages or an info doc or somthing?
[06:17:22] <Colourless> no idea about gnu
[06:17:27] <Colourless> i usually use http://www.dinkumware.com/refxcpp.html
[06:18:25] <-- Kirben has left IRC (Read error: 54 (Connection reset by peer))
[06:19:15] <timofonic> why projects such as scummvm are c++ and are easy portable, and other projects such as cdonkey are difficult to port to non unix platforms ?
[06:19:30] <timofonic> on amiga we have ixemul, a lot better than cygwin
[06:24:15] <ShadwChsr> depends how they're written
[06:26:06] <Yuv422> how can I make a c++ string from a cstring?
[06:26:30] <Colourless> just use =
[06:26:56] <Yuv422> from a char * pointer?
[06:27:21] <Colourless> yeah
[06:27:35] <Colourless> char * cstr = "something";
[06:27:43] <Colourless> std::sting str = cstr;
[06:27:47] <Yuv422> so what is the difference between the types "string" and "char *" ??
[06:27:54] <Colourless> or std::string str(cstr);
[06:28:05] <ShadwChsr> "string" is a safe class
[06:28:08] <Colourless> string is a specific string class
[06:28:13] <Yuv422> range checked?
[06:28:29] <ShadwChsr> yeah.. it works like the "string" data type in other higher level languages
[06:29:20] <Colourless> nothing 'overly' special about it really. just remember, you'll generally want to use references when passing the std::strings as args to functions
[06:29:37] <Colourless> otherwise the string will be duplicated, which probably isn't what you want
[06:29:45] <Yuv422> right
[06:29:55] <Colourless> no only can that in many cases waste memory, it will take up time too
[06:30:06] --> Kirben has joined #exult
[06:30:06] --- ChanServ gives channel operator status to Kirben
[06:30:32] <Yuv422> is there a way to show pass by reference on a function call when the & is given in the function prototype?
[06:31:04] <Yuv422> otherwise it is hard to see if a var is being passed by reference or copied.
[06:31:47] <ShadwChsr> I know that C# forces you to, not sure about c++ though
[06:31:52] <Colourless> what do you mean?
[06:32:02] <Yuv422> say I have a method
[06:32:22] <ShadwChsr> I think me means like this: somefunction(out VariableImPassing);
[06:32:30] <Yuv422> someclass::my_method(int &my_var)
[06:32:33] <ShadwChsr> in the actuall call, not the declaration
[06:33:01] <Colourless> if you use &, you've got to use it everywhere
[06:33:14] <Yuv422> are you sure
[06:33:17] <Colourless> yes
[06:33:30] <Colourless> it's like using a pointer
[06:33:44] <Yuv422> I get an error if I then use myclass.my_method(&some_var);
[06:34:02] <Colourless> yes because you don't use the & on the passed var
[06:34:14] <Yuv422> that's what I mean
[06:34:28] <Yuv422> you should to say that it is pass by reference. ;)
[06:34:46] <ShadwChsr> he wants the "&" (or something like it) in the code that calls the function so he knows how the variable will be handled when he reads the code later
[06:34:48] <Yuv422> it makes it hard to see how the var is passed without looking at the prototype. :)
[06:35:02] <ShadwChsr> Use a dev environment with code completion ;-)
[06:35:13] <ShadwChsr> or little tooltips hehehe
[06:35:18] <Yuv422> heheh maybe I should.
[06:35:34] <Yuv422> macos X project builder doesn't do that yet. ;)
[06:35:40] <ShadwChsr> You could also run the code through something like doxygen and just have a nice reference
[06:35:41] <Colourless> internally references ARE actually pointers, but dereferencing is automatic
[06:36:03] <Yuv422> like the "this" pointer.
[06:36:18] <Colourless> no, not really.
[06:36:20] <ShadwChsr> "this" doesn't automatically deference though
[06:36:23] <Colourless> the this pointer is a 'real' pointer
[06:36:46] <ShadwChsr> the only difference between a pass by ref and a pointer is the syntax, basically
[06:36:53] <Colourless> yes pretty
[06:36:54] <Colourless> much
[06:36:55] <ShadwChsr> other languages don't even have a distinction between the two
[06:37:35] <Colourless> using a reference is pretty much the same as using a pointer and always doing (*pointer) everywhere
[06:37:46] <Yuv422> do you guys use assertions much?
[06:37:56] <Yuv422> are they costly to use?
[06:38:01] <ShadwChsr> No, 0 cost
[06:38:07] <ShadwChsr> they only compile in debug builds
[06:38:09] <Colourless> assertions get compiled away in release builds
[06:38:17] <ShadwChsr> I like doing this:
[06:38:39] <ShadwChsr> assert(somepointer != NULL && "This pointer may not be null here");
[06:38:47] <Colourless> you really should avoid them if possible, and only use them when detecting unrecoverable data errors
[06:38:47] <ShadwChsr> that way when the assert fires you get a nice comment with it ;)
[06:39:20] <Yuv422> what about try, catch, throw??
[06:39:35] <Colourless> exception handling is fine, if used properly
[06:40:18] <Colourless> exult uses exception handling all over the place
[06:40:37] <ShadwChsr> much better than returning a "bool" function result ;)
[06:41:02] <Colourless> other alternative is to use return a specific error code type
[06:41:13] <ShadwChsr> Apparently you can (in some compilers?) hook into the exception code so that unhandled errors get sent to a certain function, so you can display a "happy error" to the user ;)
[06:41:29] <Yuv422> is it acceptable for a class to expect the caller to catch exceptions generated from its methods?
[06:41:46] <ShadwChsr> yes, thats how it's supposed to work (I believe)
[06:41:54] <ShadwChsr> But you should always document classes that can throw errors
[06:42:00] <Colourless> unhandled exceptions are always bad
[06:42:13] <ShadwChsr> there's nothing worse than code that doesn't tell you it will throw an error under certain conditions
[06:42:17] <Colourless> it's a one step process to quitsvills
[06:42:27] <Yuv422> so I guess in your API docs you'd say what exceptions you might throw. ;)
[06:42:30] <ShadwChsr> Some programmers go overly paranoid and start "try/catch"ing everything, what a mess
[06:43:01] <Colourless> C++ STL stuff can sometimes throw exceptions, you should check to see which ones will
[06:43:11] <Yuv422> I guess it's like every thing. It's all about being a structured programmer and saying consistant.
[06:43:29] <Colourless> Other APIs are generally not going throw exceptins
[06:43:36] <ShadwChsr> exception handling is kind of an art form though
[06:44:10] <ShadwChsr> Everyone says, It's so easy! whenever you get an exception just gracefully clean up what your doing! (muhahahahahahaha)
[06:44:26] <ShadwChsr> Of course, if you're halfway through a 3d renderer initialization, good luck
[06:44:26] <ShadwChsr> ;)
[06:44:46] <Colourless> well, in such cases, you can an exception, you are screwed and you'll need to quit anyway
[06:44:52] <Yuv422> heheh does anyone really care about a graceful crash. ;)
[06:44:54] <Colourless> s/can/get/
[06:45:11] <Colourless> well you can notify the user why things screwed up :-)
[06:45:46] <ShadwChsr> I actually found a nice VC++ error dialog that had "Abort, Retry, Fail" buttons on it, lol
[06:45:59] <ShadwChsr> I randomly clicked them until the app terminated
[06:46:00] <ShadwChsr> ;)
[06:46:05] <Colourless> thats the assert box
[06:46:12] <ShadwChsr> Yeah its too funny though
[06:46:17] <ShadwChsr> I cant believe they still have that
[06:46:20] <ShadwChsr> its like saying
[06:46:34] <ShadwChsr> "Crash, Crash, or Crash: Choose your option" :-)
[06:46:55] <Yuv422> unless your waiting on IO. ;)
[06:47:12] <Yuv422> come on CDROM, read that CD!!!
[06:47:26] <ShadwChsr> true, but in that case it shouldn't be an assert ;) IMHO asserts are for those comments you have in your apps like "This should never ever happen"
[06:47:26] <ShadwChsr> ;)
[06:47:42] <ShadwChsr> whereas a cdrom with a pizza grease fingerprint is more common ;)
[06:48:24] <Yuv422> or a memory allocation error. free up some space then hit the retry button ;)
[06:48:57] <ShadwChsr> Strictly speaking, "retry" would never do anything, with the exception of maybe threading, but you wouldn't want thread syncronization code IN an assert call. Yikes;)
[06:49:30] <ShadwChsr> well.. I guess it could be a function call in the assert.. hmm
[07:00:43] <ShadwChsr> what kind of project are you working on, yuv?
[07:02:31] <Colourless> got to go
[07:02:31] <-- Colourless has left IRC ("casts invisibility")
[07:08:20] <-- DarkeZzz has left IRC ("Inficio-Infeci-Infectum")
[07:08:21] --> DarkeZzz has joined #exult
[07:08:30] <Yuv422> hi Darke
[07:08:40] --- DarkeZzz is now known as Darke
[07:08:42] --- ChanServ gives channel operator status to Darke
[07:08:49] <Darke> 'ello.
[07:09:21] <Yuv422> getting any rain in your part of aus?
[07:10:02] <Darke> No rain as such, though the sky is definately threatening to drop a few buckets of it on our head. *grin*
[07:22:01] <ShadwChsr> we have an entire ocean falling over here ;P
[07:23:49] <Darke> Cool!
[07:25:34] <Matt_O> is winter time approaching?
[07:52:09] <ShadwChsr> no, spring ;)
[08:47:19] <-- ShadwChsr has left IRC ()
[09:34:25] <-- Darke has left IRC (capek.freenode.net irc.freenode.net)
[09:41:28] --> Darke has joined #exult
[09:53:56] <-- Yuv422 has left #exult ()
[09:54:09] --> Yuv422 has joined #exult
[09:59:58] --> Servus has joined #exult
[10:00:48] --- ChanServ gives channel operator status to Darke
[10:02:29] <Yuv422> yay! pent config system installed into my U6 app :)
[10:12:22] <Darke> Considering we flogged it from exult to begin with, it certainly should have been easy to convert. *Grin*
[10:12:32] <Servus> Movement!
[10:13:19] <Yuv422> I just had to rip out the Filesystem class stuff.
[10:13:32] <Darke> Free the penguins! Down with Microsoft! Eat more beef! Err... oh. Not that kind of movement. *twitch* Move along, nothing to see here...
[10:14:04] <Servus> not the type of movement associated with plum juice and bran muffins, either
[10:14:21] <Yuv422> splatter..
[10:14:34] * Servus wields a... large trout?
[10:14:46] <Yuv422> you can'
[10:14:53] * Darke has his anti-trout hat on.
[10:15:00] <Yuv422> t ready a trout
[10:15:05] * Servus slaps Yuv422 around a bit with a large trout
[10:15:54] <Yuv422> hmm slippery. :)
[10:17:52] * Darke watches the trout slip out of Servus' hands and slap a Nobel Peace Prize winner.
[10:18:13] <Servus> i'd rather give it a noble gas and watch it flounder
[10:19:00] <Servus> i need work on this more, whatchya think? :-)
[10:19:22] * Yuv422 returns to the relatively sane world of the pentagram config system.
[10:19:59] <Darke> Yuv422: Umm... you do know I had my paws in that config system for a while? It's really not as sane as you might think. *grin*
[10:20:19] <Yuv422> ;)
[10:20:21] * Darke "Ooh..."s since that's what the image says to do. *grin*
[10:21:02] <Servus> well when you've been fussing over something for a long enough time, it gets you excited when it does the littlest "cool" thing
[10:21:39] <Servus> wish i knew how to get it to render faster than the screen refresh rate :|
[10:22:03] <Yuv422> is that a little white house in the centre of the window or a pointer? ;)
[10:22:30] <Servus> it's an Adobe-photoshop made arrow
[10:22:43] <Servus> oh, the center, that's the player model :-)
[10:24:01] <Servus> i'm doing this 100% from scratch, i'm not using GLUT, or any other aux. library to help me... doing it 100% from scratch so that maybe, just maybe, i'll learn something ( so it'll take a while to load models :-)
[10:44:11] --> Dark-Star has joined #exult
[12:52:39] <-- Servus has left IRC ()
[12:57:04] --> Colourless has joined #Exult
[12:57:04] --- ChanServ gives channel operator status to Colourless
[12:57:28] <Colourless> hi
[12:57:33] <Darke> Hi.
[12:57:50] <Yuv422> hey cless.
[12:58:37] * Yuv422 is std::stringing his classes.
[13:00:40] <Colourless> that can be a good and bad thing. char * can still be useful at times
[13:01:18] <Yuv422> yeah just for file paths etc.
[13:01:29] <Colourless> i don't know a clean way of doing case insensitve comparisons with std::string
[13:02:22] <Yuv422> stricmp(string1.c_str(),string2.c_str())
[13:02:29] <Yuv422> :)
[13:02:38] <Colourless> that is not clean :-)
[13:02:44] <Yuv422> heheh I kno
[13:02:46] <Yuv422> +w
[13:03:06] <Colourless> nor is it the C++ way of doing things :-)
[13:05:08] <Colourless> stricmp has addition issue of not being entirely platform portable
[13:05:18] <Colourless> s/addition/additional/
[13:05:57] <Yuv422> does it rely on the ascii table?
[13:06:10] <Colourless> no, just not all compilers have the functions
[13:06:16] <Darke> Though it's quite easy to write a replacement from scratch. *grin* You're still better off writing your own stricmp specifically for std::strings. I really don't know why one wasn't included in the standard to begin with.
[13:06:46] <Colourless> something that really irritates me with std::string though is you can't add numbers to the string
[13:06:50] <Yuv422> like snprintf there doesn't seem to be a standard way of doing that function. ;)
[13:07:01] <Colourless> snprintf is now standard C99
[13:07:17] <Colourless> just wait for all the compilers to support it though....
[13:07:25] <Darke> You'd want std::stringstream's for that.
[13:07:47] <Colourless> yes, now why couldn't std::string already have that stuff in it... grrr...
[13:08:02] <Yuv422> there are a few good portable snprintf implementations going around.
[13:08:47] <Darke> Colourless: Because std::string is already enough of a bloated class as it is, 110+ functions for a standard implementation, IIRC.
[13:08:54] <Colourless> the one in exult isn't great... no floating point support... not good at all
[13:09:35] <Yuv422> do you need to print strings with floats in exult? ;)
[13:10:10] <Colourless> Darke: IMO STL is the epitome of bloat
[13:12:35] <Darke> Colourless: To a certain extent I agree. I really can't see the point of most of the functions on some of the classes. But they went for speed optimisation rather then going straight at the jugular of ease of use. *grin*
[13:19:28] <Yuv422> just added a little method to the config class.
[13:19:37] <Yuv422> config->pathFromValue("config/ultima6/gamedir", "paper.bmp", paper_str);
[13:20:01] <Colourless> and that does?
[13:20:25] <Yuv422> just makes a full path string to the file paper.bmp in the ultima6 gamedir
[13:20:35] <Yuv422> from the config file gamedir path
[13:21:45] <Colourless> you bloated the config class.... that sort of stuff should be handled somewhere else :-)
[13:21:55] <Yuv422> ;)
[13:22:06] <Yuv422> but it was so easy to add there...
[13:22:40] <Yuv422> It is an extension of the config system... :)
[13:23:11] <Yuv422> maybe I should use a virtual directory structure exult style?
[13:23:44] <Dark-Star> Yuv422: You're doing an U6 reimplementation?
[13:23:59] <Yuv422> yes.
[13:24:05] <Colourless> virtual directory structure pentagram style with byte order independant reading methods would be better :-)
[13:24:15] <Yuv422> want to help? ;)
[13:24:17] <Dark-Star> cool, got an URL and CVS up already? ;-)
[13:24:20] <Colourless> IDataSource... your saviour :-)
[13:24:35] <Yuv422> yeah I was looking and liking IDataSource. :)
[13:24:48] <Yuv422> I do that stuff in my file loading class.
[13:24:51] * Dark-Star doesn't even have time to code on his own reimplementation of a game engine . . .
[13:25:08] <Darke> Yuv422: I really suggest you flog as much from pentagram as you can. There's a lot of basic stuff in there that will solve *lots* of your underlying portability problems without you having to think about it. *Grin*
[13:25:26] <Yuv422> Dark-Star: nope no cvs or website yet.
[13:26:04] <Yuv422> yeah. but as I'm a newbie I find it a bit hard to understand your C++ classes. ;)
[13:26:12] <Yuv422> C++ newbie that is. ;)
[13:26:28] <Yuv422> I'm learning though.
[13:27:36] <Dark-Star> Many of the Pentagram classes are rather "advanced", that's what I thought when I first saw them :-)
[13:28:20] <Yuv422> I guess I wanted to see some results quickly that's why I just implemented C style hacks to get the job done.
[13:28:31] <Colourless> i wouldn't say that they are 'that' advance
[13:28:31] <Colourless> d
[13:28:55] <Yuv422> I guess I should take the time to get the base implementation down right.
[13:29:32] <Colourless> granted, SoftRenderSurface is a bit of a nightmare, especially the evil file known as SoftRenderSurface.inl... but other than that, it's fairly simple stuff, IMO :-)
[13:29:39] <Dark-Star> I found the "dynamic cast" system a little confusing for example...
[13:30:11] <Colourless> oh, now that is 'advanced' stuff :-)
[13:30:46] <Yuv422> where is this "dynamic casting"?
[13:30:47] <Colourless> i seriously wouldn't think for anyone to use it, if they didn't completely know how it works
[13:33:11] <Colourless> so far it's only used in by the Container class and the Kernel
[13:33:32] <Colourless> or was it the usecode interpreter...
[13:34:03] <Dark-Star> Colourless: what I asked myself is "why?" ... C++ already _has_ dynamic casting, hasn't it? (dynamic_cast<...>)
[13:34:54] <Colourless> dynamic_cast isn't supported by all the platforms that we intend pentagram to support
[13:35:55] <Colourless> plus it's entirely possible our dynamic_cast could be faster and might save a tiny amount of code size
[13:36:04] <Colourless> but i doubt anyone is going to do any tests
[13:36:14] <Colourless> s/we/I/ :-)
[13:36:50] <Dark-Star> but are you sure it doesn't cause any conflicts or regressions later on? ;-)
[13:37:41] <Colourless> how?
[13:37:49] <Darke> Considering we currently support a platform that doesn't support dynamic_casts, we'll worry about that when we come to it. *Grin*
[13:38:12] <Yuv422> winCE?
[13:38:57] <Dark-Star> I don't know how... which platform doesn't support dynamic_cast btw?
[13:39:16] <Colourless> yep WinCE :-)
[13:39:53] <Yuv422> I think I'll use your SDL scaling setup
[13:40:13] <Yuv422> does U8 use a palettized surface?
[13:40:22] <Yuv422> in SDL that is.
[13:41:22] <Colourless> http://www.users.on.net/triforce/rotated.png
[13:41:38] <Colourless> nope, in pentagram we use native 16/32 bit modes
[13:42:20] <Dark-Star> hey that looks pretty cool :-)
[13:42:44] <Yuv422> :)
[13:42:56] <Dark-Star> any chance of porting it to my Palm III? *g*
[13:43:05] <Colourless> no
[13:43:20] <Yuv422> what's the clock speed on your palm III? ;)
[13:43:30] <Yuv422> 10Mhz??
[13:43:45] <Darke> No chance, we don't support 8bit palleted stuff. *grin*
[13:43:49] <Dark-Star> Yuv422: dunno, but it has a Gameboy emulator that runs at about 0.8 FPS or something...
[13:44:10] <Dark-Star> Yuv422: I guess the 2MB RAM would be the bigger problem though ...
[13:44:13] <jer|w0rk> hihi
[13:44:15] <Colourless> i think the means shit slow :-)
[13:44:15] <Yuv422> is exult an 8bit surface?
[13:44:34] <Colourless> Yuv422: you should know the answer to that question :-)
[13:44:50] <Yuv422> ;) let me check.
[13:44:55] <Colourless> it's not like i haven't told you before :-)
[13:45:09] <Colourless> yes it uses a software 8bit surface with a hardware palette, if possible
[13:45:26] <Dark-Star> How much does such a pocket PC cost? Maybe I'll buy one, I'm sure exult and scummvm would run on it too :)
[13:45:33] * Yuv422 has lots of projects on the boil at once.. ;) Brain overload
[13:45:45] <Colourless> no exult wont run, i haven't ported it yet...
[13:45:59] <Colourless> too... many.... exceptions....
[13:46:19] <Colourless> that is exult uses too many exceptions and porting to PocketPC is a real real real pain in the ass
[13:46:21] <Yuv422> any reason why you opted away from an 8bit surface for U8?
[13:46:41] <Yuv422> does the original game have a larger palette?
[13:47:10] <Dark-Star> Yuv422: 8bit surfaces are harder to program because they're palettized. You'd need to reserve palette entries and such. 32bit is just plain easier I'd guess
[13:47:13] <Colourless> because we could? :-)
[13:47:40] <Yuv422> I'm using 8bit as all the U6 stuff is stored in that form. :)
[13:48:05] <Colourless> it's because I thought it would be a better idea to use 16/32 bit since I want to extend pentagram quite a bit
[13:48:11] <Yuv422> I'll probably implement the scaler exult style too. :)
[13:48:11] <Darke> And because it's easier to create art for.
[13:48:13] <Dark-Star> Yuv422: Yes, but U6 had only one palette and no fades, right?
[13:48:32] <Yuv422> different palettes from intro and ending
[13:48:49] <Yuv422> but only one palette for actual game
[13:48:57] <Colourless> indeed art is very much a reason. if want to include new graphics, the 8 bit palette can be very limiting
[13:49:19] <Colourless> pentagram is intended to have an 'advanced' interface some day :-)
[13:49:22] <Yuv422> I've got to implement palette rotation for alot of U6's animations so I thought a palette would be the easiest option.
[13:49:42] <Colourless> u8 doesn't use palette rotations so that is not a problem for us
[13:50:07] <Colourless> execpt for the funky mushroom effect... but i don't know how that worked anyway
[13:50:36] <Yuv422> but now I think about it, it might be nice to have a rewroked night mode and some better fading.
[13:50:45] <Yuv422> reworked.
[13:50:53] <Colourless> you see, 16/32 bit can be nice
[13:51:11] <Colourless> u6's dithered night mode would be 'really' nice if it was actually a blended gradient
[13:51:20] <Yuv422> the tiles are going to take up 3x more space in memory though :(
[13:51:30] <Yuv422> that's what I was thinking
[13:51:45] <Colourless> don't have too. just depends on how you draw and how you store the data
[13:52:00] <Yuv422> maybe even shift the mask a bit for candles and other nighttime lightsources. :)
[13:52:18] <Colourless> for instance, in pentagram, we store the game palette as an array of 256 dwords that have been converted into the native format of the surface
[13:52:33] <Yuv422> yeah but drawing would be faster if all the data was formatted and ready to go.
[13:52:49] <Darke> Yuv422: I can't imagine people are going to complain about a game using 9Meg of memory for tiles, versus 3Meg of memory anyway. *grin* Most of the newer pdas are coming out with more usable memory then that by default.
[13:53:32] <Colourless> basically instead of directly updating an 8 bit surface with 8 bit entires, we convert the 8 bit entires into 16/32 bit colours when directly painting
[13:53:54] <Yuv422> and that's not a problem speed wise?
[13:54:18] <Yuv422> how much do you repaint per game cycle?
[13:54:34] <Colourless> all we do is this:
[13:54:35] <Colourless> *pixptr = pal[*linedata];
[13:55:03] <Colourless> or in other places:
[13:55:03] <Colourless> pix = pal[*linedata];
[13:55:03] <Colourless> while (pixptr != endrun)
[13:55:03] <Colourless> {
[13:55:03] <Colourless> if (NOT_CLIPPED_X)
[13:55:04] <Colourless> {
[13:55:06] <Colourless> *pixptr = pix;
[13:55:08] <Colourless> }
[13:55:10] <Colourless> pixptr += XNEG(1);
[13:55:12] <Colourless> }
[13:55:38] <Colourless> repainting will be done as many times as can be done (with interpolated frames)
[13:55:47] <Colourless> speed wise shouldn't be much of a problem
[13:56:19] <Colourless> cpus should store the game palette in the l2/l1 cache so accessing it will be fairly fast. it's only 1 Kb :-)
[13:57:00] <Colourless> something like 2 clock cycles
[13:57:13] <Yuv422> I think exult has a soft and hard palette in 8bit mode anyway :)
[13:57:37] <Colourless> exult... could be better at doing certain things
[13:57:38] <Yuv422> right, I think I'm going to change to a true colour mode. :)
[13:57:52] <Dark-Star> Colourless: well, you can't calculate cache usage _that_ easy. First, there's a problem when a task switch occurs, and second, the cache is not fully associative so some cache lines might be filled with other content
[13:58:03] <Colourless> yes i know
[13:58:24] <Colourless> we could do 'precaching' of the palette if we were really concerned
[13:58:42] * Dark-Star couldn't resist after hearing courses on computer architecture :-)
[13:59:08] <Colourless> s/precaching/prefetching/
[13:59:13] <Yuv422> scaling is probably going to be the most costly part, right?
[13:59:24] <Colourless> scaling is very costly
[13:59:34] <Colourless> many instructions per pixel
[13:59:35] <Dark-Star> you could create 32 bit surfaces on shape load time rather than on paint time and discard the old data. this only works for non-animated shapes of course...
[13:59:58] <Colourless> it also only works for not translucent shapes too
[14:00:19] <Yuv422> lots of transparent tiles in U6. ;)
[14:00:28] <Dark-Star> no, because 32bit blits can be transparent using the alpha channel
[14:00:46] <Colourless> no they can't. that is highly dependant on operating system and hardware
[14:01:01] <Dark-Star> well, ok, but on windows/linux thay can :-)
[14:01:12] <Colourless> sometimes. :-)
[14:01:23] <Dark-Star> and SDL emulates it if it's not natively supported (it's supposed to, at least)
[14:02:16] <Colourless> but only if you let SDL do the blits
[14:02:24] <Colourless> if you do a hardware lock you need to do the blending yourself
[14:02:31] <Yuv422> Colourless: can you rotate your virtual pocketPC?
[14:02:39] <Colourless> nope
[14:02:46] <Yuv422> :(
[14:02:51] <-- Kirben has left IRC (Read error: 54 (Connection reset by peer))
[14:03:06] <Dark-Star> don't you get problems with your neck when debugging pentagram in the emulator? *g*
[14:03:18] * Yuv422 thinks colourless might get a stiff neck.
[14:03:29] <Yuv422> ;)
[14:03:31] <Colourless> well, i just tell pentagram not to rotate it's gameworld
[14:04:13] <Yuv422> have you tried it on real hardware yet?
[14:05:06] <Colourless> no
[14:25:30] <Yuv422> I'm off to bed.
[14:25:34] <Yuv422> cya guys
[14:25:37] <-- Yuv422 has left IRC ("[BX] Get your free warez from!")
[14:38:30] <-- Dark-Star has left #exult ()
[15:22:47] <Colourless> should go
[15:22:48] <-- Colourless has left IRC ("casts invisibility")
[15:24:57] --> Dark-Star has joined #exult
[17:04:33] <-- timofonic has left IRC (Read error: 110 (Connection timed out))
[17:09:25] * Darke snoozes. Night!
[17:09:28] --- Darke is now known as DarkeZzz
[18:14:00] --> armav has joined #exult
[18:15:07] <-- armav has left IRC (Client Quit)
[18:21:58] --> insta has joined #exult
[18:30:13] --> Sslaxx has joined #exult
[18:30:39] <insta> hi Sslaxx
[18:30:51] <Sslaxx> Hiya, Insta!
[18:30:55] * Sslaxx waves to everyone.
[18:32:14] <insta> is it normal for my character to run around extremely fast depending on what scaling method I use? I never played the original U7 so I don't know if something is off.
[18:35:32] <Sslaxx> I'd imagine the res you're playing at has something to do with it. I run Exult at 640x480 on WinXP.
[18:37:25] <insta> ah
[18:37:37] <insta> 640x480 with x2 point scaling looks nice :)
[18:38:09] <insta> I hope that increased viewing distance doesn't spoil any of the game for me.
[18:39:03] <Sslaxx> Doesn't seem to for me. It's been a decade or so since I last played the DOS U7.
[18:42:51] <Sslaxx> You're using the CVS version, then?
[18:46:54] <insta> nope, official 1.0 release
[18:47:23] * Sslaxx is using Sunday's CVS version (with the OGG music packs). Seems pretty stable.
[18:47:59] <insta> ogg music packs? where might I find those (forgive me if they're in plain view on the page)?
[18:48:49] <Sslaxx> On the download page of the main site. You'll need the CVS/1.1.x version of Exult, though.
[18:49:29] <Sslaxx> They're recordings of the original MT32 tracks (with effects).
[18:52:32] * Sslaxx reboots.
[18:52:35] <-- Sslaxx has left IRC ()
[19:25:04] --> mbjohn has joined #exult
[20:11:40] --> Sslaxx has joined #exult
[20:21:27] <-- Sslaxx has left #exult ("Client Exiting")
[20:56:36] <-- insta has left IRC ("brb")
[22:36:33] --> wjp has joined #exult
[22:36:34] --- ChanServ gives channel operator status to wjp
[23:00:47] --> insta has joined #exult
[23:13:12] <wjp> hi
[23:13:39] <wjp> it may be possible that our avatar-speed calculation looks at the distance of the mouse from the avatar
[23:13:59] <wjp> this would mean you'd run rather fast when the world resolution is higher
[23:15:36] <wjp> hm, no, never mind :-)
[23:15:48] <wjp> the avatar speeds are three fixed numbers (slow, medium, fast)
[23:16:40] <insta> are you responding to my earlier question? :)
[23:16:56] * wjp nods :-)
[23:17:11] <insta> ah, well.. I guess I'm just not used to the movement speed.
[23:17:39] <wjp> there's a couple of problems with increased viewing distance, btw
[23:18:02] <wjp> I think most can be avoided if you move 'close' to an item when using/moving it
[23:18:23] <wjp> obviously some mazes will be easier
[23:18:33] <insta> I already turned the resolution back to 320x200 (I want the experience to be as close as the original as possible)
[23:18:43] <wjp> k :-)
[23:20:04] <insta> I'm sort of obsessive about keeping the experience as close to the original.. I don't use any of the 2xSai or other filters with Exult or with Genesis/SNES emulation
[23:20:20] <insta> pixelation is good! :)
[23:20:38] <wjp> genesis/snes emulation?
[23:21:44] <insta> yes, zsnes has support for 2xSai/Super 2xSai/Interpolation filtering.. I prefer not to use them
[23:21:59] <wjp> ah, k :-)
[23:22:29] <insta> so, any word on the next official release of exult? :)
[23:22:37] <wjp> hm.. well... uh...
[23:22:49] <wjp> no :-)
[23:22:56] <insta> ;)
[23:24:07] <wjp> the current cvs should be pretty stable, though
[23:36:42] <insta> I guess the reason why I thought that th game was running too fast was because of how fast the running animation cycles, it looks.. hyperactive :)
[23:38:28] <wjp> hm, the running animations has been tweaked several times
[23:38:46] <wjp> I don't think everybody could agree on what the proper running animation should be :-)
[23:39:16] <insta> I wish I could play the original on an old 486, then I'd know for sure
[23:39:27] <insta> but, it doesn't interfere with gameplay so I guess I shouldn't worry :D
[23:41:39] <wjp> I should be going; have to get up early tomorrow
[23:41:40] <wjp> night
[23:41:49] <-- wjp has left IRC ("Zzzz...")
[23:52:18] --> Kirben has joined #exult
[23:52:18] --- ChanServ gives channel operator status to Kirben