• Announcements

    • khawk

      Download the Game Design and Indie Game Marketing Freebook   07/19/17

      GameDev.net and CRC Press have teamed up to bring a free ebook of content curated from top titles published by CRC Press. The freebook, Practices of Game Design & Indie Game Marketing, includes chapters from The Art of Game Design: A Book of Lenses, A Practical Guide to Indie Game Marketing, and An Architectural Approach to Level Design. The GameDev.net FreeBook is relevant to game designers, developers, and those interested in learning more about the challenges in game development. We know game development can be a tough discipline and business, so we picked several chapters from CRC Press titles that we thought would be of interest to you, the GameDev.net audience, in your journey to design, develop, and market your next game. The free ebook is available through CRC Press by clicking here. The Curated Books The Art of Game Design: A Book of Lenses, Second Edition, by Jesse Schell Presents 100+ sets of questions, or different lenses, for viewing a game’s design, encompassing diverse fields such as psychology, architecture, music, film, software engineering, theme park design, mathematics, anthropology, and more. Written by one of the world's top game designers, this book describes the deepest and most fundamental principles of game design, demonstrating how tactics used in board, card, and athletic games also work in video games. It provides practical instruction on creating world-class games that will be played again and again. View it here. A Practical Guide to Indie Game Marketing, by Joel Dreskin Marketing is an essential but too frequently overlooked or minimized component of the release plan for indie games. A Practical Guide to Indie Game Marketing provides you with the tools needed to build visibility and sell your indie games. With special focus on those developers with small budgets and limited staff and resources, this book is packed with tangible recommendations and techniques that you can put to use immediately. As a seasoned professional of the indie game arena, author Joel Dreskin gives you insight into practical, real-world experiences of marketing numerous successful games and also provides stories of the failures. View it here. An Architectural Approach to Level Design This is one of the first books to integrate architectural and spatial design theory with the field of level design. The book presents architectural techniques and theories for level designers to use in their own work. It connects architecture and level design in different ways that address the practical elements of how designers construct space and the experiential elements of how and why humans interact with this space. Throughout the text, readers learn skills for spatial layout, evoking emotion through gamespaces, and creating better levels through architectural theory. View it here. Learn more and download the ebook by clicking here. Did you know? GameDev.net and CRC Press also recently teamed up to bring GDNet+ Members up to a 20% discount on all CRC Press books. Learn more about this and other benefits here.
Sign in to follow this  
Followers 0
CodeFree

Absolute Beginner

