I want to build a cirriculum to teach students to learn GMS from scratch

Greetings,

I would like to compile a list of reference links, open to everyone here, of materials which could be used for this purpose to teach someone how to go from no gml experience to where they can be self motivated and can create their own stuff.

tutorials, blogs, videos, example projects, i would be open to any ideas so long as it is contributing to helping people learn how to code and providing a concise idea of what is needed in order to start building their own portfolio of work.

to start off with here are a few basic references i have sitting right in front of me

https://yoyogames.com/learn
https://yoyogames.com/blog
https://www.youtube.com/user/RealTutsGML
https://www.youtube.com/user/999Greyfox
https://www.youtube.com/user/PixelatedPope
https://forum.yoyogames.com/index.php?forums/tutorials.15/
yal.cc


i know this is not a very good start but i am hoping that it can begin building up and if anyone would like to contribute to this list please, all i ask is that you provide links to materials which can be used to teach so that we can use this to help more people to learn how to code.

Thank you everyone.
 

FrostyCat

Redemption Seeker
I don't see this list being any good for education, any more than previous attempts to compile similar lists, for 3 reasons.

The first is the lack of ordering in which the listed material should be followed. That is the main difference between a real curriculum and a simple listing of resources. Doing stuff out of order is a major issue that I witness daily on the Q&A forums. You end up with people who can "make" platformers, yet have no clue what events or variables are.

The second is endorsing entire collections in broad strokes without vetting for inappropriate material. For example, the YoYo Learn page contains HeartBeast's RPG tutorial, which I absolutely despise as a Q&A responder for its inappropriate use of the physics system and the confusion it causes.

The third is how virtually none of the stuff you've listed really teaches anyone to code. They mostly just teach rookies to copy content without genuine understanding. No list will ever be genuinely useful until it contains material for basic syntax elements, tracing and abstract modeling, and for more than a decade I have not seen any for GML. Not a video, not a book, not a written tutorial. Actual basic material that doesn't move around or make noises to attract novices is simply not valued by people who teach GML with a high profile, most of whom are designers driving in someone else's lane instead of actual programmers. The results of this kind of mindless watch-and-paste education plays out in the Q&A section every single day.
 
@MaxLos

Thank you for the link, im just beginning the process.

@FrostyCat

your comments about learning but not knowing are well heard, i already have a planed course which i have laid out and am trying to find material which i can use that relates to the topics in order to substantiate the merit of what is being taught, i could easily spend days just trying to explain all the complexities of lengthdir_x and y, but the point is to find what has been written in the past.

i genuinely do get your concern about how many people jump in and have no understanding of what they are doing, let alone the fact that the fundamentally are completely overlooked, its one of the reasons a while back i tried to write a comprehensive guide on getting the gms 1.4 android working and posted it on this site because i could not find a single comprehensive list telling me what needed to be done.

https://forum.yoyogames.com/index.p...-gms-version-1-4-1763-as-of-may-1-2017.16061/

If i may ask how would be the best way to request this kind of information so i can browse through it? im not trying to endorse anyone, just want to see what i can work with and what i have to do for myself.

if you could point me to more information i would very much appreciate your help.

thank you.
 
No list will ever be genuinely useful until it contains material for basic syntax elements, tracing and abstract modeling, and for more than a decade I have not seen any for GML.
What kind of abstract model?

I mean, in GM you could say that the game engine's abstract model is baked into the IDE? Objects, Rooms, Sprites, etc. The developer follows this architecture by whether he's aware of it or not.
 

curato

Member
If I were doing it I would doing it I would take the format of a basic computer science class for intro to programing and focus on the core concepts of the logic required to design program and just use gml examples and how you would make in gamemaker as examples. It is pretty easy to dig syntax out the manual or a tutorial, but the key skill people tend to lack is to look at a task that needs to be done and break it down into smaller steps and which structures are best for doing certain task and why. Once you master that which language you are using doesn't really matter.
 

FrostyCat

Redemption Seeker
If i may ask how would be the best way to request this kind of information so i can browse through it? im not trying to endorse anyone, just want to see what i can work with and what i have to do for myself.

if you could point me to more information i would very much appreciate your help.
My suggestion is that you start by looking at traditional computer science curricula and books teaching other languages. Get some inspiration on how they do it, and think how the approach may be adapted for GML. And perhaps you will learn a new language or perspective to boot. My GMC experience shows that the only worthwhile GML developers are the ones with fingers in multiple pies.

