Sign in to follow this  

So I want to be a game developer....

This topic is 1947 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hello all.

I've been reading a bunch of forum posts about game development and I've decided to take the plunge and ask for some advice.

I'm currently a returning adult student in college studying Computer Science. I'm familiar with Java (OOP), Basic, Assembly and a little C. I also know SQL, HTML/CSS, and Based on what I'm understanding I should first teach myself C/C++ and maybe C# depending on if I want to develop with XNA or something like it.

I'm trying to be as realistic as possible, so please feel free to give me input on what I need to do before even thinking about making games or how I should set myself up for long term success instead of an easy way out.

My questions are:

1) Everyone seems to jump right into 3D game design now. Should I be doing that, or focusing more on 2D first? If so in what capacity? What books or examples of learning activities would you recommend?

2) Should I learn DirectX or OpenGL APIs after learning C++? I mean this as "Should I learn either of them, or should I not?"

3) I've seen people are using Unity3D, are they able to do that with only a C#, Boo, or JavaScript background? Why would someone need to learn C or C++ in order to make a game with this? Is it looked down upon by game developers for using a pre-built engine, or is this a viable option? Will using this hurt me in the long run?

4) I'm looking to ultimately get into the gaming industry by "getting into the gaming industry" and making some games. What advice or route would you provide for me to hit the ground running and start on thetrack to having some "finished" projects on my resume? If I shouldn't be making games right now but rather still learning more and more things please tell me.

5) Why do people learn scripting languages such as Lua or Python with C++? How do they interact within game design? I'm familiar that Lua is/was used in making easier WoW expansions, but are they used just because they are easier for most people to use than C++?

6) There is a group (I'm from Milwaukee) near me that develops using Unity3D and lives near me. Even though I don't have C/C++ or C# experience yet, would you suggest I attend? Should I do certain things before attending first?

Everyone thank you very much for your time, and I'm looking forward to any and all input you can provide.

Chris

Share this post


Link to post
Share on other sites
[quote name='SimonForsman' timestamp='1343139725' post='4962603']
1) since you are studying CS you should probably wait with 3D until you've taken linear algebra, You can make 2D games using 3D graphics though without the math becoming much of a problem.[/quote]

I'm sorry I should have specified that I have taken Linear Algebra. I'm currently in my senior year.


[quote name='SimonForsman' timestamp='1343139725' post='4962603']
2) DirectX and/or OpenGL are good choices if you want to write low level rendering code, the modern versions of both are fairly similar and a good CS program should have elective courses on computer graphics that introduces you to OpenGL (and more importantly, the concepts behind it all)..[/quote]

We do have a computer graphics course for an elective offered. I assumed that it was more 2D graphics such as Illustrator and Photoshop, but I will e-mail my advisor and ask them what the class entails. Thanks for this valuable insight.


[quote name='SimonForsman' timestamp='1343139725' post='4962603']
3) Unity3D is fairly straightforward to get started with, you don't even need a background in the supported languages, as long as you know how to program you can use Unity3D fairly effectivly, (Your Java knowledge should be good enough to get your started, just keep a online C# reference at hand), Most professionals use pre-built engines(since it saves insane amounts of time) so its not looked down upon and i'd recommend atleast trying a few engines out at some point (even if you intend to write your own it doesn't hurt to see how others have done things)[/quote]

Do you recommend any Unity3D books? I've seen a couple on Amazon such as: Unity 3.x Game Development Essentials by Will Goldstone (Dec 20, 2011), and Creating Games with Unity and Maya: How to Develop Fun and Marketable 3D Games by Adam Watkins (Jul 21, 2011). Also, the book with Maya in it scares me a little. Are there free 3D animated models that I can use somewhere?

[quote name='SimonForsman' timestamp='1343139725' post='4962603']
4a) Make games, lots and lots of games on the side of your studies, you can use for example Unity. (Finished games are very valuable)
4b) Make some shiny tech demos using OpenGL or D3D (it doesn't have to be complete games)
4c) Make game related tools using whatever APIs you want (QT, C#/WinForms, Java/wxWidgets/Swing/Whatever)[/quote]

What do you mean by shiny tech demos? I'm a little confused as to what those are. Also what do you mean by game related tools? Any resources you could cite for learning these things would be very helpful.

[quote name='SimonForsman' timestamp='1343139725' post='4962603']
5) Scripting languages are easier to use so you can let non-programmers (level designers for example) use them to get custom behaviours without having to bother you all the time, they are safer so you can let users write their own scripts and distribute to other users without putting other users or your game at risk and finally, scripts are data that can be loaded and modified at runtime (which lets you change and tweek things while your game is running saving quite alot of time, especially on large projects where compile times with C++ start getting frustratingly long)[/quote]

