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.

    March 08, 2002, 01:58 PM

    ... And everyone thinks everyone else's stinks!

    Ron Frazier

    March 08, 2002, 02:02 PM

    This is a pretty sad IOTD. The guy writes something decent, explains it using a maybe-not-quite-technically-accurate phrase (OOP algorithm) , and 49.5% of the discussion ends up around why this phrase is/isnt correct. He makes another statement about not using DirectX, and 49.5% of the discussion focuses on why this is/isnt true, etc. Seems like only 1% of the discussion has actually been about his IOTD.

    Nice looking Jeff. I have a question about your implementation. You called this a "pure portal engine". What do you mean by that. Do you mean you mean its not combined with any other type of visibility scheme (like BSP or octree)? Or do you mean you are doing a zero overdraw algorithm (I dont think thats the case, but if so I have some followup questions)?

    Wim Libaers

    March 08, 2002, 02:03 PM

    Right. But open source doesn't mean that you have to look at the source, just that you can do it if you want/need to. Most people never do it. But if you need to write a program and there's an opensource program that already does 90% of what you want, it may be interesting to consider it.

    Hiro Protagonist

    March 08, 2002, 02:04 PM

    Nice pictures, unfortunately without a binary I cannot appreciate them for what they are, since it is the portal design that I would appreciate. I tried to d/l them from the ftp site, but didnt have authorization.

    I know its been said a bazillion times before, the purpose of the IOTD is to educate and share. At least this is what I believe its purpose to be. If you post something and are in doubt that it does either of these things, educate or share, than perhaps it is not meant for this forum. By share I don't mean share your opinion about X or Y APIs, I mean share your image and your opinion about that image. It shouldn't matter if the image was made with DX or OGL or Glide or GDI or some homebrewed remedy. It shouldnt matter if it was coded in VB, C Java or ASM. It is certain that some techniques are more complicated than others, and it is certain that others are more suited for a task than some. But none of that should matter here.

    I am as guilty as the rest of you on this issue, but I am reading these posts and thinking to myself, "my god! why would this fellow ever post another IOTD here?" I sure as hell wouldn't. I am up for constructive criticism, sure, but this has all gone too far. That goes for the poster too. If you are going to say something like "I coded this without using a single line of Glide!" further the comment by explaining why that is important to the project. Remember that this is a diverse community. By knocking a product you are essentially telling a group of people in your community that the tools they use are inferior to yours. Don't do that.

    I for one really enjoy this forum, so I would like to see it stay. But if we continue to degrade each other in it, because of what tools we use or how we phrase our sentences, I am afraid there will be very few people with enough courage to post their work here. I don't want to see posts of picture perfect projects all the time, but that is what will happen, and that makes as much sense to me as a rope full of oranges.

    Wim Libaers

    March 08, 2002, 02:17 PM

    That's portable between 5 different operating systems, all made by the same company and having a name beginning with "Windows", I suppose?

    Just wondering (and I haven't made a big game) if you're making a portable game, why use DirectX? I'd say there is no reason at all for Direct3D unless you're going for Xbox portability, because every decent 3D gaming card has OpenGL drivers these days, and you will need to do an OpenGL version anyway for the other systems. Other parts of DirectX may be more useful, but lightweight wrappers exist.


    March 08, 2002, 02:17 PM

    Could someone explain why this... umm... let's say it nicely... average IOTD got 90+ comments??!


    March 08, 2002, 02:26 PM

    "Notice how almost EVERYONE has at one time or another applied an algorithm that Carmack came up with" -- I'm not aware of any major algorithms that Carmack has come up with. The brush concept in level description might be his, I'm not sure.

    "What I think I know about computer science has only been taught to you by another person who thought the same" -- Now you're making assumptions about my education. I made none about yours.

    "You are both closed minded." -- What if you told me the Earth was flat, would I be closed minded if I disagreed?

    "It's the people who think outside the little mainstream "box" that really make things happen in this field." -- And you've made .. exactly.. what happen?

    "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." -- Spend some time doing this for a living, you'll change your mind.


    zed zeek

    March 08, 2002, 02:30 PM

    true the colour sceme aint the easiest to read heres what to do with opera 'click on the icon 2 to the left of the addressbar it looks like a page' itll override the pages coloursettings with your own defaults good for reading darkblue text on black backgrounds for example


    March 08, 2002, 02:30 PM

    CAPITALIZING 'no use of DirectX' might in turn be a bit provocative, hence this religious debate. If you ask for opinions, keep it technical. If you slap people in the face don't come crying, if they hit you back.


    March 08, 2002, 02:42 PM

    Ok, so once again, the choice of API that actually performs the rendering doesn't enforce nor prohibit portability. The engine design is all that's important.
    Now on to the next question: Why use DirectX? Because OpenGL doesn't support stuff like pixel shaders. You need to use OpenGL extensions, which are - like stated before - a pain in the ass. I doubt that in the future the number of features which are only accesible through extensions will decline.


    March 08, 2002, 02:55 PM

    you can do it if you want/need to

    2 points:
    * if you want to, then it's surely good to have it
    * more often than not you will *NEED* to look at the source as the documentation lacks important information.
    The concept of open-source has one important backdraw. By giving away the source-code, just in case the documentation isn't explicit enough, the documentation itself becomes under-emphasized. A striking example of this can be found in the linux-man-pages.


    March 08, 2002, 02:56 PM

    that's a good one :)

    Jeff Kiah

    March 08, 2002, 03:29 PM

    "I'm not aware of any major algorithms that Carmack has come up with. The brush concept in level description might be his, I'm not sure."
    didn't carmack write Wolfenstein, Doom, Quake, QuakeII, QuakeIII? His engines are the standard to which every other engine is measured today, and it's been that way for a decade. He didn't come up with the idea of raycasting or binary trees, but wasn't he the first to apply them to 3d engine design? Maybe I don't know much about Carmack but that's what I thought.

    "What I think I know about computer science has only been taught to you by another person who thought the same" -- Now you're making assumptions about my education. I made none about yours.

    I'm not making assumptions, it's the truth. Every class you take has a professor, every book or tutorial you read has an author. Or were you born with all of this knowledge?

    "You are both closed minded." -- What if you told me the Earth was flat, would I be closed minded if I disagreed?

    No, you wouldn't be. But keep in mind that the earth being spherical in shape is a fact, not an idea or concept, so it's not really open to interpretation.

    "It's the people who think outside the little mainstream "box" that really make things happen in this field." -- And you've made .. exactly.. what happen?

    absolutely nothing, and that's the way it'll always be. I never claimed to have done anything.

    "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." -- Spend some time doing this for a living, you'll change your mind.

    Well don't take my words out of context, I was talking about abstract thinking here, stuff that doesn't apply to every day life, stuff you don't need to think about to get by.

    Look I respect your knowledge. I'm stubborn on this matter, you are too. We probably wouldn't work well together on the same team eh?

    I see your point, my use of "OOP algorithm" doesn't make too much sense (I remember admitting to that hours ago), but who cares? So what if I had a brain fart for 1.2 seconds when I was writing up my description at 2 am, realize that I wasn't making some kind of profound statement, I was just trying to convey the fact that my engine is written with OOP.


    March 08, 2002, 03:37 PM

    Heh.. I could argue that to you and I, the Earth actually IS flat at any given locality, but that'd be nitpicking :)

    Fair 'nuff I suppose.


    Jeff Kiah

    March 08, 2002, 03:42 PM

    Hey Ron,

    Thanks for the nice reply, and for sticking to the topic. This is a sad IOTD discussion (even though I was a large contributor) and I wish it could have just been about the important stuff.

    You're right the first time, by pure portal I mean I don't use any other occlusion than the portals themselves. Also, there is some overdraw in the engine.

    Jeff Kiah

    March 08, 2002, 03:45 PM

    if you take something like me saying NO DIRECTX USED!!!! personally, then I dunno what to tell you. I didn't slap anyone in the face by saying that, you slapped yourself in the face by being a little bit too attached to a bunch of 1's and 0's.


    March 08, 2002, 11:19 PM

    good question, blindsheep.

    Probably too many frustrated programmers in this world ^.^

    That's why I usually just look at the pretty pictures and try not to get annoyed by the elitest-coder-contests in the comments section...

    Wim Libaers

    March 09, 2002, 07:44 AM

    Because part of it degenerated into a Microsoft-related flamewar, which always attracts people. Also note that a lot of the posts were by the same people.


    March 14, 2002, 03:56 PM

    Now you're old enough ;) HAPPY BIRTHDAY, btw...
    You're certainly right about the 'broad brush painting' thingie - partially, that is. I didn't call the contributors 'hobbyists' but rather those that strongly defend the Open Source approach. And still, there is a lot of hobbyist coding involved in the Open Source community and every piece of software is only as reliable as it's weakest part. The difference between spare-time-coding and professionals has certainly to do with money being involved - but there's more to it: The most important difference lies in taking responsibility, i.e. there has to be a (legal) person that you can turn to if anything goes wrong.
    Now, for the list of examples: Mozilla can't truly compete with IE in almost all aspects. It's "designed for performance" but doesn't even come close to M$'s IE.
    Then there's GNOME - or was - or is it again? From a developer's viewpoint it's nothing more but horrifying to have a GUI you're developing for. Then it seemingly starts to fade away until it finally dies and is miraculously brought to live again. Coding is hard enough, I don't want to have the extra trouble of uncertainty.
    One sentence about GCC: If I don't *NEED* to use it I won't. Having 10 levels of 'optimization' is merely hiding the fact that its performance ranges from poor to outright, thouroghly BAD. It might be a bit better when it comes to standard conformancy. I doubt, though, that this outweighs good, highly optimized code.
    The list goes on............
    Famous last words: You've got a bright mind. Don't put it to waste for the sake of philosophy.


    March 20, 2002, 07:39 PM

    Actually Jeff, I think it's crap. I don't care what or how you made it but get a life! Look around you! There are millions of games, like Thief 1 and 2, that have the same exact graphics! Personally if I didn't know better I would think you somehow ripped a picture of the game and slapped your name on it! We don't need more games with the same graphics! Make something NEW. Go for it! Expand your horizons and let your imagination soar! Otherwise, you don't belong in the programming world.

    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.