Non-programmers learning GML

Discussion in 'Off Topic' started by mamacato, Mar 23, 2019.

  1. mamacato

    mamacato Member

    Joined:
    Nov 2, 2018
    Posts:
    68
    I'm wondering how a non-programmer like myself could become proficient at GML. Can you share some advice? Here are 3 methods, but if anyone can share some more in-depth experience, please do.

    1) read the yoyo manual
    I've seen this as replies to programming questions. I've tried going through the manual, but it doesn't flow that well if you're just reading it front to back. It's too dense with functions I'm not sure I'll need or not, or even understand. The examples given seem good, but I'd find it easier with a real applied example (versus a snippet of code out of context). Correct me if I'm wrong, and dim.

    2) watch GMS tutorials
    That's my main method, of course. Do you guys take notes somewhere on the new functions you learn with examples of how they could be applied? Or you just power through a lot of tutorials in hopes of it sticking and ultimately making sense to you?

    3) outside programming sources not specific to GML (books, videos, websites). Any suggestions?

    I have a lot of free time, and I'd like to get good at programming with GML and game maker studio 2. Any guidance would be really appreciated. I'd love to improve so I can entertain you guys with progress on the games I am making.

    Cheers,
    mamacato
     
    EvanSki and Kasra like this.
  2. Kasra

    Kasra Member

    Joined:
    Mar 20, 2019
    Posts:
    20
    Hi there, gml or any other programming languages are only a tool, the most important thing that help, to make you an almighty developer, is in your head, your ability to solve problems in realtime, to reach that goal, try to simulate things around your self (even if they has been simulated earlier) for example try to write found direction, function, find distance, find nearest patch,100% independent of others, use science instead tutorial, and write your experiance and goals in a note book and think how you can improve them as twice as much, programming is like body building, your muscle will not grow until you puts pounds of weights on them and tear them with lots pain, so your mind will not grow until you solve problems independent, it could be painfull but after that pain you'll born as a dev person, , learn geometry, things like adjacency matrices or stuff are essential to give your mind a fram for thinking, without any frame your thoughs will not give you a result.
    for example adjacency mats help you write "find patch" algorithm, and reimann integrals help drawing dynamic shadow lighting, or even polygon selection or etc, so actually i belive we cant feed our minds in books and tutorials. we just can learn them.
     
    mamacato likes this.
  3. JackTurbo

    JackTurbo Member

    Joined:
    Oct 19, 2016
    Posts:
    824
    I'd say initially just find a simple tutorial series and follow it (I've embedded Tom Francis' which is great, but for GMS1), while checking the manual regularly to make sure you understand all the functions you're using well. And how/why the code is working.

    As you progress and start to understand what you are doing more, you can begin to deviate from the tutorials/embellish it as you go with your own simple ideas.

    Once you've completed it, try some others but stay simple. Cloning old school arcade games is a good place to start (space invaders, pong etc).

    After a few iterations of these sorts of projects, try and build a similar game (old school arcade) only using the manual for reference. Once you can do that I'd say you're ready to start your own simple projects.

    At this point most your projects will probably be messy spaghetti code but at this sort of project size that is ok I think. Once you're starting to feel comfortable with GML and reach an intermediate sort of level, where you can create almost anything you set out to (without tutorials), thats when your learning focus should switch towards project management, good coding practices, code architecture for scaleability etc. This could take you a few months to reach if you've got a lot of time to dedicate to coding, or it might take you a year or more if your only spending a little time on it.

    At that point there are less resources around specific to GML/GMS, so you start having to look at resources for development in general. This shouldnt be too troublesome, because at this stage you should have a good enough understanding of things to be able to read up on concepts and translate them to a GMS setting without too much trouble.

     
    MissingNo. and mamacato like this.
  4. Pfap

    Pfap Member

    Joined:
    Apr 30, 2017
    Posts:
    551
    Play with it! Have fun and I would suggest to start a project and see it through. Choose something you care about, but make it small. For example, someone who likes farm simulator games might start out building just a garden game. Except this garden only has tomato plants and you have to water them x amount of times before a tomato grows. Maybe the goal of the game is to get 10 tomatoes in the basket at the top of the room.

    When I was starting out I did not do the above, I started a big project and ran into problems... and I sometimes think that was good for me.
    Anyways, I fondly remember someone describing my 2nd game and one I finished as "pac-man, but without the ghosts" it was a lawn mowing game.

    A full game can be quite small and once your comfortable with basic concepts quick to build; although maybe not something you would want to release it can be fun.

    A quick breakdown of how I would approach the tomato game would be figure out what art assets I need.

    Sprites:
    dirt_spr,
    grass_spr,
    tomato_spr,
    basket_spr,
    player_spr,
    wateringcan_spr

    Then I would think about what sprites need to be animated and how to do that in code.
    Or you could figure one object per sprite would be fine. Well, objects are for adding behavior... so, I would look at the above and be like grass doesn't have behavior that can be a tile_set or maybe I would be lazy and just create an object and attach the sprite and use that in the room. Same with dirt, no behavior there unless you want to add some, making games is also a creative endeavor, so maybe you want to add a worm sprite and worm object and the dirt will somehow produce a worm. But, lets not get carried away. The basket will need behavior though. because I am going to make the basket keep count of how many tomatoes it has so, the basket will have counting behavior. The player will have moving and watering behavior. The watering can will have on and off behavior it's either water or it's not watering. And the tomato will have grow behavior.


    We need 4 objects for this game.
    Maybe I would decide that the tomato plant will be fully grown after the player waters it 6 times. If so I would have the tomato sprite have 0-5 image_index's and each time the player waters one have it go up by one.

    So, I would draw the tomato sprite with 6 images indexes 0 through 5.
    Code:
    //tomato object create event
    sprite_index = tomato_spr;
    image_index = 0;//will add to this if the player taps next to the plant
    
    Code:
    //tomato object tap event
    image_index += 1;
    
    Then just keep solving the problems until your game is done.

    The problem of how to get the character to move.
    The problem of how to get the watering can in the players hands.
    The problem of how to pick a fully grown tomato.
    The problem of how to put the tomato in the basket.


    I just realized, you might need a tomato sprite and object. Also, we would need to add the picking behavior to the player object. The tomato would also need the behavior of being carried.



    Maybe think about it as less of code and more of trying to tell someone what you want the computer to do.






     
    mamacato likes this.
  5. Crepe

    Crepe Member

    Joined:
    Mar 23, 2019
    Posts:
    7
    Study any game project file you can get your hands on. Often these can be overwhelming, but if you play and become familiar with the project file and then break down each bit of code based on different events, everything starts to make sense. The second step is to employ what you've learned in your own project. The YoYo manual is nice for reference, but is otherwise not the best approach to learn GML. Try your best to solve issues that you encounter, but definitely get help from time to time.
     
  6. sitebender

    sitebender Member

    Joined:
    Sep 13, 2016
    Posts:
    829
    Read the manual worked for me. I even found typos and stuff. The online manual seems to be more up to date and well Internet searches are far easier than using the help search.

    As for tutorials, I was a big fan, until many of them were just wrong, incorrect, or only worked for the tutorial.
     
  7. DevInTheMaking

    DevInTheMaking Member

    Joined:
    Mar 18, 2019
    Posts:
    0
    Learning a programming language has been difficult for me. I've been doing the tutorials and going into the manual when I'm presented with something new but I'm having a hard time retaining it. I took the arena shooter and tried to re make it in a new project without help but its still rough. Like all new things it will take time and repetition but it can be frustrating.
     
  8. Taddio

    Taddio Member

    Joined:
    Nov 16, 2018
    Posts:
    463
    I could have written this OP not so long ago, it seems. Far from being a code wizard, I can now solve pretty much any problem by myself in my projects, but I'm always reading stuff and picking people's brain, wether they know it or not.
    I used mainly a combinaison od 1) and 3), as I wanted to apply stuff to my own simple ideas, as I knew playing cover songs in bars wouldn't ever make me a great songwriter, if I use an analogy.
    Don't for the easy way, follow the Yellow Brick Road, and you'll be on your way to deving your own games in no time (or not much time).
    Be prepared for many "failed" attempts behind cloded doors, and learn why you couldn't make it work. It's all about analyzing stuff, the rest is just setting and accessing a bunch of variables when/where you need it, when you think of it (to simplify at the extreme)
     

Share This Page

  1. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
    By continuing to use this site, you are consenting to our use of cookies.
    Dismiss Notice