• 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
AnonymousApple

Game Development Langauge

17 posts in this topic

Hi, I am Texturer For Every single game i ever worked on.
But, Even though i Love Texturing, I Want to learn how to program a game too,
Now...This Brings me to my question. What is the best language for a beginner to learn?
I want something thats not that difficult as a first language.
Also, Im Intresting In Making 2D Platformers, So If you could recommend a language that suits that. That'd be great
And I Know that learning to program is a long road..
I Understand stand that.
Thanks In Advance,


[size="2"]-Apple[/size][img]http://public.gamedev.net/public/style_emoticons/default/dry.gif[/img]

Poll removed, please read the forum FAQ. -- jpetrie
0

Share this post


Link to post
Share on other sites
I would check out the [url="http://www.gamedev.net/index.php?app=forums&module=forums&section=rules&f=31"]Forum FAQ[/url] It actually answers all of your questions =)

I would stay away from C++ to start out, have fun!

edit:
Many people are voting C++, but keep in mind your going to spend a minimum a year learning to program in C++ before you can start making games.
If you want to start making games I would really recommend something else.

On the other hand if you want to learn how to program C++ is a good choice, but its going to be more difficult to learn than the other languages.
I would also suggest adding C# for your list.
0

Share this post


Link to post
Share on other sites
[quote name='yewbie' timestamp='1321991309' post='4886650']
I would check out the [url="http://www.gamedev.net/index.php?app=forums&module=forums&section=rules&f=31"]Forum FAQ[/url] It actually answers all of your questions =)

I would stay away from C++ to start out, have fun!

edit:
Many people are voting C++, but keep in mind your going to spend a minimum a year learning to program in C++ before you can start making games.
If you want to start making games I would really recommend something else.

On the other hand if you want to learn how to program C++ is a good choice, but its going to be more difficult to learn than the other languages.
I would also suggest adding C# for your list.
[/quote]

The problem is that the list isnt extensive enough, I voted C++ as it is the only language in which big projects make sense. In my home projects I stay as far away from C++ as I can, and I code daily in C++ at work, the reason behind this is that there is no real framework in C++. You have to do everything yourself and it slows you down dramatically.


If you want to have something visual running quickly I would suggest you look into C# and XNA.

But before you can actually make games you need to learn how to code and that will take time and practice, I would start with simple number guessing games in a console window. This will teach you some basics of how to accept input and generate output and general application flow. After that start making it into a GUI app or make the guessing game a bit more interesting. Then look into pong as it will need some more advanced game logic and input handling.

0

Share this post


Link to post
Share on other sites
You can program a game on anything with a programming language. So the list could include C#, HTML5, VB, Javascript, Lua, Ada, Pascal, your programmable calculator, yada yada yada. There's like a discussion a day on programming language or game engine choices - and as there's obviously never so definitive an answer that it doesn't get asked again tomorrow, then I just suggest that you go with whichever one you're having the most fun with when you try it out. If you learn to program competently enough in that, moving to another language later will be easy.
0

Share this post


Link to post
Share on other sites
[quote name='latent' timestamp='1322022691' post='4886774']
You can program a game on anything with a programming language. So the list could include C#, HTML5, VB, Javascript, Lua, Ada, Pascal, your programmable calculator, yada yada yada. There's like a discussion a day on programming language or game engine choices - and as there's obviously never so definitive an answer that it doesn't get asked again tomorrow, then I just suggest that you go with whichever one you're having the most fun with when you try it out. If you learn to program competently enough in that, moving to another language later will be easy.
[/quote]


But what would be the easiest one to learn, Or would they be all equally difficult?
0

Share this post


Link to post
Share on other sites
I read [url="http://www.gamedev.net/index.php?app=forums&module=forums&section=rules&f=31"]the FAQ[/url] before posting and eventually picked C#. I'm glad I did.
0

Share this post


