I remember when I first started out.
I used Gamemaker 8, and I loved the drag and drop system. I programmed some stuff, messed around with a few numbers here and there, and tried to predict how things would change. It was at this point that I used tutorials most. Using the tutorials and demos that came with GameMaker 8.1, and later GameMaker: Studio, I would read through the code, attempting to understand, modify, and predict how it would work.
Eventually, my programming reached something I would now call rudimentary, and I started experimenting with GML.
In retrospect, I had already been using GML for a long time. I had found the
random function and used it in Set Variable blocks. I had found the
choose function and used it in Set Variable blocks. I had learned about and applied scope. The big jump was when I learnt how to correspond each block with code, and found that I preferred typing to searching through the numerous tabs to find the correct block. I had started to use the manual to fully know what each line of code could do. I learnt about
if statements and functions.
At that point, I hadn't even considered that there would be tutorials on the internet.
Then my ability in programming plateaued. I wasn't getting any better, but neither was I getting any worse. It was around this time I started reading huge portions of the
GMC, which has since been replaced with the new forum on which I am posting. I read tracts through the Programming Q&A, and read larger tracts through the Advanced GML Discussion.
It took a while before I became able to understand what everyone there was talking about. But when I did, my programming ability started to grow again.
It was around this time I started using Data Structures, Surfaces, and 3D sound.
Then my ability in programming started to plateau again. My code was long, and eventually I was no longer able to understand my train of thought. Not only that, I was starting to get more and more ideas about things to do in Gamemaker (like finding a shortest path, with different speeds in different areas, and not attached to a grid). What materials I got were either not enough to help, or too much to understand.
What brought me out of that was when I started a class on Programming Methodology. Much of it was reviewing, but I found gaps in my understanding. Even now, years later, I still am learning from problems given in that class.
After Programming Methodology, I learnt about Data Structures and Algorithms, and found that Gamemaker Studio 2 (which by then I had purchased) was hugely limited in what data structures it provided. Then, I learnt about Software Engineering (which, as it turns out, is less about programming and more about alternately programming less and documenting more), and Design and Analysis of Algorithms.
In short, I went through three phases of learning:
- Predicting behavior based off code modifications in completed projects
- Reading and understanding code on the GMC, and understanding the manual
- Learning about Data Structures and Algorithms