Sign in to follow this  
RaiderIV

Feeling a bit overwhelmed

Recommended Posts

So after a couple months of searching for a starting place to learn about game development in my free time, I am feeling a bit overwhelmed and have a few questions. 1) I have pretty much decided that the place I need to start is to learn basic windows programming. My question is what books would be a good reference or guide on the subject, and are books in the 'For beginners' section of GameDev still good to use even if their copyright seems bit dated. (ex: Programming Windows®, Fifth Edition (has copyright of 1999)) 2) I am currently using Visual Studio 2008 as my compiler, but I have been looking around and am curious if i should grab any other items, such as Microsoft XNA 3.0 or Microsoft SDK? 3) I am currently most familiar with using C++, but would that be the best starting language? I have seen many comparison charts for various languages commonly used, and it seems as if C++ is the most powerful but also one of the hardest. Any help would be very appreciated, and so far this seems to be the most friendly place I've discovered in my search. Thanks, ~John

Share this post


Link to post
Share on other sites
There are many places to start but you should look at your priorities first and foremost.

You need to ask yourself:

1. Am I planning to make a career out of this?

If that's the case, you need degree-level certification, regardless of your level of skill. Start with that. You didn't mention your level of study, or if you are already in a course, so sorry if I made the wrong assumption :).

2. Do I just want to have fun, and experiment with some of the ideas I have?

Then python is the best place to start: http://www.pygame.org/news.html. It's -extremely- powerful, just not as fast as highly optimized C code (I don't know that from experience, but hear-say). It can be faster but it takes just a teeny bit more work: http://psyco.sourceforge.net/

3. Do I want to start with something easy and work my way up to C++?

Start with Java, or C#. Both are extremely good languages. But if you're on a Windows machine, and have no plans to make cross-platform applications, use C#. It's the best tool for the job, and has better game libraries IMHO (XNA for example). Both these languages use C syntax.

4. Is performance really all that I care about?

It shouldn't be, but if it is, start with:

http://www.gamedev.net/columns/books/bookdetails.asp?productid=615&CategoryID=21

It's the best beginners book I've found, but it sticks to console applications. Which is the best place to start. I don't know any good windows programming books unfortunately.


Whatever you decide to do though...

Learn OOP: http://www.aonaware.com/OOP1.htm











Share this post


Link to post
Share on other sites
Thank you for the response and the help... I have one more question if you wouldn't mind.

When you say I need a degree, do you mean something with a game development focus? Because as of right now I am in the middle getting a computer science degree with an emphasis on programming. I do not have the money or ability to go out of state as of right now, there are now video game specific degrees nearby, and I have not found any reputable online degree programs for game development.

If you might have some advice i would be grateful ^_^

~John

Share this post


Link to post
Share on other sites
Unfortunately I can't really answer that question as I don't have any experience in what the game industry actually looks for in it's employees in regards to programming. My own plan is to do a masters in Game Development after my own degree finishes. But I do plan to start sending out applications before then.

I'd rather not say anything misleading however, but there are many people here who have professional jobs in the game industry.

Share this post


Link to post
Share on other sites
A degree doesn't need to be a game specific one, CS or Software Engineering would be just as good, if not better; it all depends on what the 'game degree' focuses on, but speaking personally I'd rather have someone on my team who had a Soft. Eng. degree and could design and next to no experiance in games, than someone who has done loads of game stuff but is lacking in fundimental design and process areas.

Share this post


Link to post
Share on other sites
How far along in your degree are you? I have friends in CS, and although they don't know anything about game programming (it's not really taught), they know enough about programming in general that it wouldn't be too difficult for them to pick up on their own. But, you are looking for beginner's books, so I'd assume you're a beginner...

In any case, if you have formal C++ instruction already, I'd just stick to that. I took 1.5 courses on C++ (one was C with C++ syntax basically... so I only count it as half :p ) and learning more C++ on my own hasn't been a disaster so far.

As a beginner, your main goal is to learn programming, not any specific language. By starting with C++ on your own with nobody to guide you, you will end up spending a lot of time on the quirks of C++, which are details compared to what you are after.

By picking an easier language, such as C# or Java, you minimize that and just learn how programming works. After you know the basics, learning other languages is surprisingly easy. I have had to program in C, FORTRAN, and even assembly (for an electronics class), and at that point all I had to learn was the syntax, because I already knew "how" it all worked. So don't sweat about finding the "best" language off the bat. Go with the easiest.

I don't know Python, but Java and C# I know are really good beginner languages. Java is great for web apps because it translates your code to computer language "on the fly" almost, so no matter who you give it to, as long as they have Java installed, they'll be able to run it. Great for sending your grandma a tetris game you just made. :) The downside is that it's slower (because of the code translation), so you won't get a state of the art Space Invaders game out of it.