Link to post
Share on other sites
[quote name='AnonymousApple' timestamp='1321990240' post='4886647']
Hi, I am Texturer For Every single game i ever worked on.
But, Even though i Love Texturing, I Want to learn how to program a game too,
Now...This Brings me to my question. What is the best language for a beginner to learn?
I want something thats not that difficult as a first language.
Also, Im Intresting In Making 2D Platformers, So If you could recommend a language that suits that. That'd be great
And I Know that learning to program is a long road..
I Understand stand that.
Thanks In Advance,


[size="2"]-Apple[/size][img]http://public.gamedev.net/public/style_emoticons/default/dry.gif[/img]
[/quote]
With the criteria you listed,
1) Beginner friendly
2) Not difficult as a first language
3) Easy way to 2D

Then Python + Pygame are a prime couple. Otherwise, C# + XNA. Nothing you've listed requires C++, forget about that language for now.
0

Share this post


Link to post
Share on other sites
I agree intirely with DarklyDreaming.

[quote name='AnonymousApple' timestamp='1322056661' post='4886877']But what would be the easiest one to learn, Or would they be all equally difficult?[/quote]
I'm a total newbie too, but I've learned the very basics in both Python and C#. I'm going to answer this question and say Python. By far. By great and wide margin. Python, compared to C#, is so simple to learn the basics it's fun.

Also, it's an interpreted language rather than a complied language, so it's very cross-platform. What is written runs on a Windows computer, Mac, or for someone running Linux as long as they have Python installed. Like the FAQ says, it's a great language with which to start programming.

I'd suggest downloading the 32-bit version (trust me, stay away from the 64-bit one!) of [url="http://www.python.org/getit/"]Python 2.7.2[/url] and work through this tutorial: [url="http://www.learn-to-program.net/"]http://www.learn-to-program.net/[/url]

By the time you're done there, you'll be in a better place to actually make decisions in an informed way.

-Sharpe
0

Share this post


Link to post
Share on other sites
[quote name='DarklyDreaming' timestamp='1322059432' post='4886888']
With the criteria you listed,
1) Beginner friendly
2) Not difficult as a first language
3) Easy way to 2D

Then Python + Pygame are a prime couple. Otherwise, C# + XNA. Nothing you've listed requires C++, forget about that language for now.
[/quote]

I actually dare say that Python is not a good advice. Only because there are far more resources and online/beginner help for C# XNA than for Python oriented libraries IMO and that Python is not a sustained game dev language. (While ignoring multi platform worries for a beginner altogether)
0

Share this post


Link to post
Share on other sites
I Think i voted java on accident. I meant to vote c++ which I have been learning for about 2 months now. After 2 months of non stop late nights and weekends writing extremely boring console programs, I am finally tackling the first 2d game.

Now that I am finally finishing my basic Jedi training ready to write a simple game, i am thinking ok. This would have been much easier in flash action script. This game is not going to be sold or get published and will just be an excercise.

However if I had learned flash action script instead of c++ I could have made the same simple game and published it on facebook and on a site and have the potential to do some major free distribution

I am happy with my choice but had I picked flash It would be easier to share with the world.
0

Share this post


Link to post
Share on other sites
Of the listed languages i'd recommend neither, Python or Java would probably be the best beginner choices but ...

Unfortunatly both Python and Java has their shortcomings,

Java has a very strict math library which cannot use the x86 FPU for many operations since it doesn't meet the accuracy requirements of the language (This causes some math operations to be extremely slow if called with the "wrong" parameters) and its default graphics API is pretty weak (There are solutions, none that is really beginner friendly though), making Java game development fairly difficult for beginners, (You can make great games using Java but it requires significantly more knowledge of the language and programming in general than you'd need if you were using something else, It works very well for Android though)

Python has a fairly small community so finding help and resources for the language can be difficult. (It is supposedly a fairly good language though and it has gained alot of ground in recent years)