Note that for this purpose, you should avoid material teaching engines or specific libraries. In many cases, the responsible ones will state from the get-go that they expect existing language experience, and the irresponsible ones make the same mistakes on basic competency that most mainstream GML books and video tutorials do.

If you really want to do things in order, none of the approaches that are currently popular fits that bill. The customary way of starting wtih a recognizable arcade game, platformer or RPG skips at least 3 basic competencies that should come before them (basic syntax, basic events and instance lifecycle, basic scoping, etc). The most insidious thing about this is that you won't know your inadequacy until it's too late. A lot of rookies get an early buzz with plagiarized trophies from YouTube tutorials, then find out at least 6 months down the road that they can't do squat on their own.

Part of the difficulty is actually filtering down what's really basic and putting it in a learnable order. Sure, we can brainstorm some items or list stuff from the Manual's index. But for people qualified enough to teach this stuff, we often become like a child who has to pick a few favourite toys in the chest to keep and give away the rest. Every one of them looks like a keeper the instant they pick it up. Add in items that are unique to GML (e.g. with blocks and its variety of uses) and the lack of prior art in GM circles, and suddenly this doesn't look so easy.

I'm focusing on alternative tweening/timing methods and speed IDE usage at the moment, so I won't have time to home in on this topic until late November. But I'll be open to new exploration and discussions on basic GML education coming December. That's the least I could do to make good use of a Christmas break.

What kind of abstract model?

I mean, in GM you could say that the game engine's abstract model is baked into the IDE? Objects, Rooms, Sprites, etc. The developer follows this architecture by whether he's aware of it or not.
I mean modeling data-oriented features and bookkeeping needs using variables, arrays, data structures and serialization/deserialization. This is in contrast with action-oriented features like making things move, drawing things and handling I/O. There has been a chronic bias in the GML world in favour of the latter, leading to people who can "make" a platformer but can't even loop through an array. The only people exempt are those with an existing or additional background in another programming language, where any sensible instructor would foist data-driven basics on you from ground zero. When I raised my point, you jumped right towards "objects, rooms, sprites, etc." --- all action-oriented aspects of GM. That is reflective of a disturbing trend.

It's absolutely insidious that mainstream GM sentiment is silent, dismissive or even ignorance-praising towards the need to handle abstract data modeling. And GM's tendency to market itself as a safe space from that is even more insidious.
 

Toque

Member
I’ve assumed that GM packaged GM as a education tool packed with a teaching curriculum and teacher support.......

I actually like the idea of teaching kids to program by making a game. I can’t think of anything more engaging. 99% of kids are not going to learn any depth in programming anyways. If they learn a bit of logic and basic coding concepts mission accomplished. Maybe some schools have the depth and resources to teach more advanced topics??? How many schools even have a teacher with programming skills to teach it? How many high schools have a teacher with a degree in programming???

what is the teaching goal?
 

Neptune

Member
@FrostyCat You'd like people to approach topics with a wealth of wisdom and considerations...
It won't happen. They will send people slightly astray, but the only ones that are going to have the dedication to get somewhere, will find a more proper path anyhow.

Hmm, imperfect tutorials and what not can't be too bad... I started out my coding experience by copy pasting Shaun Spalding code and getting 50/50 advice on these forums, and now I'm smoothly developing quite an elaborate game.
I'm sure plenty of others have done the same.
 
When I raised my point, you jumped right towards "objects, rooms, sprites, etc." --- all action-oriented aspects of GM. That is reflective of a disturbing trend.
Ah, I getcha. I think I missed your point about what type of modeling. But you missed mine back, so we're even. :)

These are not action oriented aspects of GM, or at least, that's not how I was meaning it. They model how the game engine works. What's the relationship between a Room and Objects? What's the relationship between Objects and Sprites? Backgrounds to Rooms? Can a Room have Many Backgrounds? Do Sprites have Sounds?

These aren't actions: It's a really simple model of a game's components. Now this is beyond trivial for you, and it's even easy for someone who's been using GM for a few months to understand, but this is *not* trivial for a non-techy to grasp when they're first intro-ing into making a game.

I mean modeling data-oriented features and bookkeeping needs using variables, arrays, data structures and serialization/deserialization......There has been a chronic bias in the GML world in favour of the latter, leading to people who can "make" a platformer but can't even loop through an array.
See, this is how you confuse me Frosty. You talk about Abstract Data Modelling, and when I try to talk about modelling (at a high level), you're talking about people who can't look an Array.

