Game Engine vs. Wrapper |
Eric Coleman | quote: Originally posted by Almar Joling
Truevision has quite envolved a bit though, I think it's a bit more than just a wrapper these days :)
Let's take a look at it's features. My comments are in italic
- Full DirectX8.1 and DirectX9 supportI'm not sure what this means. Does support mean that it provides access to directx 8.1 and directx 9? or Does support mean it's built on top of those api?
- Optimized Hardware T&L supportThis is a function of DirectX and the video card drivers. This is a feature of the graphics card, not Truevision.
- Unified Angle System (radian or degrees)Is multiplying by pi / 180 so difficult that is has to be a feature in an engine?
- DirectX Hardware Lighting support (up to 8 simultaneous lights)This is straight out of the DirectX SDK. Sorry, but this is a hardware and DirectX feature, not a Truevision feature.
- Fast view frustum culling (sphere and box)This almost sounds like a feature, but again, DirectX does frustum culling for you.
- Fast Terrain Rendering System with quadtree
- BSP Rendering Engine with PVS/Lightmapping(1)This is the ability to load quake and half life bsp files.
- Billboard-based Particle SystemPoint sprites, again, this is a DirectX feature.
- 3DS, X, MDL, MD2, MD3, Skinned Mesh Support for models(1)X file loading is not a Truevision feature, it's a DirectX feature. MDL, MD2, MD3 are quake file formats. 3DS is nice, but the code to load 3DS files can be found very easily on the internet.
- Hardware Vertex Shaders to optimize rendering if availableAgain, it is listing a DirectX feature as it's own.
- Shader script system to setup texture effectsPixel shaders are a DirectX feature.
- Atmospheric effects like fog, cloud, sky (box and sphere), starsFog is a DirectX feature. Is the ability to render a box or sphere make a program an "engine?"
- DOT3 Bumpmapping supportYet again, this is a DirectX and video card feature, not a truevision feature.
- Optimized dynamic stencil shadows for meshs
- Fast 2D Interface with custom fonts
- Advanced ray collision detection returning accurate informationD3DX library.
- Powerful animation system
- Skeleton-based, Keyframe-based, or Morph-based animationsThis is another DirectX feature.
- Attach child meshes to bones
- Animate via custom bone rotations
- DirectSound, DirectMusic, DirectShow supportWrapper
- Allows to make unique sound atmosphere for your gameswhat does this mean?
- Hardware/Software Sound mixingThis a DirectX feature based on the sound card.
- Unlimited simultaneous soundsDirectX
- MP3, WAV, MOD, SM3, IT, MID, RMI, SGT support(1)file formats.
- 3D Sound support that can be linked easily to a 3d worldDirectX feature.
- Effects (reverb, echo, etc.) to give more depth to your soundsThis is yet another DirectX feature.
- Movie playing (all formats) for cut-scenes (1)file formats.
For the items with (1) in the front of the comment, I have this to say about them collectively. Being able to load file formats from other programs does not make something a game engine. Being able to load an .X file doesn't make the X file viewer that comes with the MS DirectX SDK an engine any more than being able to load a .BSP file from a quake game. If it did, then that would make Maya, 3DS Max, PhotoShop, and Windows Media player game engines. The ability to load a special file format does not make something a game engine. A "game engine" is much more than that. Do you think that John Carmack's Quake engine was just a '.bsp' and '.md?' file loader? No, it was much more than that.
Just look at the feature list. It's a directX wrapper. Simply changing the name of DirectX functions to TrueVisionBeginScene, TrueVisionEndScene, TrueVisionBitBlt is not going to make it a game engine. |
sdw | Amen. |
EACam | Yes, but remember, Engine sounds a heck of a lot cooler than Wrapper. If u were strict on the usage of the two words, than we'd really only have 2 major "engines": DirectX and OpenGL. So when we have ALL these other "wrappers" to deal with, we can pretty much assume they use one of the two, or both, so I say it doesn't matter.
Just my 2c. |
sdw | quote: If u were strict on the usage of the two words, than we'd really only have 2 major "engines": DirectX and OpenGL.
Neither DirectX nor OpenGL are game engines. There is a big difference between wrapper and engine. A wrapper is like what Eric pointed out above, something that only redefines how to use DirectX or OpenGL or any other API in a way to make it simpler for the user to work with. A game engine does more than just change the names of DirectX functions, it controls important parts of the game like physics and collision detection. |
Eric Coleman | To further SDW's point, an engine is an entire framework for specific game type. A game engine should allow you to create different games simply by changing the content of the game. The "content" is the graphics (models, textures, maps), the sounds, the storyline, and scripts. A game engine is specific enough that it only allows certain types of games, for example, ORE from http://www.baronsoft.com/ is a game engine. It's a 2D RPG game, but all you really need to provide is some graphics, sounds, a story, and that's your game. Of course, all games created from the engine will be 2D tiled role playing games, but that's part of the reason for developing an engine. It allows you to create other games fairly easily with little to no programming. The Quake engine from ID software is specific enough in that it only allows you to create first person 3D games. You can easily create a game where you're a wizard exploring a tower while fighting dragons and stuff, and then simply create some new maps, add some scripting, some new textures, models, and sounds, and then you can have a game where you're on a space ship and after waking up from a cryogenic sleep you find that the ship is deserted and you have to find out what happend to your crew. With some simple scripting you can change the game from a "fire bolts of lighting at dragons to get to the top of the tower and retrieve the Magical Dragon Chariot" to a "Search and explore mystery game to find out what happend to the rest of the crew on the space ship." In both situations, the wizard won't be exploring the country because the quake engine was designed for enclosed spaces, and the guy on the space ship won't be in the cockpit of a fighter plane because again, the quake engine wasn't designed to be a flight simulator. Game engines are designed for specific needs, but that is really a good thing. You don't have to worry about every type of game possible, and you can make specific optimizations to your engine that you couldn't do in a generic type of wrapper. I like analogies, so just slap me if this one doesn't make any sense, but consider a Swiss Army Knife. It has a bunch of great tools for all kinds of situations, but because you have to pack so much functionality into such a tight space, each individual tool is a lower quality version of a single use instrument. |
game_maker | hmmmmm,,,, I like the way you Separating it but is it standard or Not I mean everyone calls :
DirectX,OpenGL
TrueVision,Revolution3D
Quake
3D Game Studio,Game Maker
.... an engine while they are not the same
what about : Library->wrappers->Engine->Game ! |
Lachlan87 | I think his definition is pretty standard. I have heard of OpenGL and DirectX refered to as Graphics Engines but not Game Engines. I think the reason TrueVision wants to be called an engine instead of a wrapper, is because most people tend to think of wrappers as being amateurish or un-helpful, which may not be the case at all. |
BigPapaN0z | I know this post is a bit old, but I thought I might throw a few things in here, as I've used TV3d. Reading all this is very true, however, one thing I noticed:
quote: A game engine does more than just change the names of DirectX functions, it controls important parts of the game like physics and collision detection.
TVAI
- AddNode - Adds a AI node to the 3d world using the D3DVECTOR passed.
- CreateAIGraph - After creating the AI nodes call CreateAIGraph.
- ExportGraph - Save the AI Graph to file for later reuse.
- FindPath - Finds a path across a network of nodes.
- GetNode - Returns the position of the node-index passed.
- GetNodeCount - Returns the amount of nodes currently existing in the node network.
- ImportFromBSP - Imports the nodes from a HL BSP passed.
- ImportGraph - Imports a saved AI Graph from disk.
- SetFindPathParameters - The max radius and altitide diffrence between two diffrent nodes.
Also, a few other parts of the engine that aren't in DX (at least last time I checked):
- TVEngine - OpenPAKFile
- TVLandscape
- TVParticleSystem
- TVNode - Controlling Nodes and Splines / Helper functions to use cameras on these
I could go on, but I think I've made my point. TV3D has always been a multi-purpose engine. It was designed to help with DirectX, but has evolved to include many functions that aren't DX-specific. All the info above is from the 6.2 release, and 6.5 is slated to be out soon. Thus, adding more functionality. Now, does is wrap DX? Yes. But it is more than just a wrapper. It helps streamline developing DX games and applications.
Ok, there's my two cents. :)
- BPN |
Almar Joling | I disagree with you Eric, on some points.
For example, culling is not what DirectX does for you. It only does so after you upload all your vertices, which are transformed. then it will do culling. It will not decide what to cull before what is send (BSP/Quadtrees)
Skeleton based, etc. is a directX feature. When using .X files yes. Using MS3D I had to fix my own system, which I luckily managed using some code I found on the net.
D3DX doesn't do my collision detection. It's used on a few points, but the actual algorithm is not in D3DX. (ok, except when usin the mesh object).
Optimized T&L support -COULD- be that it uses the ATI and NV language, which aren't universal to each other.
Anyway, lots of stuff is wrappers, ofcourse. But these days it has quitre evolved with camera paths, tree rendering, landscape rendering, and I think it has physics too.
(But I still dislike the fact they went closed source :P)
|