Jump to content
  • Advertisement
Sign in to follow this  
obizues

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

This topic is 2233 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
Advertisement

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.


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



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)..


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.



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)


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?


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)


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.


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)


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.


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)


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

Share this post


Link to post
Share on other sites

Unity has free online training seminars. They are definitely worth watching.


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='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)..


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='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)

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:

FB2 - realtime radiosity:

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

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.


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?


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


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.


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)


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?


Sorry, i can't recommend any Unity books, (I found the documentation on the unity website to be good enough though.


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

......


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

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)


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.


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>


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.


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)


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
Sign in to follow this  

  • Advertisement
×

Important Information

By using GameDev.net, you agree to our community Guidelines, Terms of Use, and Privacy Policy.

We are the game development community.

Whether you are an indie, hobbyist, AAA developer, or just trying to learn, GameDev.net is the place for you to learn, share, and connect with the games industry. Learn more About Us or sign up!

Sign me up!