C is just a pure pain in the ass. (Sure, it was great in the 70s when we didn't have anything better but that was a very long time ago).
C++ is a bit like C, except it supports half a million other ways to completely screw yourself over and the quality of internet tutorials is abmyssal at best, There are great modern features in the language but all the old, outdated and plain awful stuff is still there ready to be used by unknowing beginners.
If you look at a game like Skyrim and its technical issues on the PC and PS3 you can see why C++ is a poor choice of language, not even experienced professionals manage to avoid shooting themselves in the foot with it, i wouldn't recommend using it while you learn how to program and after that its still a good idea to avoid it when possible, (It has alot of momentum and is pretty much the only reasonably high level language that has compilers available for almost all platforms making it difficult to avoid completely in some situations)

C# on the other hand (Which wasn't included in the poll) has pretty much all the advantages of Java and few of its disadvantages, it also has XNA which makes game development significantly easier and allows you to deploy your games on the xbox360 at a very low cost. (It is also the only language supported for third party WP7 development, unfortunatly it isn't supported on the other big mobile platforms)

Flash/Actionscript is also a very solid option due to its installbase and ease of deployment, especially now with Flash11 having good 3D support. (Lack of mobile support might be an issue for some projects though but it is worth knowing and is reasonably easy to get started with).
2

Share this post


Link to post
Share on other sites
[quote name='SimonForsman' timestamp='1322079017' post='4886998']
Of the listed languages i'd recommend neither, Python or Java would probably be the best beginner choices but ...

Unfortunatly both Python and Java has their shortcomings,

Java has a very strict math library which cannot use the x86 FPU for many operations since it doesn't meet the accuracy requirements of the language (This causes some math operations to be extremely slow if called with the "wrong" parameters) and its default graphics API is pretty weak (There are solutions, none that is really beginner friendly though), making Java game development fairly difficult for beginners, (You can make great games using Java but it requires significantly more knowledge of the language and programming in general than you'd need if you were using something else, It works very well for Android though)

Python has a fairly small community so finding help and resources for the language can be difficult. (It is supposedly a fairly good language though and it has gained alot of ground in recent years)