Looping an Array is just a programming fundamental! But agree 100%: People can/should learn these types of fundamentals if they really want to excel. CS101 type exercises: Loop an array. Learn some of the basic algorithms. Start with a bubble sort, and.. probably finish with a Linked List? I think if you know how to build your own Linked List, and do the main basic operations with that, you're good to build a good number of games. Not sure, perhaps you've got a couple of favorite algorithms you'd recommend learning as a base, too.

For Game modeling in general, I highly, highly recommend https://gameprogrammingpatterns.com/ , which is free, excellent, and language agnostic. (Although in GML you're always stuck with some of the limitations of the existing architecture)

It's absolutely insidious that mainstream GM sentiment is silent, dismissive or even ignorance-praising towards the need to handle abstract data modeling. And GM's tendency to market itself as a safe space from that is even more insidious.
Maybe insidious is too strong a word, but yep, more fundamentals, and better understanding of 'data' in general would help everyone. So in principle I agree with you here. The problem is: We download GM for the first time, what are we going to do? We're going to +Add an Object, we're going to +Add a Room, and the object, try write some code, then what: are we're going to do draw_text (array) or draw_sprite first? Of course draw_sprite()

It's GM's nature: People *are* going to start graphically: It's a selling point, and it's also very motivating for a developer to see the results so quickly. Just not very good engineering. (Also note:, if you're a young dev who wants to get serious about this in the future: Trust me, this is not a good base to build on)

It's been a minute since I used GM. Can you run scripts stand-alone now, and just see debug output?

(For people wondering wth Frosty's and I are talking about: In general engineering you almost always start with the Data, and work backwards. Even Game development in general, this is a good principle: In GM, you almost always starting with the graphical side first, and *then* roll back to building up the game/implementing data. It's kiiind of wonky: But not necessarily evil.)
 
Last edited:

ATY@Y@

Member
In a few weeks we're going to be releasing a full set of free teacher resources, created by a teacher, to teach the making of a classroom friendly game called Space Bubbles, for children aged from 12-16, assuming zero prior knowledge. Please sign-up for the Education Newsletter to ensure you will receive details as soon as it comes out.

It will include:
• 8 one hour lessons with PowerPoint presentations
• 3 home worksheets
• 6 video tutorials
• 6 written tutorial worksheets
• 11 extension tasks
• An assessment system
• A Teacher’s Guide
• Completed GM projects for each stage
 

FrostyCat

Redemption Seeker
Ah, I getcha. I think I missed your point about what type of modeling. But you missed mine back, so we're even. :)

These are not action oriented aspects of GM, or at least, that's not how I was meaning it. They model how the game engine works. What's the relationship between a Room and Objects? What's the relationship between Objects and Sprites? Backgrounds to Rooms? Can a Room have Many Backgrounds? Do Sprites have Sounds?

These aren't actions: It's a really simple model of a game's components. Now this is beyond trivial for you, and it's even easy for someone who's been using GM for a few months to understand, but this is *not* trivial for a non-techy to grasp when they're first intro-ing into making a game.
Fair enough, I'd consider that a data-oriented aspect of the engine. They need to know these relationships even before implementing a single action.

See, this is how you confuse me Frosty. You talk about Abstract Data Modelling, and when I try to talk about modelling (at a high level), you're talking about people who can't look an Array.

Looping an Array is just a programming fundamental! But agree 100%: People can/should learn these types of fundamentals if they really want to excel. CS101 type exercises: Loop an array. Learn some of the basic algorithms. Start with a bubble sort, and.. probably finish with a Linked List? I think if you know how to build your own Linked List, and do the main basic operations with that, you're good to build a good number of games. Not sure, perhaps you've got a couple of favorite algorithms you'd recommend learning as a base, too.
Before one can model a need using something, the prerequisite is to know how to use that something. A person who can't even loop through an array would NOT have been able model anything using arrays, even when it's appropriate. That's the problem I'm pointing at.

Maybe insidious is too strong a word, but yep, more fundamentals, and better understanding of 'data' in general would help everyone. So in principle I agree with you here. The problem is: We download GM for the first time, what are we going to do? We're going to +Add an Object, we're going to +Add a Room, and the object, try write some code, then what: are we're going to do draw_text (array) or draw_sprite first? Of course draw_sprite()

It's GM's nature: People *are* going to start graphically: It's a selling point, and it's also very motivating for a developer to see the results so quickly. Just not very good engineering. (Also note:, if you're a young dev who wants to get serious about this in the future: Trust me, this is not a good base to build on)

It's been a minute since I used GM. Can you run scripts stand-alone now, and just see debug output?
The problem is not starting graphically, but being exclusively graphical and action-oriented throughout the entire learning process with no data-oriented coverage. I've had it with people who claim upwards of a year of GML "experience" and can't even set up a shuffled list. Any curriculum that helps fill current gaps in basic syntax, data-driven modelling and neglected aspects of action-oriented competency (e.g. the event cycle) will get my support.

And I don't think insidious is an overstatement. The attitude problem about denigrating basic skills and data-driven competencies has full penetration in the GML education system, in a lot of places where it shouldn't be. For example, where do you think this statement about arrays comes from?
Arrays may seem confusing at first
Correct answer: This is coming from the Manual. I could not believe my eyes.

Prefacing statements like this that dismiss basic competencies as "confusing" or any similar adjective (e.g. "advanced", "hard", etc.) is not compassionate, it is counterproductive. Even if you explain that it could be useful later, first impressions count. If as an educator you say anything that states, suggests or implies that rookies should put it off until later, they will put it off until later, if not indefinitely. This omission will come back to bite them, and the Q&A section is littered with bite marks. The GM user community is the only place where I've seen arrays described this way, and is also the only place where I regularly see rookies struggle with arrays.

One of the reasons I'm versed in arrays and data structures today is that the authors and instructors teaching me these NEVER prefaced their teachings with commiseration. They told me it's essential, gave me an overview, followed by finer points. I didn't have a mental excuse to put it off. They expected it of me and I delivered.

Having a curriculum for omitted content is great as a first step. But the necessary follow-up is lifting the "hard" stigma from that omitted content, and that starts with watching our words when describing them today. Don't tell others that you struggled with them while learning it; tell others that you use and need it today.
 

Toque

Member
In a few weeks we're going to be releasing a full set of free teacher resources, created by a teacher, to teach the making of a classroom friendly game called Space Bubbles, for children aged from 12-16, assuming zero prior knowledge. Please sign-up for the

Education Newsletter to ensure you will receive details as soon as it comes out.

It will include:
• 8 one hour lessons with PowerPoint presentations
• 3 home worksheets
• 6 video tutorials
• 6 written tutorial worksheets
• 11 extension tasks
• An assessment system
• A Teacher’s Guide
• Completed GM projects for each stage

This is great news. If GM is going to be used as a educational tool teachers need resources. Nice.
 
A person who can't even loop through an array would NOT have been able model anything using arrays, even when it's appropriate. That's the problem I'm pointing at.
Gotcha. So probably a good set of tutorials/simple examples of Arrays wouldn't go amiss. Creating a highscore, creating a menu system, creating an inventory: But the paradigm is now 'Learning and working with Arrays to do xxx'.

Does the forum not have these types of tutorials? Things just covering fundamentals? (If there are, do these need to get better visibility?)

The problem is not starting graphically, but being exclusively graphical and action-oriented throughout the entire learning process with no data-oriented coverage. I've had it with people who claim upwards of a year of GML "experience" and can't even set up a shuffled list. Any curriculum that helps fill current gaps in basic syntax, data-driven modelling and neglected aspects of action-oriented competency (e.g. the event cycle) will get my support.
True, true. But the environment itself (GM) doesn't support a data-driven development, as opposed to graphical. Hence why I asked if we can run scripts as standalone in GM now: Or rather, set up some kind of Unit Test so you can run a script and set the data in, see data out.

Because if it's still 'Run the game and see your Room and Objects drawn', then the environment itself is encouraging the graphical mindset. (As it always has: And this has mostly been seen as a positive feature[rightly or wrongly!])

Now your point about the actual skill level of a 'one year GML experience' is a fair point, so I don't want that lost in everything else we talk about.
For equivalence: A first year CS or equivalent courses normally require some kind of game to be made (Normally a card game, such as Poker), built entirely without a GUI and using only Arrays. And normally in some unfriendly language like C or C++.

For example, where do you think this statement about arrays comes from?
[snip]
Correct answer: This is coming from the Manual. I could not believe my eyes.

Prefacing statements like this that dismiss basic competencies as "confusing" or any similar adjective (e.g. "advanced", "hard", etc.) is not compassionate, it is counterproductive. Even if you explain that it could be useful later, first impressions count. If as an educator you say anything that states, suggests or implies that rookies should put it off until later, they will put it off until later, if not indefinitely. This omission will come back to bite them, and the Q&A section is littered with bite marks. The GM user community is the only place where I've seen arrays described this way, and is also the only place where I regularly see rookies struggle with arrays.

One of the reasons I'm versed in arrays and data structures today is that the authors and instructors teaching me these NEVER prefaced their teachings with commiseration. They told me it's essential, gave me an overview, followed by finer points. I didn't have a mental excuse to put it off. They expected it of me and I delivered.

Having a curriculum for omitted content is great as a first step. But the necessary follow-up is lifting the "hard" stigma from that omitted content, and that starts with watching our words when describing them today. Don't tell others that you struggled with them while learning it; tell others that you use and need it today.
Eeeeh....ehhh... I somewhat agree with you in principle, but I don't think I feel as passionately about it. I mean, the rest of the sentence/page does go on to talk about how useful and essential Arrays are. I'm ok with that wording. Arrays are challenging at first. I don't really think it's up to the manual to be unnecessarily sensitive to the learners feelings. So I'm willing to disagree on the pedagogical approach.

But I realize this is just a small example trying to illustrate the wider picture.

The thing is, if we were talking about a uni course, (or a professional environment) you're right. People cannot skip the basics, they've got to build that foundation to be useful in the future (or be able to face more challenges). As aforementioned, this is why many level 1 courses don't let their students create GUI's, or even data types.

But that's not GM's user base. It has users ranging from pre-tweens to grandma's*. They just want to build stuff, not necessarily 'learn' (deeply) how it all works.


*or is it? Or is it mostly young professionals/wannabe's now? I don't know anymore....
 
*or is it? Or is it mostly young professionals/wannabe's now? I don't know anymore....
And here we hit, I think, the fundamental divide between the question answerers and the question askers. People asking questions about GMS in the Programming section are coming from a multitude of backgrounds and intents. Some have prior programming experience and need just a little help fine-tuning their understanding of the inner workings of GMS, but most are extremely casual users who fall very very roughly into two main groups: [ Artists who want to make a game ] and [ people who had a game idea and searched how to make it on google (and consequently picked GMS) ]. The marketing and general strategy of the GMS public face is that it is great for the beginners to get into making a game AND that it's great for advanced programmers to use to develop quickly. The problem is, and this really exists with all game development engines along the lines of GMS (RPG Maker, Construct, etc), it is very hard to program a mildly complex game without a relatively deep understanding of programming structures, regardless of what engine you use.

This is counter-intuitive to the marketing. If you want to do cool 💩💩💩💩 with GMS, you're basically going to have to take computer programming courses (not 100% of the time, but still, complexity is hard to deal with in GMS and every feature you envision for your game increases that complexity and needs a deeper understanding of the underlying reality of programming). So prospective game makers come in with the promise of building games easily but anything that seems too comp-sci or mathy is anathema to them (they didn't download this software in order to spend a year developing their programming skills...), so the "build a platformer in 2 videos" tutorials win out over any more basic, in-depth tutorials that are made and the cycle of question asking and aggravated answering happens over and over again on the forums. I'm not really sure what the answer is. I very much doubt that an in-depth programming course for GML that teaches the fundamentals of comp-sci and how to apply them to GMS will be super popular within the transient community of question askers on the forum, so, at least IMHO, there'll never be a point where we are not explaining what arrays are and how data structures are useful and not scary in the Programming section...Which kinda sucks for question answerer burn-out. I know I definitely felt the need to step back and stop answering questions because I was getting frustrated and rude at answering the same questions over and over again. I've gone from an active member of the forums to one who just lurks and reads, nodding my head in silent agreement.

Sorry, I guess this kinda drifted off from the main point, so to draw it back, @ATY@Y@'s post is heartening to see, and I hope that it will help teachers ease kids into software development, which hopefully will, in turn, lead to a more diverse range of kids being interested and active in the general community of programming and game programming specifically, rather than the general staple that is awkward white guys becoming programmers, and then we'll have a fresh new face of commenters who aren't jaded like us old fogies.
 

Toque

Member
I always liked this persons tutorials.

I guess it depends on who the students are?

I would think a intro to code teaching grade 9 students would look different than a grade 12 or university course.

one approach to all probably isn’t going to be effective.

watching youth learn. The graphical -code-action seems to engage youth.
 
Last edited:

FrostyCat

Redemption Seeker
Gotcha. So probably a good set of tutorials/simple examples of Arrays wouldn't go amiss. Creating a highscore, creating a menu system, creating an inventory: But the paradigm is now 'Learning and working with Arrays to do xxx'.

Does the forum not have these types of tutorials? Things just covering fundamentals? (If there are, do these need to get better visibility?)
Both YouTube and the GMC have these kinds of tutorials, and the paradigm simply isn't working. These tutorials put those design-level items in the limelight, leaving arrays, data structures and other technical-level basics a negligible afterthought. An unguided novice won't notice the key technical points that are reusable in other contexts and enable true independence. "Someone who has genuinely learned to implement X should have known Y in the process" is something I've been saying a lot on the Q&A, and the rookies give me nothing but blank stares most of the time. The paradigm isnt "learning and working with arrays to do X", the paradigm is "monkey sees X, monkey does X". It's watch-and-paste tutorial dependence.

All GML books published to date that I know of also have this problem. They pick several games and genres that are popular with novices, then does the same watch-and-paste process in written form. I've served as the technical reviewer for several of these books, and most of them have been poorly received by readers. These customer reviews talk about not learning anything, low technical content and value, and the material being too similar to stuff already available on YouTube. As a technical reviewer, I don't have the agency to change the method of teaching or even setting a bar for technical correctness. I can only point out the bad spots and hope the author changes it. But with designers writing these books instead of genuine coders (Overmars and Habgood are the only 2 exceptions I know of), I can't do much about it.

I have several articles covering fundamentals at a level just above syntax and events, e.g. with block recipe cards. All but one are sunk well past first page now, though I repeatedly link to them.

What I'd like to see more are teaching material of ANY stripe that instead presents a well-defined technical item in the limelight (e.g. arrays, data structures, basic syntax, etc.), then crafts examples around it. It emphasizes genuinely reusable content (basic elements instead of usually non-reusable concrete examples), gives more time to cover the item's finer points, and encourages rookies to think beyond the obvious. Right now it's the other way around, and all it does is encouraging novices to stop their analysis at the superficial design level (e.g. "cool platformer game with RPG elements") and hand everything over to YouTube. That we already know isn't working.

True, true. But the environment itself (GM) doesn't support a data-driven development, as opposed to graphical. Hence why I asked if we can run scripts as standalone in GM now: Or rather, set up some kind of Unit Test so you can run a script and set the data in, see data out.

Because if it's still 'Run the game and see your Room and Objects drawn', then the environment itself is encouraging the graphical mindset. (As it always has: And this has mostly been seen as a positive feature[rightly or wrongly!])
It'll support more sensible data-driven development once the GML 2020 updates come out. But even now, it's perfectly possible to run single scripts as standalone in GM, as long as it's free of drawn graphics and asynchronous delays. One is the classic Room Creation Code in the first room. The more recent approach is gml_pragma("global"):
Code:
///@func run_me()
gml_pragma("global", "run_me();");

/* Insert code here */
I don't have a problem with the "run the game and see your room and objects drawn" approach. This is a valid first step, and a graphical mindset is needed for practical projects. The goal of a responsible curriculum is to make sure that the less obvious algorithm-/data-driven mindset is also covered, as are less obvious aspects of action-driven competency. Most of the incompetent rookies on the Q&A section stay that way not only because they suck with data organization and basic algorithms, but also because they suck at events and plane geometry.

The thing is, if we were talking about a uni course, (or a professional environment) you're right. People cannot skip the basics, they've got to build that foundation to be useful in the future (or be able to face more challenges). As aforementioned, this is why many level 1 courses don't let their students create GUI's, or even data types.
I've been through this whole process myself, and aside from basics being non-negotiable, the rest of your statement just doesn't reflect my experience.

My university used Python for its level 1 computer science course, and class data types came at the 1-month mark. Data structures and trees came at level 2, 4 months downstream from the start of level 1 course. No GUI yet, but most learned it as a side hustle or as part of later courses (e.g. web development).

My high school was the kind that put all of its money into its football team and left Windows 98 machines running Turbo Pascal 7 for the computer science department --- as late as 2010. Even then, its level 1 computer science course had drawn graphics on day 1, class data types at the 5-month mark, and the most competent students were improvising GUIs by the 6-month mark.

On the educational front, I think the biggest problem by far are the so-called "game design" courses that demand playable deliverables, but don't stand their ground in demanding prior coding experience. You basically have a game designer teaching the course, then they dole out an assignment requiring a playable product and leave students in the hands of YouTube. They call it a test for learning on the spot. That's where you end up with a lot of panicking non-coder students who should have seen it coming, but didn't. This kind of curriculum design is to post-secondary education as payday loans are to personal finance.
 

GMWolf

aka fel666
I'd like to think there are YouTube tutorials that teach these sorts of things, after all I did try to make a few.

Unfortunately they simply don't get the views.


I think disguising these topics under a "make such and such feature!" Title can help with that.


I guess that's where a course and a collection of tutorials differ.

A course people follow, and understand that even though something might now seem immediately relevant, it will be useful down the line.
But with tutorials, people go straight to what they want to achieve.

Exploring these new topics with no apparent relevance to your projects is something I think takes experience in learning to do.
 

Toque

Member
I would have no problem buying a course on GML programming. There might be other revenue streams than YouTube..... a good text book too.............

I bought a couple udemy courses on GML. They were ok. Game driven.

I wonder if GM would build courses available to all paid users or just education?

It would make sense to help advance it’s users. The more comfortable devs become the less likely they will leave.
 
What I'd like to see more are teaching material of ANY stripe that instead presents a well-defined technical item in the limelight (e.g. arrays, data structures, basic syntax, etc.), then crafts examples around it. It emphasizes genuinely reusable content (basic elements instead of usually non-reusable concrete examples), gives more time to cover the item's finer points, and encourages rookies to think beyond the obvious. Right now it's the other way around, and all it does is encouraging novices to stop their analysis at the superficial design level (e.g. "cool platformer game with RPG elements") and hand everything over to YouTube. That we already know isn't working.
Ok, long post, and super interesting. But I don't want us to get too sidetracked into the discussion on overlap between designers and programmers, good practice vs productivity, etc, etc, as we're going to lose the crux of the point. so I think the (quoted) is the crux of the discussion.

Just to make sure we're on the same page, so is Mark's tutorial that ATY@Y@ shared a good example for you, or no?

Here's one we did earlier, requested by a teacher: https://www.yoyogames.com/blog/515/using-arrays-in-dnd
(Also, cheers ATY@Y@! :) )