C# is more traditional, in that it compiles the code before running the program, so it is much faster. Downside is you need to take extra precautions to make sure other people can run your program. Either is a good choice, though.

Share this post


Link to post
Share on other sites
Python is actually a very good beginner programming language-If by good beginner programming language we mean easy. The trouble with it is that it's not really a traditional language (Though it does have good traditional support for OOP, as opposed to Lua). So it's much easier to make the jump from C# to C++ than Python to C++.

I actually think the most difficult aspect of programming is finding the right language and library. I've been looking at benchmarks for Python and Lua, and reading the manuals of both for the last two days, and I still haven't picked the right one to script my game :).

Share this post


Link to post
Share on other sites
First off...
Thank you all so much for the responses, I am learning a lot about this.


On the topic of my education i am one class away from an associates, and just about to begin work towards the bachelors.

As for being a beginner, I am just a beginner to the Windows API. The logic/planning process of programming is the easy part and the part i understand mostly. Its getting all the syntax down thats always troubling IMHO.

Anyways, one last question that i can think of right now then. Should i even bother with learning how to use the Windows API on my own right now then or would it be more beneficial to wait for a formal class that teaches it?

Once again thank you for all the help, and i now feel much much better about trying to pursue a career in this field eventually.

~John

Share this post


Link to post
Share on other sites
Quote:
As for being a beginner, I am just a beginner to the Windows API. The logic/planning process of programming is the easy part and the part i understand mostly. Its getting all the syntax down thats always troubling IMHO.


Getting all the syntax down is the easy part actually, once you have a good solid plan that is. Syntax really is the least of your worries, there are several well documented and well supported languages out there, so much so that you can't afford to stick to your first love (Which would be C# in my case :)). I'd recommend doing mini programs so that you can get to grips with the basic concepts of the API before writing the plan though. That's where the class comes in.

So I'd recommend waiting for it.

EDIT: A bit of experimentation never hurt, but be sure to get down the proper terminology and code practices. Bad habits are hard to get rid of.

Share this post


Link to post
Share on other sites
To answer the specific question about Programming Windows, yes it's still good. Assuming what you're looking for is bear-metal Windows programming. Some of the stuff might not apply anymore but the concepts haven't changed any. I would try to pick it up from your local library first instead of buying it though.

Share this post


Link to post
Share on other sites
Quote:

