As was foretold, we've added advertisements to the forums! If you have questions, or if you encounter any bugs, please visit this thread: https://forums.penny-arcade.com/discussion/240191/forum-advertisement-faq-and-reports-thread/
Options

Learning programming for game developing

EVOLEVOL Registered User regular
edited February 2012 in Help / Advice Forum
A few friends and I were trying to develop a few games a few months back. We didn't have any illusions of making grand 40 hour long 3D action beat 'em up games on our first try so we tried to start by making low scale, short JRPGs. So when we tried to start 'developing' our first project on RPG Maker(lol) we found out that even modifying such a simple engine like that was way beyond our abilities. Subsequently, we said 'fuck it, let's actually learn how to program shit and actually develop it properly, no matter how damn long it takes. For the FUTURE.'

So can you guys recommend me on what programming language we should start on and why? I recognize the fact that it'd take a lot of effort and probably years till we're actually able to develop anything recognizing a game by the way. We're trying to develop games for the PC if that helps. Thanks.

EVOL on

Posts

  • Options
    OrganichuOrganichu poops peesRegistered User, Moderator mod
    http://inventwithpython.com/pygame/chapters/

    python is good, it's accessible, it's dynamic and useful in a non-novel way, it's adored by the internet and so there is a crapload of documentation...

    you're going to get people who will give you every imaginable answer but i think python's a good start and that's a good (free) e-book.

  • Options
    Sir CarcassSir Carcass I have been shown the end of my world Round Rock, TXRegistered User regular
    For game making, I'd probably recommend learning C# and getting XNA.

    http://msdn.microsoft.com/en-us/library/bb200104.aspx

  • Options
    PowerpuppiesPowerpuppies drinking coffee in the mountain cabinRegistered User regular
    C# and XNA is a reasonable place to end up, that will help you program games, but it will be difficult to learn to program using those languages. Python or a similar language will make more sense as you are starting out, but I don't know how helpful it will be for the actual game programming.

    sig.gif
  • Options
    TheKoolEagleTheKoolEagle Registered User regular
    I know you played with rpg maker and had some trouble, but I think starting out with something like that is usually a good idea for getting the basics of designing systems, I used a program called game maker which keeps programming to a minimum but still lets you put a bit in so you get a feel for it. If I were you, I would try to mock up a very simple short version of the game you want to make in gamemaker sort of as a proof of concept, and then try to implement using a language such as python

    you will still need to learn a language but those little programs help knock out proofs of systems to give you a baseline to work out from

    uNMAGLm.png Mon-Fri 8:30 PM CST - 11:30 PM CST
  • Options
    Sir CarcassSir Carcass I have been shown the end of my world Round Rock, TXRegistered User regular
    Also, I'd recommend your first game be a Tetris clone.

  • Options
    TofystedethTofystedeth Registered User regular
    edited February 2012
    Python is an excellent first language to learn, because the syntax is very easy to read. It's almost pseudocode. Of the few languages I've studied, Python took the least time before I was able to make something that does something. Start out making a simple text based game. In my first programming class we made one where a * fell and you had to catch it in a \__/. It was all displayed on the Windows command console. It was about as simple as a game can be, but it helped to learn patterns you'll need for developing games. Control loops, storing game data and turning it into a display of the current state of the game, things like that.

    After that, you might try implementing a board game or card game in text. Once you have the game mechanics all together, pick up Pygame, and learn how to give it an actual interface and graphics. I'm personally a fan of these because I can't draw my way out of a wet paper bag so I can still make something that looks like something. Make a couple such simple games moving towards games that are more demanding. Such as going from card games, to a real time game. Tetris as Sir Carcass suggested is an excellent one, the rules and UI are simple and well, but if you can make a good Tetris clone where the controls don't feel sluggish, you'll be doing pretty well.

    Python isn't used for terribly many games, among other reasons because the source code is so easy to get. Most python programs run directly from source, but even a 'compiled' Python program can be easily reverse compiled with high accuracy using programs found on the internet. You probably won't want to use it for anything you release unless you don't care about that. However, if you've knocked a few playable games in Python, you'll be ready to pick up another language, and programming concepts transfer between languages very well. All you have to do is learn the new syntax. C# with XNA are currently pretty hot for game development. It works on both Windows and Xbox 360 with not much modification. If you're a student at a college or university of any size, you should be eligible to sign up for Dreamspark which gives you access to free Microsoft software you'll need, such as Visual Studio or XNA game studio, as well as I think a free month or year of entry into the Xbox game developer thing you'll need to be in if you want to be able to try and put any games you make on your Xbox. I believe it's $100 a year without that.

    Tofystedeth on
    steam_sig.png
  • Options
    CptHamiltonCptHamilton Registered User regular
    As other people have said, C# and XNA are a good way to build games. XNA will give you a lot of the graphics/input stuff that you'd otherwise need to find libraries for, and C# is a good middle point between the relative idiot-proofing of Java and the performance of C++.

    That said, if you don't know how to program at all, C# and XNA are going to be way over your head. I'd second Python as a good starting point, or maybe dive straight into C# but start off learning to program in general rather than trying to learn how to write a game straight away.

    Also, you can get the tools necessary to write a game with C# and XNA for free regardless of educational status. Visual Studio 2010 Express for C# is a free download from Microsoft, as is the XNA kit. Putting stuff up on XBLA will cost you money for licensing, but you can be set up to write code and work through tutorials inside the couple of hours required to download and install VS Express and the SDK. And while I'm not sure how the transfer to Xbox works, you can compile and run XNA games on Windows, and get a 360 Wireless Controller Adapter to play anything you write with a console controller if you want.

    PSN,Steam,Live | CptHamiltonian
  • Options
    CelestialBadgerCelestialBadger Registered User regular
    I'd second Python as a good starting point, or maybe dive straight into C# but start off learning to program in general rather than trying to learn how to write a game straight away.

    Learning how to program a game is an excellent way of learning to program. That's how I did it. You just need to choose a simple game, and accept that it won't be worth even showing anyone. Pong, yes, Final Fantasy:The Next Generation, no.

  • Options
    Brian KrakowBrian Krakow Registered User regular
    Thirding Python. I'm learning Java right now and I miss Python's ultra-intuitiveness so much (not that Java is that bad).

  • Options
    TehSlothTehSloth Hit Or Miss I Guess They Never Miss, HuhRegistered User regular
    As other people have said, C# and XNA are a good way to build games. XNA will give you a lot of the graphics/input stuff that you'd otherwise need to find libraries for, and C# is a good middle point between the relative idiot-proofing of Java and the performance of C++.

    That said, if you don't know how to program at all, C# and XNA are going to be way over your head. I'd second Python as a good starting point, or maybe dive straight into C# but start off learning to program in general rather than trying to learn how to write a game straight away.

    Also, you can get the tools necessary to write a game with C# and XNA for free regardless of educational status. Visual Studio 2010 Express for C# is a free download from Microsoft, as is the XNA kit. Putting stuff up on XBLA will cost you money for licensing, but you can be set up to write code and work through tutorials inside the couple of hours required to download and install VS Express and the SDK. And while I'm not sure how the transfer to Xbox works, you can compile and run XNA games on Windows, and get a 360 Wireless Controller Adapter to play anything you write with a console controller if you want.

    I'd agree with this, I've been working on a small project in it for a while in my spare time and it's pretty great for when you want to try making your first game. I don't think it's the best for learning coding fundamentals though or picking up the skills you'll need to really do design, although there could be some great tutorials out there that I just kinda skipped over.

    Ruby is another great option along with Python if you wanna try your hand at knocking up something easy and text based, or just want to try doing something simple and useful programmatically. The syntax is about as forgiving as possible and it's really easy to get started.

    Although it's Java, and may be a bit over your head at the beginning, the AP Marine Biology Case Study is actually a pretty cool introduction to object oriented design and some programming basics, which strongly overlaps with C#. It's what's used to teach AP Computer Science classes in high school, the biggest barrier to learning it is getting it all together and getting it to run.

    FC: 1993-7778-8872 PSN: TehSloth Xbox: SlothTeh
    twitch.tv/tehsloth
  • Options
    EVOLEVOL Registered User regular
    Thanks guys. So I guess my course will be starting on Python and eventually ending up on C# and XNA?

    A couple of more questions please:

    Can anybody recommend me a book or few about programming? Will I be good with only the Invent With Python book recommended by Organichu?

    Other than the source code issue, what makes C# and XNA better for making games over Python? How do others not mentioned (C++, Java) fare in programming for game development, and why?

    At what point would it be doable to switch to C# from Python?

  • Options
    OrganichuOrganichu poops peesRegistered User, Moderator mod
    the question isn't whether other languages (or entire language families) are good for game programming. pretty much every major language whose name you know has libraries and the support to develop 'games'. c++ is huge and the cornerstone of blockbuster game development, java has a huge game library, c# is popular for new game developers because everything's streamlined and visualized and apportioned.

    you can make a game with almost anything. but you seemed unhappy with the process of using what is basically a drag and drop 'game generator', and suggested that you wanted to learn to actually code. for that, the question's a little different.

    though you could make a game with all of these languages (eventually), my position is that python offers the best mixture of accessibility to the beginner with immediate gratification (you can make basic games almost immediately)... while lacking the sort of 'handholding' you see in xna and other huge, graphical game development suites.

    if you find that book a little bit 'ahead' of you, i'd advise the previous version too which is also on that site (and focuses on rudimentary game creation, without the pygame framework).

  • Options
    JasconiusJasconius sword criminal mad onlineRegistered User regular
    Game programming is 90% organization and planning, 10% what language you learn

    XNA is good because you'll at least get something on the screen before you inevitably hit a brick wall in not knowing how to accomplish something, which will help you not abandon things altogether


    Python's game engines are a mess of abandoned/rarely maintained projects and Python on a Windows environment is less than enjoyable

  • Options
    RhinoRhino TheRhinLOL Registered User regular
    edited February 2012
    I would suggest starting with a 2d game and with setup like:

    Java and Slick (win, linux, mac, andriod)
    C# and XNA (windows, xbox, windows phone)
    C/C++ and SDL (win, linux, mac)
    Flash (web)

    Lots of people suggestion python, and it's good for learning - but for actual game making, it's bottom of the barrel for many reasons... Instead of that, I would suggest Flash as it has better third party support [for game developers] and easier to deploy to your users.
    Jasconius wrote:
    Python's game engines are a mess of abandoned/rarely maintained projects and Python on a Windows environment is less than enjoyable

    This has been my experience too.

    ---

    As far as actual game development, work on one thing at a time. Learn how to do it. For example, creating and loading a map with something like tiled (mapeditor.org). Then add player and NPCs, etc.

    Chances are, it'll eventually turn into a huge mess that is hard to manage. This is good, this means your learning. By this point you should know your way around the landscape (syntax, working with the engine, libraries, some basic file formats, rendering, etc). This is were you should scrape it all and start learning design patterns and rebuild it into a more manageable state.

    Rhino on
    93mb4.jpg
  • Options
    EVOLEVOL Registered User regular
    Thanks guys. I'll learn with Python and switch on to C#/XNA later on then. The mapeditor link sounds smashing, thanks for that. Hopefully a few years later on I'll be able to show off a game that doesn't look too shabby :P

  • Options
    nevilleneville The Worst Gay (Seriously. The Worst!)Registered User regular
    Jasconius wrote: »
    Game programming is 90% organization and planning, 10% what language you learn

    XNA is good because you'll at least get something on the screen before you inevitably hit a brick wall in not knowing how to accomplish something, which will help you not abandon things altogether


    Python's game engines are a mess of abandoned/rarely maintained projects and Python on a Windows environment is less than enjoyable

    I agree entirely.
    Learning to program is one thing.
    Learning to program with the goal of programming games is quite another.
    Python isn't going to be much use to him/her at all if they want to make games.

    I'd say C#/XNA is the way to go.
    I disagree with it being "Way over their head"... it is definitely more beginner friendly in a lot of respects compared to C++.

    Another option might be objective-C for iOS.
    While it isn't the easiest, there is an enormous amount of support and documentation out there.

    Really, if you want to make an actual VIDYA GAME, there isn't a quick and dirty solution or everyone would use it.
    There's going to be a lot of technical stuff to slog through.


    tl;dr DON'T start with Python. Try C#/XNA first.

    nevillexmassig1.png
Sign In or Register to comment.