I've been through this whole process myself, and aside from basics being non-negotiable, the rest of your statement just doesn't reflect my experience.

My university used Python for its level 1 computer science course, and class data types came at the 1-month mark. Data structures and trees came at level 2, 4 months downstream from the start of level 1 course. No GUI yet, but most learned it as a side hustle or as part of later courses (e.g. web development).
Sounds pretty similar to me. :) No GUI, and no Data Structures until Level 2. (Did you have to shuffle and sort arrays by hand? Or did they let you do list.shuffle() list.sort())
 

Toque

Member
In a few weeks we're going to be releasing a full set of free teacher resources, created by a teacher, to teach the making of a classroom friendly game called Space Bubbles, for children aged from 12-16, assuming zero prior knowledge. Please sign-up for the Education Newsletter to ensure you will receive details as soon as it comes out.

It will include:
• 8 one hour lessons with PowerPoint presentations
• 3 home worksheets
• 6 video tutorials
• 6 written tutorial worksheets
• 11 extension tasks
• An assessment system
• A Teacher’s Guide
• Completed GM projects for each stage
This is great news. Is this going to be available to everyone or just educational clients?

This sounds like a intro to coding class. Is there going to be a level 2, level 3......??

This course will be in D and D?
 

FrostyCat

Redemption Seeker
Just to make sure we're on the same page, so is Mark's tutorial that ATY@Y@ shared a good example for you, or no?
Yes, that's an example of what I'm looking for, though I question some of the wording and execution (e.g. referring to arrays as "variables", not using the array literal syntax).

