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, 06:06 AM

    Actually, the opengl32.dll get updated when you install new video-drivers. True, they (as in Microsoft) provide the initial version, but that one rarely works at all :)

    And you complain about ranting and raving (in a sense), but that's exactly what you're doing yourself :)

    Jeff, nice work. Try to keep the actual game separated from the engine, otherwise you'll end up with little hacks all over :)


    March 08, 2002, 06:13 AM

    And why not?

    I'm not going to start a flamewar here, but frankly:

    Using OOP while you develop might (if you're good at it) lead to cleaner code that actually works and is easy to maintain.

    Usually, people complain about OOP since they believe it is much much slower that functional programming. Well, trust me, well written OOP-code will probably be faster than sluggish-written functional code.

    And besides, early optimization is the root to all evil!

    Get something that works flawlessly at first, then _profile_ your code to find where your program spends most of its time (if the program is too slow) and try to optimize that place. (Trying design-optimization before code-optimizations (cache-hits) and then before yet again code-optimizations (lines));

    Just my 2 cents


    March 08, 2002, 06:14 AM

    in windows nt 5+ winmm is a wrapper around directsound


    March 08, 2002, 06:15 AM

    personally i prefer KDevelop


    March 08, 2002, 06:19 AM

    if you use linux on a daily basis, you tend to understand why people dislike microsoft, linux is open and readily understandable, a lot of it is clear and simple and if you don't understand it, you can ask someone or just look at the source, i agree that if your developing for a windows you should use windows api's, but maybe he wants abstraction in order to develop across platforms, don't bag something because you don't understand/know about it, you just sound arrogant


    March 08, 2002, 06:22 AM

    i'm no master, but your starting to show your lack of understanding here floyd, don't jump to assumptions


    March 08, 2002, 06:33 AM

    Avoiding FMOD because it uses DX is just plain stupid, because:

    #1: FMOD is the best sound library around.
    #2: It is platform-independent (well not really but it exist for several platforms) and on each platform uses the best API available.
    #3: Whatever sound output API you use, you ARE using microsoft code. WinMM was coded by MS too as stefan said.

    I don't see why to avoid DX at all, since it's easily the fastest, slickest and most hardware-near way of accessing stuff like graphics, sound, and input there is under Windows.

    But I have to say that what you have done is pretty amazing for the short development time!

    Seb. Wagner

    March 08, 2002, 06:46 AM

    I think he ment that an "OOP algorithm" is a bit of a cheesy combination of words.


    March 08, 2002, 06:58 AM

    word :)


    March 08, 2002, 07:32 AM

    In that case let me respond with an admittedly childish "...but he started the flame war". Why is he so provocative in his description if he can't live with people responding to it?


    March 08, 2002, 07:36 AM

    neither am I, but there is a difference between assumption based on plain guessing and one that is based on knowledge and facts. When I wrote 'I assume' it was based on the description 'developed using VC++'. If Visual C++ does exist for platforms other than windows, you're right. If not, then this is clearly showing your lack of knowledge...


    March 08, 2002, 07:45 AM

    "misunderstanding is root of the evil"...
    I simply was wondering what is "OOP algorithm" because it sounds... mmm, strangely at least.
    "my engine use function calls"-type... :)
    I have nothing against OOP, I use it myself at daily basis at work :)


    March 08, 2002, 07:49 AM

    I don't consider execution time that much of a problem when comparing OpenGL and DirectX. However, development time skyrockets once you try to take advantage of somewhat newer features such as pixel shaders. In that case you'll have to use OpenGL extensions which are frankly a pain in the ass.


    March 08, 2002, 08:02 AM

    Does anyone else think the whole DirectX issue is being taken over the top? I don't know why you'd be happy about not using DX either, perhaps this was his first OpenGL app so it was a learning experience. Whatever, I think the point is, who gives a fuck?

    Anyway.. Nice work Jeff, i'll be interested in seeing your dynamic shadow stuff when its done. (Is it using a similar technique to Cube (i think that was its name) - an IOTD about a month ago that dynamically updated it lightmaps too?)



    March 08, 2002, 08:30 AM

    acctually you sound arrogant.
    I have used linux for ~5 years and i know perfectly well the advantages/disadvantages with it...

    Its up to every software to be opensourced or not its nothing general , really... And i never cared about looking at any program under linuxs sourcecode.. mainly because most of them suck :)

    ok.. so there is a better operating system than win32 you say .. ok.. and he says that to.. and he uses windows.. what sounds wrong ? either he's a fag who doesnt understand what he thinks /believes in /likes himself..

    AND .. he said "no directx" whats the point of saying that when everybody knows you have to use directx in some kind to gain speed wich you really need when creating games or other realtime *interactive* stuff.. trust me... getasynchkeystate isnt good for checking input in games...


    Seb. Wagner

    March 08, 2002, 08:43 AM

    Off-topic: your website is the most ugly thing I ever ever stumbled upon.

    Seb. Wagner

    March 08, 2002, 08:46 AM

    I should add this isn't meant personal, I just was so struck in the face. Opinions may differ...


    March 08, 2002, 09:00 AM

    Heeeiiiii.. I'm tired of this offtopic discution. DX/OGL... what's the point... Each of you have maybe a different personal car but you don't fight about it.
    Each use what API he think it's better or easy to use or something else; the result is the same: a 3D computer generated image (or something else).
    And beside, start a new topic for that if you really want to fight, It's not fair play to the man that posted the IOTD; and for the
    others; I just refresh my page to see discussion that has nothing to do with this IOTD.

    Best regards,


    March 08, 2002, 09:05 AM

    its a reason why it has as domain..

    its meant to look like that

    its written in C



    March 08, 2002, 09:19 AM

    hehe .. cool page you have. changing colors when you refresh :) freaky!!


    March 08, 2002, 09:32 AM

    opinions are like assholes: everybody has one

    Seb. Wagner

    March 08, 2002, 10:02 AM

    I can read. It's not funny or 313337, just ugly as hell. Actually I don't care what some child like you calls me. I guess most people around you don't like you very much, cause that would be a reason why you act the way you do (as far as I can see, noone including me attacked you but you are quite hostile). But then, I don't care...

    Warren Marshall

    March 08, 2002, 10:08 AM

    You know, I've heard the "you can just look at the source" argument before and it just doesn't fly with me. Maybe I suck at programming, but there is NO WAY I could quickly open up the source to my operating system and figure out what was going on.

    Hell, most code that I download off the web requires a 20 minute investment of my time to simply reformat it so I can figure out what the HELL is going on. Open Source sounds wonderful ... but I fear in practice it's unmanageable without some sort of coding standard imposed on those who contribute to it. It would also require copious amounts of comments in the code and I doubt that's happening. Maybe I'm wrong, but I'm drawing on my years of professional programming experience here to make my assumptions.

    Even then, just picking up another piece of code and understanding it seems like a long shot. And modifying it without understanding the dependencies and assumptions that piece of code has/makes? Just kill me now ...


    March 08, 2002, 10:26 AM

    Relax Warren, there is no need to kill you ;) You are absolutely right about this whole point. Opensource *DOES* sound great in theory. But so does communism. In practice, however, neither one meets the expectations. Once those hobbyists that defend the Opensource approach become professional programmers they will quickly find out that reliability and time is of the essence.


    March 08, 2002, 10:32 AM

    "Dynamic shadows WITHOUT using stencil buffer"

    why is it so special doing dyn. shadowing without stencil? I don't don't see any reason. h/w is getting fast enough to handle some fps-drop without problems - and I don't even think of future hardware!

    if you want to build up a game engine with potential for the future market you have to implement state of the art algorithms - and I think there is no other way to get better shadows than to use kind of stencilbased algorithms, as the idea of it is basically exactly the same what the nature does.

    Jeff Kiah

    March 08, 2002, 10:55 AM

    I'm not trying to build up an engine to compete in the future market, I'm trying to keep things simple right now. I'm not a great programmer, I'm not a professional, I do this in my spare time, I'm not even majoring in computer science. If I don't need to use the stencil buffer to get my shadows to work, I won't.

    As for the whole dx vs opengl thing, I never claimed that I have any problem with directx. I use OpenGL because that's what I like, if someone uses directx that's fine, whatever works, we're just programming here. The reason I'm glad I didn't use any directx in my game so far is that it's a step to being portable. If I don't depend on directx then that's one less reason that I need to run it under windows. Not only that, but without directx it doesn't take me 47 pages of code just to handle my keyboard and mouse ;-) (for all of you out there that will take offense to this, I was being sarcastic, notice the wink)

    This is for stoo... I'm not really familiar with cube, but I am interested in taking a look at it now.

    For zemedelec...yes OOP does stand for Object Oriented Programming (what else would it stand for?) And what's wrong with saying "object oriented algorithm?" I don't know how much OOP experience you have but are you suggesting that I could write the engine in a linear fasion with the same algortihm? I hope not.

    Arne Rosenfeldt

    March 08, 2002, 11:04 AM

    Maybe an algorithm is usually not OOP,
    but its implemention

    Jeff Kiah

    March 08, 2002, 11:13 AM

    Alright I'll give you that, I'll just put it this way, the program is written with OOP, not that it's even a big deal. I realize now that zemedelec uses OOP a lot too, so I don't question his experience. But I'm just tired of all the people who post on here that get their jollies by trying to make other people sound foolish. I used a cheesy string of words in my description I'll admit, but who cares about that? You'd only point it out if you're trying to make yourself look smarter than that person. And why do that? It's not like any of us know each other.


    March 08, 2002, 11:16 AM

    Well, you might be surprised again, but whatever leaves your compiler is plain linear code. Like stated before, the algorithm is neither linear nor OOP. It is just a recipe -- after you convert it to code it might turn out to be object oriented or not. OOP is just a means to reduce complexity.

    Seb. Wagner

    March 08, 2002, 11:19 AM

    Now I'll take that back. I think you acted sort of childish but I don't mind cause there was no need for me to express my opinion and although I think you took this far too serious it was me who started this shit. Kurt, if you read this, please remove my first post.

    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.