Would you recommend me to learn a scripting language then even though I already know OOP with Java and working towards C++ and C#? If so which would you recommend? I keep hearing Python, with some talk about Lua.

[quote name='SimonForsman' timestamp='1343139725' post='4962603']
6) Go for it, you could download Unity3D yourself first and try to make pong first to see how you stand. (If your general programming knowledge is solid enough it shouldn't take you more than an hour or two (If you know Java allready C# won't cause you any problems, the two languages are extremely similar at the basic level and you won't need any advanced language features for a simple game such as pong)
[/quote]

I will definietely do that! Thank you so much for all the replies again!

Share this post


Link to post
Share on other sites
[quote name='Numerator747' timestamp='1343153804' post='4962685']
Unity has free online training seminars. They are definitely worth watching.
[/quote]

Thanks, I honestly had no idea about that. I think I'm going to take Simon's advice and download it right when I get home.

Share this post


Link to post
Share on other sites
[quote name='obizues' timestamp='1343141270' post='4962610']
[quote name='SimonForsman' timestamp='1343139725' post='4962603']
2) DirectX and/or OpenGL are good choices if you want to write low level rendering code, the modern versions of both are fairly similar and a good CS program should have elective courses on computer graphics that introduces you to OpenGL (and more importantly, the concepts behind it all)..[/quote]

We do have a computer graphics course for an elective offered. I assumed that it was more 2D graphics such as Illustrator and Photoshop, but I will e-mail my advisor and ask them what the class entails. Thanks for this valuable insight.
[/quote]

a good graphics course in a CS program should probably only cover the absolute basics of the API (enough to allow students to draw 2D lines and triangles) and then move over to software rendering to deal with things like projection and transformation properly. (at my school the course was called "Computer Graphics and Visualisation"). If they require students to take linear algebra first its probably a good sign.

[quote name='obizues' timestamp='1343141270' post='4962610']
[quote name='SimonForsman' timestamp='1343139725' post='4962603']
4a) Make games, lots and lots of games on the side of your studies, you can use for example Unity. (Finished games are very valuable)
4b) Make some shiny tech demos using OpenGL or D3D (it doesn't have to be complete games)
4c) Make game related tools using whatever APIs you want (QT, C#/WinForms, Java/wxWidgets/Swing/Whatever)[/quote]
What do you mean by shiny tech demos? I'm a little confused as to what those are. Also what do you mean by game related tools? Any resources you could cite for learning these things would be very helpful.
[/quote]
a tech demo is a small application that demonstrates technology, they are a good way to showcase your skills without the need to complete a full-scale project for them, here are two examples from AAA studios
CE3 - soft body physics: http://www.youtube.com/watch?v=DGN_s53iy6Q
FB2 - realtime radiosity: http://www.youtube.com/watch?v=O8730SR1POk
game related tools are things like level editors, etc, (Things you get for free with most big game engines), they're just normal applications that work with game related data, nothing special about them really. (Creating effective workflows is still hard though)
As for your other questions:
Yes you should learn more languages, (I'd recommend picking ones that are different from the ones you allready know to get a wide base)
Sorry, i can't recommend any Unity books, (I found the documentation on the unity website to be good enough though. Edited by SimonForsman

Share this post


Link to post
Share on other sites
[quote name='SimonForsman' timestamp='1343165563' post='4962741']
a good graphics course in a CS program should probably only cover the absolute basics of the API (enough to allow students to draw 2D lines and triangles) and then move over to software rendering to deal with things like projection and transformation properly. (at my school the course was called "Computer Graphics and Visualisation"). If they require students to take linear algebra first its probably a good sign.[/quote]

So should I then focus on taking those steps first before jumping right into Unity? In other words, should I just try to draw 2D lines and triangles? If so could you reference which API you would recommend and which language? Also would you mind explaining how this knowledge carries over to then using a program like Unity3D?

[quote name='SimonForsman' timestamp='1343165563' post='4962741']
a tech demo is a small application that demonstrates technology, they are a good way to showcase your skills without the need to complete a full-scale project for them, here are two examples from AAA studios[/quote]

I guess at this point I shouldn't focus as much on tech demos, and more on just getting to the point of developing the tech. I say this because I have no idea how I would even go about the most basic processes in these applications much less create a video.

[quote name='SimonForsman' timestamp='1343165563' post='4962741']
As for your other questions:
Yes you should learn more languages, (I'd recommend picking ones that are different from the ones you allready know to get a wide base)
[/quote]

I currently know Java very well, some C (working on C/C++), Basic(I learned a long while back), and Assembly. I understand that with scripting languages you can make changes without having to recompile. Would you recommend a scripting language? I was thinking about learning Python. Do you think a goal of learning C, then C++ then C# and then Python is logical, or would you recommend something else?

[quote name='SimonForsman' timestamp='1343165563' post='4962741']
Sorry, i can't recommend any Unity books, (I found the documentation on the unity website to be good enough though.
[/quote]

I found a book online that I will use in conjunction with the websites resources that appear to be pretty robust.



Moving on from here, could you just give me a rough layout of a roadmap I should follow to become successfully able to use a program like Unity to the best of my ability? I guess my biggest question is just how to get to that point. I also don't want to take any shortcuts or learn things halfway, I want to do it correctly.

Basically, I don't want to "not really understand how to render basic objects" but be able to drag and drop a character in Unity3D and make it walk in an environment without fully grasping what's happneing. If you can give me that I think it would be invaluable to me.

Thank you so much again for all your help!

Share this post


Link to post
Share on other sites
[quote name='obizues' timestamp='1343241086' post='4963019']
......
[/quote]

1) Just jump into Unity, its not hard, just keep things simple to start with.

2) If you allready know Java and C you shouldn't have to worry about C#, if you're using Unity you'll learn C# as you go anyway. (unless you use one of the other supported languages)
If i were you i'd make a few games using for example Unity3D and then look at Python (Wonderful language and quite a bit different from the ones you know) and Haskell (Very different) (You could also use Boo instead of C# with Unity3D which is very similar to Python)

3) As for a roadmap with Unity.

a) Make a pong game. ( Here is the one i made when i started to use Unity: http://www.reunited-guild.net/pong/ , its playable in the browser so no download required)
b) Make a slightly bigger game, maybe a sokoban clone (would teach you how to deal with multiple level and animated models)
c) Make something a bit more complex, maybe a platformer, try to incorporate physics (fairly easy with Unity and you most likely used basic physics for pong)
d) a multiplayer (networked) version of pong.
e) <insert your own game ideas here, just keep it reasonable>

If you want to learn how to render objects just write a simple model renderer with OpenGL or something, it isn't hard. (You can use OpenGL with Java(LWGJL), C#(OpenTK) or pretty much any language imaginable. (The hard part with rendering is to deal with complex scenes and advanced special effects(these tend to be very math heavy) in a reasonably efficient way). (You could try to make a pong game with straight OpenGL aswell, its not that much harder than doing it with Unity3D allthough it will take a bit longer)

Share this post


Link to post
Share on other sites
[quote name='SimonForsman' timestamp='1343247889' post='4963058']
If i were you i'd make a few games using for example Unity3D and then look at Python (Wonderful language and quite a bit different from the ones you know) and Haskell (Very different) (You could also use Boo instead of C# with Unity3D which is very similar to Python)[/quote]

I guess I was under the wrong impression with Unity3D. I had wrongly assumed it was an engine only used for 3D games. JWalsh also suggested Lua instead of Python. Why would you suggest Python instead of Lua? I understand each side probably has its pros and cons, but I'm interested in what part about it you like or don't like about Lua in order to make a decision.

[quote name='SimonForsman' timestamp='1343247889' post='4963058']
a) Make a pong game. ( Here is the one i made when i started to use Unity: [url="http://www.reunited-guild.net/pong/"]http://www.reunited-guild.net/pong/[/url] , its playable in the browser so no download required)
b) Make a slightly bigger game, maybe a sokoban clone (would teach you how to deal with multiple level and animated models)
c) Make something a bit more complex, maybe a platformer, try to incorporate physics (fairly easy with Unity and you most likely used basic physics for pong)
d) a multiplayer (networked) version of pong.
e) <insert your own game ideas here, just keep it reasonable>
[/quote]

I also was unaware that I could make games that I could export into .swf files with Unity3D. This seems like a great outline, and I see can all the fun trouble that I'll probably have as I go along from step to step.

[quote name='SimonForsman' timestamp='1343247889' post='4963058']
If you want to learn how to render objects just write a simple model renderer with OpenGL or something, it isn't hard. (You can use OpenGL with Java(LWGJL), C#(OpenTK) or pretty much any language imaginable. (The hard part with rendering is to deal with complex scenes and advanced special effects(these tend to be very math heavy) in a reasonably efficient way). (You could try to make a pong game with straight OpenGL aswell, its not that much harder than doing it with Unity3D allthough it will take a bit longer)[/quote]

What's the most used API? OpenGL, Direct3D, DirectX, a combination of all of them? I guess I don't fully understand how to go about learning how to render objects myself without a premade game engine. This is the greatest part of my confusion now that you have cleared up a really well thought out roadmap for my Unity experience.