I would also be open to following up with guided readings of other existing tutorials, provided that the goal is to observe specific execution patterns of basic elements instead of blind watch-and-paste work. That encourages further critical thinking and fosters a new "reference-but-not-rely" attitude towards those tutorials. provides And if the rookies started with those instead of from-basics tutorials (which by now is the majority use case), that will also provide them context to link the concepts together.
(Did you have to shuffle and sort arrays by hand? Or did they let you do list.shuffle() list.sort())
My instructor allowed the built-in shuffle and sort after we learned the linear shuffle and the distinction between sorting algorithms (e.g. bubble, merge, BST, heap, etc.).
 
S

SerKillZ

Guest
Hey everyone, I am new to GMS just a hobbyist I am used to dabbling with ue4 but wanted to work on something more attainable as a one-person team so I appreciate this thread to learn from definitely going to look over everything here. I just had a question. Say I purchased the basic windows package for 39$. How much trouble would it be to transfer all work done once I am ready to publish that project and I upgrade licensing to GMS mobile and desktop? Would I have to redo everything under the new licensing or is it better to purchase licensing before starting?
 
L

lemonhead

Guest
SerKillZ, welcome to the GM Community, glad to have you. It would be as simple is saving your project, then when you are ready, just upgrade to the (presumably desktop version? - which includes exports for Windows, Linux, MAC) and everything should work just fine.
 