C is just a pure pain in the ass. (Sure, it was great in the 70s when we didn't have anything better but that was a very long time ago).
C++ is a bit like C, except it supports half a million other ways to completely screw yourself over and the quality of internet tutorials is abmyssal at best, There are great modern features in the language but all the old, outdated and plain awful stuff is still there ready to be used by unknowing beginners.
If you look at a game like Skyrim and its technical issues on the PC and PS3 you can see why C++ is a poor choice of language, not even experienced professionals manage to avoid shooting themselves in the foot with it, i wouldn't recommend using it while you learn how to program and after that its still a good idea to avoid it when possible, (It has alot of momentum and is pretty much the only reasonably high level language that has compilers available for almost all platforms making it difficult to avoid completely in some situations)

C# on the other hand (Which wasn't included in the poll) has pretty much all the advantages of Java and few of its disadvantages, it also has XNA which makes game development significantly easier and allows you to deploy your games on the xbox360 at a very low cost. (It is also the only language supported for third party WP7 development, unfortunatly it isn't supported on the other big mobile platforms)

Flash/Actionscript is also a very solid option due to its installbase and ease of deployment, especially now with Flash11 having good 3D support. (Lack of mobile support might be an issue for some projects though but it is worth knowing and is reasonably easy to get started with).
[/quote]

I agree with basically everything said here, except my biggest beef with Java is everything is just so over-freaking-whelming-freaking-ly over engineered, everywhere. everything. Eclipse, Maven, Ant, nHibernate, the sixteen billion UI toolkits, the fifteen billion webkits, etc... everything seems to have a hundred layers of XML, a few dozen different processes, built on X design pattern using Y framework with Z component along XYZ methodology to print freaking hello world on the screen.


I know thats some massive hyperbole, but once you start working with Java you will really start to get what I am getting at. I found while working with Android, as often as not I was fighting with Eclipse, the plugins and the crap emulator as I was the actual code. Now web development HA! What a process that is... moving all your logic out to XML files is all well and great, especially if you are a contractor who bills by the hour and are deploying your prebuilt solution, but to people actually trying to get shit done, so not fun. All those XML files are an absolute joy, until there is a problem, which makes debugging a virtual nightmare.

I am unfairly condemning Java the langauge because of Java the ecosystem, but truth is, it's hard to divorce one from the other. Especially because new developers ARE going to face these issues, and probably are going to be useful that hateful product Eclipse and will run into these issue. Noone, nowhere with Java ever seem to follow basic KISS principles, which is annoying to the extreme.


Want an idea what I am talking about... heres the original (beginner friendly!) instructions I [url=http://www.gamefromscratch.com/post/2011/10/13/Getting-started-with-PlayN.aspx]put together for installing PlayN[/url]. This process is pretty typical of the Java world, BTW. Now that PlayN is part of the Maven Central respository, you can get up and going faster, but these are still the instructions if you want to build it yourself. Compare that to your typical windows install of "Download and extract zip. Double click FileName.sln. Click Play icon" and you will see what I mean. Hell, Java makes the Linux command line build process seem downright inviting!
1

Share this post


Link to post
Share on other sites
[quote name='SimonForsman' timestamp='1322079017' post='4886998']
C is just a pure pain in the ass. (Sure, it was great in the 70s when we didn't have anything better but that was a very long time ago).
C++ is a bit like C, except it supports half a million other ways to completely screw yourself over and the quality of internet tutorials is abmyssal at best, There are great modern features in the language but all the old, outdated and plain awful stuff is still there ready to be used by unknowing beginners.
If you look at a game like Skyrim and its technical issues on the PC and PS3 you can see why C++ is a poor choice of language, not even experienced professionals manage to avoid shooting themselves in the foot with it, i wouldn't recommend using it while you learn how to program and after that its still a good idea to avoid it when possible, (It has alot of momentum and is pretty much the only reasonably high level language that has compilers available for almost all platforms making it difficult to avoid completely in some situations)
[/quote]

Most of the bugs in games havent got anything to do with the chosen language, it is very rare that I see a pointer bug coming along, it is mostly pure logic bugs that cause major glitches in games. Memory bugs are far more common, and this has to do with scoping issues not pointers or any other weird feature in the language, any language that supports pass by reference can be affected by these bugs.

C++ isn't that horrible as you make it out to be, once you understand pointers correctly it all starts making sense quickly, even though there are a lot of idiosyncrasies in C++. It's not because of the momentum or just cross platform compiling, it is also one of the few fairly highlevel languages that allow you to control everything, which is what you need to push a console to the extremes. The ability to mix in asm on the fly, use of intrinsic functions and full memory management are just a few of these.

To the point though all of that isn't important when learning how to program and using a language that comes with a huge standard library makes the learning process far easier. Remember however that it is still a good idea to figure out how these library containers and other features work internally. Because when you switch to another language that doesn't support that lib you are going to have to implement these if you want to use those features.
I would still recommend you start in C# or any other managed language that takes your fancy as you won't yet have to think about some management features of other languages, and alows you to focus on algorithm design.
1

Share this post


Link to post
Share on other sites
[quote name='NightCreature83' timestamp='1322126543' post='4887169']
[quote name='SimonForsman' timestamp='1322079017' post='4886998']
C is just a pure pain in the ass. (Sure, it was great in the 70s when we didn't have anything better but that was a very long time ago).
C++ is a bit like C, except it supports half a million other ways to completely screw yourself over and the quality of internet tutorials is abmyssal at best, There are great modern features in the language but all the old, outdated and plain awful stuff is still there ready to be used by unknowing beginners.
If you look at a game like Skyrim and its technical issues on the PC and PS3 you can see why C++ is a poor choice of language, not even experienced professionals manage to avoid shooting themselves in the foot with it, i wouldn't recommend using it while you learn how to program and after that its still a good idea to avoid it when possible, (It has alot of momentum and is pretty much the only reasonably high level language that has compilers available for almost all platforms making it difficult to avoid completely in some situations)
[/quote]

Most of the bugs in games havent got anything to do with the chosen language, it is very rare that I see a pointer bug coming along, it is mostly pure logic bugs that cause major glitches in games. Memory bugs are far more common, and this has to do with scoping issues not pointers or any other weird feature in the language, any language that supports pass by reference can be affected by these bugs.

C++ isn't that horrible as you make it out to be, once you understand pointers correctly it all starts making sense quickly, even though there are a lot of idiosyncrasies in C++. It's not because of the momentum or just cross platform compiling, it is also one of the few fairly highlevel languages that allow you to control everything, which is what you need to push a console to the extremes. The ability to mix in asm on the fly, use of intrinsic functions and full memory management are just a few of these.

To the point though all of that isn't important when learning how to program and using a language that comes with a huge standard library makes the learning process far easier. Remember however that it is still a good idea to figure out how these library containers and other features work internally. Because when you switch to another language that doesn't support that lib you are going to have to implement these if you want to use those features.
I would still recommend you start in C# or any other managed language that takes your fancy as you won't yet have to think about some management features of other languages, and alows you to focus on algorithm design.
[/quote]
"Undefined behavior" is the word that comes up as to why programming [i]beginners [/i]should stay far far away. It's easy to learn a little and think you know [i]a lot. [/i]Pointers and memory management is a fairly tiny reason of why C++ is off the recommended list. But I digress, that's not the topic here.
[quote][color="#1C2837"][size="2"]Python has a fairly small community so finding help and resources for the language can be difficult. (It is supposedly a fairly good language though and it has gained alot of ground in recent years)[/size][/color]
[/quote]
"Small" is relative - smaller than C++ or Java? Of course, C/C++/C# has the advantage there, but Python certainly has enough of followers to not fall into the obscure category (unlike other languages, e.g. Boo). That, and the speed with which you can go from idea to implementation, makes it an invaluable experience for beginners. If it had more support, it'd win hands down against any language I can think off - including C#; one of the languages I constantly rain praise for.
[quote][color="#1C2837"][size="2"]Flash/Actionscript is also a very solid option due to its installbase and ease of deployment, especially now with Flash11 having good 3D support. (Lack of mobile support might be an issue for some projects though but it is worth knowing and is reasonably easy to get started with).[/size][/color][/quote]
Agreed. It's a good language to start with if you want to "get right into it" and has a wide support base.
[quote][color="#1C2837"][size="2"]I actually dare say that Python is not a good advice. Only because there are far more resources and online/beginner help for C# XNA than for Python oriented libraries IMO and that Python is not a sustained game dev language. (While ignoring multi platform worries for a beginner altogether)[/size][/color][/quote]
Python doesn't have the install base of C# or C++, no. What it does have is a minimal no-headaches setup and a programming flow that any other interpreted language is envious off. Python has been used as a scripting toolset on AAA+ titles, so it can certainly handle pretty much anything you can throw at it. When you move on to other languages, you'll have the chance to use it in a similar fashion - while third party libraries that can handle the heavy lifting.

Java is to me a lesser version of C#. The awkwardness of getting it to run and run properly is the reason I don't think it appropriate for a beginner.
@OP: Forget about C, unless you are writing driver level code it's just a waste. C++ is very difficult to start with [i]correctly [/i]and is a massive (unnecessary) headache for what you want to do. Python is a good choice, it'll teach you [i]a lot [/i]in a very short timespan and, when learnt, will allow you to develop prototypes quickly. C# is good, but with more setup cost than Python and also more support base; something that might or might not be important to you. Java is... not worth your time.
0

Share this post


Link to post
Share on other sites
I Have Decided To Go With C#.
It Seems Like the Best Choice, Although If you think im making the wrong choice. Please Give me another suggestion.
0

Share this post


Link to post
Share on other sites
[quote name='AnonymousApple' timestamp='1322515153' post='4888581']
I Have Decided To Go With C#.
It Seems Like the Best Choice, Although If you think im making the wrong choice. Please Give me another suggestion.
[/quote]

There is no best choice, if there was, there would be a hell of a lot less programming langauges in the world!


That said, C# is a good choice, and probably the choice I would make if I was in your shoes but knowing what I know. That this scenario would create a paradox that could potentially create a hole in reality, destroying us all, is a thought best not pondered.
1

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  
Followers 0