3D Engine vs No Engine?
Posted 10 March 2011 - 08:24 PM
I program/model as a hobby, and my interests are broad. Recently, I wanted to try making a simple, graphical game. I started with Pacman. Using Visual Studio 2010's C# Express IDE and the DirectX SDK, I succeeded. Now I want to try to create a simple 3D environment with an avatar that I can move around.
My question is, what does a 3D Engine do for me that DirectX SDK and 3Ds MAX cannot? I downloaded and signed up for the Free Trial of www.visual3d.net and, at first glance, found that it looks like a difficult-to-navigate version of 3Ds MAX. I'm sure I'm missing something in how this makes creating a 3D application easier than a from-scratch approach.
The use of a 3D Engine with development has been clouded in my brain, as the only description (I only searched as far as Wikipedia :p) for these engine's are: A set of tools to assist in creating 3D applications.
Theoretically, couldn't I just create all my objects and landscapes in 3Ds MAX, use the DirectX SDK to render everything and then program the logic & control?
Posted 10 March 2011 - 09:16 PM
Yes, but there's nothing "just" about it - this is a lot of work. Direct3D is a low-level graphics API; a game engine will give you higher-level functionality. A good game engine will typically provide a variety of things such as:
- a scene graph (manages your objects, helps cull out objects that aren't on-screen at the moment)
- an animation engine (plays walk cycles and so forth on your characters)
- a material and lighting system (ready-made shaders for common materials, together with the infrastructure to put those shaders onto objects, put lights into the scene, and draw the whole thing efficiently, including shadows and reflections, etc.)
- a collision system / physics engine (lets your character run along the ground and not go through walls, shoot things and tell what the bullet hit and where, knock over a pile of barrels and have them roll around realistically)
- a scripting system (lets you write code to define the behavior of an individual object or character, and runs it all in real-time and manages interactions between things)
- FX and particle systems (lets you create dynamic fire, smoke, lightning, water splashes, muzzle flashes)
- image postprocessing (simulated atmospheric haze and depth of field, bloom, maybe HDR and gamma correction)
- a sound system
And all that's just scratching the surface. You can certainly learn about all this and code it yourself, but it will take you a LONG time. If your aim is to learn how the innards of a game engine work, that's great! Go for it. On the other hand, if your aim is to make a game, you're better off starting with a game engine that's already feature-rich, well-tested, and well-documented, as you'll be able to be much more productive at making a game that way.
Posted 10 March 2011 - 09:32 PM
You could do something similar to that with XNA, which is a lot higher level than DirectX but lower than an engine like visual3d. It's free. 3d games are generally a lot of work and if you want to produce anything at all, you are probably better off with a high level engine. I'm not sure spending the money on visual3d is a good idea or not until you give it a try with a free engine, though. The trouble is you get locked into doing upgrades, and it's kind of a lot for a hobby. It's actually not a bad price for the indy version if you might try to sell a game.
Posted 10 March 2011 - 09:52 PM
While, as I thought about this project, I'd envisioned writing the things on your list that I care about, if I can learn how to use one of these Engines faster than I can code it myself, that would be a good thing.
The Collision System. I hadn't thought of that and don't want to invest time to learn the system from scratch, so Engine it is.
**EDIT - I noticed XNA while I was downloading the DirectX SDK. I'll look into that. Might be the middle-ground I'm looking for. Thank you.
Posted 11 March 2011 - 11:48 PM
Without an engine, youll have to code a basic "entry point" for all the game things, and you can actually work without an engine if you want to... its what I actually do myself.
For example, what im coding now is a thing that converts models from zbrush and 3dcoat to my game format, and I actually code the animator myself.
With that handy "asset entry point" which takes about a couple of weeks to write, I can then get on with the game without a bought engine and its just as easy.
You can actually write it separately from your main game program, make it form a "dat" file or something the game reads when it boots up.
1 user(s) are reading this topic
0 members, 1 guests, 0 anonymous users