samspade

Member
And here we hit, I think, the fundamental divide between the question answerers and the question askers. People asking questions about GMS in the Programming section are coming from a multitude of backgrounds and intents. Some have prior programming experience and need just a little help fine-tuning their understanding of the inner workings of GMS, but most are extremely casual users who fall very very roughly into two main groups: [ Artists who want to make a game ] and [ people who had a game idea and searched how to make it on google (and consequently picked GMS) ]. The marketing and general strategy of the GMS public face is that it is great for the beginners to get into making a game AND that it's great for advanced programmers to use to develop quickly. The problem is, and this really exists with all game development engines along the lines of GMS (RPG Maker, Construct, etc), it is very hard to program a mildly complex game without a relatively deep understanding of programming structures, regardless of what engine you use.

This is counter-intuitive to the marketing. If you want to do cool **** with GMS, you're basically going to have to take computer programming courses (not 100% of the time, but still, complexity is hard to deal with in GMS and every feature you envision for your game increases that complexity and needs a deeper understanding of the underlying reality of programming). So prospective game makers come in with the promise of building games easily but anything that seems too comp-sci or mathy is anathema to them (they didn't download this software in order to spend a year developing their programming skills...), so the "build a platformer in 2 videos" tutorials win out over any more basic, in-depth tutorials that are made and the cycle of question asking and aggravated answering happens over and over again on the forums. I'm not really sure what the answer is. I very much doubt that an in-depth programming course for GML that teaches the fundamentals of comp-sci and how to apply them to GMS will be super popular within the transient community of question askers on the forum, so, at least IMHO, there'll never be a point where we are not explaining what arrays are and how data structures are useful and not scary in the Programming section...Which kinda sucks for question answerer burn-out. I know I definitely felt the need to step back and stop answering questions because I was getting frustrated and rude at answering the same questions over and over again. I've gone from an active member of the forums to one who just lurks and reads, nodding my head in silent agreement.