python is [...] not as fast as highly optimized C code (I don't know that from experience, but hear-say).


It's slower. Specially, in number-crunching apps, it's really slow, because it doesn't use native numeric types, instead it uses arbitrary precision data types, i.e., all the integer/float operations are implemented by software. This is very useful when you use really big numbers, and shouldn't really care performance-wise most of the time. You have library bindings which do the fast stuff for you.

Share this post


Link to post
Share on other sites
Quote:
Original post by RaiderIV
On the topic of my education i am one class away from an associates, and just about to begin work towards the bachelors.

As for being a beginner, I am just a beginner to the Windows API. The logic/planning process of programming is the easy part and the part i understand mostly. Its getting all the syntax down thats always troubling IMHO.


Besides school: What was the most complex application you have written on your own? The most challenging algorithm? Which projects did you participate in? What are you working on now? What will you be working on next?

You are about to graduate, and have expressed interest in working as programmer. But "getting all the syntax down" fires of a lot of warning signs.

Share this post


Link to post
Share on other sites
Quote:
Original post by Antheus

Besides school: What was the most complex application you have written on your own? The most challenging algorithm? Which projects did you participate in? What are you working on now? What will you be working on next?

You are about to graduate, and have expressed interest in working as programmer. But "getting all the syntax down" fires of a lot of warning signs.


I am no where near close to graduating... an associates will not get you anything anymore, and i am still 2 years from getting a bachelors.

You ask what have i worked on outside of class?
Well thats what i am here looking for advice on. I am here looking for a good place or some advice on learning how to program with windows. I may have some school under my belt but most of that is just basic comp sci logic and programming skills. I have not yet started advanced (or what feels advanced) classes, and am looking for a nice starting point.

The whole reason i came here was to ask for a starting point or some advice. Though you may have been trying to help (and if you were thank you), but all that comment does is make me feel as if i am bad programmer.

I have a LOT left to learn and if you don't have an answer to a question or some advice for me, please keep the comments to yourself.

~John

Share this post


Link to post
Share on other sites
Quote:
The whole reason i came here was to ask for a starting point or some advice.
Quote:
all that comment does is make me feel as if i am bad programmer.
Yes, yes, but in giving advice personalized to you, we would need to know more about you and your experience as a programmer. You aren't obligated to answer anything of course, but it's also being unreasonable when you expect us to give you advice specific to you, without probing your situation. It might feel a bit uncomfortable to have such questions thrown at you, or depressing to give unimpressive answers, but they will be asked of you, when you apply for jobs. No one's going to coddle you at that point.

You still haven't truly answered the questions Antheus asked, and they are important. You may not have done anything superb outside of class, but we still want to know what you did academically. What exactly did you study? The most complex thing you created in class? Answer Antheus' questions because the information will allow us to give you better advice. No need to take up a defensive posture because this isn't an ego show. We don't care how impressive you have been so far, aside from giving better suited advice.

And saying that "it's the syntax" that troubles you is really worrisome. The syntax isn't different. It's still a C API. What's probably daunting is that you are seeing some rather unusual usage of the same syntax. All the structs being passed around, the callbacks, the handles, the unfamiliar types like LPCSTR: they are confusing when you don't have the experience to understand why they exist.

It's critical then, that you start writing programs outside of those required academically. Can you join any project teams at your college? Any teams focused on building some real application will not have the hand holding and soft sandbox of academic assignments. They also happen to be accesible, by being at your college. What about game development groups? Project based courses?

Completely past school, you should focus on console based applications. If the syntax is daunting, you need more experience with console based applications. I talk about console based vs GUI based because that's typically how people start out with the API. Learning how to make a window. I think GUI development, especially with the Windows C API, is tedious and messy. There's better uses of your time. How about writing a basic chat application? Write a server program and a client program. Client program transmits chat strings, server program displays them. Learn about sockets, get into the Windows API, make a non-trivial application, and get some good experience and knowledge.

Share this post


Link to post
Share on other sites
Quote:
Original post by oler1s
What's probably daunting is that you are seeing some rather unusual usage of the same syntax. All the structs being passed around, the callbacks, the handles, the unfamiliar types like LPCSTR: they are confusing when you don't have the experience to understand why they exist.



True, that was more defensive than it probably should have been. I apologize to Antheus for that, and yes you are correct that it is very troublesome to come across what people call simple windows program and not really see anything that is very familiar.

I assumed that GUI programming would be the next place to go, but after seeing it and attempting to dabble in it, I long for the familiar black and white console screen lol.

As for Antheus's question: I have not done much outside of school. I have mostly dabbled in scripting, such as a small console based business scripts using vbscript. Most of these scripts are just used to take in data from some sort of input file (usually text), search for specific char sequences, and based on what is found, prepare another text file to be entered into the business application. Really simple, but fun stuff to mess with.

Also, I have just started trying to mess with World of Warcraft addons, but that isn't going too spectacular as of right now.

I work 2 jobs so it is difficult to find time for Extra-curricular groups based around programming, but that is a very good idea. I will look into that and try to find some viable experience through that.

Once again sorry for the defensive nature of the last response

Thank you,
~John

Share this post


Link to post
Share on other sites
Quote:
Original post by RaiderIV

I work 2 jobs so it is difficult to find time for Extra-curricular groups based around programming, but that is a very good idea. I will look into that and try to find some viable experience through that.


There is something about the job market that cannot be changed. When non-IT companies hire programmers, the people who apply look like this: 21 yo with degree, no family, no expenses (or student loan), 18 hours a day to dedicate to company, 2-5 years of past experience and several projects in portfolio. This is not even taking into account global job markets, where you get whole teams for same price.


My advice would be to forget about strict programming for now. While in school, stick with .Net, VB, later C#, ASP. GET CERTIFIED. MS offers student certifications for free, or almost free, they usually involve a few days of studies. Forget WinAPI, C++ and similar for now. Another way is to switch one job for something CS/IT related. Perhaps PHP/javascript/Ajax coding/administration.

With several certifications and a degree, you will be able to apply for entry-level jobs in IT. Those are boring and tedious, but they will expose you to methodology du-jour (Agile/TDD), give you some real world experience, and with a bit of luck, be 9-5. They also pay fair enough, so that you can study ahead in your spare time.

This opens several options. Either you find that it's a decent job, and progress through that into IT-related areas, such as architecture (perhaps you are more at home there "logic/planning") or management. But either way, it will allow you to at least enter the field and make a living off that.

Later, you can start thinking about taking a dedicated course (various game schools), which are all about programming and little else. C# is relevant experience in this respect, and can be complemented with XNA.

But trying to compete in intense programming positions straight out of school is something that requires you to either choose one of specialized courses, or be a complete natural - preferably both. This also implies that you have enough time to develop your skills in this time, which you probably don't. So plan for a realistic route, that leaves options open, rather than what might become an all or nothing situation.

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