Hi there!

Started by
13 comments, last by lightxbulb 10 years, 12 months ago

Hi!

I am relatively new to game development and I'm not really that focused on game development (I find graphics and physics interesting on themselves). My programming history is kinda noobish wub.png I used to program on BlitzBasic 3d and BlitzMax. At least BlitzMax had OOP and Blitz 3d gave me ideas about how things would work at a higher level and especially when it comes to entities(well I think it was good fro a start). Since then I haven't progressed that much - I read this http://www.cplusplus.com/doc/tutorial/ and I am reading it for a 2nd time(had to refresh my memories as I did not program for a few years), I've read one book on C++ also(asn't really that good though - too much text - too little of the gist of things). I think I got the basics down or really the basics of the basics. I'm looking to improve myself more when it comes to C++ so if you can recommend me some (really) good books on C++ - especially ones with a lot of examples and exercises, I'd be really happy smile.png .

I also got really interested in 3d a few years ago and I've been reading on it (though not on the APIs - rather on the maths and ideas behind it) - I read two books on analytical geometry to get the basics down so I'm pretty confident when it comes to things as matrices, transformations, normals, intersection calculations etc. If you got any really good recommendations about books on maths especially when it concerns graphics&physics I'll be more than happy to hear them.

I am currently trying these tutorials: http://rastertek.com/tutindex.html on DX11 and I must say I find them kinda hard - I mean they require a lot of knowledge on DX commands, structures etc. so I am not sure they are the best for me but still I am trying my best - I managed to do all the exercises after each of the tutorials I read but I don't think the exercises at the end are that hard - maybe it's just me - but when I go over a code I like to know how each and every command and struct works - so if anybody knows any "easier" tutorials(rather with more explanations) I'd be happy to know of them. Btw are these books good: http://d3dcoder.net/ - do you know any better ones?

I was also thinking of learning more on windows programming as it's needed for DX programming - I got the basics down(I mean I can do a window for my DX app) but I know that there are too many things I don't know about it - I've been using the msdn tutorials on windows and I'm thinking of checking these ones: http://www.winprog.org/tutorial/start.html Windows programming is not a priority for me but I'd like to learn to code for Windows.

Also, I'm not a fan of engines, but if you would recommend an engine(for example irrlitch) I guess I'll check it out and maybe try to code on it - it's just this is not really my goal. And speaking of goals - to get a better idea of what I want here are my goals:

1) Get better at C++(obviously I would need it for pretty much everything)

2) Learn OpenGL and DX programming (and I'd rather have it low level and not through and engine or whatever)

3) Make my own software renderer and raytracer (as an insight in how things work)

4) Try out various physics engines like Tokamak and Ode - best of all understand how they work and write my own just to get the idea about it.

5) Learn more on Windows API

Any constructive advice and criticism are welcome! smile.png

Advertisement

You could download this sample I created for DX9 using C++ and Windows APIs. It's a great place to start. Try compiling it and making changes to it. There are plenty of easy to fix bugs in it too :)

https://dl.dropboxusercontent.com/u/8974528/BigWorldToShare.zip

Please let me know if it doesn't run for you, someone else told me it crashed on the loading screen around 2%, however I've run it successfully on two different 64-bit machines running Win7 or higher and with at least 2GB of RAM.

I don't know if these are "easier" but I've been spending my time using both rastertek and this site: http://www.braynzarsoft.net/index.php?p=DX11Lessons

Thanks a lot guys!

Will check the site and the code smile.png

Btw any books you'd recommend or other tutorials(C++, OpenGL, DX, Windows)?

Has anybody read Frank Luna's books on DX - what do you think about them?

Frank Luna's books are excellent! The code I posted is a mixture of some DX9 SDK samples and two of Frank Luna's samples from his DX9 game programming book.

Luna's books are great, highly recommended. I bought the D3D9 one (Shader Approach), so expect his D3D 11 book is equally good. You can actually download the source code here.

Unlucky for him, I did not buy the D3D11 one, since it came later than Practical Rendering and Computation with Direct3D 11. Which is also a fantastic book, though I would only recommend it to someone already experienced with a low level graphics API (say, if you come from OpenGL or D3D9).

Since they stripped lot of the utility stuff in the D3D11 SDK, also download DirectX Toolkit.

Though directed at XNA/C#, I repeatedly found Riemer's Tutorials quite resourceful when it comes to shaders.

PS: Avoid directxtutorial.com. It's commercial and teaches some bad practices.

Thanks a lot for the useful advice guys.

PS: Avoid directxtutorial.com. It's commercial and teaches some bad practices.

I actually already tried it (the free part) and then decided to stick to rastertek. Will probably buy one of Luna's books.

Hi,

smile.png

Also, I'm not a fan of engines, but if you would recommend an engine(for example irrlitch) I guess I'll check it out and maybe try to code on it - it's just this is not really my goal. And speaking of goals - to get a better idea of what I want here are my goals:

How can you not be a fan of game engines when they can save you years and maybe decades in your learning? Game engines take 5 to 10 years to develop well and a team.

Using an existing game development engine is like acquiring horses, training to use them, and putting them to work. Making your own lower level software is like compounding the difficulty by breeding your own horses from birth, then breeding with other horses, training to use them, and putting them to work.

Everything about your first post shows that you want to build the infrastructure or logistics (lower level pipeline) without having first learned the vehicles (games) which use them. The attempted shortcut here will actually result in far more time to develop a game engine than if you learned game development first. Another way of looking at it is that you are trying to develop the rocket launch facility (game engine) before understanding rockets (games).

Game Engines List:

http://en.wikipedia.org/wiki/List_of_game_engines

Learning on a game engine for at least a couple years is a REQUIREMENT if you want to avoid adding years to your confusion. Consider using an existing game engine as school for thought and be dedicated to learning one well.




1) Get better at C++(obviously I would need it for pretty much everything) This is incorrect perception. Some programmers, game developers, or even game engine developers have published little or nothing for games in C++ and with much success using other languages. You really need to read threads on other languages and look at other game engines not using C++ to balance your research. In the broader picture of things, C++ is not required, but may be preferred by some coders.

2) Learn OpenGL and DX programming (and I'd rather have it low level and not through and engine or whatever) Here is another misconception. Game engines have interface between the developers and the machine/assembly language as does OpenGL and Direct3D, but game engines vastly increase productivity by a multiple factor compared to raw lower level coding. Using only the graphics APIs will result in much more work to develop a certain high quality game compared to using a game engine.

A better strategy long term is to use a game engine which integrates with graphics API coding (OpenGL and Direct3D) in the development pipeline.

3) Make my own software renderer and raytracer (as an insight in how things work) In many cases, these two are totally unrelated to the development of certain games. These methods of implementation are CPU and GPU resource intensive to the point of only being used sparingly in games due to hit on performance. Indeed, world class games continue to be made with no raytracing or custom made renderers, the majority being the case. Do you want to add another layer of difficulty and years of delay to your development goals?

4) Try out various physics engines like Tokamak and Ode - best of all understand how they work and write my own just to get the idea about it. This is like wanting to develop your own boat just "to get the idea about it". Existing libraries have all major languages covered in physics and it would take you 5 to 10 years in game development, engine development, and tool creation experience before you catch them in the race. They have a huge head start on you, basically having accomplished what is needed in the way of physics engines. Odds are that you will never reach them in quality and development friendliness.

5) Learn more on Windows API This is useless for many (most?) games. If you want to specialize in Windows game development then there is nothing wrong with this strategy. If you want your software to be cross-platform in OS and hardware then this is a detour to the desert.



Any constructive advice and criticism are welcome!

I like that you think and feel big. Lofty goals are generally good to have, but you need to make 5 to 10 games first. You need to understand the coding of games in order to make the lower level framework that you want, again - first. You want to make a sea port without first knowing the specifications of the vessels which will use it? I think not.

Develop games for a couple years before you go trying to make a framework.

Personal life and your private thoughts always effect your career. Research is the intellectual backbone of game development and the first order. Version Control is crucial for full management of applications and software. The better the workflow pipeline, then the greater the potential output for a quality game. Completing projects is the last but finest order.

by Clinton, 3Ddreamer

@3dDreamer:

Seems you misunderstood me - I'm not in a haste to develop a game or anything smile.png

I just like learning how things work at the core.

I like that you think and feel big.

I neither think nor feel big actually - I know that I'm lacking too much knowledge in various areas and I lack certain skills - that's why I'm striving to improve - and what better way than finding good tutorials/books etc?

Lofty goals are generally good to have, but you need to make 5 to 10 games first.

As I said that's not something with priority in my list. I'd rather study how to make various shader effects than code a game - it's just that I find it more fun. And it's not like I haven't coded anything - Blitz3D and BlitzMax actually kinda have an integrated engine.

Develop games for a couple years before you go trying to make a framework.

I actually don't get your point. That would've been a good suggestion if my aim was to make an uber-game, however my main goals are not making a game.

How can you not be a fan of game engines when they can save you years and maybe decades in your learning? Game engines take 5 to 10 years to develop well and a team.

I get what you mean - try transitioning from an uber-user-friendly language like Blitz3D to C++ and you'll see that I get exactly what you mean.

I know that libraries, engines etc. can save you tons of time - for one thing I wouldn't start to write my own standard library for C++. However my goals are exactly to understand how things work at the core - basically to understand in depth how 3d graphics work you should work with it - what better way than learning DX and OpenGL and writing a software renderer?

Everything about your first post shows that you want to build the infrastructure or logistics (lower level pipeline) without having first learned the vehicles (games) which use them. The attempted shortcut here will actually result in far more time to develop a game engine than if you learned game development first. Another way of looking at it is that you are trying to develop the rocket launch facility (game engine) before understanding rockets (games).

Once again - I think we have a misunderstanding smile.png I am sorry if my first post came out wrong. You seem to have the idea that I want to develop a game engine - that's not the case though.

This is incorrect perception. Some programmers, game developers, or even game engine developers have published little or nothing for games in C++ and with much success using other languages. You really need to read threads on other languages and look at other game engines not using C++ to balance your research. In the broader picture of things, C++ is not required, but may be preferred by some coders.

I want to learn C++ better not because I want to code games faster/better. You seem to think that all of my goals are based around game development - this is not the case = sorry if I caused you to misunderstood smile.png

All of your other points are once again answers based on the idea that I have game development as my main goal.

Do you want to add another layer of difficulty and years of delay to your development goals?

You regard it from the wrong perspective - for me developing a software render won't be "a layer of difficulty and years of delay" to my "development goals" - coding a software renderer is one of my goals on itself - so it will be fun years of learningsmile.png

Existing libraries have all major languages covered in physics and it would take you 5 to 10 years in game development, engine development, and tool creation experience before you catch them in the race.

Once again - I don't plan on "catching anybody in the race" - I just want to code a physics engine just because I find it interesting and fun.

This is useless for many (most?) games. If you want to specialize in Windows game development then there is nothing wrong with this strategy. If you want your software to be cross-platform in OS and hardware then this is a detour to the desert.

Well obviously I'll mainly use my knowledge on Windows API not to code games but rather to be able to code Windows apps.

Thanks for the advice anyways. I'd be really more helpful if you could add some books you find good(not on game engines), tutorials etc. - basically what I asked for in my original post. Thanks!smile.png

This topic is closed to new replies.

Advertisement