Advertisement
If you have a new account but are having problems posting or verifying your account, please email us on hello@boards.ie for help. Thanks :)
Hello all! Please ensure that you are posting a new thread or question in the appropriate forum. The Feedback forum is overwhelmed with questions that are having to be moved elsewhere. If you need help to verify your account contact hello@boards.ie
Hi there,
There is an issue with role permissions that is being worked on at the moment.
If you are having trouble with access or permissions on regional forums please post here to get access: https://www.boards.ie/discussion/2058365403/you-do-not-have-permission-for-that#latest

Complete noob...whats involved?

  • 29-04-2013 3:37pm
    #1
    Closed Accounts Posts: 33,733 ✭✭✭✭


    Hi folks,

    Can anyone give me an idea of the process of making a basic platformer type game? I'm completely & totally new to all of this, & have literally no idea what the steps might be to do it. I realise there's prob few different options, but in general where should I begin the journey? I've no coding experience, so I suppose getting proficient at one would be a good start? If so, whats the advice for the best one for beginners etc?

    Games like Mario & Sonic etc would be close to my heart, so a Summer project of making an 8bit-esque platformer would be nice

    Any & advice is appreciated :o


«1

Comments

  • Moderators, Society & Culture Moderators Posts: 12,548 Mod ✭✭✭✭Amirani


    I'll be joining you in starting a game after my exams are finished. I've a bit of programming experience though so it'll give you a couple of weeks to catch up :p


  • Closed Accounts Posts: 33,733 ✭✭✭✭Myrddin


    I'll be joining you in starting a game after my exams are finished. I've a bit of programming experience though so it'll give you a couple of weeks to catch up :p

    Ah I'll be a long time catching up, when I say noob I mean noob!


  • Registered Users, Registered Users 2 Posts: 8,493 ✭✭✭RedXIV


    If you have NEVER coded at all and have no idea of the principles involved. I would recommend taking the time to learn the very simple basics of programming. Assigning Variables to store game values, loops, if-else blocks and try to get your head around how games you know use these. You don't have to get it bang on exactly but things like "If arrowLeft = pressed, move left. Else don't move".

    ^Thats very very basic but the these are the fundamentals to making a game.

    I'm mentoring at a coderdojo in Dun Laoghaire and while its very much geared towards teaching kids, most of the more established ones take in everyone. They are using a program called Scratch which is like programming with Lego, and a very good place to get your head around some of the problems. I'd highly recommend it to someone messing around and trying to learn before getting a bit more in depth with other tools.

    There was rumblings of a boards made game a few years ago, maybe now with the new forum, we could start those rumblings again, and start small so as to upskill people interested?


  • Closed Accounts Posts: 33,733 ✭✭✭✭Myrddin


    Cheers man :)

    What language would you advise for learning the very basics you mentioned? Will take a look at Scratch too


  • Registered Users, Registered Users 2 Posts: 8,493 ✭✭✭RedXIV


    EnterNow wrote: »
    Cheers man :)

    What language would you advise for learning the very basics you mentioned? Will take a look at Scratch too

    The very basics aren't really language specific, you'll find them in all languages, maybe with slightly different variations on syntax and phrasing.

    For example, this is a simple "while" loop in python (a scripting language)
    while (count < 9):
       print 'The count is:', count
       count = count + 1
    

    and this is one in C++ a very powerful but not intuitive one
    // Local variable declaration:
       int a = 10;
    
       // while loop execution
       while( a < 20 )
       {
           cout << "value of a: " << a << endl;
           a++;
       }
     
       return 0;
    

    I would recommend a scripting language to get used to the basics as the read more like conventional sentences, but you'll find most games when modding or building more powerful games tend to end up like C++.

    If you're near a coderdojo, I'd def get involved, just see if you can even get access to their notes (I'll try and dig up some on my side too) as they break everything down to baby steps but these really are the things you need to know inside out.


  • Advertisement
  • Closed Accounts Posts: 33,733 ✭✭✭✭Myrddin


    RedXIV wrote: »
    For example, this is a simple "while" loop in python (a scripting language)
    while (count < 9):
       print 'The count is:', count
       count = count + 1
    
    print "Good bye!"
    

    As I said..total newb, therefore; What the heck is a "while" loop? :o

    But yeah, I get what your saying in that the basics apply to most languages, its the syntax that changes between them though.

    Jeez, this could die a death already :(


  • Registered Users, Registered Users 2 Posts: 7,814 ✭✭✭TPD


    Before ever learning a programming language, I was using gamemaker to make simple 2d platform games. In my opinion, it gave me a good understanding of object oriented programming methods and ideas. For the first year or so, until things got complex, my programming lecturer in college assumed I'd done programming before.

    Based solely on my own experience, I'd give gamemaker a go as your first attempt. It's quick and easy to get something playable, and it does teach some of the broader ideas that'll be needed to write a game in code. Also there are a lot of tutorials / editable files, so you can see how other games are made.

    Edit: I think that's a bonus, as seeing lines of code and having no idea what's working (and why) and what's not working (and why not) would be very off putting.


  • Registered Users, Registered Users 2 Posts: 8,493 ✭✭✭RedXIV


    EnterNow wrote: »
    As I said..total newb, therefore; What the heck is a "while" loop? :o

    Sorry, :o a "while" loop is a piece of code that continues to repeat itself while its condition is true.

    so
    while (count < 9 )
    
    is like saying "While the variable "count" is less than 9, keep doing this"
    and then within your loop you'll have something changing the variable count presumably so it can break out of that loop eventually and do something else.

    A common example of this would be
    While (player is Alive)
    
    as your main game loop and then when something causes him to die, he ends this loop and moves on to the game over screen etc.
    EnterNow wrote: »
    But yeah, I get what your saying in that the basics apply to most languages, its the syntax that changes between them though.

    Jeez, this could die a death already :(

    Don't let it get to you, everyone is like this when they start :) I'll throw up a generic set of fundamentals later tonight and hopefully something like GameMaker above can help you keep interested without the code part :)


  • Closed Accounts Posts: 33,733 ✭✭✭✭Myrddin


    TPD wrote: »
    Before ever learning a programming language, I was using gamemaker to make simple 2d platform games.

    Cheers, will have a look at that also :)
    RedXIV wrote: »
    I'll throw up a generic set of fundamentals later tonight and hopefully something like GameMaker above can help you keep interested without the code part :)

    That'd be fantastic, thanks again!


  • Registered Users, Registered Users 2 Posts: 22 Carpo II


    What language you choose should be largely driven by what your expectations are.

    If you want to see results on screen quickly and are approaching from a fairly casual point of view maybe something like UnrealScript and the Unreal Editor would suit? You should be able to get up and running very quickly with something like this, but its quite high level and you wont get too much into what goes on 'under the hood'.

    If, on the other hand, you do want to get into the nitty gritty, learning C might be a good place to start. C is smaller and tighter than C++, will still give you a good understanding of what is going on at the lowest level and a good spring board into learning C++ (and its massively cross-platform). The downside is that it will take a fair while to see anything more than text in a console, and this kind of language can be a bit unforgiving to a new comer (though I'm sure you would get plenty of help here).

    So maybe you could say a bit more about what you want or expect in terms of time/effort, future plans, platform etc


  • Advertisement
  • Moderators, Category Moderators, Computer Games Moderators Posts: 52,410 CMod ✭✭✭✭Retr0gamer


    You are best to learn some fundamentals of coding first. I'd recommend learning it through Java, it's a far easier language than something like C++ and also far better than learning a scripting language like Python, you are best to go on to them once you have the basics down. If you want to try an even easier one you can try scratch from MIT and then move on to Java. Just learn about variables, loops and if else statments and how they work.

    If you really want to get started quickly then I'd suggest Gamemaker. You don't really need coding for it and you will learn it along the way but I'd recommend you get some fundamentals down.

    The first and hardest step of getting your game to work is getting your character to move and behave right. Getting your character to anaimate properly and behave in the correct way with the right animations and hit boxes will take a lot of your time, creating levels is much easier.

    You should learn how to make a character out of 2 sprites (you could go with more but keep it simple). It's a simple case of updating variables with the position of one sprite and moving the other to that location but it's a good start and will help when you wan tto move hitboxes with your character.

    Another good lesson is to get your animation right. You'll need to use if statements controlled by booleans so that you character won't come out of an animation if another action was pressed.

    They are just the two things I found most useful.

    If you need any help at all then ask me any questions you have. I've been through it all already since I made that demo in stencyl which is a much bigger pain in the ass to use than gamemaker and I had to make it from scratch because the tutorial code was awful.


  • Registered Users, Registered Users 2 Posts: 8,493 ✭✭✭RedXIV


    Ok, I'm by no means a guru and some of this may seem obvious or be too over the top but this will hopefully get you to the stage where you can see the logical "bricks" used in all games and will help you plan your code before you actually start writing it.

    I'm going to try and break it down as much as possible so don't be offended if I get to a point which is obvious, I'm just making sure you have rock solid foundations. :)

    Ok first off, before you start learning this stuff, its important to define what it is. What I'm showing you is the most common logical processes used in practically all major programming languages. Things like outputting text to the screen and handling files changes from language to language, that's the actual functionality of each language. What we will be looking at is the concepts that remain consistent throughout all of them.

    Variables

    Variables are chunks of memory that either you or your code will assign a value to. This could be a:
    • Boolean - True or False values
    • Integer - a numeric value eg. 4, -19, 23,234
    • String - a list of characters e.g. "Hello World!"
    • Custom - a jpeg, an mp3 track, anything you can think of, you can build.

    So where you might see this in a game to make it more familiar might be
    numberOfLives = 3
    playerName = "EnterNow"
    when you start the game. Variables are ridiculously important. You'll use them to track things like score, player location, number of enemies, graphics, visuals, everything. Some languages are very flexible with variables and all you need to do is declare them when you need them. These are usually scripting languages. Others require a bit more care. In C/C++ if you don't give your variable a value after setting it up, it will take a random value, which can do some strange things to your code. As standard, its good practice to make sure all your variables have a value you know.

    Loops

    Loops are repetitive pieces of code, contained by a condition. Loops tend to come in two varieties, While loops and For loops. The difference between the two would be best thought of as while loops are used when you will have varying lengths for the loop to run and For loops are when you know exactly how many times you want. In gaming terms think of the timer in sonic or mario.
    While (player == alive && levelComplete ==false)
    {
         time= time-1
    }
    

    Ok so whats happening here is that when the computer runs this piece of code, it will check first is the player alive (== being "is equal to"). Then it will check if the level is complete. The "&&" signifies AND in C/C++. What this means for our loop is that the code will only loop if the player is alive AND the level is not completed. If these are both true, the variale time will be assigned the value of itself minus 1. Or simply decrease its own value by one. The main game loop for most games is a while loop.

    A For loop on the other hand is for specific cases. Lets look at this piece of code for example:
    for (count == 0; count >10; count=count +1){
    createEnemy
    }
    

    In this example, the for loop has 3 parts to it. the first part is the controlling variable. When this loop is read by the computer first, it assigns the variable count a value of 0. The second part is the end condition. In this case, the loop will end if the variable count goes over the value of 10. The last part is what changes when the loop hits the bottom of its code. In this example, the value of count will have 1 added to it. So if the count variable is set at 0, it goes up 1 after each loop and will ends when it goes over 10, how many times will the code create an enemy?
    12 times. This is because you've started at 0 and for the end condition to hit, you need to have count = 11. Thats 12 iterations of the loop so 10 enemies created

    IF - ELSE

    If-else blocks are basically the forks in the road, where the decisions are made in the code. These will be used to help determine how the game should proceed. An If piece of code does not necessarily have to be followed by an else, but they are often found together. an example of an isolated IF statement would be
    if (buttonA == true)
    {
    make player jump
    }
    

    This is pretty simple, if the A button is pressed (this will register as true normally) then the player will jump. When we change it to an if-else block, we can get something a bit more versatile
    //sonic has hit spikes
    if (playerHasRings == true)
    Play ouchAnimation
    numberOfRings = 0
    else
    player dies
    

    Arrays

    Arrays are ways of storing multiple sources of data linked together. An array might be best thought of to start with as a list of variables. Remember a variable looks like this:
    String PlayerName = "EnterNow"
    
    but an array would look more like this:
    String PlayerNames [] = {"EnterNow", "RedXIV", "Sonic", "Mario"}
    

    the [] after playerNames indicates that you are about to create an array. As with everything in programming they start with 0 so even though we have 4 names, they are:
    0=EnterNow
    1=RedXIV
    2=Sonic
    3=Mario
    and you would reference Sonic by calling
    set currentPlayerName = playNames[2]
    

    You can probably work around these for the first while but its good to know they exist.

    Functions

    These go by many names, functions, methods, subroutines, but they all mean the same thing. A piece of code that does a specific thing that you call on a regular basis. This is the sort of thing you use if you spend a lot of time working on something that you would use on a regular basis. For example, loading an image, resizing it to fit your expectation and assigning it to your player is something you might do on a regular basis in a multiplayer game, where the only thing that might change is the player it should go to and the location of the image. so instead of writing the same 50,100 or 1000 lines regularly, you save that set of lines as a function. and call it as similar:
    //new player joined, name is "EnterNow" image in "EnterNow_location"
    setPlayerPicture("EnterNow", "EnterNow_location)
    .
    .
    .
    //where your function is saved:
    setPlayerPicture (String playerName, String locationOfImage)
    //do function stuff
    
    

    So that's some of the foundation blocks to programming, there are ton's of places to help you get to grips with these and probably explain them better too.

    Again, this will help you understand the logic that games take and most of the programs like GameMaker and Scratch use this logic just in a more friendly GUI than code :)

    If you have any questions or want more info, just let me know and I'll throw up more. :) That should be plenty to sink your teeth into though


  • Registered Users, Registered Users 2 Posts: 1,899 ✭✭✭megaten


    Gamemaker or Construct2 is probably your best bet if you want to do something as a hobby. If you fancy coding then good options are stuff like Lua and Love2D or Actionscript 3 and a game framework like Flixel or Flashpunk. I believe Flixel in particular is made with platforming type games in mind.


  • Registered Users, Registered Users 2 Posts: 225 ✭✭Merger


    Awesome Thread! Looking to get into game dev myself!


  • Closed Accounts Posts: 33,733 ✭✭✭✭Myrddin


    Carpo II wrote: »
    So maybe you could say a bit more about what you want or expect in terms of time/effort, future plans, platform etc

    Its just something I'm approaching from a hobbyist perspective, not looking to release anything etc. The main influences for what I'd like to achieve would be the well known platformers, Super Mario World & Sonic The Hedgehog 1 & 2. Classic platformers, fun level design etv. Though I realise now that games like these although simple looking, are likely far more complex than I initially envisaged. So to tone it back a bit, an 8bit platformer like Mario/Kirby would be where I'd look to.
    Retr0gamer wrote: »
    If you need any help at all then ask me any questions you have. I've been through it all already since I made that demo in stencyl which is a much bigger pain in the ass to use than gamemaker and I had to make it from scratch because the tutorial code was awful.
    RedXIV wrote: »
    hugely helpful post

    Thanks both of you, very much appreciated!


  • Registered Users, Registered Users 2 Posts: 1,899 ✭✭✭megaten


    If your just doing it from a hobbyist perspective I'd definitely use a game maker like tool unless coding and programming specifically appeals to you.


  • Closed Accounts Posts: 33,733 ✭✭✭✭Myrddin


    megaten wrote: »
    If your just doing it from a hobbyist perspective I'd definitely use a game maker like tool unless coding and programming specifically appeals to you.

    So far I'm thinking to start on one of these tools, get to grips with how it works etc. But would I be right in thinking your always going to be sandboxed in with these tools, ie they can only do what they can do? With coding, I presume a lot of the constraints of a tool are removed {& replaced by your programming competency or lack of in my case :o}

    So maybe begin with a game-maker tool, & after a while maybe start looking at something like Java as Retr0 suggested?


  • Registered Users, Registered Users 2 Posts: 1,899 ✭✭✭megaten


    You limited in terms of export options mostly. GameMaker has it's own scripting language called GML and the normal edition only exports to windows. Construct lets you write plugins in javascript and has a bunch of export options but they're all html5 wrappers. If platformers are you main interest I wouldn't worry about limitations too much


  • Registered Users, Registered Users 2 Posts: 225 ✭✭Merger


    Quick Question regarding GameMaker, Should I go for the Free edition to begin with or should I fork out for the $50 Edition?

    What's the general consensus ?


  • Registered Users, Registered Users 2 Posts: 7,814 ✭✭✭TPD


    Merger wrote: »
    Quick Question regarding GameMaker, Should I go for the Free edition to begin with or should I fork out for the $50 Edition?

    What's the general consensus ?

    Go for the free edition until you run up against a constraint you can't work around. Any games you start in the free version can be continued in the paid for version.


  • Advertisement
  • Registered Users, Registered Users 2 Posts: 8,493 ✭✭✭RedXIV


    TPD wrote: »
    Go for the free edition until you run up against a constraint you can't work around. Any games you start in the free version can be continued in the paid for version.

    Definitely do this. You might decide game maker isn't the tool for you after 10 mins, and that would suck


  • Registered Users, Registered Users 2 Posts: 363 ✭✭Rockn


    I recommend downloading the free version of Construct 2 and following the beginner's tutorial here. You'll have the beginnings of a game built in under an hour and you'll have a much better idea of what's possible. Using Construct 2 also teaches you some programming ideas like variables, for/while loops and functions. (Try Gamemaker as well, personally I prefer C2).

    Then I'd say have a look at Codecademy and try out the Javascript or Python tracks. That'll give you a good idea of what coding is like and whether or not you'll enjoy it.


    I'm doing a Python course on Coursera at the moment. It teaches Python by building a series of games from a text-based rock-paper-scissors-lizard-spock in week 1 up to an asteroids game in week 8. It's aimed at people new to programming and teaches all the basics with video lectures, interactive quizzes and weekly mini projects. We're in week 2 now but you can still join in.


  • Registered Users, Registered Users 2 Posts: 416 ✭✭gouche


    Rockn wrote: »
    I recommend downloading the free version of Construct 2 and following the beginner's tutorial here. You'll have the beginnings of a game built in under an hour and you'll have a much better idea of what's possible. Using Construct 2 also teaches you some programming ideas like variables, for/while loops and functions. (Try Gamemaker as well, personally I prefer C2).

    Then I'd say have a look at Codecademy and try out the Javascript or Python tracks. That'll give you a good idea of what coding is like and whether or not you'll enjoy it.


    I'm doing a Python course on Coursera at the moment. It teaches Python by building a series of games from a text-based rock-paper-scissors-lizard-spock in week 1 up to an asteroids game in week 8. It's aimed at people new to programming and teaches all the basics with video lectures, interactive quizzes and weekly mini projects. We're in week 2 now but you can still join in.


    Currently doing the Coursera course myself and can say that it is pretty good going.
    I think Python is a pretty good choice - easy to get your head around and pretty powerful.
    I know a lot of people on here will say not to bother with a scripting language but for learning the basics it's great. Easy to understand and has plenty of features of more powerful languages such as OOP.
    There's also PyGame which is a set of modules specifically for making games.
    See here for a load of projects to give you an idea of what's possible.


  • Registered Users, Registered Users 2 Posts: 3,831 ✭✭✭Torakx


    Construct2 is a more organic newb friendly program.
    Gamemaker looked to be more flexible.Cant remember in what way, might have been to do with coding or export plugins.
    I did a comparison of 3-4 programs, for deciding which to start for 2d side scrollers, when I make one in the future and Gamemaker came up tops overall for me.Plugins and cost for exporting was one of the main factors in my decision IIRC.
    But anyway, 20 mins on google searches, will tell you which you prefer and maybe save you alot of time stopping one and switching.
    I got both and tried them aswell though :)


  • Moderators, Computer Games Moderators Posts: 10,462 Mod ✭✭✭✭Axwell


    If you arent too concerned what platform you are building for you could look at Corona SDK - its for tablet and mobile development. It runs on a simulator on your pc/mac initially while you are developing the game and then you can publish it to your device for testing and later publish to the app store/android market if you wish. It uses a scripting language called Lua and their website has loads of tutorials and resources and examples that you could go through. Some of those might be good to look through even just to try get your head around the coding principles and syntax.

    http://www.coronalabs.com/ - main site

    http://www.coronalabs.com/resources/tutorials/ - Resources


  • Closed Accounts Posts: 3,922 ✭✭✭hooradiation


    EnterNow wrote: »
    So maybe begin with a game-maker tool, & after a while maybe start looking at something like Java as Retr0 suggested?

    If you're actually serious about it, don't waste your time with Java.

    Understanding memory allocation and dealocation, the stack and heap, pointers and references are all very important things and Java hides that from you. Which is fine if you're writing a Java app for some dull business shenanigans where performance isn't an issue, but you're not.

    If you're serious, you'll eventually have to use a proper language like C++ and you'll be largely ignorant of the above. Which means you'll try and use the paradigms you learned for Java and wonder why your code dies on it's arse.

    Even if you end up using a managed language like, say, c# having a good understanding of what actually happens when you create a new objects is never a bad idea. Especially when you have to deal with memory leaks which are far harder to find and solve in managed languages.
    And understanding why processes consume the amount of memory they do is the first step in knowing if and how you can reduce it.


  • Moderators, Category Moderators, Computer Games Moderators Posts: 52,410 CMod ✭✭✭✭Retr0gamer


    Axwell wrote: »
    If you arent too concerned what platform you are building for you could look at Corona SDK - its for tablet and mobile development. It runs on a simulator on your pc/mac initially while you are developing the game and then you can publish it to your device for testing and later publish to the app store/android market if you wish. It uses a scripting language called Lua and their website has loads of tutorials and resources and examples that you could go through. Some of those might be good to look through even just to try get your head around the coding principles and syntax.

    http://www.coronalabs.com/ - main site

    http://www.coronalabs.com/resources/tutorials/ - Resources

    Currently doing corona myself in my course and wouldn't recommend it at all to a novice. The lua it uses is quite different from a programming language. I feel you'd be better off with other options mentioned since it would give you a much better understanding of how to code. If you are interested in seeing how scripting languages work then give corona a go. There's still quite a bit you can learn from learning Corona.


  • Moderators, Computer Games Moderators Posts: 10,462 Mod ✭✭✭✭Axwell


    If only approaching it from a hobby perspective then there are for and against for all the different options listed. With Corona there is a huge amount of resources and with the simulator you can see instant results so its pretty good and gratifying in that way.

    If you want to learn the basics of coding and really start at the beginning then look at coding academy as someone mentioned earlier and then maybe download a few different options mentioned in other posts and see what one you lean towards. Personally I hated Gamemaker when I used it, that was about 2 years ago, I think its changed a little since but I found it just frustrating. Everyone is going to have their preferences and recommendations but the best thing to do is just get stuck in and messing around with stuff, you are just doing it as a hobby for now so you have nothing to lose giving them all a go at some point after you get the fundamentals and see if you have the interest in learning more.


  • Closed Accounts Posts: 33,733 ✭✭✭✭Myrddin


    If you're actually serious about it, don't waste your time with Java.

    Understanding memory allocation and dealocation, the stack and heap, pointers and references are all very important things and Java hides that from you. Which is fine if you're writing a Java app for some dull business shenanigans where performance isn't an issue, but you're not.

    If you're serious, you'll eventually have to use a proper language like C++ and you'll be largely ignorant of the above. Which means you'll try and use the paradigms you learned for Java and wonder why your code dies on it's arse.

    Even if you end up using a managed language like, say, c# having a good understanding of what actually happens when you create a new objects is never a bad idea. Especially when you have to deal with memory leaks which are far harder to find and solve in managed languages.
    And understanding why processes consume the amount of memory they do is the first step in knowing if and how you can reduce it.

    I'm serious about it in the sense that I'd like to make a basic game & enjoy the journey. I'm not looking to be the next Gabe Newell or anything {though I do like hamburgers}.

    The problem for me is, I see a finished game in one hand {say Sonic 1}, & I see coding/programming in the other hand. I have absolutely no idea how they combine to make one package. For example, when playing Sonic, I see the backgrounds, I hear the music, I control the character, I get a sense of the games physics...how all that is achieved through lines of text & numbers, I have absolutely no idea. So where the heck do I begin!


  • Advertisement
  • Registered Users, Registered Users 2 Posts: 8,493 ✭✭✭RedXIV


    EnterNow wrote: »
    I'm serious about it in the sense that I'd like to make a basic game & enjoy the journey. I'm not looking to be the next Gabe Newell or anything {though I do like hamburgers}.

    The problem for me is, I see a finished game in one hand {say Sonic 1}, & I see coding/programming in the other hand. I have absolutely no idea how they combine to make one package. For example, when playing Sonic, I see the backgrounds, I hear the music, I control the character, I get a sense of the games physics...how all that is achieved through lines of text & numbers, I have absolutely no idea. So where the heck do I begin!

    This is why the likes of gameMaker and Construct2 are so useful to start with. Rather than, for example, worrying about importing textures to use as the background, worrying about it being behind the player (further on the Z axis), ensuring it doesn't overflow etc which are all things to look at with code. In GameMaker, it might be a simple "Open file to set background" and it will look after all this stuff. OK its not hardcore coding but its a step in the right direction. If you make a game in one of these tools, you will be in a better position to then make a game with code, the logical steps that you used just need more detail is all.

    So I'd suggest letting one of these tools hold your hand for the first attempt anyway, get something up and running, even if its a square responding to key presses, that's an achievement.


  • Closed Accounts Posts: 33,733 ✭✭✭✭Myrddin


    RedXIV wrote: »
    So I'd suggest letting one of these tools hold your hand for the first attempt anyway, get something up and running, even if its a square responding to key presses, that's an achievement.

    Yeah I'm thinking the same, I got the free version of GM there so will install it, have a peek & poke around in it {see what I did there!} over the next few days :)


  • Registered Users, Registered Users 2 Posts: 22 Carpo II


    EnterNow wrote: »
    I'm serious about it in the sense that I'd like to make a basic game & enjoy the journey. I'm not looking to be the next Gabe Newell or anything {though I do like hamburgers}.

    One thing to bear in mind, and which may come as a surprise (it certainly did to me) is that coding is fun and interesting for its own sake, even apart from game dev. Don't be afraid to give the likes of c/c++ a try to see if you enjoy them.


  • Closed Accounts Posts: 1,235 ✭✭✭returnNull


    Understanding memory allocation and dealocation, the stack and heap, pointers and references are all very important things and Java hides that from you.
    the very reasons you give for using c++ would be the reasons why Id recommend using java or c#.

    For somebody starting out coding not having to deal with memory allocation,pointers,constructors and de-constructors etc is a plus imho.

    If they can get a good grasp of OOP from java or c#,making a switch over to c++ and its complexity isnt to much of a leap.
    use a proper language like C++
    has been dealt with to hell and back on the interwebz. There's pro's and con's to every language and thats why c#,java and c++ can and do co-exist.


  • Closed Accounts Posts: 31,967 ✭✭✭✭Sarky


    Ready-made game editors are well worth a look at, in that you can concentrate on learning on how to structure a game and how events/quests/choices/whatever change the flow of basic things like, say a database full of Pokémon and their abilities. Once you're happy you know how those bits and pieces fit together, learning about the code behind them is likely easier. Make no mistake, there's an awful lot to keep track of in even a "basic" language, so diving straight in to C++ might not always be the best idea...


  • Closed Accounts Posts: 3,922 ✭✭✭hooradiation


    EnterNow wrote: »
    I'm serious about it in the sense that I'd like to make a basic game & enjoy the journey. I'm not looking to be the next Gabe Newell or anything {though I do like hamburgers}.

    Then just use some gamemaker esque tool. Doing it "properly" is a helluva commitment and there is a long time between initial starting and payoff (comparatively speaking)
    returnNull wrote: »
    the very reasons you give for using c++ would be the reasons why Id recommend using java or c#.

    For somebody starting out coding not having to deal with memory allocation,pointers,constructors and de-constructors etc is a plus imho.

    Proper memory management is important, you need to learn it if you're looking to make a go of games programming.
    Hiding it away is a bad move, and unlearning the bad habits and misconceptions you'll have picked up from managed languages will take more time then just learning it properly in the first place.

    And it's not that hard anyway, it's just that the reliance some people have built on managed languages make it seem like eldritch sorcery.


  • Advertisement
  • Moderators, Category Moderators, Computer Games Moderators Posts: 52,410 CMod ✭✭✭✭Retr0gamer


    I'd learn the basics first in something like Java. Yes memory management is very important if you are going to build a game engine but if you are going to use something like gamemaker it isn't.

    I would however not recommend making anything but a simple text based game in java, once you are at that stage and want to do real coding then it's time to hit C++ before you learn those bad habits.

    As for Corona, one other thing I forgot to mention is that because it's relatively new you if you have a problem and need to find a solution googling it will 99% of the time not find you any solution. I'm finding this myself since I'm making a game in it. With something like Java or C++ or even gamemaker there's a lot more help out there especially on stack overflow.


  • Closed Accounts Posts: 1,235 ✭✭✭returnNull


    the point I was making hooradiation is that it brings an unnessary complexity to someone who is starting coding from scratch with the view to making a game,we're not talking about the next Call Of Duty or some other triple A game.
    and unlearning the bad habits and misconceptions you'll have picked up from managed languages will take more time then just learning it properly in the first place.
    learning to code in java or c# does not mean you have 'bad habits or misconceptions' about memory management as long as you are aware that other languages out there handle it differently.


  • Closed Accounts Posts: 33,733 ✭✭✭✭Myrddin


    Then just use some gamemaker esque tool. Doing it "properly" is a helluva commitment and there is a long time between initial starting and payoff (comparatively speaking)

    I'm not sure if I'll get what I'm looking to do from a pre-built tool. But I'm also not in a position to spend four years studying programming either. Are you saying there's no happy medium?


  • Registered Users, Registered Users 2 Posts: 7,814 ✭✭✭TPD


    Gamemaker is certainly capable of making a mario or sonic style platformer. Have a go of Iji, (http://www.remar.se/daniel/games.php), would you be aiming for much more than that? It was made in gamemaker.


  • Moderators, Category Moderators, Computer Games Moderators Posts: 52,410 CMod ✭✭✭✭Retr0gamer


    You'd be surprised how powerful Gamemaker is. You can make commercial quality games on it with a bit of dedication and good art. For an example of just how good it can be Derek Yu used it to create Spelunky and recently Hotline Miami was built using Gamemaker. The tutorials that come with it are excellent.

    I'd still think you should learn some language, if you can get your head around OOP then you can get your head around it in any language. I think after that C++ is a good next step so you can learn the stuff hooradiation is talking about, you'll never have efficient code if you are relying on a languages inbuilt memory garbage collector.

    Then again you could just be happy making games in a tool like gamemaker or a language like Java or C#. It never did notch any harm, although for a good example of a terrible engine that could really benefit from being in a lower level language, look no further than minecraft. Then again I've heard a lot of people say that C# is pretty much good enough these days, although again I'm a beginner so I'm no expert.


  • Advertisement
  • Registered Users, Registered Users 2 Posts: 22 Carpo II


    EnterNow wrote: »
    I'm not sure if I'll get what I'm looking to do from a pre-built tool. But I'm also not in a position to spend four years studying programming either. Are you saying there's no happy medium?

    The problem is that tools like game maker are there to make the process of making games as quick and easy as possible and divorce the user from what's going on under the hood, so they are intentionally far apart. Something in the middle would just be a poor tool :pac:

    That being said, if you read a book on C*, say something like this, and then do some simple opengl tutorials (using things like immediate mode and glut) you can be up and running, with (crap)graphics and user input etc in a few weeks. The problem with the likes of c/c++ is that they take a lot of effort to write well (but that can come later) and provide many opportunities to shoot yourself in the foot compared to managed languages, which can be frustrating but there will be plenty of help here abouts I'm sure :)

    *The reason I am saying C rather than C++ is that C is a much smaller and 'easier' language but will still give you a handle on the nitty gritty. I fell foul of exactly what hooridation is talking about. I learned with Java and C# and moved on to C++ from there carrying a lack of real understanding of how to deal with an unmanaged language. When I started game programming professionally I was shocked at how much I had to learn in this regard and had a difficult time catching up. By comparison, things like OO were a doddle. In hindsight it would have been much preferable to start in C work up to C++ and move on to managed languages later.

    Of course, this is all predicated on your actually wanting to get your hands dirty with the low level coding at some point!


  • Closed Accounts Posts: 3,922 ✭✭✭hooradiation


    returnNull wrote: »
    learning to code in java or c# does not mean you have 'bad habits or misconceptions' about memory management as long as you are aware that other languages out there handle it differently.

    Without a point of reference on what memory management is and why it's important (and what can go wrong when you don't do it right) I fail to see the merit of simply knowing that "other languages out there handle it differently".

    C++ is the best tool for the task, so if you're serious about making games, you might as well bite the bullet and get going on that from the start.

    It's going to be hard, programming isn't easy by any stretch of the imagination, it's part of the reason tools like gamemaker exist, but wasting time with Java et al has two downsides.

    1] Doesn't prepare you for the task your looking to accomplish
    2] It's very hard to simply "change languages" especially when you're learning because it feels like throwing away progress. It's the sunken cost fallacy, You've spent X hours on this language and now you have to start from scratch with another language and it's syntax isn't quite like the one you've had before and you're confused and what is all this memory managamWHAGLEBLARGLE JAVA FO LYFE!

    Every plea to "but it's easier to learn!" may well be true, but you're screwing yourself long term - why would you do that?


  • Moderators, Category Moderators, Computer Games Moderators Posts: 52,410 CMod ✭✭✭✭Retr0gamer


    Well I wouldn't recommend Java for game development at all. I've got as far as making a text based hangman game using OOP and that's as far as I'm going. I'm going to start teaching myself C++ during the summer and messing around with that and gamemaker on the side for fun.

    Would going straight into C++ to start not be going into the deep end first? I've no experience with it so I'm asking out of curiosity.

    As for C vs. C++:

    class.jpg


  • Registered Users, Registered Users 2 Posts: 3,831 ✭✭✭Torakx


    Plus it may depend on what platform you might like to port the game over to.
    C# and python are both used with the Unity engine and editor for example.
    Which can be used to make top down and side scrolling games as well as 3D games.
    Unity or UDK might be a sort of medium, between straight coding and game makers.In that you have access to the scripts and the enviornment building.


  • Moderators, Category Moderators, Computer Games Moderators Posts: 52,410 CMod ✭✭✭✭Retr0gamer


    I'd steer well clear of unity for a beginner. Once you go 3D your work load increases exponentially.


  • Registered Users, Registered Users 2 Posts: 1,481 ✭✭✭satchmo


    I really wouldn't get hung up on what language to start with. If you haven't done any programming, then you're going to be starting off learning the same stuff regardless of language - variables, operators, loops, classes, etc. The only thing I'd advise is not starting with a typeless language (javascript, python etc) as I think the lack of typing makes things a bit too vague for a beginner.

    I started with Java because that's what I was taught in college, although I had done a bit of BASIC and C myself before. The thing I liked about Java was the ease of getting something visual going - drawing lines, images and 2D polygons was simple, which made experimenting with different things easy and made it fun to keep learning. Once I started doing 3D I taught myself C++ & OpenGL because the Java 3D API was a mess at the time. It still might be for all I know. The garbage collection also made it hard to get good performance for the sort of stuff I was trying to do, but that was probably more to do with something I was doing wrong. I never liked how Java hid the memory management - I never really understood memory allocation and I hated not knowing what was really going on behind the scenes. Once I moved to C++ I never looked back.

    If I was going to start again, I'd go for C++ (I really like the tutorial at LearnCPP.com, it's well explained and easy to follow), using a library like LibSDL for windowing & input so I could start doing interesting stuff sooner than having to learn the Win32 API at the same time as the language itself. But that's just me, and other ways might work better for other people. It depends on how you learn, and what motivates you.

    The only important thing really is to keep going. Whether you start with Java or C# and then continue on to C/C++, go straight to C++ or never even touch it, the more you program the better you'll get. And once you get reasonably good at one language, it's so much easier to pick up another one.

    So don't worry too much which you pick. As long as you're having fun, you're doing it right.


  • Closed Accounts Posts: 3,922 ✭✭✭hooradiation


    Retr0gamer wrote: »
    Would going straight into C++ to start not be going into the deep end first? I've no experience with it so I'm asking out of curiosity.

    Sort of, I guess?

    There is less hand holding than in managed languages, for a start, simply by the virtue of being not being a managed language.

    Syntax wise Java, c# and (to a degree) objective-c are all quite similar so there's no big change there.
    There will be some change, obviously, but most of it is similar enough to be recognisable, or has a clear counterpart that you can reference against
    for example
    std::cout << "Hello world" << std::endl;
    
    is the C++ equivalent to
    System.out.println("Hello world");
    


    The biggest change you'll probably notice at the start is C++ has primitive types (int, char, bool, float) but does not have analogous objects (such as java's Integer) and that you're not forced into object orientated design, as C++ allows for a few different methods of organising how your program works (for example, imperative programming)

    Speaking of object orientated things are difference in C++, multiple inheritance is allowed (which isn't in Java) and there are things like copy/deep copy to worry about but that's all a bit further away from getting a basic C++ program up and running.

    tl;dr - kind of, but not as much as you'd be led to believe.


  • Registered Users, Registered Users 2 Posts: 454 ✭✭Kilgore__Trout


    Retr0gamer wrote: »
    I'd steer well clear of unity for a beginner. Once you go 3D your work load increases exponentially.

    Agreed. Unity can be utilised for 2D games quite easily too, but it is still within a 3D environment. Unity's a good pick for someone that understands the basics of programming, maybe around 2 years of college programming (of the equivalent self taught) under their belt. Without coding, you'd be severely limited in what you could do game-wise. You'd also be fighting a battle on two fronts, both learning how to code, and the nuances of the Unity engine.


  • Registered Users, Registered Users 2 Posts: 1,587 ✭✭✭DesperateDan


    If I recall Game Maker is definitely your friend for 2D games, you can code through it or hit buttons and it'll hook stuff up for you behind the scenes, but is still as in-depth as you want it to be.


  • Moderators, Category Moderators, Computer Games Moderators Posts: 52,410 CMod ✭✭✭✭Retr0gamer


    Someone here suggested Corona and at the moment I'm deep into making a platformer on it that has to be finished within a week. For traditional 2D games my advice is steer well clear.

    First you can't use the keyboard to control your character, only on screen touch buttons, which makes sense since the game is being made for a portable device but it's not ideal to see how your game will work unless you have a tablet or similar device to port it over to test.

    Secondly the collision detection which is based on a near unmodified Box2D is an absolute pig, you need to do some very hacky things just to have something as simple as an enemy getting hit with a bullet.

    For something like enternow is looking to make, don't bother with it. TBH Corona is for development for mobile platforms and traditional 2D scrollers don't work on those devices. If you have a simple game or one that requires touch controls then go for it. However be aware it's not as user friendly as something like Gamemaker. Since it's very new it's hard to find any help for it online. You'll need to learn a bit of Lua. There's also some more complex elements such as loading tiles using an array to create levels, scrolling that needs to be manually coded, bit masking collisions and a small amount of memory management.


  • Advertisement
Advertisement