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

Best Starting language to learn for a game?

PlotWholePlotWhole Registered User new member
I'm just a regular old senior in highschool with a dream of developing videogames ever since i started playing them at a young age (this sounds super corny but whatevs) and i thought that better to start now than later. i have little to no experience in developing games other than using the free version of Game Maker for my GD class. I want to start small nothing too big or difficult the only languages i know of are C++ or Python and i need some advice on if these are the easiest or of there are others out there.

Forumers i need your help! if you could send me anything to help me get started or push me in the right direction that would be GREAT! To whomever responds thank you!

Posts

  • Options
    amateurhouramateurhour One day I'll be professionalhour The woods somewhere in TennesseeRegistered User regular
    GameMaker: Studio and the newest GameMaker 2.0 are both fine for making games. They're better suited for 2D but they're great. I've done some prototyping in them and I enjoy it.

    Unity is better for 3D and you can insert raw code into it.

    They both have a HUGE reddit community, youtube tutorials, and a decent marketplace for code snippets.

    are YOU on the beer list?
  • Options
    JasconiusJasconius sword criminal mad onlineRegistered User regular
    there's not a best language, as all things have strengths and weaknesses

    if you want "fastest to something good", I would also advocate for GameMaker. I'm an unlikely champion of gamemaker, I think it makes for really good training wheels.

    The language that GameMaker uses is called "GML", and it defies direct comparison, but aesthetically it relates a lot to C#.

    So C# is a good language to pick up (and Unity uses it)

    Unity is good it's just harder and you have to know more things to make something happen

  • Options
    ArbitraryDescriptorArbitraryDescriptor changed Registered User regular
    Unreal uses C++ or no code at all. You could conceivably write the whole thing in Blueprint (their node-based, visual scripting language), and only stray into actual C where you're comfortable.

  • Options
    mRahmanimRahmani DetroitRegistered User regular
    "Best" language isn't really a thing that exists. There are a lot of languages that can work and which one will use will depend on what you are trying to achieve.

    Game Development as a Programmer
    If your goal is to get into nitty gritty nuts and bolts game development from the ground up, I'm still a fan of the old XNA Game Studio and C#. This gives you the absolute bare basics and assumes that you want to build your own game engine: player movement, physics, collisions and such will be entirely up to you to create. You will learn a ton about what's involved in making games this way, but you will be limited to making small simple projects to play with the concepts due to the amount of work involved. C++ and DirectX can also work, but were not nearly as user friendly last time I tried.

    Game Development as a Gameplay Designer
    If your goal is to create something cool looking and modern feeling, a prebuilt engine like Unity or Unreal would be best. These engines will handle all of the code behind level rendering, physics, sound, etc., and let you focus more on game mechanics ideas. You can still create custom scripts in C# or Javascript to perform custom actions (and will still need to here and there), but programming will take a back seat to building and playtesting game ideas.

    What tools you use will also depend on where you want to play your game. If you want to make Android mobile games, you need Java. XNA Game Studio and C# will allow you to build and test games on your Xbox 360. Playing on PC will of course give you the widest flexibility, which is probably the best start point before doing anything fancy.

  • Options
    CelestialBadgerCelestialBadger Registered User regular
    You should absolutely start now rather than later, in fact, you should have started sooner!

    I vote GameMaker, too. You want to start easy. Unity and Unreal are not easy (well, they are easy, but not really for the beginner.)

  • Options
    ArbitraryDescriptorArbitraryDescriptor changed Registered User regular
    edited December 2016
    Unreal uses C++ or no code at all. You could conceivably write the whole thing in Blueprint (their node-based, visual scripting language), and only stray into actual C where you're comfortable.

    Sorry, I misread the OP as you knew python and C++. Not knew of them. Wasn't grasping why everyone was recommending you ditch it and go to a C# environemnet :)

    C++ is definitely more complicated than C#; but even then the actual engine API you're working with makes a lot of difference, as they may provide very useful utility classes the core language lacks and memory/pointer management. Example: Math, string manipulation, and arrays are things I take for granted from my JS/AS roots, and things that are natively obnoxious (by comparison) in C/C++. Unreal provides utilities that allow for familiar handling of these things.

    That said, I don't know Gamemaker, but I'd trust those guys up there.

    ArbitraryDescriptor on
  • Options
    l_gl_g Registered User regular
    Unity is great for making stuff happen fast early, and since you are still learning and working on small projects, it is fine. Unity has the benefit of letting you write code in a few languages, such as Javascript or C#. Lots of free assets available, too!

    Unreal lets you look right into its guts if you want to, but at this stage you might not get a lot out of that. As you said, you are aware of the existence of C++, but not actually proficient in it. C++ is an industry standard not because it is such a vibrant and flexible imaginarium, but because you have a lot of control over nitty gritty things that game designers typically don't want to have to worry about, like memory management. If you want to stay the hell away from that, you can just use Blueprints, as others have mentioned.

    If what you want to make is interactive fiction, you should totally check out Twine (https://twinery.org/).

    Personally I think it's good to learn more than one language, and it's good to learn really different languages. C++ and C# can be quite different, but they aren't as different as, say, C++ and Python. If you find yourself leaning more and more towards coding, Python in particular is a very useful language to know because a variety of development tools (e.g. Maya) make use of it, and you can use Python as an all-purpose glue code for stuff. You can find game engines in Python, LUA, Rust, Haskell, and so on... but the truth is, a game engine is always something you'll find reasons to be bitter about. No game engine is perfect, even when it's made to build a very specific game.

    You worry about a language being "easy", but the truth is, when you are learning to code, no language is particularly easy.

    Cole's Law: "Thinly sliced cabbage."
  • Options
    ScooterScooter Registered User regular
    I've played around with Twine, and it's interesting, but as a coding development environment it's a huge pain in the ass. I might use it as a storyboarding process for a game to help organize ideas, or just as a hobby thing to think about games, but ugh for anything much more than Choose Your Own Adventure stories.

    Personally my favorite system has been Unity, and for that I'd recommend C#, but it's a full-fledged system with a lot more to it than just programming. Unless you're happy starting off with just colored spheres and blocks or something, there might be lower level systems with more prebuilt stuff in them to work with.

  • Options
    amateurhouramateurhour One day I'll be professionalhour The woods somewhere in TennesseeRegistered User regular
    Also there are a bunch of engines out there people will frown on, but find what works for you. Do you like SNES style JRPGs? Get RPG MAKER. The new one finally ports to multiple OS flavors.

    Like old school DOS point and clicks like Monkey Island? Get Adventure Game Studio. It's free!

    Gamemaker for 2D, Unity for 3D

    Twine (as said above) is great for storyboarding.

    Hell get Pico8 and just practice with some serious low res limitations and get used to platforming basics.

    They all (I think) have free trials, so just play around. There's no right answer. Successful indie games have been made with all of those engines.

    Raw C code takes time though, it's an investment in years.

    are YOU on the beer list?
  • Options
    MachwingMachwing It looks like a harmless old computer, doesn't it? Left in this cave to rot ... or to flower!Registered User regular
    - If you're interested in solo or indie development, it comes down to the genre of game you want to make. GameMaker is commonly used for 2D RPGs or sidescrollers, and Twine is good for text-based games. C# and C++ are better for FPSes, RTSes, and so forth. I've heard GameMaker is really easy to pick up, though I've never used it myself.

    - If you're interested in gamedev on a team, C# and C++ are the two languages to pick from. Other languages can teach you good coding skills, but these are the two that every big studio uses. Unity and Unreal are the premiere engines for learning, in my opinion!

    - Python is commonly used for building tools. All the major 3D art packages support Python scripting, and every studio has a unique art pipeline that needs unique tools. Source: I'm a technical artist at Blizzard and work entirely in Python ;O. I consider it to be the easiest widely-used programming language to pick up *by far*, but it's used more in a supporting role for gamedev.

    l3icwZV.png
  • Options
    TaerakTaerak Registered User regular
    edited December 2016
    Game artist here. I mostly develop user interfaces, but I've recently started learning how to program, so I feel I can chip in a bit. Our studio uses both Unity and Unreal, and we've used GameMaker in the past. We've never made anything good with GameMaker though, and its definitely capable of it (Hotline Miami, Gunpoint, Hyperlight Drifter were all made in it) so be aware I might be a bit biased.

    Machwing is absolutely right in that C# and C++ are the languages to know. There's a thing going on in my area where all the companies will only hire you if you've got prior C#/Unity Dev experience. They'd hire C++ devs, but there's no one around because our budgets are too small. The companies here need people to hit the ground running and can't even afford the few weeks that it would take to train someone on Unity. Now, that might not be relevant to you at the moment, but it would be a nice bonus if after some time playing around you could take on larger projects that interest you without having to put yourself through the stress of learning a new language and engine. Even if the trends have moved on by the time you want to start working, it's unlikely things will have moved far away from C#.

    The real reason why I would recommend starting with Unity though is because its supporting resources are excellent. There's extensive documentation about the engine, and good tutorials to coding concepts and how they apply to the making a game - but the gem is Unity Answers, which is like stack exchange for Unity. When I started programming, everytime I stumbled into an issue there usually was a Unity Answer thread that succinctly explained what I was doing wrong, and how to think about the problem so I could design a better solution. The forums, which are separate from Answers also tend to attract a slightly more knowledgeable crowd than those from GameMaker, but at the same time slightly more patient and down-to-earth than the Unreal Engine ones - which is sort of where you want the community to be when you're starting off.

    EDIT: That said, if you have an idea for a 2D game you want to try out, GameMaker will get you there the fastest. I'm sort convinced Unity will get you there easier in the *really* long-term, but that's not really a concern for learning and hobby projects!

    Taerak on
  • Options
    CelestialBadgerCelestialBadger Registered User regular
    A newbie can learn any language they like because your first language doesn't define you. I learned on BASIC. You ain't getting a job coding games until you've been doing it a couple of years. Starting out on something simple, then moving to something more capable later is a good plan.

  • Options
    furbatfurbat Registered User regular
    edited December 2016
    Python is a good starting language in my opinion. I had to learn it this summer for a course I'm teaching and found it easy to pick up. Sometimes the simplicity of the language makes certain things harder imo, but that could just be my inexperience with the language.

    I don't work in the industry, but I think if you focus on learning to write code you'll find yourself making games to become a better programmer. And if you truly love writing code and actually know what you are doing you can probably do whatever you want.

    furbat on
  • Options
    CelestialBadgerCelestialBadger Registered User regular
    Learning one language makes learning all the rest much easier. Almost all of them are part of the same language family, and the ones that aren't are little-used, particularly in game development. Learning a new coding language is like learning to speak Scottish English when you already speak American English - there are differences that can cause confusion, but most things are the same. This is why the choice of language to start learning in is not terribly important.

Sign In or Register to comment.