-
|
|
Engine Design (Rendering)
|
Researching engine design I noticed how Epic has the there own renderer Gemini that is multi-threaded. This is why I'm assueme the graphics in GOW are as nice as they are. I know that XNA can render itself, but is it necessary for me to build my own renderer if I was trying to acheive something on the level of the Unreal Engine 3 or can I do that with just the XNA framework alone (this is a theoretical question)?
|
|
-
-
- (4620)
-
premium membership
MVP
-
Posts
2,549
|
Re: Engine Design (Rendering)
|
XNA is not a graphics engine, nor is it a renderer. It is just an API (Application Programming Interface), like DirectX or OpenGL.
The UT3 engine is a graphics engine, and it uses DirectX or OpenGL (depending on the platforms) as it's API, for the low-level drawing calls.
so you can't really compare XNA to UT3, but you could compare an engine using XNA with UT3.
This being said, you could use XNA as the API for your rendering engine, and this could prove to be a very succesfull course of action. But be aware that the UT3 engine was made by a largea team of people in a large period of time, and don't expect to come close to the UT3 engine's quality / performance.
Other than that, XNA is a good, clean API, and while it may sometimes be a little slower than DirectX in unmanaged code, the productivity surely outweights the performance for a begginning game developer. And the satisfaction comes quicker, and keeps you interested.
You will probably be tempted to go the DirectX\C++ way now, if you think about sqeezing the last bits of performance from your engine, but I warmly recommend using XNA first, learning what an engine means, and making a game in XNA. Then, after lots of time used optimizing every bit of XNA/C# code, when you think you have enough experience so that YOU can make a difference between using DX/C++ versus XNA/C#, then you could try to make a state-of-the-art engine.
|
|
-
|
|
Re: Engine Design (Rendering)
|
Ok thanks, I think I have a better understanding now. Yeah I know that if I pursue this that I won't get anywhere near UE3 graphics (not in the beginning anyway), but hopefully I would like to build a robust, quality engine w/ XNA.
Thanks again for your info.
|
|
-
|
|
Re: Engine Design (Rendering)
|
The graphics you see in engines like Unreal are mostly due to the shaders that render pieces of geometry. This is how you get nice lighting, bump mapping, reflections on water, complicated particle effects, it has nothing to do with threading. The nice thing about XNA is that shader code runs 100% as fast and as well as it would in a C++ application on Xbox or Windows. So you are totally capable of generating Unreal quality graphics, where you bottleneck would be is the CPU, so you just might not be able to get as many objects on the screen as Unreal Engine can. A good 'renderer' or scene graph would be capable of scheduling each object's rendering so for example opaque objects would draw first, transparent objects would draw next, and then maybe a shadow pass and a post-processing pass. I based my scene graph implementation on the DxSas example that comes with FX Composer SDK, so given any effect it can determine what needs to be done to render it and what order it should be rendered in.
|
|
-
|
|
Re: Engine Design (Rendering)
|
It is definitely possible. You should do a search on google or here for 'game engine'. There is Blade3D and Visual3D.net, which I believe are both based off of XNA, and both will eventually be commercial (not free). TorqueX is going to eventually be 3D-capable like Torque for C++ currently is. Then, like you and I, there are plenty of XNA users out there trying to create their own engines as well. If you search on codeplex.com for xna engine you'll find 20-30 results. It is a huge task, mine (in my signiture) is only at v0.182 after 3 months, and I have yet to even go into detail on physics, animation, or interiors (which is an engine in itself sometimes). It can be really fun however, watching a world created from an engine, and then tweaking the world to run at a decent framerate. In the last 6 weeks the look of mine has changed very little, but my 1024x1024 exterior scene went from 10fps up to around 150fps, stuff like that can be a good learning experience. An engine is usually all-encompassing, and unless you have many others helping you then you're going to have to learn a lot of almost every aspect of game programming.
|
|
-
|
|
Re: Engine Design (Rendering)
|
I assume it is easier to get an engine to render only the interior of an building than for it to render the outside as well? correct me if I'm wrong (which is most probably the case)
the reason I ask is I am working on a project for school, where we are supposed to make a virtual environment of our building. we are starting off with simply one room and are designing it in 3DS MAX, but when it comes to loading the graphics up in a C# program, it doesn't work. we want the room to be our environment. I followed the XNA tutorials, but there is no mention of loading an environment. not that I care if I can run through walls or anything, that will come in time, but yeah.
I hope my question is clear.. if not let me know I"ll try to explain it better
|
|
-
|
|
Re: Engine Design (Rendering)
|
It depends on the complexity of the scene, and on the quality you want to reach. Most of the time the beauty of a scene relies on the assets you use and the way you compose them. The rendering engine comes after that, and its complexity might not be affected that much.
If you need your engine to render external scenes, there will be some questions you want to answer. Is there going to be a big landscape, or a narrow street with high buildings hiding the horizon? What about the sky? Classic techniques such skybox allow you to render things as if they were very far from you. The question is what will you put between the far lands and the near objects? Recent games (such as Assassin's Creed to name one) show good transition between classic object rendering (for near stuff) and skybox, and in most of the scene you don't notice there is a skybox (which is actually the point of a well done skybox).
Now, to code a skybox in your engine you simply have to modify the vertex shader you use to render the sky object, removing a multiplication. Easily done, but this does not imply your scene will look good. It's a matter of scene composition, rather than pure engine power.
To stress the concept, Gears of War looks great. But if you take a low skilled team of artists and you give them the unreal engine 3, their game will probably look crap.
|
|
-
|
|
Re: Engine Design (Rendering)
|
thanks a bunch that actually cleared some stuff up.
as for the project, there are no outside landscapes, everything is inside the building and you won't be able to look outside. when looking around for a engine to use, what should I be looking for. I obvioulsy want it to be C# compatible since that is the language I know best.
I would create my own engine, but unfortunately I know way to little about anything yet to do that. is there a specific one you would recommend?
thanks again
|
|
-
-
- (4620)
-
premium membership
MVP
-
Posts
2,549
|
Re: Engine Design (Rendering)
|
Sometimes, you don't have to make an ENGINE. Somethimes you can just make the engine as a very integrated part of your game, very specific to the game's needs. For small games,this might be the way to go. If you want to go the engine way, there are currently a few XNA engines out there: Lord Ikon's Quickstart EngineFlat Red Ball EngineTorqueXBlade3Dthere are others, but these just came from the top of my head.
|
|
-
-
- (10736)
-
premium membership
MVP
-
Posts
6,660
|
Re: Engine Design (Rendering)
|
There's also Visual 3D.net, although it only supports XNA 1.0 it seems
Jim Perry - Microsoft XNA MVP If people spent a minute searching the forums and reading the FAQs before posting I'd be out of a job. Got some XNA Game Studio/XNA Framework development info to share with the community? Put it on the XNA Wiki. Please mark posts as Answers or Good Feedback when appropriate.
|
|
-
-
- (717)
-
premium membership
-
Posts
179
|
Re: Engine Design (Rendering)
|
Don't forget my engine ;) Though it's still a ways away from release.... Reactor 3D
|
|
-
|
|
Re: Engine Design (Rendering)
|
Any screenshots, or feature list?
|
|
-
|
|
Re: Engine Design (Rendering)
|
Hi Aeon,
I don't mean to be a ***, but you might want to refrain from advertising your engine's website when there's nothing on there to show.
It paints a rather poor picture :)
|
|
-
-
- (12528)
-
premium membership
MVP
-
Posts
8,749
|
Re: Engine Design (Rendering)
|
thecray:Hi Aeon,
I don't mean to be a ***, but you might want to refrain from advertising your engine's website when there's nothing on there to show.
It paints a rather poor picture :)
Actually if you go to his page, he has a media section which has a couple pictures. It's not much, but he has something to show for the engine. There's nothing wrong with him mentioning it here since he clearly has something going, even if it is behind some of the other engine problems.
|
|
-
|
|
Re: Engine Design (Rendering)
|
I am not quite at the point of creating my own enging right now, so I'm looking at using some of the existing ones. what I am still unsure about is how to implement the graphics engine. The game is basicly going to be a 3d shooter in the style of the original DOOM or Wolfenstein 3d, just without the shooting and with nice graphics.
so very basic... the idea of having the engine integrated as part of the game would make sense. but again,I am unsure on how to impliment it
thanks for the help,
Fred
|
|
-
|
|
Re: Engine Design (Rendering)
|
Doom used something that you don't see today in games (that I'm aware of). The game is actually 2D, if you can believe it. At no point in Doom can anything walk above or below you. You might also notice there are no bridges. You might also notice while in the map for any doom level that the map is in 2D.
Each section of floor actually had different elevations, but collision detection was incredibly simple because it could be treated also like it was 2D.
You'd be hard pressed to find an engine today that supports this, as it is so limited.
I guess what I'm saying is I would shoot for something that is truly 3D, which I believe at a minimum would be somethiing like the original Quake, if we're talking about an FPS.
|
|
-
|
|
Re: Engine Design (Rendering)
|
yeah, I was aware that DOOM was actually 2D same with the Wolfenstein 3D - even though it was called 3D (it acutally seemed like it back in the day) but it was made along the same lines of DOOM.
as for the orginal Quake I never played it nor have I seen the engine in Action.
I have a collection of 4-5 engines right now, that's including yours (I hope you received my email regarding that error) but I still don't quite understand how to make the engine recognize the 3d environment that I created in 3ds MAX. as far as I understand Visual Studio 2005 is able to recognize .X or .FBX files.. so I know I have to import them but it's the coding I have trouble with.
|
|
|