Thread: 3D engine project

  1. #1
    Programming Wraith GReaper's Avatar
    Join Date
    Apr 2009
    Location
    Greece
    Posts
    2,739

    3D engine project

    I would really like building a 3D engine, but i can't do it all by myself. Therefore i'm asking if you would like to help me. I also need some team work because i'm fed up with working alone. I know to programme Windows, OpenGL, and C++ of course. I need someone who knows about bump mapping. I desperately need someone who knows how to use OpenAL. Having someone who would extend it to other OSs than Windows would be nice. The idea is to make an efficient, portable, multi-tasked 3D engine.

    For details about the engine, if you are interested of course, pm me and we'll talk.
    Devoted my life to programming...

  2. #2
    Master Apprentice phantomotap's Avatar
    Join Date
    Jan 2008
    Posts
    5,108
    O_o

    You let out one of the most important things: the license.

    Soma

  3. #3
    Registered User VirtualAce's Avatar
    Join Date
    Aug 2001
    Posts
    9,607
    I desperately need someone who knows how to use OpenAL.
    I am quite familiar with OpenAL. Why do you need someone for this? OpenAL is pretty simple. The hardest part is loading the sound data but there are many plug-ins for it like freealut for example that can do this for you. Music streaming is a bit more complicated but overall OpenAL is a cinch.

  4. #4
    Programming Wraith GReaper's Avatar
    Join Date
    Apr 2009
    Location
    Greece
    Posts
    2,739
    Quote Originally Posted by Bubba View Post
    I am quite familiar with OpenAL. Why do you need someone for this? OpenAL is pretty simple. The hardest part is loading the sound data but there are many plug-ins for it like freealut for example that can do this for you. Music streaming is a bit more complicated but overall OpenAL is a cinch.
    The problem is that i've never used OpenAL before!

    Quote Originally Posted by phantomotap View Post
    O_o

    You let out one of the most important things: the license.

    Soma
    Of course, how could i forget... It will be free and open-source under the GNU Lesser General Public License
    Devoted my life to programming...

  5. #5
    Master Apprentice phantomotap's Avatar
    Join Date
    Jan 2008
    Posts
    5,108
    If you've used OpenGL, you've used OpenAL. The interface is that similar. There are even "10 Minute Tutorials" targeted at loading the sound data from raw PCM data, WAV format files, and OGG files. You literally shouldn't need more than a few minutes of study to understand how listeners work if you are already used to OpenGL.

    Well, I've never done anything truly fancy with it, but just adding some ambient sounds, directional sources, and some relative effects should be trivial for you.



    I have to wonder why you think a discussion of the engine should be held in private.
    Wouldn't it be better to setup a place to discuss the thing in a public setting?
    If nothing else, it would eliminate the need to discuss the same thing over and over.

    Soma

  6. #6
    Password:
    Join Date
    Dec 2009
    Location
    NC
    Posts
    587
    You could do it in Qt from the beginning and not have to port it later. IIRC, Qt supports OpenGL.

  7. #7
    Master Apprentice phantomotap's Avatar
    Join Date
    Jan 2008
    Posts
    5,108
    You could do it in Qt from the beginning and not have to port it later.
    You are a horrible person!

    Soma

  8. #8
    Password:
    Join Date
    Dec 2009
    Location
    NC
    Posts
    587
    Why?

  9. #9
    Programming Wraith GReaper's Avatar
    Join Date
    Apr 2009
    Location
    Greece
    Posts
    2,739
    Quote Originally Posted by phantomotap View Post
    If you've used OpenGL, you've used OpenAL. The interface is that similar. There are even "10 Minute Tutorials" targeted at loading the sound data from raw PCM data, WAV format files, and OGG files. You literally shouldn't need more than a few minutes of study to understand how listeners work if you are already used to OpenGL.

    Well, I've never done anything truly fancy with it, but just adding some ambient sounds, directional sources, and some relative effects should be trivial for you.
    I've never again been interested in working with sound, and i believe it will be more than trivial to me. Anyway, i'll take your advice and start studying some OpenAL.

    Quote Originally Posted by phantomotap View Post
    I have to wonder why you think a discussion of the engine should be held in private.
    Wouldn't it be better to setup a place to discuss the thing in a public setting?
    If nothing else, it would eliminate the need to discuss the same thing over and over.
    Yeah, i guess you're right about that. After all, it will be an open source, so everyone are welcome to submit their ideas or suggestions. I just thought that a single thread will be full with many pages of posts, eventually, that it would be hard for everyone to read.
    You know, i think it would be a good idea to add the engine to this site's source code downloads. But then what would we do about newer versions etc? I know i'm thinking way too far, but what the hey! I don't have any experience on these, that's why i started this thread.
    Devoted my life to programming...

  10. #10
    Master Apprentice phantomotap's Avatar
    Join Date
    Jan 2008
    Posts
    5,108
    If I recall correctly, twice in the past Bubba has offered to support projects spawned at "C Board" in an advisory capacity. It might be worth pestering him about.

    Anyway, if you don't start talking more about your ideas, you are going to lose your initial audience.

    In any event, according to Laserlight people aren't supposed to use the board as a hosting site for "private projects". You may want to ask permission to use a thread or two at the project board as an initial staging area until you have something available.

    Soma

  11. #11
    Programming Wraith GReaper's Avatar
    Join Date
    Apr 2009
    Location
    Greece
    Posts
    2,739
    Quote Originally Posted by phantomotap View Post
    Anyway, if you don't start talking more about your ideas, you are going to lose your initial audience.
    Right. Well, here goes:

    First of all, we'll have to come up with a cool name for the engine. I'm waiting for everyone's suggestions and after a, let's say, two days period i'll count the different names and the one mentioned the most will be the ONE.
    ( I'll refer to it as 3Dengine for now )

    3Dengine will be a 3D and 2D rendering engine, either DLL or static, which will be using OpenGL for graphics, OpenAL for audio and the system's routines for Input. A first list of 3Dengine's capabilities follows;
    Code:
    Graphics:
          Dynamic Lighting
          Bump Mapping
          Stencil Shadows ( hard or soft )
          Fonts ( bitmap or outline )
          Particle System
          Billboards
          Reflections
    
    Audio:
          ( This list needs to be filled :D )
    
    Input:
          Direct or Buffered Keyboard Support
          Direct or Buffered Mouse Support
          Direct or Buffered Joystick Support 
    
    Management:
          Load/Save image files:
                        Windows BITMAP
                        JPEG
                        PNG
                        TARGA
                        ( more to come... )
          Load font files:
                        ( not sure how to implement this )
          Load common 3D models:
                        MD2
                        OBJ
                        VERTEX
                        ( more to come... )
          Load/Save builtin 3Dmesh format:
                        3Dmesh ( or something like that )
          Optimize geometry:
                        Octtree
                        ( something else?... )
          Collision Detection:
                        Axis Aligned Bounding Box
                        Bounding Sphere
                        Triangle Picking ( Ray Tracing )
          Builtin GUI:
                        Windows
                        Buttons
                        Checkboxes
                        Edit boxes  
                        ( and the like )
    That's all for now. I'm ready to accept new ideas to extend it like: more image or 3D models' formats, how to load fonts, more ways to optimize geometry, ideas on what the audio section should provide etc.

    Devoted my life to programming...

  12. #12
    Registered User
    Join Date
    Dec 2010
    Posts
    4
    Oh, game engine. It is my child dream )
    Found this topic while searching some examples of game engine architecture. Would be cool to participate in something like this. The problem is that I have very shallow knowledge of OpenGL. All the time I was learning DirectX. I used it at my student project where I loaded obj files and implemented method to draw over the loaded model with some brush tool (using triangle picking). Also tried to make a small plugin for 3ds max to export data into my own format but it is not finished yet because I haven't really defined engine's formats. Also have some ideas about other things from your "list of 3Dengine's capabilities".

  13. #13
    Programming Wraith GReaper's Avatar
    Join Date
    Apr 2009
    Location
    Greece
    Posts
    2,739
    Quote Originally Posted by ufo_driver View Post
    Also have some ideas about other things from your "list of 3Dengine's capabilities".
    Well, why don't you express them?

    Come one, everyone! I see little interest...
    Devoted my life to programming...

  14. #14
    Registered User
    Join Date
    Dec 2010
    Posts
    4
    First I think any 3d engine should have an extendable resource manager that will consider any outer graphic or sound file simply as resource file. If user wants to use special format he should define how to load this format if engine doesn't have defined method for it. Each instance of resource should be loaded only once and second loading must return already loaded resource. Scene is also some type of Resource that combines objects. Each object has links to resources he uses, so resource loading is transparent for user. User only loads separate objects or full scene that is a combination of objects.
    Second, any object can use shaders. But simply drawing each object with its group of shaders will cause a huge ammount of switches between shaders. So I think it is better not to draw object directly but to add it to object queue once and then remove it from this queue after it is no more need in this object. All objects in queue will be sorted by shaders, textures, etc. to reduce ammount of switches between resources.
    Also I think my ideas are useless without a resource editor that gives ability for user to create modules for his own types of resources.
    About font. In my opinion font drawing should use prepared bitmaps with letters, because it is much simplier for user to create such bitmap and it is much more portable imho. Font also can be treated as resource so that resource manager loads it only when it is needed(For example when GUI is displayed).
    About GUI. engine should give an ability to draw gui over the texture and to display it not only on screen but on some plane in 3d to create spatial effects.
    That is the list of my basic ideas.

  15. #15
    Programming Wraith GReaper's Avatar
    Join Date
    Apr 2009
    Location
    Greece
    Posts
    2,739
    1) That's your way of saying that it should use reference-counted objects, right? Well, that goes without saying.
    2) With the way you talking about we WILL reduce the amount of switches between shaders, but i'm not sure that it will make the engine more efficient. Just think that every time objects will have to be sorted again and again, if we want to include optimization ( which is a key element of game programming ).
    3) I agree about the fonts part.
    4) About GUI, yes that could be done by generating a texture in real-time and using multitexturing to combine the polygon surface texture with it.

    About the extendability, i also believe that it will be a very important feature of 3Dengine. We can accomplish it almost easily with OOP. I just love C++!
    Devoted my life to programming...

Popular pages Recent additions subscribe to a feed

Similar Threads

  1. Problem Displaying a Struct
    By rockstarpirate in forum C++ Programming
    Replies: 16
    Last Post: 05-05-2008, 09:05 AM
  2. can not create Visual C++ Smart Device project
    By George2 in forum Tech Board
    Replies: 0
    Last Post: 11-26-2006, 06:20 AM
  3. 2D RPG Online Game Project. 30% Complete. To be released and marketed.
    By drallstars in forum Projects and Job Recruitment
    Replies: 2
    Last Post: 10-28-2006, 12:48 AM
  4. Dynamic Binding
    By gpr1me in forum C++ Programming
    Replies: 1
    Last Post: 03-24-2006, 09:01 AM
  5. Game Engine Link Prob
    By swgh in forum Game Programming
    Replies: 2
    Last Post: 01-26-2006, 12:14 AM