Lastly, after following the instruction and tutorials on the Unity3D site will I be prepared in order to create a game like pong? In other words, will I need to look for additional sources at this point since I will most likely get "stuck."

Also when moving along with these projects do people generally post links to them in the forums for critique?

Thanks again for all of your time! Edited by obizues

Share this post


Link to post
Share on other sites
[quote name='JWalsh' timestamp='1343270851' post='4963161']
Coming from Java you'll probably stumble over the syntax a little bit, but you'll learn C# as you go along, and probably have a blast doing it.[/quote]

So would you suggest I just skip C and C++ for now and move directly to C#?

[quote name='JWalsh' timestamp='1343270851' post='4963161']
But... that doesn't replace the need to fully understand how a graphics pipeline works. There's plenty of good documentation available on the web which details what happens to your 3D vertices/triangles as they're passed through the various stages of the pipeline. This is vital to understand... eventually. For the time-being, it's fine to, once you've been using Unity for a while, to try your luck at writing your own render-loop, that draws your own 3D models to the screen. This not only will require you to learn Graphics Programming fundamentals, but will also exercise your 3D math. As getting a 3D object to show up on a 2D surface is entirely about Linear Algebra and Transformations.[/quote]

This whole part completely confuses me. I think this is where my knowledge is lacking the most. I'm not exactly sure as to what the graphic "pipeline" even is and I have no idea how I would even go about starting to write my own graphic look. If you agree with Simon's path to take through Unity3D, what path would you say I should follow in order to fully understand what's happening graphically? How does this apply to programs like Unity3D?

[quote name='JWalsh' timestamp='1343270851' post='4963161']
As to your scripting questions, Lua is designed as an embedded language and is more often used for scripting game engines than Python. Cheers and good luck to you. I [/quote]

What exactly does a scripting language offer compared to using a normal language like C#? I guess I don't understand why I would use Python or Lua if I'm using Unity3D and it uses C#.

Thank you very much for your time and input!

Share this post


Link to post
Share on other sites
[quote name='obizues' timestamp='1343308827' post='4963292']
[quote name='JWalsh' timestamp='1343270851' post='4963161']
But... that doesn't replace the need to fully understand how a graphics pipeline works. There's plenty of good documentation available on the web which details what happens to your 3D vertices/triangles as they're passed through the various stages of the pipeline. This is vital to understand... eventually. For the time-being, it's fine to, once you've been using Unity for a while, to try your luck at writing your own render-loop, that draws your own 3D models to the screen. This not only will require you to learn Graphics Programming fundamentals, but will also exercise your 3D math. As getting a 3D object to show up on a 2D surface is entirely about Linear Algebra and Transformations.[/quote]

This whole part completely confuses me. I think this is where my knowledge is lacking the most. I'm not exactly sure as to what the graphic "pipeline" even is and I have no idea how I would even go about starting to write my own graphic look. If you agree with Simon's path to take through Unity3D, what path would you say I should follow in order to fully understand what's happening graphically? How does this apply to programs like Unity3D?
[/quote]

This really is a hard question to answer, if you take a good graphics class in college you should get the basics covered anyway so i wouldn't worry about it at this point (Unless you're more interested in graphics than in games, in which case you should skip Unity3D and go with OpenGL or Direct3D, just don't expect to make games quickly that way)

Direct3D is the graphics subset of the DirectX API. (Which also includes DirectSound, DirectInput, etc)
OpenGL and Direct3D are equivalent in terms of features, Direct3D is only for Microsofts platforms (Windows, xbox 360 and Windows Phone, OpenGL is available on all desktop operating systems, They are basically a standardized way to talk to the graphicscard driver. (which allows you to run the same code on AMD and nvidia GPUs for example) All higher level engines and libraries go through either OpenGL or Direct3D (or both)).
Consoles tend to have their own APIs and most smart mobiles(only real exception is Windows Phone) use OpenGL:ES (which is essentially a subset of OpenGL).

As for scripting, with Unity you don't need to worry about that, Unity uses C#, Boo(a variant of python) or UnityScript(a variant of ECMAScript/JavaScript) for scripting support, all languages give you full access to the engine so go with whichever you prefer.

