Not logged in, Join Here! or Log In Below:  
News Articles Search    

Submitted by Jeff Kiah, posted on March 07, 2002

Image Description, by Jeff Kiah

This is my first time posting on Flipcode but I wanted to get some feedback on my current project. It's a pure portal engine written in VC++, uses OpenGL for rendering and FMOD for sound support. My ultimate vision is for this to be a GAME engine and not just a PORTAL ENGINE, meaning it will be a simple yet effective way to build a complete and customized game. Since I'm just one man and I'm doing this in my spare time away from my college studies, I plan on keeping things as simple as possible without sacrificing quality. Here is a current features list.

I call it the QuickPort engine
  • Portal rendering with an OOP algorithm
  • 3d collision detection
  • Fully Dynamic Lightmapping (no static lighting)
  • Movable Sectors (elevators and such)
  • Particle system
  • 3d object support (loading of my own ".3d" format)
  • Texture blending over portals to simulate glass
  • "Sound event handler" - what I call my system of deciding which sound to play and when
  • FMOD sound support
  • Skybox
  • NO DIRECTX USED!! woohoo.
  • Here are some things that are in progress or will be in the future...
  • Sloped walls / floors / ceilings (right now the engine assumes walls perpendicular to the floor and ceiling for simplicity of level design)
  • md2 file loading & animation (there are so many great md2 models out there, and I'm not an artist, how could I NOT use this resource?)
  • Dynamic shadows WITHOUT using stencil buffer (this is very close to being done)
  • Link to a quadtree terrain engine I developed for indoor / outdoor scenes
  • Weapons / Items and other gameplay related features
  • Network support - This I will need help with, but what good is a game if you can't play with yer friends?
  • Optimization (change drawing algorithms to use triangle strips instead of single polygons, among other things)
  • Level Editor (I started this today, shouldn't take too long to get something rough but useful ready to use)
  • Well I have more visions for this thing but I don't want to bore you. My plans for the engine other than providing it to others for game building, is to build a game myself. A 3d rpg type game similar to Ultima Underworld (probably the best game I've ever played) or something along those lines. I'm not looking for another Quake / Unreal / Half Life clone, that's been done and this engine is FAR from a Quake engine, so I have to use what I think fits, but it's still capable of a shoot'm up game I suppose.

    Alright well, let me know your thoughts (I know these screens aren't much to go by). If I get enough feedback I'll definitely be posting a demo in the future when it's ready. Hey, if you're interested in getting in on this project I'm looking for 1 or 2 people, especially good artists and network programmers. Email me at cause I'm very interested in getting this project going with a small team. Probably just for fun but maybe we can put something out worthy of selling?! Long shot I know but given the right circumstances, who knows. Take care everyone.

    Image of the Day Gallery


    Message Center / Reader Comments: ( To Participate in the Discussion, Join the Community )
    Archive Notice: This thread is old and no longer active. It is here for reference purposes. This thread was created on an older version of the flipcode forums, before the site closed in 2005. Please keep that in mind as you view this thread, as many of the topics and opinions may be outdated.
    Jeff Kiah

    March 08, 2002, 11:24 AM

    Okay. I don't mean to sound rude's pretty damn obvious that compilers turn all code into linear before making an executable, so that doesn't suprise me at all. But thanks for the lesson nonetheless. I don't write with OOP for no good reason, I've had classes on it so I understand what it's all about. This is just like that whole directx thing...who cares what happens somewhere down the pipeline of turning my code into a working program if I don't have anything to do with it. I write in OOP, I don't compile the thing myself, so I don't care what it does to my code to make it work. I don't have the DirectX SDK, so how could I program with DirectX? Who cares whether somewhere down the line some random dll that I use refences Directx? That doesn't mean I USE directx. Will my program run without dx? I dunno, maybe, maybe not. I'll have to test it.


    March 08, 2002, 11:26 AM

    And for the portability issue: You are using .dll's. In case you didn't know by doing so you just blocked your passage to all but two consoles on the market (both of which are windows powered). There is a bit more to platform independence than relying on a x-platform api. Btw the last - commercial - engine I was working on *DID* use DirectX while remaining portable. So much about your OOP experience...

    Jeff Kiah

    March 08, 2002, 11:30 AM

    By the way, I'm not working on a portable engine, yet, so I don't care whether I'm using dlls at this time. And again, you're stating the obvious like you know something special, o-master-of-the-code. Get a life dude and take your ego somewhere it's appreciated.


    March 08, 2002, 11:33 AM

    Correct me, but that was ONE reason for you to go with OpenGL.

    Jeff Kiah

    March 08, 2002, 11:36 AM

    You're right, only because I know that OpenGl is designed for that purpose. I'm impressed that you were able to use Directx and be portable, I honestly don't know how you did that, but you can't deny that OpenGl makes my task easier if I ever decide to, I won't have to change a single call to the library. And to set the record straight I never dumped on directx, so I don't know why everyone is defending it like they own it or something...


    March 08, 2002, 11:36 AM

    But, the implementation could ofcourse be part of the algorithm. Since the definition of the word is extremely loose, and only states that it is a step-by-step process of solving a problem.



    March 08, 2002, 11:40 AM

    How to use DirectX while still remaining platform independent? Good use of OOP-techniques. Just using the 'class'-keyword isn't all there is to OOP. Proper abstraction however will do the job. Take a look at 'Deus Ex'. As far as I recall you could switch between OpenGL and DirectX on the fly. And it was ported to the playstation, I think.

    Jeff Kiah

    March 08, 2002, 11:46 AM

    My engine uses the 'class' keyword yes...and inheritance, and data hiding, and polymorphism...if it didn't I wouldn't say I used OOP. I could write two functions for each rasterization function, one for dx and one for opengl, but why do that? I'm just going for something simple here, and that means I use the easier API which I believe is Opengl, so that's another reason I chose it over dx.

    Jeff Kiah

    March 08, 2002, 11:48 AM

    true dat. But I'm not using NT so no worries. Plus I do use directsound drivers, just pointing out that I don't have to if it's not available.


    March 08, 2002, 11:54 AM

    I think that the point that floyd here is trying to make, and that you're missing in its entirety, is that the phrase "OOP algorithm" makes about as much sense as "apple binoculars" or "a rope full of oranges."


    Jeff Kiah

    March 08, 2002, 11:55 AM

    no...pretty much, sorry.

    Jeff Kiah

    March 08, 2002, 12:00 PM

    just look at what I posted on the parent thread. still think I missed the point? and then look at what was posted next. there is some truth in the fact that using OOP has made my algorithm different than it would have been if I didn't. So is it so wrong to say that OOP is part of my algorithm? I don't think so.


    March 08, 2002, 12:05 PM

    well, you have no idea what DXM is or why we have that page looking like it does. You should have checked the release page before you opened your mouth, and i can take critics but you can not.



    March 08, 2002, 12:06 PM

    That's exactly what I meant -- using OOP techniques doesn't necessarily ensure that you're getting nice and clean code. It is the way you use them that makes the difference. I didn't mean to attack you as a person, but rather tried to put your statements into the right perspective. The rasterization API you're using doesn't make your engine any more or less portable. It is the way your engine is DESIGNED that governs portability issues. I'm not suggesting to write 2 rasterization functions. My point is to use abstraction in a manner, that the engine doesn't even know what rasterization API is being used, or what API is used for input- or sound-processing.
    Bottom line: It's not the actual API you're using that makes anything more portable. It's a question of design. Obviously I don't care too much about OpenGL as it is inferior to DirectX in our day and age. With all those GeForce's out there you basically don't have a choice whether to use DirectX or not.
    P.S.: Take a look at DX8 and decide again if OpenGL is easier.


    March 08, 2002, 12:22 PM

    Forgive me, but yes, it's about as wrong as it can get. Object oriented programming is a set of rules applied when implementing -- no matter what you do in your code the algorithm itself remains unchanged. An algorithm is like a cooking recipe -- just because I store onions and garlic in the same place since they belong to the same class doesn't at all change the recipe. Like you said, it's a cheesy term...

    Jeff Kiah

    March 08, 2002, 12:26 PM

    Using abstraction is a great way of doing it, thanks. As I understand it you're saying I should basically just be "taking the API out of the engine," right? But if I only use OpenGL in my engine it'll already have that portability "built in." I think by doing what you suggested I'd have an overall better engine no doubt, but I'd be complicating things for myself too much, you know?
    I guess my whole point is, I'm not writing for cross-platform, or a commercial product, I'm doing it for myself and the fun of it. I'm writing it in OpenGL because I know it better than DX, and I haven't looked at DX8 yet, but I do hear it's nicer than prev versions. Right now I don't have a lot of extra time, and the time I do have I want to spend on the game. In particular I want to spend my time on non rasterization and sound areas, such as gameplay issues and the looming need for AI and pathfinding, stuff that has nothing to do with an API.

    Seb. Wagner

    March 08, 2002, 12:29 PM

    It doesn't help to take critic when constantly being called sucker.

    Jeff Kiah

    March 08, 2002, 12:30 PM

    You're wrong floyd, no doubt about it, and others would agree with me. I've personally written three portal engines. Now YOU would call a portal engine technique an algorithm. Well I wrote one with recursion, one using no recursion at all, and another that combined elements of the two. Was my algorithm different for each of these "portal" engines? You bet, and OOP played a major part in that.


    March 08, 2002, 12:31 PM

    Easy there, you are confusing two things there, namely "Free Software" and "Open Source". Free (as in beer AND speech) software is NOT the same as open source software, which doesn't need to be free (as in beer). Bashing both movements seems inappropriate.
    Furthermore you're painting with a pretty broad brush calling Open Source contributors "hobbyists". May I enlighten you with a few examples?

    - Linux
    - Apache
    - GCC
    - XFree86
    - KDE
    - GNOME
    - Mozilla
    - Emacs

    Are those hobbyist projects? I don't think so. There are even people who get *gasp* PAID to work on Open Source software. What's your definition of "professional" programmer? Somebody sitting
    in a cubicle at Oracle? Some small contractor? Or generally everybody who gets paid for doing this?
    In that case I suggest taking a look at RedHat, VA or IBM.


    March 08, 2002, 12:33 PM

    No, there's no truth in that fact, and you are still missing the point. Stop being so defensive and try to figure out what you're being told here.


    Matt da Monkey

    March 08, 2002, 12:34 PM

    Uh... I've been reading this, and I've a question:

    Is sucker your signature? it's some kind of special key you have on your keyboard and you press by mistake all the times?...

    Even if you were the very same John Carmack man... you can't just go insulting people that easily... that is indeed pure arrogance



    P.D.: if you plan to reply, I prefer wanker to sucker, mostly because AFAIK, monkeys don't do the last dirty thing... anyway it's up to you.


    March 08, 2002, 12:36 PM

    Btw the last - commercial - engine I was working on *DID* use DirectX while remaining portable.

    Truly portable or just in theory? It would have taken a pretty big effort FWIW.

    btw: Ich vermisse unsere alten Diskussionsrunden ;-)

    Matt da Monkey

    March 08, 2002, 12:40 PM

    That's a universal true, even a dumb monkey can apreciate that...

    Jeff Kiah

    March 08, 2002, 12:41 PM

    You know what's funny, is that your signature pretty much says it all. Well, what you think is not neccesarily right, so if you think you have some devine understanding of algorithms then write a book and it'll sell a million copies, or lets see your engine. In other words, put your money where your mouth is. Peace guys I'm outa here.


    March 08, 2002, 12:42 PM

    Cheers entrox :) (du hast doch meine nummer, ruf mal an... und wieso hast du dein handy nicht mehr?!?)

    Back to the point -- only minor effort involved. But that's the price you have to pay if you want to high performance.


    March 08, 2002, 12:54 PM

    you're way too young to be up that late anyway ;)


    March 08, 2002, 01:11 PM

    My engine? What is this, a pissing contest? Why don't you just play the last AAA title I worked on? Or the one before that?

    You're being explained, rather politely at that, the specifics behind a fundamental concept that you do not seem to have a basic grasp on. Let me break this down for you.

    A. Programming languages are a means to translate an abstract algorithm into machine readable form.
    B. Any valid algorithm (whether correct or not) can be implemented in any (general purpose) programming language.

    B stems from A: algorithms are not language specific. It stems from B that algorithms are a higher form of abstraction than their corresponding implementations in a given language (for obvious reasons - the algorithm encompasses all possible implementations thereof, therefore providing a further layer of abstraction).
    OOP, being a programming concept, is further down the abstraction chain.

    You could draw an analogy between the category of algorithms in general with an abstract category like "merchandise," for instance, whereas programming languages would be, say, "clothing items," and paradigms such as OOP/GP/etc would be, say, "shoes." Shoes are clothing items, items of clothing are merchandise. The expression that you used, "OOP algorithm," would correspond to "high heel merchandise."

    Quad erat demonstrandum. Mmkay?



    Hiro Protagonist

    March 08, 2002, 01:24 PM

    "Best viewed in Lynx on a monochrome green VT100 terminal."

    I doubt you are doing this.


    March 08, 2002, 01:34 PM


    Jeff Kiah

    March 08, 2002, 01:54 PM

    Wassup again,

    I'm not sure where all these unfounded attacks on my education and my understanding of one of the most simple concepts in programming, algorithms, is coming from. Neither you nor floyd know me, my level of education, nothing. You haven't seen my code so you don't know what level of programmer I am either. You're making assumptions, and assumption is the mother of all fuckups.
    Okay, let me lay it out here, this goes for you and floyd, because you two seem to think that you're guru programmers (I'm not saying you aren't, but you seem to think so). The concept of algorithms is not, I repeat not, a hard concept to understand. Captain obvious here explained to me that a basic algorithm can be applied to computer science through any language, and any technique or tool avaible associated with that language. Okay so now that we're settled on the fact that I know what the hell algorithm means, lets discuss the real issue here and what really needs to be done.
    The way I see it, you and floyd have something in common, and that's why you're defending each other. You are both closed minded. You always assume that whatever you think or know is right, and everything else is wrong. Being closed minded is one of the worst crimes you can commit against yourself. You're limiting your own education and the extent to which understand the world around you. If you were open minded, if, you would realize that the term algorithm is an arbitrary word open to interpretation. The definition of algorithm taken word for word from The American Heritage Dictionary is as follows: a rule or procedure for solving a problem. That's it. Now let me apply this to my situation. My PROCEDURE for solving my PROBLEM of rendering a 3d world, assumes that I use OOP, which I do. Using that assumption, my ALGORITHM in its basic design follows the rules and structure of the OOP concept. OOP IS an inherent part of my algorithm and getting rid of it WILL change my algorithm from the ground up.
    If you think this is total bullshit that's fine, you're closed to the idea anyway. But lets look at this from a practical situation here, obviously I know how to create and apply a basic algorithm or I wouldn't have a working engine. We can sit here and match wits all day, but lets just accept the fact that my interpretation of the word algorithm is less stringent than yours, and that you are no more right in your interpretation than I am in mine. What you think you know about computer science has only been taught to you by another person who thought the same, period. It's the people who think outside the little mainstream "box" that really make things happen in this feild. Notice how almost EVERYONE has at one time or another applied an algorithm that Carmack came up with? Well it's for a reason, he innovates, they immitate. This post may seem defensive in nature but I assure you it's not, it takes more than a couple of guys with ego's to insult me...what I'm trying to do here is make everyone see that it doesn't MATTER how you think as long as you get things done. Unfortunately it looks like on this site of you think differently and you'll be ridiculed.

    This thread contains 110 messages.
    First Previous ( To view more messages, select a page: 0 1 2 3 ... out of 3) Next Last
    Hosting by Solid Eight Studios, maker of PhotoTangler Collage Maker.