Sign in to follow this  
Lalo

3D Engine

Recommended Posts

Lalo    122
Hi, Im about to write a 3D engine with DirectX 9 and C# for my thesis. Actually I wanted to write a game engine, but some people still doesn't think that game programming is something serious, so i've decided to write a "3D engine" rather than a "game engine". I think that comments from you people are very important in the design of a new engine. I must say that all my code will be open source and i'll be posting it time to time as i have it done. The entire code will be also available for all of you. So i need some starting guidelines to start designing it, here are some of the topics i think are important at first: 1.- does anybody knows the difference between a "game engine" (or a "3d game engine") and a "3D engine"? 2.- what would you find helpfull in a 3D engine? (those kind of thinks you would use to write a 3D application). 3.- Im almost new to .NET and DirectX 9 (i used to work with DX8), and i have been listening and reading thinks like "Managed DirectX", "Managed code", and so on... could anybody tell me what does "managed" means in these terms please? 4.- If somebody knows a place where i can post my code so that it'll be available to everybody, please tell me. 5.- Im starting by reading the next books, if you could tell me of another good reference, please do it: Miller, Tim "Managed DirectX 9 Kick Start" Sams Publishing Harrison, Lynn Thomas "Introduction to 3D game engine using DirectX 9 and C#" APRESS Santos Lobao, Alexander "Beginning .NET Game programming with VB.NET" APRESS Any other comments and recommendations are most welcome :)

Share this post


Link to post
Share on other sites
Saruman    4339
Quote:
Original post by Lalo
1.- does anybody knows the difference between a "game engine" (or a "3d game engine") and a "3D engine"?

By 3D engine I would guess you mean a '3D Rendering Engine' whereas a game engine would have rendering, physics, input, sound, networking, etc.

Quote:

3.- Im almost new to .NET and DirectX 9 (i used to work with DX8), and i have been listening and reading thinks like "Managed DirectX", "Managed code", and so on... could anybody tell me what does "managed" means in these terms please?

Managed code is built using the .NET framework where your assemblies are compiled down to MSIL and than JIT on the fly when run.

Quote:

4.- If somebody knows a place where i can post my code so that it'll be available to everybody, please tell me.

SourceForge

Quote:

5.- Im starting by reading the next books, if you could tell me of another good reference, please do it:
Miller, Tim "Managed DirectX 9 Kick Start" Sams Publishing
Harrison, Lynn Thomas "Introduction to 3D game engine using DirectX 9 and C#" APRESS
Santos Lobao, Alexander "Beginning .NET Game programming with VB.NET" APRESS

Any other comments and recommendations are most welcome :)

Game Engine Design - David Eberly
Game Engine Architecture - David Eberly
Shader X3 - Wolfgang Engel (a few good subsystem articles)

And just FYI, that C# game engine book is absolutely, positively horrid. Somebody here at work had it around and I actually had to hold down the puke. It was pretty brutal to say the least.

Share this post


Link to post
Share on other sites
jollyjeffers    1570
EDIT: damn - 4 minutes too slow. Good post saruman!

Quote:
Original post by Lalo
I must say that all my code will be open source and i'll be posting it time to time as i have it done. The entire code will be also available for all of you.

Nice idea. Considered getting GDNet+ and keeping a log of what you're working on and how you're going about it? SimmerD's journal is a good example - makes for facinating reading [smile]

Quote:
Original post by Lalo
1.- does anybody knows the difference between a "game engine" (or a "3d game engine") and a "3D engine"?

Yes : One begins with "game" the other with "3D" - simple as that.

People (particularly media types) tend to mix-n-match as they see fit, but from our point of view it should be simple.

A "Game Engine" is probably the framework for a particular genre/type of game - probably linking all of the various technologies together along with modelling the gameplay.

A "3d engine" should represent a specific piece of technology - probably the GPU/VPU. It's primary job should be mapping 3D geometry/texture data into a 2D rendered image to be presented onto the screen...

Quote:
Original post by Lalo
2.- what would you find helpfull in a 3D engine? (those kind of thinks you would use to write a 3D application).

What is the target? Both the term "application" and "engine" can be interpretted in a number of different ways [wink]

If you're going the programmable route then some sort of interactive shader tools and material preview would be extremely useful.

Quote:
Original post by Lalo
3.- Im almost new to .NET and DirectX 9 (i used to work with DX8), and i have been listening and reading thinks like "Managed DirectX", "Managed code", and so on... could anybody tell me what does "managed" means in these terms please?

"Managed" is the phrase used for .NET code. Thuse "Managed DirectX" is basically the DirectX API exposed for/via the .NET languages.

Quote:
Original post by Lalo
4.- If somebody knows a place where i can post my code so that it'll be available to everybody, please tell me.

My original example requires you to pay money (albeit a very small sum) for GDNet+... but other examples might be "sourceforge". Maybe some others might be able to suggest some things..

Quote:
Original post by Lalo
Any other comments and recommendations are most welcome :)

My main comment, as you might have read above is definitions... you seem to be an early stage in development, so broad/general terms aren't much of a problem. However, you'll find your planning and research a lot easier if you try to narrow it down a bit...

e.g. "3D Engine For Interactive Simulation" or "3D Engine For Scientific Visualization" etc..

hth
Jack

Share this post


Link to post
Share on other sites
Lalo    122
Hello again, and thanks for your comments.
I've talked with other people involved in my work about the things i posted here and i've taken some important decisions.

Quote:

My main comment, as you might have read above is definitions... you seem to be an early stage in development, so broad/general terms aren't much of a problem. However, you'll find your planning and research a lot easier if you try to narrow it down a bit...


jollyjeffers, thanks a lot for this comment, it opened my eyes. i've been thinking about this and i talked about it with my adviser, so i've finally decided that writing a 3D engine its a lot of work for me now.
I'll be working on the same thing (3d programming) but a little bit down: I'll work on a tool to create and navigate trough 3D scenes. To make it more clear, lets say that i want to generate 3D scenes (like in a FPS game) and let the users walktrough them.

If you can't understand what i'm trying to say, excuse me, my english is not perfect. Tell me so and i'll try to rewrite it.

So, back to my project, there's something i hope you'd like to know: i'll be uploading my work in this URL: http://www.3d-casillas.8k.com since the next week, so that everybody can keep track of my work and learn as i learn from this topic. As i write my code, i think i'll be uploading it to sourceforge (thanks again to jollyjeffers and saruman). I'll post an advise here when i have the first functional version.
The only problem with this is that all my work will be in spanish, and i have not yet planned to translating it. Of course, if anybody wants to translate it for the comunity, i'll upload that translations with my work in that page and give you credit in my thesis (if anybody is hopefully interested).

I think that's all for now folks! By the way, new ideas, comments and recommendations are still most welcome, and please, post ideas, comments and recommendations for my work, i need lots of them. [wink]

Share this post


Link to post
Share on other sites
Lalo    122
i forgot to ask you something about DX.
if i have generated a scene with DX and C#, there's a way to save it into an .x file so i may use it later in other programs as a mesh???

this could be a great enhacement on this work.

Share this post


Link to post
Share on other sites
neneboricua19    634
You can do this by creating an object of ID3DXMesh and setting its vertex, index, and attribute buffers. These are the objects an ID3DXMesh needs so that it can render things. The SDK sample that reads in a model of type .obj and creates an ID3DXMesh out of it would be good to look at.

Once you've done that, you can save this mesh to a file by calling D3DXSaveMeshToX or D3DXSaveMeshHierarchyToFile.

neneboricua

Share this post


Link to post
Share on other sites
Lalo    122
I'm glad to let you know that I have just uploaded the first docs of my work to my website.
At this time, these documents are only in spanish, so if you speak some spanish, sneak in and please give me your comments, they are unvaluable for me. It's about a tool for generating 3D scenes and walktrough them, and in some weeks I will implement it with C# & DX9 and then upload all my work in this same site, so it could be helpfull for people wanting to know how to develop tools with DX and usefull for me if you make some comments about this.

Thank you!

Share this post


Link to post
Share on other sites
neneboricua19    634
I took a look at the docs and so far, they seem fine. They're light on the technical things but I'm guessing the first chapter is meant to be more of an introduction to the concept of 3D on a computer screen.

I know you have thesis requirements that may be pushing this, but I would say you should decide early in the project on who exactly will be the audience for this work. Will it be total newbies that need to have the concept of 3D graphics explained to them, or will it be people who know 3D graphics in general but are looking to use your engine to implement their game?

By identifying your audience from the beginning, your code and documentation will be much more effective in achieving the desired results.

neneboricua

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this