Advertisement

Starting out - making sure I am doing it right

Started by June 12, 2015 08:32 PM
5 comments, last by jhocking 9 years, 6 months ago

Hey All:

I haven’t posted here in a couple of years I believe. I start exploring game development but other things in life got in the way. So first let me state my goals.

Short Term: I have no foreseeable interest in working for a company in the field of programming. I say that only to say that whatever I do with programming I am not depending on it for income.

My short term goal is to start working on my own game projects that are entertaining and educational. I do have an interest in programming outside of the gaming industry though as I think it is far too useful of a skill to just to limit myself just to the entertainment industry.

Long Term: Assuming I make it through the short term I would likely be interested in serious game development which could include starting a game studio (potentially funded by my primary income source).

I also have an interest in artificial intelligence and the potential of programming in general to advance humanity. I would like to be involved in much more than games in the future. This does not mean it will be in the form of programming but perhaps it will. It is an assumption of mine that building complicated games will allow me to learn much of what I would need in other fields outside of programming. The thought is that if you are going to learn you might as well have fun doing it. The more entertaining it is, the longer I will stick with it.

With all of that said:

1) Essentially I have been looking into programming for game development for several months now and been reading a lot of varying opinions online.

I have discovered there seems to be a lot of "language wars" on what path is best for a beginner and for development in general. This has made me essentially experience “paralysis of analysis”. Despite this “paralysis” I have gone through most of Zed Shaw’s Learn Python the Hard way and read way too many opinions for my own good.

2) I know I just need to commit to something and I want to at least start my programming journey with video games. From what I have read it sounds like I should probably start with C# as my first language. It seems that it will allow me to do more with development than Python may in the realm of video games. I know Python has capabilities but C# has been used extensively in professional development and is also able to be used on Mac OSX if I am understanding things correctly.

3) Even though I am getting ahead of myself a bit here it seems I may also need to learn a scripting language. I have no particular emotional attachment to any choice. However it seems that perhaps Javascript would be more widely useful (I could do web dev with it as well) and I think it also works with the Unity 3D game engine.

Those are my thoughts – does it sound like I am on the right path based on my short term goals? If so I could start using the C# tutorials on this website (or whatever works best) and get things going. I have already installed Visual Studio Express 2013 (or 2014 I forget) via Microsoft.

As far as my long-term goals with A.I. and other programming it sounds like I will need lower level languages such as C or C++. I am not really sure what language I would need. AI could be language agnostic even but I do not know enough to determine that but from what I have read once you learn a couple of languages picking up others are mostly syntax issues.

EDIT: I forgot to ask - is Javascript (with its associated features like Node.js) able to make high performance games now as well? If so it could be more valuable to me than C# but again I suspect that its not even close in relative power.

Any help would be appreciated!

Python and pygame are a great easy way to get started with simple 2d games.

C# and unity are a great way to get started with 3d games, and can be used to do 2d games as well. It is a bit more complex than pygame, but also more capable.

I recommend you take one of those routes... Either one is fine.

The biggest distinction between languages you will deal with right away is dynamic vs static typing. Dynamic typing means you dont declare types, but it also means the compiler can't check them for you. Most code for games is statically typed (usually c++), though dynamic scripting languages are also often used as well (python, lua).

Javascript/v8 is fast, but not as fast as c# or c++, for many complex reasons. However, for starting out, this doesn't really matter. Js/webgl is plenty fast enough for what you need. Persobally, i think it is easier to deal with complex gaming APIs using static typing, so i would stay away from javascript or python for anything other than really simple projects.

C# and C++ are more similar than different. One of the biggest differences is that C# uses a garbage collector and is memory-safe and type-safe but has gc pauses, while c++ uses manual memory management and manual pointer management but has no gc pauses.

For AI research, there isn't a big difference. For real-time work, such as robotics vision, c++ is like preferred to avoid gc pauses. If you really want to do AI work, you should get an advanced degree in AI and get a job at a place that does robotics or AI research.
Advertisement
I always find the question which language to start with, a bit "double".
The advice could be to start with c#, knowing you want to eventually learn and use c++. If this is the case, why not start learning c++ from start, especially since they "look a like".

And of course welcome and good luck on your journey :)

Crealysm game & engine development: http://www.crealysm.com

Looking for a passionate, disciplined and structured producer? PM me


2) I know I just need to commit to something and I want to at least start my programming journey with video games. From what I have read it sounds like I should probably start with C# as my first language. It seems that it will allow me to do more with development than Python may in the realm of video games. I know Python has capabilities but C# has been used extensively in professional development and is also able to be used on Mac OSX if I am understanding things correctly.

Pick something and get started! I recommend C# and Unity, but ask 100 people and you'll get 100 answers. They'll all have good reasons. But if you don't pick a direction and go, a year from now you'll still be standing in the exact same spot deciding "what would be best" and STILL not doing anything. Analysis paralysis at its finest.

If you have 0 programming experience, you'll probably need to learn at least the basics of a language. Preferably the language you're going to use to write the games, but not necessarily. Khan Academy has a good educational programming site. It's targeted towards kids but the information is good. I'm helping my daughter run through it. The language is JavaScript but it's visually similar to C# and the concepts will translate over just fine to C#.

https://www.khanacademy.org/computing/computer-programming

- Eck

EckTech Games - Games and Unity Assets I'm working on
Still Flying - My GameDev journal
The Shilwulf Dynasty - Campaign notes for my Rogue Trader RPG

Looks like C# it is then. So would the best place to start be the tutorials on this website? If possible I would love to know a good path to take with C#.. or are the tutorials on this site pretty comprehensive?

Do all the tutorials! Everything you can get your eyes/hands on. Some of them are good and some of them are bad. And there are probably a lot of them which costs money. Like any other technology that people might be interested in learning.

Just use your critical sense.

However, be careful to choose the latest revision/edition of the language C# and stay clear of the most outdated resources.

Otherwise, knock yourself out. smile.png

<edit>

And get a couple of books as well.

</edit>

Too many projects; too much time

Advertisement

Given that I've written a book about Unity, clearly I recommend that direction tongue.png

I wrote Unity in Action for people who know how to program but are new to Unity and/or game development.

-Joe Hocking | newArteest
Intro book for programmers: Unity in Action

This topic is closed to new replies.

Advertisement