20 posts in this topic

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 [:
0

Share this post


Link to post
Share on other sites
[quote]What's the best language to learn? (I've only really learned HTML, and that's good for nothing)[/quote]
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.

[quote]Are there any pre-requisites to learning this? (If not; are there any recommended?)[/quote]
Answer: Stubborness and a computer.

[quote]How long does it usually take for the average guy to pick this language up? [/quote]
Answer: No one can say. Depends on how much time your willing to put into it.

[quote]What's the best books for this language/pre requisite? [/quote]
Answer: Most "Beginning with {Insert Software language here}" is good in the start.

[quote]How exactly does the programming work with game development? (Nooby question, I know)[/quote]
Answer: I actually dont understand the question

[quote]Let's say i'm a game programming master( [; ) Where would I go from there?[/quote]
Answer: If you were. Then its entirely up to you. Basicly you would already know the answer to it.

[quote]Can you create software with the language you learn for developing games?[/quote]
Answer: Yes.

Basicly you could get the same answers from the stickies. Edited by Zorerk
0

Share this post


Link to post
Share on other sites
[color="#1C2837"] [/color]Hi there, welcome to gamedev.net.

So, addressing each question individualy:

[b]What's the best language to learn?[/b]
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.

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

[b]How long does it usually take for the average guy to pick this language up?[/b]
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.
[b]
[/b]
[b]What's the best books for this language/pre requisite?[/b]
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)

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

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

[b]Can you create software with the language you learn for developing games?[/b]
Sure.
[left][size="2"] [/size][/left]
0

Share this post


Link to post
Share on other sites
[quote name='CodeFree' timestamp='1323787975' post='4893517']
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.
[/quote]

[url="http://www.gamedev.net/index.php?app=forums&module=forums&section=rules&f=31"]FAQ[/url]
[url="http://content.gpwiki.org/index.php/Main_Page"]Wiki[/url]
[editted to be less snarky]
1

Share this post


Link to post
Share on other sites
[quote]To start it off: What's the best language to learn? (I've only really learned HTML, and that's good for nothing)[/quote]

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


[quote] Are there any pre-requisites to learning this? (If not; are there any recommended?)[/quote]
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.

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

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

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

I made a list of resourced I found useful when I was learning C++ and C# in [url="http://pursuemastery.blogspot.com/2011/12/resources-that-shaped-me-as-programmer.html"]this blog post[/url]; if you decide to go with C# and XNA, look at the books and link related to those in that post.

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

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.

[quote]Let's say i'm a game programming master( [; ) Where would I go from there?[/quote]
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.

[quote]Can you create software with the language you learn for developing games?[/quote]

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

Good Luck.
0

Share this post


Link to post
Share on other sites
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.
0

Share this post


Link to post
Share on other sites
[quote][b]What's the best language to learn?[/b]
[color="#1C2837"][size="2"]I would personally recommend C++.[/size][/color][color="#1C2837"][size="2"][left]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.[color="#000000"][size="3"][/quote][/size][/color][/left][/size][/color]
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++.
-1

Share this post


Link to post
Share on other sites
[quote name='Telastyn' timestamp='1323826731' post='4893693']
[quote name='Zac' timestamp='1323820568' post='4893672']
[quote][b]What's the best language to learn?[/b]
[color="#1C2837"][size="2"]I would personally recommend C++.[/size][/color][color="#1C2837"][size="2"][left]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.[color="#000000"][size="3"][/quote][/size][/color][/left][/size][/color]
I personally fully agree with this statement.
[/quote]

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.

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

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

[quote]
It teaches you how to become disciplined and write good code.
[/quote]

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++ [i]defines [/i]undisciplined, garbage code.

[quote]
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++.
[/quote]

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.
[/quote]

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.

1

Share this post


Link to post
Share on other sites
[color="#1C2837"][size="2"][quote][/size][/color][color="#1C2837"][size="2"]How exactly does the programming work with game development? (Nooby question, I know)[/size][/color][color="#1C2837"][size="2"][/quote][/size][/color]
[color="#1C2837"] [/color]
[color="#1c2837"][size="2"]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....[/size][/color]
[color="#1c2837"] [/color]
[color="#1c2837"][size="2"]I will give you an example in C#:[/size][/color][url="http://pastebin.com/idQ0kyGr"]http://pastebin.com/idQ0kyGr[/url][color="#1c2837"][size="2"]
[/size][/color][color="#1c2837"] [/color]
[color="#1c2837"][size="2"]source: [/size][/color][b][url="http://tinyurl.com/7tqokgm"]http://tinyurl.com/7tqokgm[/url][/b]
[color="#1c2837"] [/color]
[color="#1c2837"][size="2"]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 [/size][/color][img]http://public.gamedev.net/public/style_emoticons/default/wink.gif[/img]

unity3d tutorial: [b][url="http://tinyurl.com/4y2xgyv"]http://tinyurl.com/4y2xgyv[/url][/b]
0

Share this post


Link to post
Share on other sites
[quote name='CodeFree' timestamp='1323787975' post='4893517']
How exactly does the programming work with game development? (Nooby question, I know)
[/quote]
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.
[quote]
Can you create software with the language you learn for developing games?
[/quote]
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.
[quote name='Telastyn']
crusade!
[/quote]
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.
0

Share this post


Link to post
Share on other sites
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.
1

Share this post


Link to post
Share on other sites
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 [u]always[/u] right" as a core principle. This is, [i]by definition[/i], 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:
[list]
[*] 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.
[/list]

This is fact*, and not opinion.

* [size="1"]Exaggerated for comic effect, perhaps - I'm not even sure if it is all that much of an exaggeration.[/size]
2

Share this post


Link to post
Share on other sites
[quote name='rip-off' timestamp='1323858681' post='4893791']
The language is designed with "the programmer is [u]always[/u] right" as a core principle. This is, [i]by definition[/i], not true for beginners, and rarely true in general.[/quote]

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: [url="http://www2.research.att.com/~bs/hopl-almost-final.pdf"]http://www2.research...lmost-final.pdf[/url]
0

Share this post


Link to post
Share on other sites
[quote name='Nypyren' timestamp='1323853781' post='4893775']
I agree with this, but I disagree with the implication that any other language teaches you how to write good code.
[/quote]

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

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

Share this post


Link to post
Share on other sites
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 [url=http://www.gamefromscratch.com/post/2011/08/04/I-want-to-be-a-game-developer.aspx]read this[/url]. 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!
0

Share this post


Link to post
Share on other sites
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.
0

Share this post


Link to post
Share on other sites
[quote name='jonbonazza' timestamp='1323902375' post='4894015']
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
[/quote]

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

Share this post


Link to post
Share on other sites
CS is not about mundane low level implementation concerns, especially not in a crapshop like C++.
0

Share this post


Link to post
Share on other sites
[quote name='Serapth' timestamp='1323910248' post='4894042']
[quote name='jonbonazza' timestamp='1323902375' post='4894015']
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
[/quote]

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.
[/quote]

Hah...well some programmers are very Van Gogh.

Another spin of what jon said: It forces you to think about [i]memory[/i]. At my university, they started us with Java but at least you got some exposure to how things are really laid out (and why) in our OS (which had all assignments in C/C++ even) and computer organization classes. In my opinion, if you at least get that sort of exposure, what you start out isn't all that critical, at least in the first year.

Also to the OP:

A programming language is nothing but a [i]tool.[/i] It's how you use it that's important, and most of the more mainstream/popular languages all have their benefits and disadvantages, so often their usage can depend on the requirements of the type of software you want to put together. No one language will teach you how to be a good programmer, as there's a lot to software development than just the programming language - algorithms, data structures, understanding time/space complexities (how long does it run, how much memory it takes), etc. To understand those topics takes a lot longer than learning any one programming language, and are crucial in any software endeavor, including programming a game.
0

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  
Followers 0