possible for me to make game by myself?
Is it possible for one person to program a simplistic 3D role playing game? I'm talking no special lighting effects - just loading the objects in and creating a battle system, overworld, moving character, menu system, etc... basic things. I'm wondering how doable this is because I have all this creative talent, but I can't seem to put it to good use without knowing how to program. I can create all kinds of wonderful things in Maya, know how to UV texture and create textures in Photoshop, export in .x format, and create storylines and complex battle systems, but it's all worthless if I can't bring it all to life. I want to create a world that doesn't just exist as a jpg or text.
I know C++, but DirectX is difficult for me to learn. The tutorials I've seen online and in books are pathetic. Maybe I'm not looking in the right place or something, but I've had a bad experience so far. For instance, trying to load a 3D mesh is simple - the documentation is right in the DirectX help tutorials of the SDK. But every online tutorial regurgitates that. I've never seen a tutorial go any deeper than the basic loading method in the SDK help. That method is far different than what is required if you want to load TWO meshes in. The code has to be rewriten to handle hundreds of objects. I have not seen one tutorial that shows how to make a mesh an actual object. The only tutorials out there are the ones that show you how to load a .x file and rotate the world matrix. I don't want to rotate the world matrix, I want to rotate the object. I want to move that object on the x axis. So it is very hard for me to learn DirectX. Maybe I don't know where to look.
But even though this is hard, I am still working hard at this. I have been meddling with D3D for about a year now, off and on, very very slowly. I keep coming back to it. I really do want to learn more, but I'm tired of going at it at a snail's pace. I think that once I learn how to load objects properly I might get on a role though.
But I'm still wondering how doable it would be for me to eventually create what I want all on my own. I live in Kentucky. There are no programmers here. I am alone. So alone...
I recommend you to start of using LGPL projects to wrap up
your own game engine and write your game on the top of that.
Read some books/tutorials/articles about game programming and
you'll probably get an idea how to start.
I personaly recommend you to use Ogre3D, a good
and quite easy to learn 3D engine (http://www.ogre3d.org).
You can find other nice libaries to use in your game engine
here:
http://www.ogre3d.org/wiki/index.php/Libraries
good luck!
your own game engine and write your game on the top of that.
Read some books/tutorials/articles about game programming and
you'll probably get an idea how to start.
I personaly recommend you to use Ogre3D, a good
and quite easy to learn 3D engine (http://www.ogre3d.org).
You can find other nice libaries to use in your game engine
here:
http://www.ogre3d.org/wiki/index.php/Libraries
good luck!
Possible? Yes
Feasible? Not for most people, if you only have five or six hours a week to dedicate to programming it could take years to write a game, not mention you'll have to make all the character models, levels, and UI in addition to programming the game (which includes AI, Physics, Game Logic, Rendering, and Sound). So try to start small, as finished games tend to impress folks a lot more then a pile of code which to sane people looks like gibberish.
As for the model issue, you understand the model-to-world and world-to-camera transformations right? For the model-to-world transformation you can scale an object, translate an object, or rotate an object (you can also skew an object, though that's generally not needed). So basically you fill in your matrix with translation data, and then multiply every vertex with that matrix and you get the final position of your model, which you then add to your vertex buffer. If you want the model to appear twice you just need two matrices with different values, you multiply by the model vertexes and add them all to the vertex buffer for rendering.
Feasible? Not for most people, if you only have five or six hours a week to dedicate to programming it could take years to write a game, not mention you'll have to make all the character models, levels, and UI in addition to programming the game (which includes AI, Physics, Game Logic, Rendering, and Sound). So try to start small, as finished games tend to impress folks a lot more then a pile of code which to sane people looks like gibberish.
As for the model issue, you understand the model-to-world and world-to-camera transformations right? For the model-to-world transformation you can scale an object, translate an object, or rotate an object (you can also skew an object, though that's generally not needed). So basically you fill in your matrix with translation data, and then multiply every vertex with that matrix and you get the final position of your model, which you then add to your vertex buffer. If you want the model to appear twice you just need two matrices with different values, you multiply by the model vertexes and add them all to the vertex buffer for rendering.
Maybe you could take a look at XNA. It uses C# and makes 3D/2D a lot easier. Of course, there is NO fixed function pipeline in it as 360 does not support ffp, but the basiceffect Microsoft supplies basically handles that. There is a great community and it is only getting bigger/better.
Oh yeah, wanted to mention, just because it makes programming easier, doesn't mean its of poor quality or performance. There are plenty of fantastic demos/games/starter kits available to check out. I personally am using XNA now for a 2D MUD (not read MMORPG).
You can check out more at...
http://creators.xna.com/ <---Microsoft's homebase for XNA
http://www.xnaresources.com/ <---Great tutorial/link site
P.S. You are not alone in KY, I am in Lexington and I know a few programmers here. My email is imgelling@gmail.com if ya would like to talk or need some help.
Oh yeah, wanted to mention, just because it makes programming easier, doesn't mean its of poor quality or performance. There are plenty of fantastic demos/games/starter kits available to check out. I personally am using XNA now for a 2D MUD (not read MMORPG).
You can check out more at...
http://creators.xna.com/ <---Microsoft's homebase for XNA
http://www.xnaresources.com/ <---Great tutorial/link site
P.S. You are not alone in KY, I am in Lexington and I know a few programmers here. My email is imgelling@gmail.com if ya would like to talk or need some help.
Horatius83: Yeah, but with D3DXLoadMeshFromX() you can't specify a matrix for D3DXMatrixTransformation(). You have to do more and it's been difficult for me to figure out how to do it. The only thing I know is that I need to do something with D3DXVECTOR3. No D3D tutorial goes past a run-through of D3DXLoadMeshFromX().
I'll take a look at these engines you all are talking about. I might just try to keep plugging away at DirectX though. I've come so far in getting a Windows window to be created and properly initialize D3D and whatnot. I'm really determined to learn it. Also, I don't just have a few hours every week to program. I basically only sit at my computer if I'm not working or sleeping. So that's about 20 hours a week of programming, not counting the weekends where I would probably program non-stop. But most of that would probably be learning and not actual programming because I don't know DirectX.
I'll take a look at these engines you all are talking about. I might just try to keep plugging away at DirectX though. I've come so far in getting a Windows window to be created and properly initialize D3D and whatnot. I'm really determined to learn it. Also, I don't just have a few hours every week to program. I basically only sit at my computer if I'm not working or sleeping. So that's about 20 hours a week of programming, not counting the weekends where I would probably program non-stop. But most of that would probably be learning and not actual programming because I don't know DirectX.
Quote:Original post by Darkware
I basically only sit at my computer if I'm not working or sleeping.
Maybe you should get a life then? ;-)
It's definetly possible - if you ever need inspiration, check out Dan Green's Journal - Radioactive-Software
Agreed it's definitely possible. Go for it.
Seconded. It's just mindblowing what this man has accomplished.
Quote:check out Dan Green's Journal - Radioactive-Software
Seconded. It's just mindblowing what this man has accomplished.
Hi, I remember learning directx, I used to use them tutorials as well, everything I did for about 2 years was based on them. I get on ok with dx now, but I still don't know about texture stages and blending etc.
One thing that probably slowed me down alot is that I was learning dx and c++ at the same time. When I got a bit better at c++ the directx side became easier as well, because then I could understand more of what the code was doing.
Take some time to learn more c++. go back to console programs if you have to. Learn some stl, - vector is the probably the most useful one to start with, also std::string for any text etc. (string can return a char* array for using with the dx functions, like your model names etc).
Try and make a class to encapsulate the mesh loading, (and a mesh of course), -so that one instance of the class holds one mesh.
You could also get Frank Luna's directx book as well, that might be a help (although it gets into a lot quite quickly & also I think you need at least fairly good c++ for it).
I only did this quickly to maybe give you some idea or something, obviously you'd need to do the class properly etc.
Hope that helps.
One thing that probably slowed me down alot is that I was learning dx and c++ at the same time. When I got a bit better at c++ the directx side became easier as well, because then I could understand more of what the code was doing.
Take some time to learn more c++. go back to console programs if you have to. Learn some stl, - vector is the probably the most useful one to start with, also std::string for any text etc. (string can return a char* array for using with the dx functions, like your model names etc).
Try and make a class to encapsulate the mesh loading, (and a mesh of course), -so that one instance of the class holds one mesh.
//Very simple idea for a mesh class.//Load the mesh, - make sure your class has everything it needs for loading,//- just like the tutorial sample. Material buffer etc.void Load(std::string meshname)//The texture name is usually got from the file when loading.{ // use meshname.c_str(), to get the meshes name for the mesh loading //function. (also basically copy what the tutorial does).};//call for each mesh / instance - followed by Draw(), in the render loop.void WorldTransform(D3DXVECTOR3 vec3){ //Make sure the programs main SetMatrices() function doesn't have a world//transform, "D3DTS_WORLD" type, (except maybe D3DXMatrixIdentity, as we are //doing that part here. D3DXMATRIXA16 matWorld; //make into a class member. D3DXMatrixTranslation( &matWorld, vec3.x, vec3.y, vec3.z); //You'll need to either pass g_pd3dDevice into the function as well, //or get/save a pointer to it maybe in the load function. You'd need //an LPDIRECT3DDEVICE9 member, to *point* to it. - p_local_d3ddev = //g_pd3dDevice; g_pd3dDevice->SetTransform( D3DTS_WORLD, &matWorld );}//Do the same as the tutorial does again.void Draw();void CleanUp(); //release the mesh & any resources etc.//In the render loop you only have to call the main SetMatrices function //once, then call the WorldTransform() function followed straight away //by the Draw finction for each mesh object / instance.
You could also get Frank Luna's directx book as well, that might be a help (although it gets into a lot quite quickly & also I think you need at least fairly good c++ for it).
I only did this quickly to maybe give you some idea or something, obviously you'd need to do the class properly etc.
Hope that helps.
I'd second the recommendation to try XNA. It's designed to make it possible for individual hobbyists to put together simple games and it cuts out a lot of the hassle of just getting something simple up and running under straight DirectX / Win32 with C++. It's well supported and has a growing community around it.
It is certainly possible for one person to make a simple 3D role playing game but it does require more dedication and time commitment than many people are willing or able to dedicate to a hobby. If you have the time and the motivation though it's achievable with straight DirectX and C++. XNA will definitely save you time though. If you're more interested in the artistic side than the programming aspects you might be better off using a higher level graphics engine like Ogre or a complete game engine like the Torque engine to save you having to learn a lot about programming and 3D math just to get a 3D model moving around on screen. Making a mod for an existing game similar to the kind of thing you want to make is another option - for an RPG something like Neverwinter Nights or Dungeon Seige would give you a ready made base for building a fairly sophisticated RPG.
It is certainly possible for one person to make a simple 3D role playing game but it does require more dedication and time commitment than many people are willing or able to dedicate to a hobby. If you have the time and the motivation though it's achievable with straight DirectX and C++. XNA will definitely save you time though. If you're more interested in the artistic side than the programming aspects you might be better off using a higher level graphics engine like Ogre or a complete game engine like the Torque engine to save you having to learn a lot about programming and 3D math just to get a 3D model moving around on screen. Making a mod for an existing game similar to the kind of thing you want to make is another option - for an RPG something like Neverwinter Nights or Dungeon Seige would give you a ready made base for building a fairly sophisticated RPG.
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement