• Announcements

    • khawk

      Download the Game Design and Indie Game Marketing Freebook   07/19/17

      GameDev.net and CRC Press have teamed up to bring a free ebook of content curated from top titles published by CRC Press. The freebook, Practices of Game Design & Indie Game Marketing, includes chapters from The Art of Game Design: A Book of Lenses, A Practical Guide to Indie Game Marketing, and An Architectural Approach to Level Design. The GameDev.net FreeBook is relevant to game designers, developers, and those interested in learning more about the challenges in game development. We know game development can be a tough discipline and business, so we picked several chapters from CRC Press titles that we thought would be of interest to you, the GameDev.net audience, in your journey to design, develop, and market your next game. The free ebook is available through CRC Press by clicking here. The Curated Books The Art of Game Design: A Book of Lenses, Second Edition, by Jesse Schell Presents 100+ sets of questions, or different lenses, for viewing a game’s design, encompassing diverse fields such as psychology, architecture, music, film, software engineering, theme park design, mathematics, anthropology, and more. Written by one of the world's top game designers, this book describes the deepest and most fundamental principles of game design, demonstrating how tactics used in board, card, and athletic games also work in video games. It provides practical instruction on creating world-class games that will be played again and again. View it here. A Practical Guide to Indie Game Marketing, by Joel Dreskin Marketing is an essential but too frequently overlooked or minimized component of the release plan for indie games. A Practical Guide to Indie Game Marketing provides you with the tools needed to build visibility and sell your indie games. With special focus on those developers with small budgets and limited staff and resources, this book is packed with tangible recommendations and techniques that you can put to use immediately. As a seasoned professional of the indie game arena, author Joel Dreskin gives you insight into practical, real-world experiences of marketing numerous successful games and also provides stories of the failures. View it here. An Architectural Approach to Level Design This is one of the first books to integrate architectural and spatial design theory with the field of level design. The book presents architectural techniques and theories for level designers to use in their own work. It connects architecture and level design in different ways that address the practical elements of how designers construct space and the experiential elements of how and why humans interact with this space. Throughout the text, readers learn skills for spatial layout, evoking emotion through gamespaces, and creating better levels through architectural theory. View it here. Learn more and download the ebook by clicking here. Did you know? GameDev.net and CRC Press also recently teamed up to bring GDNet+ Members up to a 20% discount on all CRC Press books. Learn more about this and other benefits here.
Sign in to follow this  
Followers 0
lightxbulb

Hi there!

14 posts in this topic

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

1

Share this post


Link to post
Share on other sites

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.

1

Share this post


Link to post
Share on other sites

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?

Edited by lightxbulb
0

Share this post


Link to post
Share on other sites

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.

1

Share this post


Link to post
Share on other sites
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. Edited by unbird
1

Share this post


Link to post
Share on other sites

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.

0

Share this post


Link to post
Share on other sites

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.

Edited by 3Ddreamer
1

Share this post


Link to post
Share on other sites

@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

1

Share this post


Link to post
Share on other sites

Have you considered SlimDX and C#, lightbulb ?

 

Like you I find graphics programming far more interesting, at least right now, than game development. I moved from a middleware engine, which I used with Delphi and C++, to D3D/C++ a while ago and got far enough in to it to know that my limited skills in C++ were hindering my progress. So I recently moved to C# and SlimDX and have become more productive. It's still D3D so the tutorials, samples and books are still relevant. But it removes the unwieldy C++ complexity. Doing so might help you ease things a bit and gain a better grasp -- at which point you could always switch back to C++ if one of your goals is to do so.

2

Share this post


Link to post
Share on other sites

Jep, my vouch for SlimDX or SharpDX too, if you're mainly after D3D programming. The latter has ongoing development, comes with a XNA-like framework and currently they even integrate Assimp (3D-Model importer).

 

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

 

Starting with D3D11 is hard, I don't think you will find anything easier. Luna is really your best shot here, he progresses slowly and hardly skips any details. He also has good (sometimes not so trivial) exercises wink.png.

 

When you feel comfortable enough, you can also make up your own "exercises" (e.g. ask yourself if and how a certain algorithm could be implemented on the GPU) and start reading more advanced stuff and try to implement them yourself. The [url="http://http.developer.nvidia.com/GPUGems/gpugems_pref02.html"]GPU Gems[/url] series is highly recommended in this regard.

1

Share this post


Link to post
Share on other sites

Actually I've been recommended to switch to C# numerous times. Most of the times the argument is that it is "easier"(faster to work with, less cumbersome etc.) I'll probably stick to C++ for a while and maybe after that I'll try C# - thanks for the advice anyways smile.png

But it removes the unwieldy C++ complexity.

By complexity you mean?

 

Jep, my vouch for SlimDX or SharpDX too, if you're mainly after D3D programming. The latter has ongoing development, comes with a XNA-like framework and currently they even integrate Assimp (3D-Model importer).

No I am not mainly after D3D programming. I'd like to learn to program better in C++ as much as I like graphics (and I won't limit myself to D3D only).

 

Starting with D3D11 is hard, I don't think you will find anything easier. Luna is really your best shot here, he progresses slowly and hardly skips any details. He also has good (sometimes not so trivial) exercises wink.png.

Thanks, at least now I'll know that I am not missing something vital - it's nice knowing which books and tutorials to use when learning something smile.png

 

When you feel comfortable enough, you can also make up your own "exercises" (e.g. ask yourself if and how a certain algorithm could be implemented on the GPU) and start reading more advanced stuff and try to implement them yourself. The GPU Gems series is highly recommended in this regard.

Yeah I thought of checking GPU and Game programming gems after I progress more. 

 

Thanks for the valuable advice guys!smile.png

0

Share this post


Link to post
Share on other sites

By complexity you mean?

 

Nothing specific, just in general I find C++ more complex and heavy. Which I really like but it adds strain on me trying to learn two things at once. With C# I can pretty much just focus on D3D whereas before I was battling both D3D and C++.

0

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  
Followers 0