[quote]
What exactly does a scripting language ....
[/quote]
Strictly speaking there is no difference between a Scripting language and a normal language, its all about how you use them.
If you use a language as a scripting language it will run inside another application and control its behaviour(in other words, you use the language to write scripts rather than applications). (C# is a scripting language when used in Unity3D and you could even use C++ as a scripting language with for example CINT if you if you feel like it (not in Unity though)).

Some languages, such as Lua were designed specifically for this purpose (Allthough Lua has been extended over the years and can be used as a general purpose language aswell), many scripting languages have alot of domain specific functionality built into them aswell, (JavaScript for example makes it really easy to manipulate websites)

Share this post


Link to post
Share on other sites
[quote name='SimonForsman' timestamp='1343311055' post='4963303']
This really is a hard question to answer, if you take a good graphics class in college you should get the basics covered anyway so i wouldn't worry about it at this point (Unless you're more interested in graphics than in games, in which case you should skip Unity3D and go with OpenGL or Direct3D, just don't expect to make games quickly that way)[/quote]

I definitely more interested in the production than the art, however I am going to play around a little with Blender. Their site seems to have a lot of tutorials and instructions much like Unity3D does.

[quote name='SimonForsman' timestamp='1343311055' post='4963303']
As for scripting, with Unity you don't need to worry about that, Unity uses C#, Boo(a variant of python) or UnityScript(a variant of ECMAScript/JavaScript) for scripting support, all languages give you full access to the engine so go with whichever you prefer.[/quote]

Okay excellent. So basically as a person seeking a job whether as a programmer or eventually a game designer I wouldn't be turned away for the reason of not having a scripting language under my belt?

Share this post


Link to post
Share on other sites
[quote name='JWalsh' timestamp='1343321560' post='4963367']
As for the scripting language, I personally wouldn't bother with either. Lua is more frequently used in the industry for scripting, but it's easy to pick up when you need it. As for the purpose of a scripting languages in games, there are three reasons.[/quote]

So do you think I would not be turned down for a job whether as a programmer or as a future game designer because I haven't learned a scripting language?

[quote name='JWalsh' timestamp='1343321560' post='4963367']
I could either code those up in the game code, but then any changes would require the designer re-compile the game. (Scary), or I can add support within my game for loading and processing scripts. Then the designers modify the scripts to change the game behavior, and neither I nor they have to re-compile.[/quote]

So if a script was set up for an enemies health, if you found them to be too strong, you could change the script value of 200HP to 150HP without restarting the game and recompiling your code, and see the change in results? If this is the case, what limitations are there for what can be scripted? Or would it just be harder to write a game full of scripts and be close enough to the computer to accomplish what you want?

[quote name='JWalsh' timestamp='1343321560' post='4963367']
[size=5]Graphics Pipeline....[/size]
[/quote]

This is so out of my league right now. Is this something I will learn as I move forward, because to be honest I understand what you are saying but actually applying that into a real situation would just be me throwing darts with a blindfold on.

[quote name='JWalsh' timestamp='1343321560' post='4963367'][list=1]
[*]Make 2D games with XNA in C#
[*]Make 3D games with Unity (and C#)
[*]Make 3D games with XNA in C#
[*]Make 3D games with SharpDX in C# (SharpDX is a very thin managed wrapper around DirectX)
[*]Make 2D/3D games with DirectX11 using C++
[/list]
[/quote]

That sounds awesome, and like a great outline for me to follow.

Share this post


Link to post
Share on other sites
[quote name='obizues' timestamp='1343325005' post='4963383']
So do you think I would not be turned down for a job whether as a programmer or as a future game designer because I haven't learned a scripting language?
[/quote]

Whenever you apply for a job, your skill-set will be matched against the needs of the company. As most programmers aren't expected to do scripting, it's unlikely it would have an impact. On the other hand, if you plan to apply to game companies as a designer, then you likely want to have experience with multiple scripting languages. The best way to figure out which ones is to look on the hiring portals of various game websites and see what languages companies are looking for. The most popular online job portal for games is [url="http://gamasutra.com/jobs"]Gamasutra's Jobs Portal[/url]. And of course, you can always look at the "Jobs/Hiring" pages of your favorite game companies.

[quote name='obizues' timestamp='1343325005' post='4963383']
So if a script was set up for an enemies health, if you found them to be too strong, you could change the script value of 200HP to 150HP without restarting the game and recompiling your code, and see the change in results? If this is the case, what limitations are there for what can be scripted? Or would it just be harder to write a game full of scripts and be close enough to the computer to accomplish what you want?
[/quote]

Scripts are usually put in place to change behaviors, not values, though the principal is much the same. For changing values, such as enemy health, there's usually some kind of editor or database application that shows the health of the monsters. The value would be updated in the application and the level/monster data saved to disk. This data file then gets loaded into the game and the new value would be there.

Scripts are more like making alarms go off or creatures spawn when someone opens a door or moves into a specific area.

[quote name='obizues' timestamp='1343325005' post='4963383']
This is so out of my league right now. Is this something I will learn as I move forward, because to be honest I understand what you are saying but actually applying that into a real situation would just be me throwing darts with a blindfold on.
[/quote]

It's something you'd learn in a computer graphics class. It is also something you can learn on your own as you advance your studies. If you use Unity, you don't have to worry about it at all. If you use XNA, the steps of the pipeline are handled for you, but you have to provide the Graphics API with the model objects you want it to draw (just a couple lines of code).

Another nice benefit of XNA is you can take baby steps. 1. You can use models and the BasicEffect class, which pretty much does everything for you. 2. You can use models but then write your own effects and Real-Time shaders. This gives you more control over the graphics pipeline and lets you control the vertex and pixel shading parts of the pipeline. That's the per-vertex or per-pixel lighting and texturing steps I outlined above. 3. You can create your own vertex & index buffers and use your own real-time shaders. At this point you've got more or less complete control of the pipeline and can do hardware instancing, advanced shading algorithms, hardware skinning... you name it. But again, don't start there. Just start making simple, manageable 2D games in XNA.

One thing I recommend to people, and the first tutorial series I wrote here on GameDev.net back in the late 90's was "OldGames: Making Games from Old to New". Basically, start by making a pong clone, then move on to Asteroids, Galaga, Tetris, Pac-Man, etc... keep making simple 2D games beginning from the earliest PC games and working your way forward. In that way, your capabilities continue to grow, and your games look and act increasingly more complicated - which is very rewarding! Once you feel you've gotten as far as you can with 2D games, then move on to Unity and 3D games.

Share this post


Link to post
Share on other sites
[quote name='JWalsh' timestamp='1343329430' post='4963403']
One thing I recommend to people, and the first tutorial series I wrote here on GameDev.net back in the late 90's was "OldGames: Making Games from Old to New". Basically, start by making a pong clone, then move on to Asteroids, Galaga, Tetris, Pac-Man, etc... keep making simple 2D games beginning from the earliest PC games and working your way forward. In that way, your capabilities continue to grow, and your games look and act increasingly more complicated - which is very rewarding! Once you feel you've gotten as far as you can with 2D games, then move on to Unity and 3D games.
[/quote]

Excellent. Well I will definitely follow your your timeline. Are there any XNA resources that you would recommend? Should I spend time with C# just figuring out the syntax and differences from Java before proceeding, or jump in the deep end?

Share this post


Link to post
Share on other sites
Obizues, there are several good tutorials at the [url="http://create.msdn.com/en-US/"]Creators Club[/url], as well as sample games, starter kits, demos, etc...Additionally, the XNA documentation is some of the best I've seen for an API. I recommend starting at the [url="http://msdn.microsoft.com/en-us/library/bb200104.aspx"]XNA Game Studio 4.0 Documentation[/url] root, and just drilling down, reading each sub-section of each section and following along with the tutorials and samples. You'll want to pay specific attention to the section on [url="http://msdn.microsoft.com/en-us/library/bb198548"]Writing Game Code[/url]. When you get to 3D there's plenty of tutorials there as well, and there's also my own blog/tutorial website, [url="http://gamedevelopedia.com"]GameDevelopedia[/url].com

As for learning C#, just jump in the deep end and starting writing XNA games. It's handy to have a good C# reference with you, and there's no harm in reading a good C# book as you work through the 2D game projects, but there's no reason to wait to start making games until you've "mastered" C#. You'd be waiting forever. And, your background in Java will give you enough information up front you won't be hopelessly lost.

Of course, if you get lost feel free to come on here and ask questions.

Share this post


Link to post
Share on other sites
[quote name='obizues' timestamp='1343308827' post='4963292']
So would you suggest I just skip C and C++ for now and move directly to C#?
[/quote]

You cannot skip C/C++ and go to C#, they are different languages with very different runtimes. Kinda like skipping delphi and going straight to python.
C/C++ are the industry standard languages and will be for many (hundreds of?) years to come. Whereas C# really will only ever be an indie language or used by smaller companies or for internal tools etc...

If you already know C, there is no real reason for you to use C# since there many 3D libraries and solutions available for C without needing to be wrapped (by yourself or 3rd party). Also in the long run it will make it much easier to port to different platforms and reuse code. (C# and Java can wrap C libraries, but you will find it very hard to wrap C# from Java and visa-versa).

As for engines, if you can push your C knowledge to OO C++, then I highly recommend Irrlicht. Otherwise using plain OpenGL with C simply isnt that hard anyway so I also recommend this route. This web resource is very good for using modern OpenGL ([url="http://openglbook.com/"]http://openglbook.com/[/url]) if you do decide to go down this path. As for things like model loaders etc... you will find many many more for C/C++ than can ever be supported by things like Unity so you can make choices on exactly what your project requires. Edited by Karsten_

Share this post


Link to post
Share on other sites
[quote name='JWalsh' timestamp='1343356938' post='4963487']
I recommend starting at the [url="http://msdn.microsoft.com/en-us/library/bb200104.aspx"]XNA Game Studio 4.0 Documentation[/url] root, and just drilling down, reading each sub-section of each section and following along with the tutorials and samples. You'll want to pay specific attention to the section on [url="http://msdn.microsoft.com/en-us/library/bb198548"]Writing Game Code[/url]. When you get to 3D there's plenty of tutorials there as well, and there's also my own blog/tutorial website, [url="http://gamedevelopedia.com"]GameDevelopedia[/url].com[/quote]

I picked up a book called "Learning XNA 4.0" by O'Reilly. I'm not sure why but I also feel like I learn better with an actual book to read from start to finish. Would it be a decent goal to try to just move through that book and while i'm doing it try to meet the "requirement" of making pong in XNA?

[quote name='JWalsh' timestamp='1343356938' post='4963487']
As for learning C#, just jump in the deep end and starting writing XNA games.
[/quote]

I did borrow "Beginning C# Object-Oriented Programming" for my C# skills. I haven't read it yet, but the name seems to suggest it's more about teaching OOP practices than actually learning C#. Do you know of a resource, preferably a book (again I know with the books :) ), that would be a better tool as sort of a Syntax/Difference resource for someone that already has OOP and/or Java experience?

Judging by the C# used in the XNA 4.0 book not only does it look ridiculously like Java, but the first chapters so far have been more about installing Microsoft Visual Studio and the XNA and C# functionality, and installing the service pack. (Which on a side note, for an IDE, 2 GB is ridiculously huge! Why is it so big?) It then goes on to start to explain the basic game model and now onto sprites.

I really appreciate all the help in this thread it means a lot to me. If in the future I post something and this thread is not on the main page will you be alerted to it with an e-mail? If so, how can I make that my own personal setting on this site?

Share this post


Link to post
Share on other sites
[quote name='Karsten_' timestamp='1343389478' post='4963605']
You cannot skip C/C++ and go to C#, they are different languages with very different runtimes.[/quote]

Karsten I may have not explained what I meant very well. I meant more for the time being, should I should skip learning C and C++ and just focus on understanding game design in 2D with XNA and C# rather than learning C all over again with more depth and then moving on to C++ and then going to C# with XNA.

[quote name='Karsten_' timestamp='1343389478' post='4963605']
If you already know C, there is no real reason for you to use C# since there many 3D libraries and solutions available for C without needing to be wrapped (by yourself or 3rd party).[/quote]

I believe Simon and JWalsh recommended me using C# first to focus more on the actual game development and understanding of the process with a simpler and more familiar high level language before getting into the difficult industry standards. For example it was given to me as a "last step" to design a game with C/C++ and DirectX11


[quote name='Karsten_' timestamp='1343389478' post='4963605']
Otherwise using plain OpenGL with C simply isnt that hard anyway so I also recommend this route....[/quote]

My C knowledge at this point really isn't at as high of a point that it should be, I would probably need to rehash through a giant book, and then do the same with C++. I realize I will have to do this anyways, which was pointed out about being employable, but I think I agree that before I get into relearning a language and a new language on top of that with API's on top of it I should probably do more top level things to get the premise and understanding of what I'm doing on a macro level.


Don't get me wrong I still really appreciate your input, and I would love to hear what you have to say about my responses.

Share this post


Link to post
Share on other sites
obizues,

Fair enough although I wouldn't recommend starting from scratch in a completely new language just to focus on "actual game development". It seems counter intuitive. The majority of game development done today is done in C++ (With C libraries), so surely that is as good as it gets [img]http://public.gamedev.net//public/style_emoticons/default/smile.png[/img]

I guess just make sure that you are learning C# because you feel it will help you the most rather than just because it happens to be today's latest trendy language.

As for DirectX11... Don't do it. OpenGL has a much brighter future on every platform under the sun. ;)
Edit: Just look at the latest efforts that Valve are putting in to extend to Linux. This wouldn't be the case if they thought the future was with Windows (DirectX). Edited by Karsten_

Share this post


Link to post
Share on other sites
[quote name='Karsten_' timestamp='1343403743' post='4963671']
The majority of game development done today is done in C++ (With C libraries)
[/quote]

That really depends on how you define "majority". If you count lines of code currently in production your statement is not untrue. However, according to market research, Objective-C is being used more than C++ now for new code. This is predominantly due to iPhone/iPad developers. While most gamers think of PC, Xbox 360, PS3, or Wii games as "the game industry", the reality is there is/are far more money/games in circulation now as a result of cell phones and iOS/Android tablets than consoles or desktops.

With that all being said, your point is not off base. Aside from a few small exceptions, it's unlikely that a game company would hire him without any C++ programming experience. But, C++ is a cumbersome language with many idiosyncrasies. It can be difficult to swallow for people coming from a higher level language. At the same time, game programming provides its own challenges. Most people who already know C++ ultimately give up on trying to become a game developer. Those coming from Java/C# often times give up learning C++ unless it's forced upon them. Combine those two, and it's unlikely someone coming from Java, wanting to learn to make games, would be successful doing so while learning C++ and game development at the same time.

[quote name='Karsten_' timestamp='1343403743' post='4963671']
As for DirectX11... Don't do it. OpenGL has a much brighter future on every platform under the sun. ;)
[/quote]

Except for Windows 8 Apps, Microsoft Surface, Windows Phone 7 and 8, or Xbox 360 (and beyond), you mean? But I suppose by "every platform under the sun" you meant MacOS, Linux, iOS, and Android. :) The truth is, OpenGL is great for the platforms it runs on. It's also true that DirectX 10/11 are great for the platforms they run on.

Ultimately, they're just API's and have nothing to do with your ability to be a good graphics programmer. If you're learning to program in C#, go with XNA (which uses DirectX 9c) or even SharpDX. If you're down in C++, it honestly doesn't really matter which you choose. They're very similar, and with OGL 4.2 they have almost identical features again. FWIW, I can't stand GLSL, I much prefer Cg/HLSL as a shader language, but that's personal preference. ;) The one thing to keep in mind, however, is there is a significantly larger user base of DirectX. This is mirrored by the number of resources available online and in books. So it's often easier to find the answers to your questions if the questions are about DirectX. Check the forum post counts here on GD.net. OpenGL forum: 4 million posts. DirectX forum: 10.5 million.

[quote name='Karsten_' timestamp='1343403743' post='4963671']
Edit: Just look at the latest efforts that Valve are putting in to extend to Linux. This wouldn't be the case if they thought the future was with Windows (DirectX).
[/quote]

Be careful about thoughts/statements such as this. The assumption that a single company somehow has insight into the future of the industry and is thus shifting their efforts is dubious at best. 90% of all PCs are still Windows. Not MacOS, and not Linux. Nobody - not Valve, Bungie, Blizzard, Arena, etc.... are abandoning Windows in favor of Linux. However, as the PC market gets more competitive, smart developers do broaden their user base by taking games to other platforms. Heck, Blizzard has almost always done simultaneous releases for Windows & Mac. And that's with MacOS having only about 5% of the market share. So Blizzard must develop their games strictly in OpenGL right? Nope. Their games use DirectX for the PC version and OpenGL for Mac. You *can* use the OpenGL API on PC, but nobody does, as it's buggy and there are performance issues.

The moral of the story, learn the language and API that will get you up and running the quickest, and will make your journey to becoming a game developer most enjoyable. Once you're there, pick your technologies as surgically as you can. Go to the companies you're most interested in working for, either directly or via job websites, and find out what tools/technologies those companies use. Then become a master of those and you'll stack very well against other candidates when the HR manager or dev lead is evaluating resumes.

Cheers!

Share this post


Link to post
Share on other sites
[quote name='JWalsh' timestamp='1343408385' post='4963698']
Be careful about thoughts/statements such...
[/quote]

Blizzard is looking into it.. And so is EA.. wow.. it would be naive to think the ecosystem isnt changing.. and quickly. Dont get left behind eh? ;)

[quote name='JWalsh' timestamp='1343408385' post='4963698']
But I suppose by "every platform under the sun" you meant MacOS, Linux, iOS, and Android. [img]http://public.gamedev.net//public/style_emoticons/default/smile.png[/img] The truth is, OpenGL is great for the platforms it runs on. It's also true that
[/quote]
I guess you could shorten this further by just specifying "UNIX". That way you would also capture FreeBSD and Solaris ;) Edited by Karsten_

Share this post


Link to post
Share on other sites
[quote name='Karsten_' timestamp='1343668804' post='4964552']
Blizzard is looking into it.. And so is EA.. wow.. it would be naive to think the ecosystem isnt changing.. and quickly. Dont get left behind eh? ;)
[/quote]

I just want confirm what you're saying. You're saying Blizzard and EA are "looking into" abandoning Windows OS and only publishing on Linux? Is that what you're saying?

Share this post


Link to post
Share on other sites

This topic is 1947 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

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