Sorry, I guess this kinda drifted off from the main point, so to draw it back, @ATY@Y@'s post is heartening to see, and I hope that it will help teachers ease kids into software development, which hopefully will, in turn, lead to a more diverse range of kids being interested and active in the general community of programming and game programming specifically, rather than the general staple that is awkward white guys becoming programmers, and then we'll have a fresh new face of commenters who aren't jaded like us old fogies.

I'm a little late to this one, but as someone who is still learning how to program and spends a fair amount of time answering questions on the forums I would like to say that I mostly agree with this, but still think an in-depth programming course for GML that teaches the fundamentals of comp-sci and how to apply them to GMS would still be super helpful for a couple reasons:
  1. There are at least some people who would use it. I know I would have. Instead, because I couldn't find it, I watched them for other languages. Which was helpful, perhaps even more helpful, but also meant a higher bar to entry. A GML specific version would attract more people.
  2. It would be extremely useful to refer to when answering questions. There are already a number of great resources I reference all the time in response to many starter questions. These videos, especially if short, and limited to one subject, would make great resources, references, and refreshers.
  3. While many people might not be interested in watching the whole thing, many, maybe even most, people would probably watch sections that applied to the specific thing they were learning about - whether that is variable scope, arrays, loops, data structures, and so on.
 
Top