<TANSTAAFL> i have code that doesnt care whether the BMP is 8 bit or 24 bit, and doesnt care what bpp the surface is... <four> :) <Khawk> hehh <[Mithrandir]> oh wow <four> lol <Khawk> there he is <kiwidog> Uh... <Jered> ;-) <kiwidog> :) <four> slol <kiwidog> whatup <Khawk> hey chris <Blah> Hi kiwidog_ <Jered> Yo <dFnord> ;) <f||lter> lol <Billy> f||lter: for me, it's painful, because Internet is expensive <four> Who is this imposter??? <Billy> hi <f||lter> Billy: why is that? <Jered> BAD fnord. <Jered> ;) <dFnord> It was Four's idea. <four> who? what? <f||lter> lol <Khawk> how are ya chris? <[Mithrandir]> ok, my code reads in all the bitmap headers and the palette if there is one <Khawk> as you can see, you have lots of fans :-) <Billy> f||lter: coz I live in Switzerland <four> It's dark in here. . . and it smells kinda funny. <f||lter> oh <Billy> chris! chris! chris! :) <Blah> Mith: My code is for 24-bit bitmaps, so it doesn't read in palettes...I don't know how to do that because I didn't read about it... <dFnord> Yeah, 15 or so. ;) <kiwidog> khawk: doing well, just doing some work from home right before i came in <[Mithrandir]> then it backtracks from the end of the file waht bitmapinfoheader.biSizeImage is, but i think thats a bug <kiwidog> khawk: so i noticed... scary... :) <f||lter> where's chris?? oooh ooh lol <Khawk> heheh <f||lter> ?? <four> Man, you guys would never hold up in a maphia. <Jered> kiwidog, I trust that you've read the chat info...you realize that you can sell vacuum cleaners, right? <Khawk> better start watching your back :-) <Jered> <G> <TANSTAAFL> "maphia?" <f||lter> mafia? <Blah> Mith: Use the offset in the infoheader to find where the actual pixel data starts <kiwidog> jered: actually i haven't read the chat info, to be honest <four> "Tell us were Shorty is, or we'll untie your shoelaces!!!". OKAY, I'LL TELL YOU! <[Mithrandir]> see, In my bitmap, its 70X69 which should be 14490 bytes in 24 bit mode, but DirectX reports something different <Billy> what about some moderation? <f||lter> direcx=satan <TANSTAAFL> have you thought about the 32 bit boundaries? <Jered> kiwidog, okay. Basically, you give me $2,000,000...and..uhm...oh, right, a one-way plane ticket for Tahiti...and... <Jered> Gonna need your gf's phone #, and....;) <TANSTAAFL> BMPs align on 32 bit boundaries <Khawk> ok <kiwidog> jered: ah, i see how it is <Khawk> Since Chris is now here, and he's probably limited on time, we're going to need to moderate. <Jered> In other words, everyone shut up or Khawk will show you pictures of himself. <TANSTAAFL> "i'm a unicorn!" <Jered> <G> <dFnord> So, we have to take turns looking at his typing, or what? <kiwidog> i'm not really limited on time to be honest, the only thing you'll have to remember is i'm multitasking between two machines during the chat, so i may be slow on a few responses <Khawk> If you have a question that you would like to ask Chris, or even a comment, msg one of us ops <Khawk> alright <Khawk> we can go 2 people at a time <Khawk> and see how that goes <TANSTAAFL> take a number, y'all <dFnord> What happens if one of the "OPS" has a question? <Khawk> so, any takers? :-) <Khawk> go for it df <dFnord> Ooh, a Goldenian loop. <dFnord> I don't *really* have a question. I was just trying to throw a monkey into the poop. <dFnord> Or something. <Khawk> ok, mith is up <[Mithrandir]> Chris: Whats the deal with D3D vs. OpenGL? Which do you think is better, and which one will most likely 'make it' as the standard in the next few years? <Jered> f||lter will be next. <Khawk> then queasy.. <[Mithrandir]> lol <[Mithrandir]> I took f||lters question ;) <[Mithrandir]> sorry <Khawk> bringer is 4th <[Mithrandir]> f||lter: I wanted to know too <kiwidog> mith: hard to say, because as much as I'd like to say it's all about the API quality, it's largely political. I think OpenGL is a far better API, but D3D is Microsoft and therefore the market share. Right now many vendors are trying to equally support both, such as nVidia. And of course there's always Fahrenheit coming up, which may stop the war. <[Mithrandir]> i see <kiwidog> mith: for now, I prefer OpenGL, but when possible it's better to support both APIs until the dust settles <[Mithrandir]> What about Matrox? <[Mithrandir]> lol <[Mithrandir]> They still don't have OGL support yet (grrrrrr) <kiwidog> mith: and of course if portability is important, OpenGL is a must (even if it doesn't rule out D3D support in addition) <kiwidog> mith: I don't have much faith in Matrox these days <[Mithrandir]> Neither do i <[Mithrandir]> They don't support VESA either <kiwidog> mith: right now my top company from a developer-support standpoint is nVidia <[Mithrandir]> thats why I started programming in Windows <[Mithrandir]> I dunno about nvidia <[Mithrandir]> They are dragging their feet on 3DNow support <[Mithrandir]> their latest 'detonator' drivers kinda sucked =( <kiwidog> mith: Regardless the OpenGL/D3D decision isn't a big deal, if your wrapper is generic enough <[Mithrandir]> i guess <[Mithrandir]> Now that the Macs support OGL... <[Mithrandir]> I guess it will gain popularity even more <kiwidog> Why should nVidia have to worry much about the 3DNow? <f||lter> What are your future plans kiwidog? <Khawk> oops..sorry mith :-) chris was still talking to you <f||lter> lol <dFnord> Chris: Quickly, Four, (and others, I'm sure) want to know how long DN takes to compile. ;) <f||lter> hehe <kiwidog> OGL is the most portable graphics API in existence; if you want cross-platform support, you need OpenGL in some form. <f||lter> errr <kiwidog> df: roughly 10 mins in debug mode, 15 mins in release mode, on a P2/450/KNI (I guess you could call it a prototype PIII) <kiwidog> filter: future plans? In what timescale (months, years, ...) ? <dFnord> Not bad. <f||lter> 6months-year <Jered> kiwidog, how many warnings? <kiwidog> jered: zero <f||lter> any projects you can tell us about? ;-) <Khawk> nice <f||lter> wow <TANSTAAFL> (damn, I always have warnings...) <f||lter> indeed <f||lter> what are you using to compile? <kiwidog> filter: well, 6 months i'll still be wrapping up DNF, a year I'll be starting the next project, which is still up in the air <f||lter> what compiler i mean? <kiwidog> filter: MSVC++ 6.0 SP2 <dFnord> Let me point out that Chris knows about the #pragma warning directive. LOL. <f||lter> i'm done. ;-) <kiwidog> tan: if there are some warnings that annoy you and you don't care about them, just disable them <dFnord> See? <dFnord> ;) <kiwidog> df: it's a necessity when you're on warning level 4 <Queasy> i have a few questions 'bout them game developer conferences. <TANSTAAFL> i'm not ANNOYED by the warnings i get. <Queasy> Have you been to any of 'em, and if so how were they? <kiwidog> queasy: i've never been to CGDC unfortunately, due to time constraints (they always seem to happen at the wrong time). I've been to E3 once, as well as a few other smaller conferences, and they're all quite fun. E3 is a madhouse. :) <Queasy> heh, would you recommend a small timer to go to one of these conferences to get connections? <Queasy> (i mean for publishers and stuff... y'know) <kiwidog> queasy: I'd recommend them, yes. Going to conferences is probably the easiest way to get contacts there is. <kiwidog> queasy: for publishers, it's a bit more tricky <kiwidog> queasy: if you have a demo you think will really impress a publisher, bring it to E3 and try to grab a producer hanging around their booth when they have a few minutes available <Queasy> oh... is it likely thougH? <Queasy> and what if you had a finsihed product instead of a demo? <kiwidog> queasy: likely, no... the industry is just too competitive these days. But the more kickass the product looks, the better your chances. Regardless, showing a demo to someone from the company at a conference is still better odds than sending something in (which never works). <kiwidog> queasy: even if you think your product is "finished", it's never finished until a publisher says it's finished. Always call it a demonstration to a publisher. <Queasy> ahh... what 'bout shareware? <Queasy> like, i'd rather distribute it nationaly than just to a few friends, if you know what I mean... <kiwidog> queasy: shareware is a good way to get stuff out the door, especially early stuff ("proving ground" titles, so to speak), but don't expect much money from it unless it's the next Doom. Instead, use shareware as a way of marketing yourself <Queasy> that's what I was thinking... but will there be shareware vendors at E3 and such? <kiwidog> queasy: you'd have to ask the vendors; it all depends on their marketing plans <Queasy> okay. thanks for your time <BRiNGER> How extensible are you planning on making Duke Forever? Do you feel that allowing drastic changes to the game would dillute the feel of Duke, or is it something that you want to encourage? <kiwidog> bringer: you mean on the user mod side of things? <BRiNGER> Yeah, will there be a sourcecode or SDK release? <BRiNGER> Also, I noticed you were talking about how portability is a large asset of OpenGL; Are there any plans to port DNF to an alternate platform, such as Unix/Linux or Macs? <kiwidog> bringer: the more extensible the better; servers always have the choice of what mods they want to run, so the game's feel is really up to them and their players. It won't affect the feel of the single player experience, regardless. Keep in mind that DNF is being built on top of the Unreal engine, so the UnrealScript source will be entirely accessible through the editor <kiwidog> bringer: DNF might very well be ported to other platforms (it makes good marketing sense; Duke3D has been ported extensively), although those ports are generally farmed out by us to other developers who specialize in that sort of thing. If there are ports done for DNF, they'll likely not be done by us. <BRiNGER> Cool, one last question before I'm done :) <BRiNGER> How hard was the change from Quake 2 to Unreal? <Khawk> slart, you can ask questions <Khawk> heh <slart> ok, heh <slart> Bump mapping in duke forever: this was speculated earlier, but is it actually in, and if so, what kind of speed decrease is it (assume a voodoo 2 or TNT 3d card). It would seem to be incredibly slow, especially since it would mean a 5th rendering pass for the Unreal engine. <dFnord> Cybrpussy... that's for later. <kiwidog> bringer: simple in some aspects, painful in others. A lot of our world interaction code had to be redone simply due to changes in the game logic code between the engines, fortunately the change was for the better and the framework is even stronger now. Much of my model control code went over pretty painlessly because it's largely external to the engine core, but the rendering side had to be redone. It was a whole mix of different complexities. It w <TANSTAAFL> no doubt <Khawk> Whenever we voice you, you can ask your question/comment. <Khawk> good one df <kiwidog> slart: bump mapping is something i unfortunately can't discuss at this time; it's not a done deal so I can't make a statement either way <dFnord> ...one of those "I could tell you, but then I would have to kill you" sort of deals? ;) <Billy> Okay... How long do you usually take to design your code? I have this "problem" which is, I design too much my code and finally I don't code much... What's your point about this? <kiwidog> df: pretty much, yeah :) <slart> I'm willing to die. Mmm. bump mapping :). Well, thanks for your time, and good luck on DNF <[Mithrandir]> oh wow, me again ;) <[Mithrandir]> i almost went back to coding... then you would have never gotten me back here (I missed dinner tonight because I coded right through it... ugh, a sickness, really) <kiwidog> Billy: the balance between design time and coding time is something that it takes a while to work out. You do want to design more than you code, if you want your designs to be effective. The stopping point is when you think "maybe i'm going too far", or "what the hell am i adding all this complexity for?" and that's when you freeze the design at a stable point and get to work. It's a cycle; most designs have to go through at least 2 or 3 minor (or ma <Billy> yeah I see what you mean... although the sentence is not finished :) <kiwidog> Billy: personally i design much more than i code.... i've got plenty of cases of code blocks that took me days or weeks to design, and under 6 hours to implement. <kiwidog> Billy: i finished the sentence; maybe not all of it went through... lemme repost the second half... <kiwidog> Billy: (repost) It's a cycle; most designs have to go through at least 2 or 3 minor (or major) revamps until they're "final". <Billy> actually, I can code soemthing very quickly once it has been well designed <Billy> okay :) <Billy> just another question: <Billy> At 3DRealms, how much can you say about the design of DNF? Moreover, do you have tight schedules or do they let you know what needs to be done? <Khawk> mith: you can say your question/comment since you're voiced <[Mithrandir]> Anyhow, I have a fairly large question: Brian Hook of ID software, stated that 3DNow would make almost no significant improvements in speed in the Quake 3 engine, and I'm pretty much sure he's lying. Sure, I didn't code the engine at all, or know that much about it, but from what I know about 3dnow, is that it is effective mostly in engine code (Physics, transformations, etc) and the rendering is done by the video card. Since you expressed su <kiwidog> Billy: we (the programmers, nick and I) have a say in the game content design, although we don't focus on that; we prefer the technical design issues. The mappers and artists are the content guys, so we let them do their jobs in that area. <kiwidog> Billy: the schedules are flexible although we generally have "mini-milestones" for certain things we want in the game by a given time <[Mithrandir]> that I expected nVidia to optimise their drivers, i expect you know the same, 3DNow is effective in engine code, not video drivers. Brian Hook said that 3DNow would only improve Q3 performace if the video drivers were made 3dnow compatible. What do you think? <Billy> okay. I guess it's great to work at 3DRealms then :) I know that some game companies don't let everyone give his comments about the design (but those companies are rare hopefully) <kiwidog> mith: 3dnow support is mostly in the engine code dealing with transformations etc; regardless, it still doesn't have a significant benefit. The processor is not the limiting factor in games like these, the bus is. The video drivers may improve things, but I still don't see it being a major improvement. <[Mithrandir]> And what do you think about the difference between 3DNow and KNI (If you've had any experience with either)? <Billy> thanks for having answered my questions :) <Khawk> you're up blah <[Mithrandir]> tis as I've expected. Now which bus are you refering to? AGP bus, or system memory bus, or even cpu->L2 cache bus? <kiwidog> mith: 3dnow is nice but I think KNI will have a much greater impact, not because of the vectorization support but because of KNI's extra precaching instructions <Blah> Hey Chris, just a very general question: I noticed that in your loonygames articles, you <Blah> said you read a lot of books to get where you are, and very few of them had "game" in <Blah> the title. So, what programming books (specific or general) have been the most influential <Blah> to you? <Blah> oops, sorry <Khawk> it's ok <Khawk> he'll get to it :-) <kiwidog> mith: all of the above (re the buses). AGP is definitely a big big boost, but all it takes is one part of the system to slow the others down <[Mithrandir]> on KNI, how inconvienient is it, that its based on a whole new cpu mode? Is that a problem? I would think that 3DNow is easier because it doesn't require a new CPU state <kiwidog> blah: there's a few books on my shelf that I consider "must haves", on a variety of topics.... i'll write out a few of 'em, gimme a minute <Blah> Okay, 60 seconds...hehe :) <kiwidog> mith: you don't need a completely new cpu state for KNI once it's enabled, and Win98 or other KNI-compliant OSs deal with that <[Mithrandir]> i see <kiwidog> blah: on the graphics front, there's Foley, van Dam, Feiner, and Hughes "Computer Graphics : Principles and Practice, 2nd ed.".... the graphics bible, basically <[Mithrandir]> also, I'm no expert, but I heard that half of the KNI commands (70 in total) are just re-hashes of MMX commands so that they will all work without switching cpu registers, is this correct? <kiwidog> blah: for design, there's Gamma, Helm, Johnson, and Vlissides "Design Patterns : Elements of Reusable Object-Oriented Software", another must-have <dFnord> Chris, Nick Murphy will be glad you siad that. I just told him to buy Design Patterns, and he was very reluctent. <dFnord> :) <[Mithrandir]> my god, I took a few of my basic classes I designed a few months back, plugged them into my new project and they worked... I was so extatic ;) <kiwidog> mith: some are MMX rehashes, but not half, no. The bulk of the KNI instructions are for the new floating point quad registers <Khawk> heh <Khawk> nicko..... <kiwidog> df: that book is god <Blah> Okay, I wrote those down....thanks Chris! That's all I had to ask <Khawk> ok, thanks blah <[Mithrandir]> oh, and one more question: <Khawk> cap: you may say stuff now <kiwidog> blah: there are plenty more, but i'll write up a list in COTC sometime before the series is over <CapCaverna> What advices do you say to a starting game developer? <[Mithrandir]> how does it feel to have designed one of the most intuitive engines (duke3d) and then to go and use another companies engine? I mean, I know there are a lot of engines nowadays, but why go to an external source for DNF, especially after 3dreals being defined as a premiere coding company? <[Mithrandir]> 3drealms, soory <kiwidog> cap: learn, learn, learn. Read everything you can, buy every book you can (people who think you can learn exclusively with online docs and get the same results are kidding themselves; books may not be cheap, but then again, good education is never free)... and don't ever think you've learned enough to stop moving forward <CapCaverna> I know that, but Assembler, C and C++ is good enougth to start it ? <[Mithrandir]> (by the way, I never really realized how good the duke3d engine was when it was released... I just recently started making levels for duke and I was impressed) <kiwidog> mith: Duke3D used the Build engine, which was only partially built in-house; it was actually made by Ken Silverman, who was kindof like a "one-guy licenser". As far as the company was concerned, with the exception of Ken, the engine _was_ licensed. Regardless, I would prefer to write an engine inhouse rather than license one, but that's a future endeavor. <[Mithrandir]> oh, i didn't know that <[Mithrandir]> well, thanks for your time. <Jered> (the build editor is extremely cool) <kiwidog> cap: C and C++ are more important than assembler in terms of languages, although you should learn assembler at some point just to have the knowledge of what the machine is doing (and where optimizations should be) <dFnord> Chris, why would you prefer to do that? Sounds like the "not-built-here" syndrome. <Khawk> thanks mith <Khawk> four, you're up <four> Just one question... <Khawk> As a general notice to everyone, we currently only have one person in the list queue <TANSTAAFL> if the queue becomes empty, do we have to talk about the weather? <dFnord> Which is is, a list or a queue? ;) <dFnord> it <Jered> It's a stack <four> Dealing with the "difficulty" of 3D programming, do you generally get a lot of design/programming objectives done in one day, or do most things take just a couple of hours? <CapCaverna> But learning something like PROLOG, LISP or some language of high level is good too ? <Khawk> it's a queue that holds a list :-) <Khawk> each element in the queue is an element in the list <dFnord> All queues hold lists. <kiwidog> df: because the engines I've worked with, as feature-packed as they are and as impressive as their products may seem, have certain design flaws that irk me. There's always "NIH syndrome" yes, but I tend to not have NIH if the code I'm working with lives fully up to my expectations. <Jered> TAN, no, we talk about politics <four> ...and networking <dFnord> Ok. But is it realistic to except that you could do better? I mean, wouldn't the effort be better applied to perfecting/optimizing an existing engine? <kiwidog> four: some of my objectives are small tasks that get done in an hour or two, but I tend to group my tasks into things that take me between a few days or weeks and then break things down from there. <dFnord> (I don't mean to undermine you... I'm just wondering about your motivations). <four> alright, that's all. Thanks :) <kiwidog> cap: everything you can learn is a good thing, even if you don't end up using it much (you won't use much prolog or lisp in game programming, but if you ever needed to write a script language for example, then knowing those languages could help improve the design of your own language)... everything has a use <dFnord> Except APL. :) <dFnord> And Perl. <CapCaverna> :) <kiwidog> df: not if the engine needing improvement has flaws that keep it from being improved <dFnord> That's fair. <Khawk> and maybe Ada <Khawk> ugh..ada... <Jered> dF, don't KNOCK perl <TANSTAAFL> children.... <f||lter> chris, exactly what role are you playing in creating DNF? What parts of it are you programming? <f||lter> PERL isn't that bad <f||lter> ada is worse. <kiwidog> df: some of the things I would want to do to Quake2 or Unreal for example would take almost as much time to work into those engines as it would to write a new engine from scratch. Granted these engines let us do a lot of things with less work, yes, but some modifications are unnecessarily hard <dFnord> I was kidding. Trying to get Jered's goat. <dFnord> Or something to that effect. <Jered> Yeah...you and your third-circuitness. ;) <CapCaverna> What theories do I have to read about to make some inteligence in a game ? <f||lter> sorry <dFnord> Chris, I can relate. Most of my job is maintainence, and I am often faced with the fact that modifying or otherwise changing X requires a basic rewrite of X. <f||lter> hey dragun, you're right, it is the oriental new year <kiwidog> filter: I'm programming half of everything (there are only two programmers on the project). Both of us have our hands in everything, although there are a few topics that we keep separated between us just to simplify things. For example I handle the character/model stuff, and nick handles the world geometry stuff, that kind of thing. But we both do 50% of the work <f||lter> sorry, i didn't know lol <f||lter> oh <dFnord> However, most managers would prefer to maintain their existing bad code, than to write new bad code. <dFnord> Too bad. <kiwidog> cap: you're missing the point; you're asking about specific languages, specific theories, etc; that's not the big picture. Read _everything you can get your hands on_. <f||lter> i've never worked with another programmer on a project, i was wondering how exactly you guys manage to keep the code working when it's two seperate people. that always fascinated me <dFnord> Except "APL - The Definitive Guide". <dFnord> Source Safe? <dFnord> ;) <Jered> (and Perl 5 Unleashed) <kiwidog> filter: judicious division of labor, and version control software. MS Visual SourceSafe is a godsend. <f||lter> what exactly does MS SourceSafe do? I've seen it before, but i was kind of confused. ;-) <dFnord> Breifly, you can only work on files that you have checked out, (which also prevents other from working on those files). <f||lter> ok <dFnord> Mutually execlusive. <CapCaverna> ok, thats I was reading in some reference in Sweetovlivion web site , like AI, Neural Networks, hehe .Thanks a lot... <kiwidog> sourcesafe is a VCS (version control system). It archives old versions of files (usually source code), controls modification by allowing only one person to "check out" and modify a file at a time, etc. <f||lter> I read that Neural Networks article too! well, i tried to <f||lter> hmm <f||lter> i see <kiwidog> filter: for one person, it doesn't have much use except as a good archiver. But for more than one person, the "modification mutex" is a necessity <dFnord> ...the list vector. <f||lter> do you debug your code as you go along? normally what i'll do is add a class/few functions and then debug (compile and check for errors). how do you go about doing that considering it takes 10 min. to compile? <kiwidog> filter: it takes 10 mins to do a full build; normally i only do full builds a few times a day. Often I'll just recompile a file or two and work from there. I usually recompile every few hundred lines and check for errors, if i haven't compiled in a while <Khawk> done cap? <f||lter> ok <CapCaverna> yeap, but I have some others questions, maybe later... <f||lter> Khawk: i'm done. beam me down scotty <Khawk> alright <f||lter> =-) <BRiNGER> With Internet gaming becoming more and more popular, do you see a change in how Duke's multiplayer will work? There's quite a difference between a two player modem game (or even an 8 player LAN game) and a chaotic free for all on the Internet. How are you hoping to change this and still keep the feel of DukeMatch? <dFnord> So one try and interate it! <Khawk> oh well. we lost our bot <kiwidog> bringer: Duke's multiplayer will of course feel different from Duke3D's, but what's important to us is that it stays fun. That priority is the same whether the target is modem-to-modem like it was for Duke3D, or the internet like it is for DNF. <TANSTAAFL> (damn... when X2 gets bored....) <Khawk> damnit x2.... <dFnord> And then... <dFnord> Jered, it really is a queue. <BRiNGER> On a different topic, but related to books and coding, what would you recommend for learning AI code in relation to games? <Jered> dFnord, no, a queue flushes at the left end <dFnord> Jered, think about it. <TANSTAAFL> (geeks) <dFnord> PersonA ask to be pushed. <Khawk> queue is FIFO <dFnord> PersonB asks to be pushed. <Khawk> stack is LIFO <dFnord> PersonC ask to be pushed. <dFnord> Who is popped first? <dFnord> A. <dFnord> Not C. <dFnord> On that topic, Chris, does 3DRealms use the STL? <dFnord> ;) <dFnord> Or, as is the popular misconception, does it have "too much overhead"? ;) <Khawk> Billy, you can talk <kiwidog> bringer: AI is a very broad topic, and how it gets applied in a game depends largely on the game logic system of that game. The best thing to do is get a broad overview from several books dealing with fuzzy logic, neural nets, genetic algorithms, etc. One or two books for each works fine. <Billy> Hi I'm back :) What do you think of Internet projects? You probably know what I mean... several people who doesn't know each other but who wants to do a hit game... <kiwidog> bringer: there's also the issue of pathfinding, which has a lot of material on net <kiwidog> df: I don't use the STL, no. I personally believe it's too abusive of exception handling. <dFnord> So you exclude exception handling during compilation? /GX I think. <kiwidog> Billy: To be honest, I don't put much faith in those projects. People need to know each other at least to some degree if they're going to gel. <TANSTAAFL> amen <Khawk> i agree there chris (for Billy) <kiwidog> df: from what I remember STL requires exception handling to be worthwhile, since many of its errors are reported by throws <Jered> In the words of Nick, true dat <dFnord> Yeah. But I was asking in general. <dFnord> I mean, if you're including the exception handling support, you may as well use STL right? <Billy> I agree.. I'm on one of those projects, and, well, it has started for more than 6 months and we are finally know each other well.. we are finally starting development but it's not easy <dFnord> (Which *is* turned on by default). <kiwidog> df: I don't disable exception handling, no, but I don't use it much. Usually only around the main message loop. <kiwidog> df: exception handling isn't a one-time cost. Every time you throw, it does an exception, and those are lethal to performance <dFnord> Ok, that's fair. I think that this may lead to another good question... to what extent do you use OOP? <dFnord> Well... lethal is a bit harse. <Jered> English major. :) <kiwidog> df: I usually only use them for fatal errors where recovery isn't an issue nor is performance (since the app will end immediately afterward) <Khawk> ok, bringer: are you done? <dFnord> Yeah. <Billy> Silly question maybe, but... If I have done a non-game shareware, do you think it's something a game company would consider as a plus? <BRiNGER> Sure <Khawk> ok <dFnord> Jered, leave me alone... you ... you... STACK! <dFnord> ;) <Jered> ::sniffle:: <Jered> ;) <kiwidog> Billy: that depends on the game company and what they're looking for in a programmer <Blah> Chris, I was just wondering, how protective are you of the source code you're writing in loony games? I've been using your style in a game I'm writing right now, but since I'm kind of using your code as a guide, <Billy> okay. thanks again :) <Blah> some of my subsystems are looking a lot like yours, like the input system for example...cuz I can't think of any way to improve it... <Blah> Do you know what I mean? <kiwidog> df: I use OOP all time time, but not necessary a C++ abusive form of OOP. I prefer composition to inheritence wherever possible, for many reasons. Check my COTC article #5 (i think it was loonygames issue 1.9) for my little rant on that topic <dFnord> Ok. <Khawk> done Billy? <Snowman> Kiwi: thanks for stopping bye, even though I didn't ask anything, I learned plenty <Snowman> goodnight every one <dFnord> Bye, Snowy. <Jered> 'night, Snow. <Snowman> hehe, they can't say bye back.... -> *snowman* bye. thanks for letting me know about this. <Khawk> Billy? <Billy> yes <Billy> I'm done <Khawk> ok <Queasy> yay! :) <dFnord> Chris, I have a highly technical question: <Queasy> okay, short question [more out of curiosity] when did you get started? <dFnord> What's your favorite Tool song? <Blah> Queasy, he wrote about that in one of his articles...I think it's 1.15 <Queasy> d'oh!... <Blah> hehe <Queasy> okay... blast me then khawk.. wait, not yet. NOW! <Khawk> uh oh <Queasy> cya guys, and thanks Chirs <Queasy> for your time :) <Khawk> must've had a split somewhere <dFnord> Hmm... wierd. <Blah> Chris left? d'oh, I guess he didn't know the answer to my question <Khawk> he didn't leave <Queasy> wha.. <Queasy> whoops. <Khawk> the network is screwed up <Queasy> !? <Queasy> heh, I say bye after he leaves ... good one. <Khawk> well, he left, but not on his own will <Blah> maybe its all part of his master plan <Jered> I believe AfterNET may have experienced its first (?) split. Please allow a few moments. <Queasy> i thought it split the other night Jered? <Queasy> remember, when you were explaining irc (dear God no! HACKING) to me? <Jered> ;) <Jered> We were on DALNet. <Queasy> DOH! <Khawk> ok, in the meantime, i will unmoderate the channel until he gets back (hopefully) <Queasy> man, I'm out of it. <f||lter> down with DALnet <Blah> hehe <Queasy> lol <f||lter> =-) <Billy> hmm it's 5:00 am here, so I won't stay long <bstach> Hello all <lurker> hi <Queasy> anyways, okay, i gotta guys, cya l8r and... ~have fun :) <four> Here = where? <Spider> cool interview. is anyone going to post the log? <Billy> Switzerland of course :) <Khawk> possibly <f||lter> i've got the log <Khawk> we haven't really discussed posting it uet <Khawk> yet <four> OF COURSE! Switzerland. <dFnord> We should probably edit it... put it in Q and A format, you know? <Khawk> yeah <CapCaverna> 01:28 am here in Brazil <f||lter> yeah <f||lter> that's a good idea <Billy> lol <Khawk> need to see what daveed wants to do <Jered> Will kiwidog be able to find another server? <lurker> Yeah, edit all his replies to "I love sweet oblivion! I love sweet oblivion! I love sweet oblivion! etc..." <dFnord> Does anyone have him on their ICQ list? <Khawk> there :-) <f||lter> lol <Blah> Hiya chris <Khawk> moderation back on <kiwidog> oh wait, i'm back <f||lter> wb <kiwidog> it worked this time <Khawk> heheh <Khawk> welcome back :-) <Jered> Hullo <Blah> Should I repost my question? <Jered> kiwidog, server down? <Khawk> yeah, blah, go ahead <kiwidog> it worked this time <kiwidog> khawk: ignore the email i just sent you then :) <four> How is the 3DRealms office set up? Is it like a big studio with everyone in the same room? Do you have your own office? <kiwidog> anyway, i was saying something to blah but i can't remember <Blah> Chris, I was just wondering, how protective are you of the source code you're writing in loony games? I've been using your style in a game I'm writing right now, but since I'm kind of using your code as a guide <Khawk> heheh, ok <Blah> some of my subsystems are looking a lot like yours, like the input system for exmaple...cuz I can't think of any way to improve it... <Blah> Do you know what I mean? <TANSTAAFL> "AssHead?" <kiwidog> blah: i had typed out a long answer to this, but i lost it when i got dropped.... so i'll just give the short answer, which is "fine by me if you have a conscience". You know what I mean. <four> Ass around head - he was gay. <four> that's gross :) <kiwidog> four: we have offices with several people in each office. I share my office with Nick. <Blah> hehe, okay thanks <Blah> that's all I had to ask <four> Oh okay. That's it then. <CapCaverna> Do u think that is hard to one person make a game like Duke3D or Doom? That person would be an drawer, music composer, designer and good programmer ? <f||lter> yeah <kiwidog> blah: basically you know those people out there who are generally referred to just as "rippers"; those are the kind of people i try to keep the COTC code from. Everybody else is fine though, since I assume that in exchange for what I give out, I'll get knowledge back from others in return. The free trade of information, so to speak. <kiwidog> cap: I think it's impossible for one person to do, these days. Unless you have a decade to burn. <CapCaverna> hehe <dFnord> Matt, you don't have any questions? ;) <CapCaverna> What sector r u in ? <kiwidog> actually, could i take a quick recess? I really need a smoke <Khawk> alright <Khawk> we can do that <TANSTAAFL> YES! <TANSTAAFL> HE SMOKES! <Khawk> heh..tan <Jered> kiwidog, okay, but the lunch lady is gonna be watching... <dFnord> YEAH, COOL! TWO SELF-DESTRUCTIVE FOOLS! <dFnord> Just kidding. <kiwidog> hehehe :) <kiwidog> back in a few <Khawk> alright, I declare a recess until kiwidog gets back <Khawk> cap: are you done? or do you have more questions to ask? <TANSTAAFL> s <TANSTAAFL> m <TANSTAAFL> o <TANSTAAFL> k <TANSTAAFL> e <dFnord> is bad, mmmkay? <CapCaverna> Where can I get some more informations about his documents ? <Khawk> www.loonygames.com <CapCaverna> good ... <TANSTAAFL> www.sluggy.com <Jered> TANSTAAFL, so does fnord fall under your definition of an evil non-smoker? ;) <CapCaverna> Yes, He don't ask my question... <CapCaverna> Yes, He don't askesx my question... <TANSTAAFL> well, he's a non-smoker, and he is evil. therefore, he is an evil non-smoker <TANSTAAFL> luckily, he is not an anti-smoking nazi <TANSTAAFL> (and NOW for the half-time show....) <Khawk> ok <Khawk> ok, until he gets back, i'm going to unmoderate <f||lter> yaaaa <Khawk> f||lter and lurker will be the next two to be +'d <Batman> I'll kick all of your freakin butts all over this place with my Bat boot! <Jered> Okay. Everyone, get more food, fart, urinate, obtain caffeine, and be back in 3 min <Blah> I already did that <[Mithrandir]> still moderated?> <Khawk> and after those two, i have nobody in the list <Jered> Four, you are a sick kid. <[Mithrandir]> cool <lurker> Ok, first one done type "I"-it's a race <Batman> I'll just get one of these Batsoda's from my Batbelt. <f||lter> get more urinate? <f||lter> I <Blah> no, the "get more" was only for food <f||lter> oops, forgot to fart <f||lter> ok, I <Khawk> I do want to take the opportunity to thank everyone for coming out and being patient with us. This was kind of just thrown together at the last moment <f||lter> np <Khawk> in fact, yesterday :-) <f||lter> i'd like to take this opportunity to ask if anyone knows a way i can manually deconstruct an object? <dFnord> The same one, in fact. <Blah> delete it, f||lter? <[Mithrandir]> god damnit <[Mithrandir]> I hate bitmaps <dFnord> delete it? <TANSTAAFL> bitmaps are cool <f||lter> can i use delete? <dFnord> Duh. ;) <TANSTAAFL> 32 bit boundaries, remember... <f||lter> i just want to run the deconstructor <f||lter> hehe <[Mithrandir]> fuck you, bitmaps are from hell <Blah> Mithrandir, you can still have my source code for loading bitmaps if you want it <f||lter> my brain hurts............... <lurker> You too? <f||lter> ClassBob bob; <f||lter> delete bob; <f||lter> ? <dFnord> No.. <[Mithrandir]> TAN: 32 bit boundaries? is that related to bitmaps? <dFnord> You have to create it using new. <TANSTAAFL> yes <bstach> 28f||lter, if the object is allocated on the stack you can control the life time by using brackets to create a new stack frame <f||lter> that's what i thought <TANSTAAFL> the rows are aligned on 32 bit boundaries <[Mithrandir]> what does that mean? <dFnord> And when you delete it, the desctructor will be called... naturally. <dFnord> bstach... true. <f||lter> yeah <Batman> Uh, Sorry about that. I had to go to the little bat's room. <TANSTAAFL> so, if you have a 70 pixel wide bitmap in 24 bit color, the row takes up 210 bytes <Blah> ClassBob *bob = new ClassBob; delete ClassBob; <dFnord> Just surround the "life-time" with { and }. <TANSTAAFL> BUT, the row is 212 bytes wide <TANSTAAFL> extra 2 bytes at the end of the row <[Mithrandir]> oh geez <Jered> Je suis returne <[Mithrandir]> I really hate WGPFD <f||lter> ClassBob *bob; <four> What's that? <f||lter> bob = new ClassBob; <f||lter> delete bob; <f||lter> right <f||lter> ? <bstach> I use that a lot with DCs since you don't want them tied up long <dFnord> Yes. <[Mithrandir]> WGPFD = Windows game programming for dummies, its a book <dFnord> Then be sure to use the indirection operator. <[Mithrandir]> and half of his routines are buggy/ineficient <four> :) I'd be insulted to by a dummies book. <f||lter> ? <dFnord> Not the reference operator. <dFnord> obj->func <dFnord> not <Batman> You would you little fruitcake. <dFnord> obj.func <f||lter> -> <[Mithrandir]> plus he uses retarded 16 bit color code tghroguhtout the book <f||lter> yeah, ok, i know <Blah> while ( deadHorse ) { beat(); } <f||lter> just making sure <BRiNGER> Yeah, it's by the guy who wrote "Teach Yourself Game Programming in 21 Days," isn't it? <lurker> !! Retarded? <[Mithrandir]> Andre Lamothe <[Mithrandir]> hes an idiot <f||lter> lol......teach yourself game programming in 21 days? <[Mithrandir]> his code pisses me off <f||lter> [Mithrandir]: no, he's a dummy <f||lter> lol <lurker> He's actually a programming genius <four> Windows game programming by a dummy :) <BRiNGER> I don't like buying books unless the author has done something of note. <Jered> LaMothe? <CapCaverna> So, what's the book ? <BRiNGER> And LaMothe seems to write books rather than do interesting things, so... <Jered> He's a genius, but then again, a lot of people are. <lurker> Which means the book will most likely be over complicated and filled with high leveled code that no one will understand <four> No! I'd say maybe a wantabe money making genius. <Jered> His code is functional, not genius. <[Mithrandir]> nowhere in the book does he even mention the ddpfPixelFormat class <f||lter> ummmm ok....i guess that's possible. here, i can also teach you how to become a master carpenter in 21 days, a plumber in 21 days, and a prostitute in 10 min. <dFnord> There is no such thing as genius code. <bstach> Actualy his book Black art of 3d game programming is not bad to get some one started <f||lter> genius? lol <dFnord> You know that, Jered. <TANSTAAFL> LaMothe writes teaser books. <f||lter> i'm a genius.... <TANSTAAFL> he gives you just enough to almost get started. <f||lter> i can put a spoon on my nose and hold it there <Jered> dFnord, actually, there IS such a thing as genius code. <f||lter> that's talent <BRiNGER> bstach: Yeah, I've read through that, it's not bad, but it doesn't cover much. <Jered> But you can never quite get there. <Jered> You can only approach it. <f||lter> genius code? explain <dFnord> Oh, come on. <[Mithrandir]> well all his examples eitehr dont compile or or stoopid because he assumes my video card uses 555 16-bit mode <TANSTAAFL> i read wgpfd, got the basics of directx, then went from there using the help file <dFnord> There is such as thing as optimized to point of no futher possible optimization. <four> The problem I have with his books, is all of the projects are so damned lame, I never wanted to make them, just learn about the functions. <lurker> Inside DirectX-now there's a good beginner's book <f||lter> dFnord: how is that possible <Blah> Mithrandir, the code I wrote doesn't assume anything about 16-bit...you could have 655 or 556 and it would still work <Jered> No...that's not genius, that's speed. Genius is elegance. <TANSTAAFL> but, there aint no such thing as the fastest code <f||lter> dFnord: routines can always be reorganized so they are more efficient <dFnord> Oh... you mean the actual code? I get it. <[Mithrandir]> yeah, I wrote a 16 bit plotting mode that works flawlessly now <dFnord> I agree. <lurker> Genius is the ability to shape, mold, and present your ideas in such a way that people will gawk at your masterpiece for hours on end <dFnord> filter... think about it. <f||lter> dFnord: you can actually redesign the way the application works. nothing there is set in stone <dFnord> The machine has limits. <TANSTAAFL> i use DCs to load bitmaps onto DX surfaces <Batman> Hey DINK, does that stand for anything? <[Mithrandir]> DC's? <lurker> Genius is not just code, but creative ideas <f||lter> dFnord: but the design doesn't. i don't think so <Jered> So do I. <TANSTAAFL> Device Contexts <TANSTAAFL> WIN32 GDI stuff <[Mithrandir]> er... what the hell is that? <Da_Slayer> yeah I agree with the idea of there is no such thing as the fastest code. As computer progress and hardware and architecture change new ways will become apparant of doing things faster <[Mithrandir]> ack <f||lter> ummm DC that rings a bell.. <[Mithrandir]> GDI is evil * Lurker shudders <TANSTAAFL> take a look in the VC++ help file under PutPixel() <TANSTAAFL> ah, but using GDI, it doesnt matter what the bit depth of the surface is... <lurker> Well? How long does it take to chug a cigarette?! <lurker> Get back to the keyboard! <f||lter> there is always a faster way. <TANSTAAFL> no shit, right? <Khawk> right, tan :-) <f||lter> i think he's smokin a whole pack <Da_Slayer> I actually think the directX help that came with VC++ was helpful <lurker> Oh, that'll explain it <Jered> Hey, dudes, give him a break. <Khawk> after all that typing, probably :-) <Jered> It was really most super spiffy of him to do this. <f||lter> i didn't install mine, and my best friend is borrowing the stupid cd to try it out <Khawk> MOST SUPER SPIFFY <Da_Slayer> also I recommend everyone get a copy MSDN development library. I find it has helpful refrences and charts <lurker> Yeah, many professionals look down on us <Khawk> he's probably the 1% of the people in the industry that would do this <bstach> How do we get into the queue to ask questions? <lurker> But we'll show them, right? <four> Whow wait a minute. When exactly did we arive in the 60s? <Khawk> msg me <Blah> I agree with Da_Slayer, I use MSDN too <Khawk> bstach... <Jered> Lurker, ever read Shimomura's writeup on the Mitnick attack? <f||lter> anyway <lurker> We'll beat them in their own game, when the time comes... <TANSTAAFL> uh huh <lurker> Huh? <f||lter> the 60s never ended man....it's a government conspiracy man...don't you get it? <f||lter> they're turning back the clocks! <Khawk> in fact, just tell me right now in the channel and i can take requests <f||lter> =-) <lurker> Is this something about Samurais and katanas and stuff? <dFnord> Everytime you press F1, you're using MSDN. <Jered> Lurker, no. <Jered> Security. <four> Whow that's heavy dude. <lurker> Oh <lurker> OHHH!!!! <lurker> That! <f||lter> lol....everyone press alt+f4 really really fast....on 3...... <f||lter> 1.... <f||lter> 2.... <f||lter> 3! <CapCaverna> oerias <CapCaverna> oreias <lurker> The Chinese dude who caught Mitnick after he attempted to infringe on his computer! <[Mithrandir]> well <four> see ya :) <lurker> I saw it, never read it * Khawk notes that there is now $ people in the list. <Khawk> damnit.. <Khawk> didn't work <Blah> $? <f||lter> hehe <Jered> Yes. The sort of elegance that was applied in the attack is effectively what "genius code" encompasses. * Khawk notes that there is now 3 people in the list. <f||lter> identifier problems? <Khawk> there <[Mithrandir]> I don't like GDI, I like having total control over the screen mode <[Mithrandir]> thats why i hate windows <Jered> Here, try http://outland.cyberwar.com/~matrix/data/shimomur.txt <lurker> I think that guy was smoking extra concentrated crack or something. I would have given up <f||lter> windows sucks <BRiNGER> f||lter: tty4 isn't *that* interesting <Jered> Lurker, catching him was easy. <f||lter> tty4? <lurker> Only a true nerd would do such a thing <lurker> It was? <TANSTAAFL> i only use GDI to get the bitmap from the file onto a surface... after that, it's all DDraw stuff <Jered> The attack (successful, AMOF) was the hard part. <Da_Slayer> hey what did the big CHEESE from 3drealms have to say? <Khawk> he's still here slayer <TANSTAAFL> it allows me to use 16 bit color without having to deal with ddpfs <Khawk> and you'll probably see in a few days <lurker> Attack, you mean, blowing down the door with a 12 gauge and shooting the fatso near the computer in the head? <Khawk> we're just having a recess <TANSTAAFL> he's SMOKING <Da_Slayer> hmm bad habit <Da_Slayer> good byeproducts though <lurker> Yes, but what? Cigarette, crack, marijuana...the good stuff * Khawk wants all people who have logged the chat from the beginning to press 1 <f||lter4_20> dammit, i just can't win <f||lter4_20> tty4? what does that mean? * Lurker looks back at his addiction days with nosalgia <f||lter4_20> 1 <TANSTAAFL> i'd bet he smokes marlboror <Da_Slayer> He is not smoking in the sense we are thinking <CapCaverna> 1 * f||lter4_20 log was interrupted twice by being disconnected <Jered> Lurker, no, predicting the behavior of the sequence number generator, flooding the rlogin port, exploiting the trust relationship to get a shell... <Blah> 1? <f||lter4_20> he's smoking weed <lurker> 1 <Khawk> f||lter are you planning on staying until the end? <Da_Slayer> 1 <Jered> THEN knowing what to do (the classic rhosts exploit) <Blah> oh wait no I got disconnected, nevermind <lurker> Uh, okay... <Khawk> i seem to have a little problem with my logging <f||lter4_20> Khawk: i wasn't sure how much longer it was going on <lurker> I think he's pretty smart them <lurker> then <Khawk> me either actually <BRiNGER> f||lter: tty4 is what I get with alt-f4, and it's not very entertaining. <f||lter4_20> Khawk: plus i was disconnected twice. i know mithrandir has it logged <Khawk> it's all up to chris <[Mithrandir]> another question... <Khawk> ok <Blah> TAN, you said you use the GDI....but do you still use your own functions to read in the actual bitmap? <dFnord> Ok, let's moderate this room again. I can't handle this. :) <f||lter4_20> hmmm that sux <Jered> Then installing a hand-written KERNEL MODULE just to make it more personal. <Khawk> mith: you have it logged since the beginning? * f||lter4_20 calls voice <[Mithrandir]> Why the hell are bitmap files inverted? <TANSTAAFL> blah: yes, i open the file myself, then use GDI to plot the pixels. <lurker> But I think genius presents itself in a more innate function-such as the arts <Jered> All without him noticing, until he was...uhm...there was a voice from the heavens? <TANSTAAFL> not all BMPs are inverted <lurker> The stuff he knew were all learned <Blah> How so? I tried using the CreateDIBitmap function, and I couldn't get it to work <f||lter4_20> what exactly is genius? <Khawk> alright, we probably should moderate soon <Jered> *That* is elegance. <Da_Slayer> Hey I have to give mad props to 3drealms. I was looking at job openings and even though they do not have any openings I found that 3drealms gives their employees the best. <[Mithrandir]> hey guys I have a complete log so far <TANSTAAFL> i open the file using CreateFile() <Khawk> ok mith: i need you to stay in here until the end, ok? :-) <TANSTAAFL> i read in the headers and the palette(if present), then the data from the BMP <lurker> Genius is undefined <Khawk> mith: i had a little problem with my logging <[Mithrandir]> ok <Blah> ...k, taking notes... <lurker> There is no word to describe it since it is malleable <f||lter4_20> hmmmmmm.... <TANSTAAFL> there is a lot about the BMP file header information in VC++ help <lurker> But genius is definitely innate <Blah> I can read in the BMP header and stuff alright <Khawk> mith: after the chat, could you send it to me via icq? <Blah> Its getting the data to the surface using the GDI that boggles my mind <[Mithrandir]> i just want to know what the crackheads were thinking when they made BMP files inverted... <[Mithrandir]> sure khawk <Khawk> alright, thanks <TANSTAAFL> blah: are you reading in 24 bit or 8 bit, or both? <lurker> Dali-the Persistence of Time...now that's genius <Blah> 24 bit <[Mithrandir]> is there any reason for it? <CapCaverna> who used Allegro lib? <dFnord> Inverted? <Khawk> we're probably going to put up a transcript of the chat <lurker> Wait, was it the Persistence of Time or the Persistence of Memory? <Khawk> in a few days or so <TANSTAAFL> after the headers, there is the pixel information, which is aligned by row on 32 bit boundaries <Da_Slayer> no what I think is really gay is the method by which you used to have to create a DX video surface and then create a temp one to extract a newer version one convert and then trash the temp <lurker> Go figure <four> There's a reason... <Jered> Lurker, memory <Da_Slayer> that is real crack smoking <f||lter> lol <Jered> And it was damned wierd modern impressionism [ Editor's note: Jered means surrealism here. =] [ Jered's note: No, Jered means impressionism. Surrealism, rising out of Dadaism, was a movement related largely to the perceptions of the sub-concious mind. Dali's Persistence of Memory depicted the artist's own impressions of concepts from relativity theory, not abstract ideas. Although in one sense the word refers to the movement of definition in the absence of elaboration, I often apply it also to concept. ] * Lurker bows down to Jered once again <dFnord> You you that Chris is reading all this. <dFnord> That bastard. ;) <CapCaverna> where is the guy ? <f||lter> anyway guys <four> Microsoft is saying "look here. we can write the absolute largest piece of crap APIs anyones ever came up with, and still maintain the largest market share". <Blah> TAN, then what? <f||lter> he knows that we're just kidding anyway <lurker> Chugging away at those cigs again <Blah> lol four <f||lter> I HATE microsoft <Da_Slayer> well if u had 96 billion dollars you could do what u wanted to <[Mithrandir]> rage against the machine * f||lter may or may not have 96 billion dollars, he's not telling <[Mithrandir]> microsoft is the machine <Spider> all genius is, is a comparison to the average. IQ is the same. if you're different from people, you're weird or a genius. it all comes down to a conformist mentality. <Jered> http://www.deryni.com/dali2/persis.html <four> Oh yeah. I know I could. But I wouldn't want to make shit. <Da_Slayer> I wish Redmond washington was vaporized except for the section of it that houses Nintendo. They ROCK!!! <lurker> Hey, you guys heard about those two college guys from Princeton who discovered a flaw in Mircrosoft's video testimony? They're being bribed with high paying jobs now from Microsoft. <[Mithrandir]> lol * kiwidog is back -> whee <[Mithrandir]> I hope you're not serious <f||lter> LOL <Khawk> alright <Khawk> moderation is the key :-) <Blah> TAN: thanks for the file <f||lter> seriously? * Da_Slayer slaps Da_Slayer around a bit with a large trout <lurker> OK, ME FIRST <Jered> My mother is not highly intelligent, but I consider her a genius in the social respect. Genius is not a quantative measure of intelligence, but a qualative measure of humanity. <TANSTAAFL> IQ is important only when communication is occuring. the point spread is important because a larger point spread means that communication will be less effective. <kiwidog> sorry bout that, tom was having a smoke too and we started talking about some stuff <f||lter> thnx <TANSTAAFL> what brand do you smoke, chris? <Khawk> no prob chris <lurker> Genius is a measure of ability and persistence. When Van Goh started out in his 20's he sucked bad <f||lter> and one more time..... <kiwidog> tan: sampoerna classics <lurker> Oh, my turn <lurker> So Chris, what's your opinion on the debate between 3D vs. Isometric vs. 2D? It seems the gaming community and developers are continually striving for bigger and better 3D engines, to the point of alienating people who have just bought a computer a year ago by making the requirements so steep that it renders it inferior? Many reviewers dismiss 3D games that are sub par on the graphical side with a sneer, thus forcing developers to a <TANSTAAFL> YES <f||lter> what brand do u smoke? (this is not my question) <Khawk> damnit tan, read the shrine :-) <dFnord> Moderate, God damn it. <dFnord> ;) <Khawk> i did df <TANSTAAFL> cloves rule <Khawk> :-) <Khawk> i can't moderate us ops though :-) <f||lter> Chris, I want to begin programming a 3d game i have been designing for some time. I was wondering if you could point me in the direction i need to go. <f||lter> ? <lurker> engines, thereby feeding this frenzy until some day technology won't be able to catch up <lurker> Is the choice for 3D a must or does engine selection largely depend on what is good for the game and not for all that hype <lurker> ? <TANSTAAFL> all games should be isometric <lurker> I agree with Tan <kiwidog> lurker: reviewers may dismiss technologically "inferior" games sometimes, but only if the game doesn't have much else going for it. If the game is good enough, and fun enough, the public nor the reviewers will care about the technology. Worms 2 for example... or hell, any modern RTS game. Starcraft's sold millions, and it's not 3D. The tech doesn't matter if the game is good, although good tech can make a good game better <lurker> Thanks for your time, that's all I wanted to know <Khawk> ok, thanks lurker <bstach> I have heard that 3Drealms has a philosophy of "It will be done when it is done" how does that relate to the development team and deadlines. The team I work with is trying to avoid concrete deadlines to promote creativity. (and to keep developers going postal) Is that similar to what your team does and if so do you see an advantage to it? <f||lter> Chris, I want to begin programming a 3d game i have been designing for some time. I was wondering if you could point me in the direction i need to go? anything would be useful, books, programs, etc...? <kiwidog> filter: there's no one direction, unfortunately. The best thing to do in my opinion is to pick up a number of books, read online info as you see it, and start working. If you find during the creation of your game that there's a topic you think you need more info about, seek out that info, because it's there. Basically, if you want to write a game, start writing it; what you need along the way will fall into place <f||lter> ok thanks <f||lter> any books covering directx you would recommend? i'm having trouble finding something to learn direct3d <dFnord> bstach, you may wish to keep your developers FROM going postal. ;) * Jered plugs his search cgi <bstach> LOL <f||lter> lol <Jered> ;) <kiwidog> bstach: there's a definite advantage, although even if you don't have actually "dead"lines (which most development houses do without any choice, due to publisher demands), you should still have internal goal times to get stages of a project completed, and they shouldn't be too relaxed. DNF may be "when it's done", but that doesn't mean i don't bust my ass :) <Jered> http://www.sweetoblivion.com/cgi-bin/search/search.cgi?terms=Direct3D <Khawk> busting ass :-) <dFnord> Jered, you actually wrote this? <bstach> Thanks kiwidog <kiwidog> filter: directx books are pretty lacking in general. To be honest I've gotten more life out of the directx documentation and their lame samples than most of the directx books i've seen <dFnord> Way to re-invent the wheel. <dFnord> ;) <f||lter> thnx * Khawk would like everyone who chats to let him know when they are done speaking from now on. <Jered> (badly at that..I need to rewrite it to do real boolean stuff) <TANSTAAFL> dont forget the ever-necessary NXOR operator.... <f||lter> well, the sdk is almost finished downloading, and i need to get some sleep so, thanks for everything. Thanks Chris, and i'll talk to you guys tomorrow <Khawk> alright f||lter <dFnord> Lada. * Jered contemplates the results of the query Direct3D NXOR Microsoft <CapCaverna> And about MEMORY MANAGEMENT ? Are u use something like gabage collect ? What your company do about this ? <dFnord> C++ and garbage collection! BWAHAHAHA! <dFnord> :) <kiwidog> it'd be kinda funny if "floating point unsigned exclusive-or" actually were a real logical operation. That'd be an interesting assembler mnemonic. <Jered> Heh heh.\ <kiwidog> cap: that depends on the program; the engine we're using now (unreal) garbage collects, but in my own code I try to avoid garbage collection when possible. <kiwidog> cap: sometimes it's unavoidable if you absolutely need to insure against memory leaks, but for the most part you want to use garbage collection minimally in order to keep performance up <CapCaverna> yes <Khawk> da_slayer: you may ask your question now * Khawk notes that there is now 0 people in the list. <Da_Slayer> Chris I have been experimenting with 3d engines specifically unreal & genesis3d. I have noticed certain lighting effects that try and emulate real life but they create what I consider some disturbing effects that seem unnatural. Whats you opinion on lighting effects. <Da_Slayer> An example. <Da_Slayer> The idea is that when the light pops out of view due to motion, the corona doesn't <Da_Slayer> immediately disappear. If it does, there is a jarring discontinuity that feels strange. So <Da_Slayer> the corona is faded out over the next few frames even though the light is out of <Da_Slayer> view. <Khawk> whoah <TANSTAAFL> eek <Da_Slayer> I suppose a more accurate solution would be to model the light as a sphere rather <Da_Slayer> than a point. Then you would adjust the corona according to the percentage of the <Da_Slayer> sphere that is visible... You could use some math similar to shadow penumbra <Da_Slayer> compuations - but it's not cheap. <Da_Slayer> sorry big questoin <dFnord> eek is right. <Khawk> heh...type it out next time :-) <dFnord> Whitespace is bad, mmmkay? <Da_Slayer> I know <TANSTAAFL> . no kidding <Da_Slayer> having problems with win98 <Jered> Chris probably feels like he is giving a bluebook answer on this one. ;) <Da_Slayer> So my question in laymans terms is basically if you could would you redesign corona effects used by 3d cards such as 3dfx to create real lighting effects that are less optimized than optimized ones that don't look as real. <kiwidog> daslayer: of course the more accurate you can make the lighting calculations, the better; we all know pretty much what stuff _should_ look like, and many texts describe ways to achieve those visuals. Unfortunately those texts aren't aimed at realtime rendering. Anything that's not as realistic as possible is usually done to cut performance costs, such as in the case of point lighting for coronas. You just have to balance what an effect is worth to y <dFnord> "layman" * Khawk wants to remind everyone to notify him when they are done speaking. <CapCaverna> Is there the most of your game sources in C or C++? <kiwidog> daslayer: those corona effects aren't used by 3d cards, they're done by the engine. They're just modulated textures <kiwidog> cap: I use C++ but sticking with C-style interfaces as much as possible, using C++ only where the benefits are too great to ignore. For example, I will never write another 3D program with standard C, because C++'s operator overloading is a godsend for 3D programming. <Da_Slayer> Yeah but you would assume that a 3d card would enable more flexability to change current effects. I mean 3d cards made effects not considered realtime possible. Now with stuff like RivaTNT 100 & voodoo^3 3500 it would allow the speed needed to turn non-reatime effects into reality <Da_Slayer> a type of unreal reality <dFnord> And exceptions... Can't live without exceptions. ;) <CapCaverna> What do u think about new and delete operators in C++, is good enougth to freeing memory ? <kiwidog> daslayer: the cards make more effects possible yes, but the effect itself is controlled by the engine. <dFnord> Kevin, why are you letting two people talk at a time? If I were Chris, I would find that overwhelming. <Khawk> he said it was ok :-) <kiwidog> cap: new and delete are nothing more than malloc and free with calls to your constructors/destructors when you have them. You can overload new and delete to enforce this, as a matter of fact, and I often do just that. <dFnord> (I mean, *besides* us... we can do whatever we want). :) <dFnord> Oh, ok... <dFnord> (And automatic casting). <Da_Slayer> Okay last 2 questions. First off do you personally believe it is good to work such a great company as 3drealms or do you prefer to work in a small group or alone? <kiwidog> I actually like the fact that C++ is more anal about its casting than C was. Catches a lot of bugs. * Khawk notes that there is now 0 people in the list. <dFnord> No, I just meant that new returns a pointer of the appropriate type. Not really cast, actually. <dFnord> a cast, that it. <dFnord> is <dFnord> Damn. <Jered> Stack. <Da_Slayer> Second I am trying to work out some multiplayer things to help with a game I am designing. I plan to use Delta compression, along with ip header compression and compressed data sending with a server client setup. I cannot seem to find any good texts on these subjects. Cloud you point me in the correct direction for network/multiplayer programming? <kiwidog> da: I consider 3drealms a pretty small group, actually. There are only two of us programming this game, and even with all the mappers and artists the team is still pretty small. So I get the best of both worlds. I wouldn't like to work in at Mega Huge Corporation (tm) though.... * Jered is writing this.... <Khawk> nice...a tm in there <kiwidog> df: new, or operator new? new returns a pointer to the type, but operator new only returns void* <dFnord> operator new <dFnord> Nevermind... <dFnord> The un-overloaded one... you know what I mean. :) <Snowman> cool <kiwidog> da: delta compression doesn't need much of a text description, because there's not much to it. If the server knows what the client has, and what the server wants to send over the same thing, it doesn't bother because the client already has it. That's all there is to delta compression; for games that covers a whole lot of bandwidth savings <dFnord> Chris, since 3dRealms is so small, do they offer any benefits? If so, what? <Da_Slayer> well my spelling stinks and I bow down to let someone else ask questions. <Jered> Slayer, a word of advice...screw IP header compression. <Khawk> alright, thanks slayer <Khawk> unless jered is going to talk to you :-) * Khawk notes that there is now 0 people in the list. <Da_Slayer> why isn't it supposed to help <dFnord> Jered, would you apply that logic to v6? <dFnord> :) <kiwidog> da: for compressed data, the best compressed data is data you don't send. For example if you have a 32-bit long on both sides for, say, somebody's health, and you know that health can never exceed 999, then there's no point in sending more than 10 bits in the packet <Jered> ;) <kiwidog> df: benefits as in the usual benefits (health and dental)? <Jered> Yes. Pack like vacation.\ <dFnord> Yeah... options... that sort of thing. <Jered> Slayer, IP header compression can hurt more than it helps. <Jered> If anything I would recommend leaning more towards source routing options, particularly in the new IP suite. <kiwidog> da: IP header compression and other gimmicks don't mean anything if you just only send over what you need to and nothing more. That's why Quake's multiplayer works so well, it's minimalistic. Automatic compression won't hold jack against a finely tuned packet. <Da_Slayer> oh yeah might as well slip question in now. My real problem now that I analyze it is how to go about programming an efficent client server system and someplace to find refernces to working with a system like that? <Snowman> I just have one quick question right now. As I understand it there are 2 points that a game does things in. (that's a bad sentence). One is right before it renders, and the other is a timer. First of all, what's a reliable way to get a function called under Windows at a specific time interval. I have heard that Window's SetTimer() and the WM_TIMER aren't good because of multitasking, and teh general idea that the OS has othe <Jered> Exactly, kiwidog. <Jered> Simple datagram-based transit. <kiwidog> df: just the usual; i get health and dental, and some other stuff that i can't talk much about <Khawk> chicks? :-) <Jered> (the NSA stuff) <Khawk> oh wait, you have a g/f :-) <Snowman> use those, and are they what I need? Also, second what is done when? What do I do based on the tics, and what do I do right before rendering? <dFnord> Something to do with an IPO? <Jered> Da_Slayer, how far off do you project your product? <Da_Slayer> Unrelated comment that will probably get me killed. I am watching Die Hard 2 and Duke3d & Bruce Willis seem like they would be an unstoppable team. <Jered> (Is that the one where the senile dude steals the robots?) <Da_Slayer> My product will be done by the end of '99 1st quarter 2000. multiplayer support is just an extra. I can say it is not the focus of our game. * Khawk wants to remind everyone to notify him when they are done speaking. <Da_Slayer> Oh I am done. I do not want to look stupid anymore. <Khawk> heh, ok <Da_Slayer> ooops :( <bstach> I am working on a project that uses a lot of small bitmaps (stored together on larger surfaces) and I have more bitmaps than will fit into video mem. I have been considering implementing a management system to move the most used bitmaps from sys mem to video mem and removing the least used bitmaps. Do you have any recommendations on how to <bstach> implement this or where to find some good info? <kiwidog> da: i haven't specifically looked for references on client/server architectures, although from my standpoint one really shouldn't need them (i know i don't have any books on the topic at least). It's just kinda intuitive... only send over what you need, pack as much as possible, support reliability and sequencing for critical packets, etc. <Jered> Da, then focus on traditional IPv4 and how to live with it. UDP with simple control measures can suffice. I will post a message regarding lag to the Sweet.Oblivion board sometime tommorrow morning. <dFnord> Jered, don't forget to reccomend WinINET. <dFnord> ;) * Jered gags and chokes on his Diet Coke <kiwidog> For example it's funny how many games have tried to get multiplayer as efficient as Quake, when the fact is 9 times out of 10 they're just trying too hard or not thinking clearly. Quake doesn't do much; it's networking layer is quite tiny. It does what it needs to and nothing more, and for networking that's a good thing. <kiwidog> khawk: what about em? <kiwidog> snow: there's no point in locking your game to a timer if the game is flexible enough to deal with arbitrary frame times <kiwidog> snow: if your game logic etc. can handle arbitrary frame durations, it can adjust at runtime to whatever framerate the machine is getting <Khawk> chris: joking about benefits :-) <Snowman> so, do everything before I render, not based on a timer? <bstach> kiwidog could you repeat. my chat client just wigged <Snowman> won't that give a different [style] game on every computer? <Khawk> bstach: he hasn't responded to your question yet <bstach> OK <kiwidog> bstach: a systemmem/videomem arrangement is necessary regardless of whether you think you'll need it or not, because you probably will. As for how to do it, that depends on how often you need to switch bitmaps, if they have priorities, etc. <Jered> Shameless plug: http://www.sweetoblivion.com/cgi-bin/search/search.cgi?terms=timing <Snowman> J: no offense, but I hate reading things online =) I prefer books <kiwidog> bstach: I'd look up how to do a memory management heap system, and emulate that kind of structure with relation to your video memory, only instead of allocating actual memory blocks, you simulate the blocks to mimic video memory. You'll probably want priorities and time stamps to determine what to cache out and what not to <Snowman> and chats <dFnord> A chat involves reading on-line. <dFnord> Your logic is riddled with ripocrascy. <dFnord> (spl?) <Snowman> yeah, but you control it and get to ask questions along the way <Khawk> mmmmk <dFnord> It <dFnord> 's mmmkay? <dFnord> oops. <kiwidog> bstach: That's the way I deal with 3D card texture memory for example; I have a "virtual heap" that doesn't allocate memory, but just offsets into a "pretend" block of memory. Such a heap is generic and could be used for a real memory system, or for video/texture memory, etc. <Snowman> in an article you don't you read it and are left with questions, or you don't get it <bstach> So a system not to different than texture caches. Do you think DX6 and its texture management could be used with straight bitmaps? <kiwidog> bstach: possibly, although I haven't clocked it to see what the performance cost of doing that would be. <dFnord> I know, Snowy. I'm kidding. <Snowman> hehv <bstach> thanks kiwidog. Khawk I am done. <Khawk> alright, thanks bstach <kiwidog> anyway guys we're coming up on two hours, i'll probably have to get back to work pretty soon... any last questions? <Jered> Chris, as far as questions go, I've only got one. <Khawk> yeah, if you have some, better msg me quick :-) <dFnord> IM NeW tO CodEZInG.. HoW Do I MaKe A BiChIn 3D GAME? <kiwidog> df: hehehehe <dFnord> :) <Khawk> chris: i msg'd you my only one :-) <Jered> You obviously had free will to say "get lost" when Sweet.Oblivion expressed interest in featuring you. <Khawk> nice df :-) <kiwidog> khawk: i missed it <Khawk> alright <Jered> What motivated you to spend hours answering amateurs' questions? <Da_Slayer> Okay here is question that makes me cringe just asking it. I was thinking about unrealscript & quakeC (gasp). Anyway how would you go about programming and implamenting a system that uses a personalized scripting language to create events and levels in the game. Some outside groups of programmers have been able to do it however these people are not forth coming on giving out tips. <Da_Slayer> A friend designed a compiler and language but he cannot help create one that can run on the file in some game. <Khawk> chris: i'll ask again after these are finished <Snowman> I thought about asking that too, but figured I wouldn't understand the answer :P <Khawk> slayer: for timesake, i'm going to have to devoice you <Da_Slayer> I know it would involve setting up the API in such a way that it can be accessed and run on the fly with overloading <Da_Slayer> ok <Khawk> uh oh. i hope not another split :-) <dFnord> Yep, looks like it. <Jered> No... <dFnord> Why? <dFnord> You think he just fell asleep or something? <dFnord> :) <Jered> A split would be characterized by like four or five people exiting at almost exactly the same time then re-entering. <kiwidog> jered: dunno, probably the same motivation that makes me write COTC. Sharing information is one of the big reasons I'm able to do what I do for a living; I wouldn't have been able to learn what I needed to do this job otherwise. I guess I'm just trying to pay the community back. <kiwidog> da: you mean how do you create a scripting language? <dFnord> Oh. <dFnord> He can't talk. <Khawk> go ahead slayer <dFnord> ... <kiwidog> da: if you want info on writing compilers, I'd suggest looking at "the dragon book", i.e. Aho et.al (i can't remember the exact title, "compiler design - principles, techniques, and tools", or something like that; I don't have mine with me) <dFnord> There's always a parser generator. <kiwidog> da: there's also a very good compiler construction book by Holub, "Compiler Design in C", published by Prentice Hall, aka. "The Big Brown Book" <Jered> More canned compiler advice: Get LCC a retargetable C Compiler - design and implementation only with a good design book. <kiwidog> jered: I have that book, although for some reason i didn't care for it that much <Da_Slayer> I mean in unreal for example do they have a minicompiler in the game that precomputes unrealscript before startup and then execute it when the game engine is running? <Da_Slayer> I think thats what the build engine did but I am not so sure <kiwidog> da: unrealscript is compiled within the editor; the pcode is stored with the class data inside the .u package the class resides in <Jered> kiwidog, the literate program thing is pretty lame, granted <kiwidog> da: the build engine didn't have much of a script; that was basically just a console language <Da_Slayer> I guess the one thing that elludes me is how do you go from some sudo-compiled scripting thats external to something running in the actual game. Is it just a modular design in which you can drop componets in and out? <dFnord> Try "Writing a milti-threaded Interpreter". Pretty good. <kiwidog> da: most game scripting languages use some form of byte pcode with a small set of instructions, often just a stack machine. You probably want to look at those compiler books I mentioned; compiler construction is a pretty large topic with several stages to it <Jered> Depending upon the magnitude of a scripting language, though, it can also be pretty simplistic... <Da_Slayer> oh yeah that other question earlier about memory management reminded me that to cover something like that you should either read the POSIX thread compliency sheet or read up on how a SUN unis machince uses p-threads to setup a multithread OS. <Jered> It's really your choice. <Jered> For the benefit of our unilingual viewers, the preceeding will now be repeated in English. <kiwidog> da: unless you only want to do a console language (which isn't really a language at all, just a set of variables and one-line commands executed on a string basis, i.e. like the quake console) then you should treat writing a script language as writing a real compiler for a virtual machine that's interpreted inside your game <Da_Slayer> Time for a non-programming question <Da_Slayer> is being a programmer cracked up to everything you thought it would be? <dFnord> Actually, I'm writing an installable virtual machine right now. I can see how it could be easily applied to games... hm... <kiwidog> da: i can't say, since i never "thought it would be" anything; i became a programmer almost by my own surprise, so i didn't have a lot of time to think about it beforehand. Although that's the best kind of career I guess, not something you look toward but something you're just "pulled" to do. I like it :) <kiwidog> anyway guys, i gotta get back to work... been good chatting with ya :) <Khawk> alright, thanks chris <Jered> Chris, thanks immensely for doing this. <Jered> We have all appreciated it; it was a pleasure to work with someone of your caliber. :) <kiwidog> no prob, it's been fun... <Khawk> e-mins-lee <Khawk> heheh <Da_Slayer> This has been very insightful and I thank you for your time <kiwidog> hey my ego is bad enough as it is, don't promote it :) <Khawk> haha <Jered> ;) <Da_Slayer> you ROCK <dFnord> Hehe. <Khawk> alright, cool <Da_Slayer> if that is not an ego boster I do not know what is <Jered> Okay...should we tear him down, folks? <Jered> STACK! <Jered> ;) <Da_Slayer> hmmm <Khawk> chris: we may be posting a transcript of this, so we'll email you when we're ready to post it <kiwidog> khawk: cool deal <Spider> kiwidog, thanks for coming, and thanks for code on the cob. <Khawk> so you can check it over.. <Da_Slayer> it might be fun <Blah> thanks for your time, chris <Snowman> no moderattion? <dFnord> Jered, are you fond of your anal tissue? <Snowman> wow <bstach> Thanks for the info <dFnord> Yuck. <Snowman> thanks kiwi <Jered> dFnord...uhm.... <Da_Slayer> I want your body!!! <Spider> good luck with DNF. we look forward to it! * Jered throws up <Da_Slayer> Man I am pre-ordering a copy <Snowman> Spider: when I comes out I'm gonna waste you in DM =) <kiwidog> no prob, i'll talk to y'all again soon. And thanks for all the support :) <Da_Slayer> Hail to the King baby!!! -duke <Khawk> alright, talk to you later chris <kiwidog> ciao folks :) <dFnord> Yeah, see ya. <Snowman> bye |