Jump to content

  • Log In with Google      Sign In   
  • Create Account

Interested in a FREE copy of HTML5 game maker Construct 2?

We'll be giving away three Personal Edition licences in next Tuesday's GDNet Direct email newsletter!

Sign up from the right-hand sidebar on our homepage and read Tuesday's newsletter for details!


We're also offering banner ads on our site from just $5! 1. Details HERE. 2. GDNet+ Subscriptions HERE. 3. Ad upload HERE.


Absolute Beginner


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
20 replies to this topic

#1 CodeFree   Members   -  Reputation: 101

Like
0Likes
Like

Posted 13 December 2011 - 08:52 AM

How's it going guys, i'm new here, however i've been reading things on this forum for a while.

So, i've always been eying game programming & development, however I never knew where to start, really. I was reading a few threads on here, but the questions asked and answered aren't really what i'm needing.

To start it off: What's the best language to learn? (I've only really learned HTML, and that's good for nothing)
Are there any pre-requisites to learning this? (If not; are there any recommended?)
How long does it usually take for the average guy to pick this language up?
What's the best books for this language/pre requisite?
How exactly does the programming work with game development? (Nooby question, I know)
Let's say i'm a game programming master( [; ) Where would I go from there?
Can you create software with the language you learn for developing games?
I appreciate any answers or feedback, thank you [:

Sponsor:

#2 Zorerk   Members   -  Reputation: 108

Like
0Likes
Like

Posted 13 December 2011 - 09:17 AM

What's the best language to learn? (I've only really learned HTML, and that's good for nothing)

Answer: There is no best language. Everyone will tell you differently depending on who you ask. But i guess the most common ones would be C#, Java, Python, BASIC and so on. Try finding a language you feel appeling for you. It isnt wise to start c++ if your a beginner.

Are there any pre-requisites to learning this? (If not; are there any recommended?)

Answer: Stubborness and a computer.

How long does it usually take for the average guy to pick this language up?

Answer: No one can say. Depends on how much time your willing to put into it.

What's the best books for this language/pre requisite?

Answer: Most "Beginning with {Insert Software language here}" is good in the start.

How exactly does the programming work with game development? (Nooby question, I know)

Answer: I actually dont understand the question

Let's say i'm a game programming master( [; ) Where would I go from there?

Answer: If you were. Then its entirely up to you. Basicly you would already know the answer to it.

Can you create software with the language you learn for developing games?

Answer: Yes.

Basicly you could get the same answers from the stickies.

Edited by Zorerk, 13 December 2011 - 09:25 AM.


#3 JD557   Members   -  Reputation: 163

Like
0Likes
Like

Posted 13 December 2011 - 09:28 AM

Hi there, welcome to gamedev.net.

So, addressing each question individualy:

What's the best language to learn?
I would personally recommend C++.
Some people would disagree and say it's too hard to start. I don't really think so, but if you want you can also try java, C# or pascal.

Are there any pre-requisites to learning this?
There are no pre-requisites, but it's always nice to have some math background. The rest depends on what you want to do.

How long does it usually take for the average guy to pick this language up?
If you only look at it from time to time, it will problably take you a month or two to make text games a little bit decent.
It will take a lot more to master the language, but that you learn programming.
For graphical games, it depends a lot in the API you choose and in what you want to do. Just go one step at a time and worry about graphics later.


What's the best books for this language/pre requisite?
You can find most of the stuff you need for free on the web, just google it. (Sorry, I'm not much of a book reader)

How exactly does the programming work with game development?
You are telling the game what happens and what to do.
For example: While on a battle, If player attacks Then enemy takes damage

Let's say i'm a game programming master.Where would I go from there?
I'm still a student, so I can't really help you on this one. You can make games and write books, I guess.

Can you create software with the language you learn for developing games?
Sure.



#4 Telastyn   Crossbones+   -  Reputation: 3726

Like
1Likes
Like

Posted 13 December 2011 - 09:40 AM

How's it going guys, i'm new here, however i've been reading things on this forum for a while.

So, i've always been eying game programming & development, however I never knew where to start, really. I was reading a few threads on here, but the questions asked and answered aren't really what i'm needing.


FAQ
Wiki
[editted to be less snarky]

#5 Labouts   Members   -  Reputation: 133

Like
0Likes
Like

Posted 13 December 2011 - 09:50 AM

To start it off: What's the best language to learn? (I've only really learned HTML, and that's good for nothing)


You'll find many opinions on the best first language. Python is considered somewhat easy for beginners, some will argue that learning C++ is good because it is the most common language in professional work, C# has the XNA game development framework which is very newbie friendly, ect. I personally tend to recommend C# with XNA because many new developers manage to produce something that resembles a 2D game rather quickly with XNA (at least compared to other frameworks).


Are there any pre-requisites to learning this? (If not; are there any recommended?)

Some math skills will help. It's good to at least understand algebra and trigonometry for 2D games; some more advanced math is useful in 3D programming. Other than that, the ability to think logically and plan is important.

How long does it usually take for the average guy to pick this language up?


It's hard to define "the average guy" as well as "pick up a language". I learned most of the "language" of c++ in less than a month, but it took me many months of continuous practice to become decent at designing and producing well written programs. Further, it took me about a year before I understood the details of compilation and linking well. You can learn all the keywords and rules in a month or two, but that doesn't make you a good programmer; you need to learn good programming practices, how to keep your code clean and maintainable and how to design systems as well - that is something you are never "done" doing

What's the best books for this language/pre requisite?


I made a list of resourced I found useful when I was learning C++ and C# in this blog post; if you decide to go with C# and XNA, look at the books and link related to those in that post.

How exactly does the programming work with game development? (Nooby question, I know)


Programming creates the logic of the game. Almost anything that's not related to creating art and audio assets is done with programming at some level.

Let's say i'm a game programming master( [; ) Where would I go from there?

You would probably want to find some other good programmers to work under you and some artists to form a team then produce fantastic games with them.

Can you create software with the language you learn for developing games?


Yes. Programming languages that can make games can be used to produce other kinds of applications.

Good Luck.

#6 CodeFree   Members   -  Reputation: 101

Like
0Likes
Like

Posted 13 December 2011 - 05:25 PM

You guys are such a big help! Thanks for all the useful information, I think i'll start with C# or C++

I'll see you all around the forums.

#7 Zac   Members   -  Reputation: 105

Like
-1Likes
Like

Posted 13 December 2011 - 05:56 PM

What's the best language to learn?
I would personally recommend C++.

Some people would disagree and say it's too hard to start. I don't really think so, but if you want you can also try java, C# or pascal.


I personally fully agree with this statement. Learning something as strict and versatile C++ well is a very good way to start. It teaches you how to become disciplined and write good code. It's a lot better to start with a widely-documented, difficult language with tutorials everywhere such as C++ than to jump into Python and try to translate all of that to C++.

#8 Telastyn   Crossbones+   -  Reputation: 3726

Like
3Likes
Like

Posted 13 December 2011 - 07:38 PM

What's the best language to learn?
I would personally recommend C++.

Some people would disagree and say it's too hard to start. I don't really think so, but if you want you can also try java, C# or pascal.


I personally fully agree with this statement.


Too bad you (are both) completely and utterly wrong. I hate to use such strong and definitive language for something on the internet or that has to do with programming; take that for the strong language it's meant to be.

Learning something as strict and versatile C++ well is a very good way to start.


No, it's been shown time and again to be a very horrible, slow, error prone way to start.

It teaches you how to become disciplined and write good code.


Bullshit. C++ is horrible specifically because it does not teach you to write good code. It promotes you doing voodoo programming (because beginners don't know the root cause of things, because the error messages are horrible). It promotes 'not invented here syndrome' (due to tiny standard library). It promotes lack of automated testing (due to horrible testing frameworks, because the language has no introspection capability). It promotes horrible, incorrect code due to all of the horribly old/out-of-date/broken tutorials out there.

C++ defines undisciplined, garbage code.

It's a lot better to start with a widely-documented, difficult language with tutorials everywhere such as C++ than to jump into Python and try to translate all of that to C++.


No. It's better to learn how to program. Just because you used that nail gun doesn't mean you made a cheap house, it just means you didn't waste a ton of time dicking around with a hammer like a noob.


Thinking that C++ is a vaguely decent language is bad enough. Suggesting to beginners to start using it is harmful and negligent.

#9 jonbonazza   Members   -  Reputation: 121

Like
1Likes
Like

Posted 13 December 2011 - 07:57 PM


What's the best language to learn?
I would personally recommend C++.

Some people would disagree and say it's too hard to start. I don't really think so, but if you want you can also try java, C# or pascal.


I personally fully agree with this statement.


Too bad you (are both) completely and utterly wrong. I hate to use such strong and definitive language for something on the internet or that has to do with programming; take that for the strong language it's meant to be.

Learning something as strict and versatile C++ well is a very good way to start.


No, it's been shown time and again to be a very horrible, slow, error prone way to start.

It teaches you how to become disciplined and write good code.


Bullshit. C++ is horrible specifically because it does not teach you to write good code. It promotes you doing voodoo programming (because beginners don't know the root cause of things, because the error messages are horrible). It promotes 'not invented here syndrome' (due to tiny standard library). It promotes lack of automated testing (due to horrible testing frameworks, because the language has no introspection capability). It promotes horrible, incorrect code due to all of the horribly old/out-of-date/broken tutorials out there.

C++ defines undisciplined, garbage code.

It's a lot better to start with a widely-documented, difficult language with tutorials everywhere such as C++ than to jump into Python and try to translate all of that to C++.


No. It's better to learn how to program. Just because you used that nail gun doesn't mean you made a cheap house, it just means you didn't waste a ton of time dicking around with a hammer like a noob.


Thinking that C++ is a vaguely decent language is bad enough. Suggesting to beginners to start using it is harmful and negligent.


That's quite the biased statement.
You make such a bold claim saying that he is "completely utterly wrong" when in actuallity, the content in his post is entirely subject to opinion. There are no facts revolving around his post or yours. When someone says "It's been proved time and time again," but then fails to reference any sources, it's usually a red flag that he/she is pulling shit out of his/her rear end. You know what they say, 97% of statistics are made up on the spot.


Co-founder/Lead Programmer
Bonafide Software, L.L.C.
Fairmont, WV 26554 US

#10 AIbot   Members   -  Reputation: 126

Like
0Likes
Like

Posted 13 December 2011 - 07:58 PM

How exactly does the programming work with game development? (Nooby question, I know)



you will program an "engine" like a program named "unity3d" or "unreal Sdk engine" to manange the inputs, GUI and 3d possitions in the scenary so lets go to your question....

I will give you an example in C#:http://pastebin.com/idQ0kyGr

source: http://tinyurl.com/7tqokgm

So read the commentaries after "//" and it will explain the algoritm of each script I hope you to know at least a bit of programming cause It will help you to adapt to any language of programming if you feel like coding all from zero is too hard just try using an engine which is what Im doing right now and engines are good too for example "portal 2" was made with "source engine" so dont think that if you use an engine your game will be of bad quality or some sort of that good luck and have fun Posted Image

unity3d tutorial: http://tinyurl.com/4y2xgyv

#11 Telastyn   Crossbones+   -  Reputation: 3726

Like
3Likes
Like

Posted 13 December 2011 - 08:36 PM

You make such a bold claim saying that he is "completely utterly wrong" when in actuallity, the content in his post is entirely subject to opinion. There are no facts revolving around his post or yours. When someone says "It's been proved time and time again," but then fails to reference any sources, it's usually a red flag that he/she is pulling shit out of his/her rear end. You know what they say, 97% of statistics are made up on the spot.


No, I'm sorry; I didn't do a formal controlled study of programmer skill using each language. I didn't do thorough research on the topic, and despite rumors to the contrary, don't have a stash of bookmarks to support my unreasonable C++ hatred crusade on internet forums. Hell, I didn't even waste the time to look up the innumerable posts in this very forum where the consensus expert advice is that beginners should start with Python or C#.

I didn't think it was really necessary when the stance is obvious to anyone with a modicum of experience with multiple languages.

But hey, one of these days I'll wise up and just have a canned response since we get these posts incessantly here... A nice, even keeled response with references and sources to fend off people more interested in argument than helping people. Thanks for the reminder.

#12 BCullis   Crossbones+   -  Reputation: 1813

Like
0Likes
Like

Posted 14 December 2011 - 12:54 AM

How exactly does the programming work with game development? (Nooby question, I know)

Another angle at guessing at your question with an answer:
Your main tangible assets in a game are: code, artwork (including animations), audio.
The artwork and audio are straightforward, mostly. That leaves the code to handle everything else, right? Big target.
Some code is actual engine guts: how are models loaded? How is content streamed from the disc to memory? How much content is buffered? (You can only keep so much of the game active in memory, after all). How are inputs handled? How are physical interactions simulated?
The answer to all of these: You either write the code yourself (as the hypothetical only programmer ;) ) or you implement existing code libraries that already do this. Chances are, even if you're using pre-written code for the individual features, you'll need to call the library functions from some central new code (your game/engine), so you need to learn the major function calls that the library exposes (and leave the majority of "how does it work on the inside" to the people that maintain that library. Welcome to encapsulation!)
Other code could be scripting language that handles all the game-specific features: which dialogue happens when your player reaches level 3? How does my npc character decide which attack to use? etc.
Keep in mind this could likely be an entirely different language than the main engine functions.

Most of the time, your graphics and your game logic are kept separate: the logic keeps track of what's actually happening in the game, and the graphics side just asks "where do I draw what and what should it look like its doing in this frame?" and then draws. A pretty fair game loop might look like "while game isn't over: read user input, update game logic accordingly, draw what the game looks like now, repeat."

If you meant "how do multiple people write code for a game" you're asking a pretty broad question about software engineering, which includes design and code review meetings to parcel out coding tasks, code repositories that maintain the central* codebase and chronicle all past changes to it, overall software design, and so on.

*Distributed is cool, too, no offense. I love me some git.

Can you create software with the language you learn for developing games?

More like, did you know that games are just a niche in the wide world of software creation? A programmer writes code to tell the computer what to do and how (usually) to do it. It just so happens that game software tells specific machines, like your consoles and gaming rigs, to run some software loops that happen to simulate warzones, fantasy dungeons, and races. So if you learn to program, you can program. Yes.

crusade!

I'm torn here: I started with C++. I then was forced to also pick up Java, C#, the strict non-STL C subset, ARM, Lisp, Prolog, Python... hell, just last week I finished implementing a prolog-esque logic-language based compiler IN lisp! That's just weird. Point being, I think I got along fine, but I also see the argument that a lot of what I learned in a sink-or-swim better-be-proactive-about-this-kluge-of-errors environment could have probably been approached differently from a nicer language like Python. I learned a lot through trial and error and breaking C++ and overstepping memory ranges and what's a pointer to a pointer...but I feel like it all comes down to personal preference. Just like there are better and worse teachers out there with their own styles, picking a first language is about what will help the individual connect with "thinking like a programmer". Will the majority of starters probably benefit from the safety of managed languages and/or enforced coding styles (I love you python, everyone indents the same way) ? No doubt. That doesn't mean lower-level/more obtuse languages can't also suffice.
Hazard Pay :: FPS/RTS in SharpDX
DeviantArt :: Because right-brain needs love too

#13 Nypyren   Crossbones+   -  Reputation: 4495

Like
1Likes
Like

Posted 14 December 2011 - 03:09 AM

I generally agree with Telastyn's assessment that C++ isn't a good starting point, but I don't exactly agree with his reasoning.

Telastyn says: "C++ is horrible specifically because it does not teach you to write good code."

I agree with this, but I disagree with the implication that any other language teaches you how to write good code. Anecdotal example: C# is my favorite language at the moment. I think it's a great, easy to use language compared to C++. This is just my opinion. Yet I have seen *astoundingly* bad C# code, and amazingly clean C++. You haven't seen bad code until you've seen something that looks like someone generated it with a low quality decompiler - but you KNOW that this code you're staring at is hand-written, because it's actually got comments where you'd expect them. Guess who's code I was looking at? Mine. I had stumbled across code I'd written a few years earlier. C#'s my fourth language, which I taught myself after almost a decade of self-taught BASIC, Pascal and C++.

It's not just me who starts off writing horrible code; I've run into horribly nasty code written by other people in all of the other languages I've used (BASIC, C, C++, Pascal, Java, Javascript, Actionscript, C#, Ada, and F# so far). The online communities for Actionscript are particularly depressing for me to read. So many different people suggesting that everyone use weak references in their addEventListener calls. C# and AS3 have a pretty much interchangable implementation in the guts of their event dispatching mechanisms (source -> delegate -> listener references). I'm used to C# - our delegates are always strong referenced unless you use extreme hacks, and we've gotten used to designing our code to account for this. I ran into several other cases of apparent misinformation and eventually decided that the Flash community really doesn't care whether their programmers learn good coding habits or not.

Conclusion after ~20 years of coding experience: NONE of the languages I've seen will help you write good code. They're all too flexible and allow you to write bad code if you don't know better. You just have to get better naturally over time.

C++'s problem is that you have a much higher chance of screwing up SO HARD that it'll take you a week or more to just find the CAUSE of a single "tiny" bug. In more modern languages like C# and Java, you'll discover the source of your problem VERY quickly, but it may not necessarily be easy to fix if you have bad coding habits. C++ does not force you to get better, either. As a beginner, it only distracts you from learning how to program by forcing you to spend all of your time debugging.

#14 rip-off   Moderators   -  Reputation: 8515

Like
2Likes
Like

Posted 14 December 2011 - 04:31 AM

One simple reason to avoid learning C++ as a first language is to look at the mindset of the language designers. The language is designed with "the programmer is always right" as a core principle. This is, by definition, not true for beginners, and rarely true in general.

This design philosophy causes the language to throw many obstacles that will frustrate beginners, because they will make mistakes and the language will often:
  • Allow the mistakes, and blow up later.
  • When it does blow up, it will often do so with obscure error messages that in no way relate to the problem.
  • Subtly corrupt the program, often causing mild to severe loss of sanity until the flaw is found.

This is fact*, and not opinion.

* Exaggerated for comic effect, perhaps - I'm not even sure if it is all that much of an exaggeration.

#15 Radikalizm   Crossbones+   -  Reputation: 2921

Like
0Likes
Like

Posted 14 December 2011 - 07:01 AM

The language is designed with "the programmer is always right" as a core principle. This is, by definition, not true for beginners, and rarely true in general.


I had to do some research on the evolution and original design principles of C++ some time ago for a CS class, and I wholeheartedly agree with this.
This is the thing that a lot of people seem to forget about C++, it is not a language designed to hold your hand through development, it's actually the contrary of that: it will gladly let you do the most horrible things because it assumes that you know what you're doing, and this comes down to -as rip-off nicely stated- "the programmer is always right".
C++ attempts to give the programmer a great deal of control without there being any mechanisms between the language itself and the hardware it's supposed to control, so there isn't really any system which can tell you you're doing something wrong or dangerous at runtime, which can mean disaster when you throw the language at beginners.

Here's an interesting paper written by Bjarne Stroustrup which describes all of this in greater detail for those requiring sources: http://www2.research...lmost-final.pdf

I gets all your texture budgets!


#16 Telastyn   Crossbones+   -  Reputation: 3726

Like
0Likes
Like

Posted 14 December 2011 - 08:08 AM

I agree with this, but I disagree with the implication that any other language teaches you how to write good code.


Indeed. I don't mean to make that implication.

It's just a lot easier to write bad code in C++, and a lot easier to write down-right broken code (memory leaks, buffer overruns, undefined behavior) without ever realizing it.

#17 Serapth   Crossbones+   -  Reputation: 5581

Like
0Likes
Like

Posted 14 December 2011 - 11:06 AM

I generally agree with Telastyn ( and others ) statements here, with perhaps a bit less vehemence. For a much more detailed break down of the various languages, there strengths and weaknesses, key libraries and recommended books read this. If it isn't obvious at this point, this question comes up... a lot.

In a generally corollary, I would generally recommend against taking the opinion of people that tell you to start with C++. This is often the case of the blind leading the blind, in the a new developer ( generally on hearsay recommendation of other new developers! ) learn C++ as their first language and as a result recommend that language when this discussion comes up. Truth of the matter is, until you have actually been exposed to a number of languages and are well past the beginner stages, are you really qualified to comment on which languages are or aren't beginner friendly, until that point, you simply don't have the proper perspective. There are a lot of C++ programmers on these forums, some exeptional, and amongst the best, I don't recall one ever recommending starting with C++.

For a variety of reasons, it simply isn't *an effecient* starting language. I actully think you would learn C++ faster by learning another language first!

#18 jonbonazza   Members   -  Reputation: 121

Like
0Likes
Like

Posted 14 December 2011 - 04:39 PM

I don't believe there is any one best language for beginners. In my opinion, it relies heavily on how that beginner thinks, and even what he/she expects to get out of programming. My first language was BASIC many years ago, then followed up with C++. It wasn't until I entered university that I became serious about programming (and realized my love for it). Many universities start with a managed language (usually Java due to its cross-platform nature), and their reasoning is just, mimicking the reasoning of many people on this forum. However, there are also some universities, such as mine, that starts with C++.

Their reason also has its merits. The dominate idea behind starting with C++ in my university is that, in order to write good code, it forces you to understand exactly what you are doing, sometimes down to a low level. This, I admit, is not for everyone. Because my university places such a heavy emphasis on learning the low level workings, many, if not most, of the students enrolled in the CS program drop out within the first year and even more trickle out as time goes on. On average, we maybe have 5 - 10 students who graduate from the CS curriculum per academic year. These graduates, however, have proved that they understand not only the basic concepts of programming, but also have an advanced understanding of the inner workings of compilers, linkers, operating systems, hardware, and even the languages themselves. On the other hand, a nearby, larger university (and one that is quite well known in the athletic world) has a computer science program that starts off with Java, and not getting into C/C++ until their senior year. This program has many more graduates, however many of them cannot even tell you the size of a signed integer.

The point is that there is no one-size-fits all for "which language do I learn first?" It depends almost entirely on the person doing the learning.
Co-founder/Lead Programmer
Bonafide Software, L.L.C.
Fairmont, WV 26554 US

#19 Serapth   Crossbones+   -  Reputation: 5581

Like
0Likes
Like

Posted 14 December 2011 - 06:50 PM

The dominate idea behind starting with C++ in my university is that, in order to write good code, it forces you to understand exactly what you are doing, sometimes down to a low level


This has the logical consistency of telling an artist he should cut one of his testicles off to truely understand emotion. The Van Goghs of the world may agree, but most others would not.

#20 return0   Members   -  Reputation: 444

Like
0Likes
Like

Posted 15 December 2011 - 06:23 PM

CS is not about mundane low level implementation concerns, especially not in a crapshop like C++.




Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS