Proposal: Community Curriculum for GMS 2.3+

FrostyCat

Member
With GMS 2.3 breaking existing tutorials to various degrees, I think now is a good time for the GMC to review the way it onboards newcomers.

Let's face it, the current "watch random YouTube videos" patchwork approach just isn't working. Novices are completely directionless and not learning the basic skills they need to be independent developers, and the resulting frustration for both them and GMC responders reflects badly on GM as a whole. As a result, I'm proposing a new community-wide curriculum consisting of GMS 2.3 ports of existing tutorials, with guided emphasis on reusable GML skills. Future newcomers can start with this curriculum instead of bouncing aimlessly from video to video, and in about 6-8 months, become an independent developer with published products and a complete grasp of GML.

The curriculum will come in week-long units (16 at the moment, but exact number negotiable), each with:
  • Up to one "make X game" tutorial (some may have none and be basics-only)
  • Several supporting tutorials covering reusable, basic skills
  • Brief independent exercises to go with each tutorial
  • Suggestions for independent practice using skills and/or material developed during the unit
I would like to know how many of us would be willing to put a few hours a week into the following work:
  • Creating new tutorials for skills not already covered
  • Editing/updating/adapting tutorials to work with GMS 2.3
  • Writing exercises for tutorials
  • Developing themed practice exercises for units
If there is enough support for the curriculum, I will participate alongside others by compiling the unit pages and contributing tutorials.

The Tentative Curriculum (items without links need to be created or filled with a GMS 2.3-compatible tutorial):
Unit 1: Basic Usage 1
Unit 2: Basic Usage 2
Unit 3: Looped Structures and Collections
  • Basic Inventory system (GMS 2.3 errata needed)
  • Arrays and structs
  • How to trace and debug
  • Basic looping patterns
  • Individual practice
Unit 4: Arcade Games and File Modelling
Unit 5: Basic Random Generation
  • Endless Runner (GMS 2.3 errata needed)
  • Bullet Patterns and Geometry
  • Particle systems
  • Individual practice
Unit 6: Action Game 1
  • Tower Defence (GMS 2.3 errata needed)
  • Object Variables
  • Parenting
  • Individual practice
Unit 7: Action Game 2
Unit 8: Introduction to UI
  • Primer to UI frameworks
  • Creating interactive menus
  • 9-patches
  • Individual practice
Unit 9: Basic Graphical Effects
  • Tweening
  • Lighting
  • Individual Practice
Unit 10: Advanced Graphical Effects
  • Masking and Blend Modes
  • Shaders
  • Individual Practice
Unit 11: Sound Effects
  • Sound instances
  • Common sound effects
  • 3D sound
  • Individual Practice
Unit 12: Advanced Random Generation
  • Procedural generation
  • Maze generation
  • Individual practice
Unit 13: Basic OOP
  • Connect 4 with GML OOP
  • Input proxies
  • OOP design patterns for GML
  • Individual practice
Unit 14: Asset Packages and Jam Development
  • Creating asset packages
  • Writing GML extensions
  • Preparing for and participating in a jam
  • Multi-user source control
  • Individual practice
Unit 15+16: Additional Programming Areas and Specializations (choose 2-3 per unit, at least 4 total, individual practice required)
  • Delta timing
  • Networking
  • 3D graphics
  • HTML5 export restrictions and workarounds
  • ... (suggestions/recommendations here)
  • Individual practice
If you have any suggestions/recommendations for units in the curriculum or the way it is organized, please feel free to respond.
 

Neptune

Member
Looks like a cool idea, but I'd get rid of source control and possibly even manual use from unit 1. New people don't have anything worth using source control for, especially individuals...
And likely wouldnt know what to do with the manual without first having experimented with a bunch of built in functions. Just my opinion, hope you get something going :)
 

Amon

Member
For me, this would be a very good thing to be able to complete. When reading @FrostyCat post it screams "me" at the moment because I'm aimlessly following this tutorial, that tutorial, and I have no clue where I'm going. So, this is a brilliant idea and would be beneficial to all.
 

FrostyCat

Member
I think this is a really good idea and I'd love to help out but Idk how" good of a help" I'd be
You can help by any of the following:
  • Researching tutorials covering topics that don't have links yet, thereby alleviating the need to write new ones from scratch
  • Writing tutorials and/or exercises on top of them
  • Proofreading the material
  • Going through some of the tutorials yourself and giving feedback from a learner's perspective
I hope to make it so that there's room for everyone in the process, and ideally offer beginners an opportunity to grow alongside the curriculum's development.
Looks like a cool idea, but I'd get rid of source control and possibly even manual use from unit 1. New people don't have anything worth using source control for, especially individuals...
And likely wouldnt know what to do with the manual without first having experimented with a bunch of built in functions.
The idea of starting with source control comes from the exercises and individual practice portions. If learners start off knowing how to use source control, they can set checkpoints for themselves during a tutorial, and use side branches to explore variations (some of which are intended as exercise items). And I won't go too deep at this point, just basic init, add, commit, checkout, branch, push and pull. On top of this, users who start off without a source control habit are disproportionately affected by data loss and accidental changes, so I want to help put a stop to that.

The first unit would introduce several built-in functions and most of the control structures, so by that time they will have used some already and be in a position to use the Manual. I plan to teach what kinds of material to search for and how to read variable/function reference pages (syntax, return value, example, etc.).
I think something similar to what Unity does would be interesting, a page dedicated to tutorials from basic to advanced, how about learn.yoyogames? (suggestion only)
Sorry, but I think learn.unity.com has the exact same problem as yoyogames.com/learn. Namely, it's still just a collection of "how to make X" tutorials without a directed progression. The tutorials themselves aren't new, it's the systematic ordering and emphasis on independent work that are.
 
Good idea, I think it needs to be backed by YYG. Especially to effectively alleviate "Novices are completely directionless and not learning the basic skills they need to be independent developers, and the resulting frustration for both them and GMC responders reflects badly on GM as a whole." and to be kept up to date consistently and across the whole curriculum, particularly whenever the next v2.3-size impacting update is released. The curriculum series could be added to the https://www.yoyogames.com/learn page and newcomers directed there.

Biggest issue with piece-mealing this from the community (although a wholesome idea) is differing quality in code and different programming styles/naming conventions/workflows varying across the community making it difficult for a beginner to follow along in a cohesive manner..especially if they're being told conflicting views on the "right way" to do something. Which I would imagine would be prone to happening with some of the topics suggested in your units outline e.g. networking. Don't know just my initial thoughts, this could turn out to be great though
 

samspade

Member
I'd be for this idea and willing to volunteer time (as someone already making tutorials and enjoying it). I'm not the most experienced user out there and I benefit a fair amount from making these tutorials and think there are a lot of gaps out there.

A couple of additional thoughts in no particular order.

I don't think make x game is that bad. Motivation is key to any hobby programmer and for most people, making a game is motivating. I do think that in general, they should be taught different, but that is at least as much on the teacher as it is the student. I think that the Space Rocks game, for example, is done really well. It isn't overly long, and virtually every part of it is teaching you about the IDE in addition to what you're doing.

If I had my wish, what would be created would be something a little like this: https://github.com/samspadegamedev/open-source-cs but much less scary and more game design focused. I think it is important to remember that many people program as a hobby because it is fun and they want to create something. I would like a coherent path that I could point people to who want to learn in a more sturctured way (my current response to "how do I learn GM" is to point them to space rocks and my own GML series and probably at this point mathatroo's stuff for 2.3). This is also my thought as far as 'official' backing from YoYo. While I think that would be nice (especially since YoYo has often specifically said that GM is an educational tool). I think it is completely possible without.

I'd probably move source control to farther down as well. While being important, most people won't realize that until they actually lose something (and honestly, most people won't lose anything) and the best use of source control involves doing it separately from GM (in my opinion). This would be a little strange to start with I think. Unless the idea was to do a very, very basic backup only inside GM source control.

Making tutorials is a moderately time consuming process. My tutorials are of medium production quality at least (@matharoo are for example much nicer) and in general I spend 1-5 hours of work for every 10 minutes. I try to teach what I know, but in some cases, I'm teaching at the edge (such as my git series) and often have to spend a fair amount of time doing additional research to make sure I'm not saying (too many) wrong things.

I do have a github tutorial series (about half way done), an array series, and an error message tutorial out there already. I am thinking about starting a more general data structures and algorithms series at some point now that we have structs and methods as a lot of them just became significantly easier to work with. I'll also be updating my GML Fundamentals series with 2.3 stuff probably within the next few months.

I think that GM remains a very effective platform for both making games and learning how to code. I know on the forums we occasionally see people who don't really want to learn, learn slowly, or can't learn for one reason or another, but its hard to actually know what percentage of the entire user base that is. The extend GM community (and by that I mean everyone who uses it not just the regulars on these forums) continue to make great games. I found and loved Neon Drift for example before knowing it was made in GM. Recent games like Katana Zero, Desert Child, and Jet Lancer have also all been interesting to play or watch people play.

The recent 2.3 updates have (for better or worse) opened up a large amount of outside tutorials. A lot of the javascript stuff I learned is suddenly almost one-to-one translatable. I think there is room on the list now for including tutorials and talks in other languages.

I think that getting feedback on existing tutorials (especially before they are actually done) is very useful. Especially now that 2.3 is around and a lot of this 'new' stuff is really just basic stuff in other languages. Feedback after a tutorial is done is more difficult. YouTube at least would require you to delete and upload a new video. This is very disheartening. I'd be willing to do it for egregious mistakes but in most cases, I'd prefer to have those mistakes caught in advance.
 

FrostyCat

Member
Biggest issue with piece-mealing this from the community (although a wholesome idea) is differing quality in code and different programming styles/naming conventions/workflows varying across the community making it difficult for a beginner to follow along in a cohesive manner..especially if they're being told conflicting views on the "right way" to do something. Which I would imagine would be prone to happening with some of the topics suggested in your units outline e.g. networking.
You're right, once we do start getting entries we will need to evaluate for code quality, especially compatibility with major version updates. I'm open to shrinking the scope of certain items so that there are fewer variations to argue over, or getting the conflicting authors to reconcile if any major ones arise.

There will still be some diversity in styles, naming conventions and workflows, but I think it's important for novices to get used to that early and still learn despite that. They won't get their way all the time, and resources in the wild will be like this. This is why How to use tutorials / You are the programmer come as early as unit 2. If learners are taught to focus on patterns instead of copy-and-paste content, small variations in naming and style won't be as detrimental, and they'll develop professional judgement to decide between alternatives if two or more conflicting ones are presented.
 

FrostyCat

Member
I don't think make x game is that bad. Motivation is key to any hobby programmer and for most people, making a game is motivating. I do think that in general, they should be taught different, but that is at least as much on the teacher as it is the student. I think that the Space Rocks game, for example, is done really well. It isn't overly long, and virtually every part of it is teaching you about the IDE in addition to what you're doing.
I also don't think it's necessarily bad on its own, which is why most units come with at least one. The other "basics" tutorials that go with it are skill areas that I believe go well with that "make X game" tutorial in the unit. If you can think of a better match on any unit, I'm open to changing it.

Space Rocks is also a good tutorial in my opinion, but the tab character problem is a persistent issue with it, and it also suffers from the GMS 2.3 script syntax and self/other problem. The problem spots are sparse enough that a simple errata would suffice, but I'm not sure whether a novice will follow that.
If I had my wish, what would be created would be something a little like this: https://github.com/samspadegamedev/open-source-cs but much less scary and more game design focused. I think it is important to remember that many people program as a hobby because it is fun and they want to create something. I would like a coherent path that I could point people to who want to learn in a more sturctured way (my current response to "how do I learn GM" is to point them to space rocks and my own GML series and probably at this point mathatroo's stuff for 2.3). This is also my thought as far as 'official' backing from YoYo. While I think that would be nice (especially since YoYo has often specifically said that GM is an educational tool). I think it is completely possible without.
This is intended to be that "coherent path", with content that is reviewed and approved by experienced users. The goal isn't necessarily to do everything from scratch, but to source as many as possible that still work in GMS 2.3, and only create new ones when voids need to be filled.
I'd probably move source control to farther down as well. While being important, most people won't realize that until they actually lose something (and honestly, most people won't lose anything) and the best use of source control involves doing it separately from GM (in my opinion). This would be a little strange to start with I think. Unless the idea was to do a very, very basic backup only inside GM source control.
The idea is that learners would use it to create checkpoints as they move along a single project, and use side branches to store variations that exercises ask them to do. So not only would it be a good developer habit, it would also be a recurrent theme every unit.
Making tutorials is a moderately time consuming process. My tutorials are of medium production quality at least (@matharoo are for example much nicer) and in general I spend 1-5 hours of work for every 10 minutes. I try to teach what I know, but in some cases, I'm teaching at the edge (such as my git series) and often have to spend a fair amount of time doing additional research to make sure I'm not saying (too many) wrong things.

I do have a github tutorial series (about half way done), an array series, and an error message tutorial out there already. I am thinking about starting a more general data structures and algorithms series at some point now that we have structs and methods as a lot of them just became significantly easier to work with. I'll also be updating my GML Fundamentals series with 2.3 stuff probably within the next few months.
It would be great if more of your tutorial content could be sourced in the curriculum. Don't hesitate to ask me or other members for a review if you're unsure.
The recent 2.3 updates have (for better or worse) opened up a large amount of outside tutorials. A lot of the javascript stuff I learned is suddenly almost one-to-one translatable. I think there is room on the list now for including tutorials and talks in other languages.

I think that getting feedback on existing tutorials (especially before they are actually done) is very useful. Especially now that 2.3 is around and a lot of this 'new' stuff is really just basic stuff in other languages. Feedback after a tutorial is done is more difficult. YouTube at least would require you to delete and upload a new video. This is very disheartening. I'd be willing to do it for egregious mistakes but in most cases, I'd prefer to have those mistakes caught in advance.
As much as GMS 2.3 has opened opportunities for new tutorial subjects outside GML, they still need to be adapted in order to be useful. At the same time, GMS 2.3 has also made many video tutorials "wrong" (particularly the new script syntax), some of which are by people who are no longer active. Nobody would have seen it coming.

To future-proof this, I propose a more text-and-pictures-centric approach, though videos are fine if they already work. Text is easier to keep up to date, and for people whose native language isn't English, is easier to understand through a machine translator (transcriptions are usually a complete mess).
 

samspade

Member
It would be great if more of your tutorial content could be sourced in the curriculum. Don't hesitate to ask me or other members for a review if you're unsure.
I was planning on waiting probably until the end of the year or so to do my Coding Fundamentals 2.3 Update, but perhaps I will move it up. The main reason I was waiting is needing more time to familiarize myself with the new features, especially structs and some of the more advanced things with methods and functions (callbacks, binding, etc.) But if people would be willing to review for correctness beforehand I would be less concerned.

On a similar note, I would be interested in knowing what people think should be updated of the existing stuff and which of my videos in this series should get an out of date added to the title (or something) as I add new videos. So for example, there are new data types. That video might be best served with a short 2.3 follow up and title change or pinned comment pointing to it. But the script videos need to be entirely redone and probably should have a title change to reflect that they aren't current. I can make a separate topic for these questions if you think that would be better.

To future-proof this, I propose a more text-and-pictures-centric approach, though videos are fine if they already work. Text is easier to keep up to date, and for people whose native language isn't English, is easier to understand through a machine translator (transcriptions are usually a complete mess).
I would have said this is more work than doing a video, but now I'm less sure. The primary issue with written material, from my point of view is that often less people see it or it can be difficult to know if people find it useful (which for anyone volunteering their time to teach is a very important factor). That said, I do see the value. I'd have less work to do know if the coding fundamentals series was all text.


I have two other thoughts.

First, it might be worth having two layouts of the 'course' structure. The first, being a linear one for people who just want to sit down and learn the next thing, and the second being a subdivision by category and difficulty for people who have less time or like to jump around between topics. For example, you could divide the original list into four general categories, coding (fundamentals, structs, arrays), GM IDE (basics, sound, local assets, marketplace), Associated Skills (reading manuals, git, JSON), and Full Games (Space Rocks, Break Out). This is a lot like how colleges lay out degrees already, with general categories and prerequisite which allow for some self direction and choice while still giving guidance and not letting people get too overwhelmed.

Second, I think that a public github repository might be a good home for this. It can still be linked back here (if good enough perhaps pinned to the top of the resource or tutorial section), it allows for people to collaborate (make suggestions, etc), encourages new people to use github, and if anyone is very enterprising, could be turned into a nice looking website using githubs website hosting. It also allows videos to linked with written comments. Meaning that if you linked to an old tutorial or a tutorial with a mistake (such as space rocks) you can have the notes on that video there, allowing for some control, and updatability. Or to add suggested exercises and so on.
 

SIG.

Member
Is it that time of year again? *checks*

It is!



There needs to be an official treat for this! In honor of FrostyCat, I nominate ice cream cake.

Edit: I don't know if ice cream cake is common outside the USA, so here's a recipe.
 

GMWolf

aka fel666
I think a directed approach would be a great resource.
Directed both in the sense that users are guided through a course, but also directed in that there is an entity who helps inform what tutorials need to be created, what they should cover as well as curating existing tutorials.
This entity could be a single person, or a group of people on the GMC.
 
Yeah, I think that the idea is great. Random content tutorials varying in style/quality by whoever makes em is fine but clearly inefficient. A community guided selection of tutorials with relatively consistent levels of quality and a handpicked "ramp" moving towards releasing a finished product would be an incredible addition to the community that would help so many people (and so many question answerers). I am no expert by any means, but I'd be willing to pitch in some of my time to help make such a thing happen.
 

FrostyCat

Member
I was planning on waiting probably until the end of the year or so to do my Coding Fundamentals 2.3 Update, but perhaps I will move it up. The main reason I was waiting is needing more time to familiarize myself with the new features, especially structs and some of the more advanced things with methods and functions (callbacks, binding, etc.) But if people would be willing to review for correctness beforehand I would be less concerned.
Structs, callbacks and functions have been my primary focus throughout the GMS 2.3 beta. If you need anything reviewed on that front, feel free to PM me about it.
On a similar note, I would be interested in knowing what people think should be updated of the existing stuff and which of my videos in this series should get an out of date added to the title (or something) as I add new videos. So for example, there are new data types. That video might be best served with a short 2.3 follow up and title change or pinned comment pointing to it. But the script videos need to be entirely redone and probably should have a title change to reflect that they aren't current. I can make a separate topic for these questions if you think that would be better.
You can tell where the need to update is by where topics like this and this are cropping up. Space Rocks is a disaster zone in this regard.

A "GMS 2.2 and below ONLY" disclaimer or something similar in title should be enough, since it could still be of use to people who aren't in a position to update for any reason (especially for school). But I don't really have the experience to say which one is better for videos, everything I've done is in text that I can rewrite at will. Say, you can try doing one of each for your roster that need updating, then monitor the responses.
First, it might be worth having two layouts of the 'course' structure. The first, being a linear one for people who just want to sit down and learn the next thing, and the second being a subdivision by category and difficulty for people who have less time or like to jump around between topics. For example, you could divide the original list into four general categories, coding (fundamentals, structs, arrays), GM IDE (basics, sound, local assets, marketplace), Associated Skills (reading manuals, git, JSON), and Full Games (Space Rocks, Break Out). This is a lot like how colleges lay out degrees already, with general categories and prerequisite which allow for some self direction and choice while still giving guidance and not letting people get too overwhelmed.
It's easy to make the categorized form once the linear form is done. Let's focus on whether the set is sufficiently comprehensive first.
Second, I think that a public github repository might be a good home for this. It can still be linked back here (if good enough perhaps pinned to the top of the resource or tutorial section), it allows for people to collaborate (make suggestions, etc), encourages new people to use github, and if anyone is very enterprising, could be turned into a nice looking website using githubs website hosting. It also allows videos to linked with written comments. Meaning that if you linked to an old tutorial or a tutorial with a mistake (such as space rocks) you can have the notes on that video there, allowing for some control, and updatability. Or to add suggested exercises and so on.
That's an excellent idea. I'll research GitHub Pages for the first unit (which I'll write), then get feedback on how it's organized and adjust it to final form from there on.
 
D

Deleted member 45063

Guest
You can count me in to support on whatever I can. Don't know if I can help with a lot of actual content, but I can definitely try out the tutorials, try to proof read and review content, etc. I think GM could benefit a lot from a structured learning aid, I remember I learned a lot back when The Game Maker's Apprentice was a thing.
 
Last edited by a moderator:

Bart

WiseBart
I think this is a very interesting idea, one that I fully support.
I can make some time every week and would love to make my contribution by writing content, by proofreading or by finding/researching topics that seem fit for this.

I've been thinking of creating some tutorials myself on specific subjects and it occured to me how it'd be interesting if those could refer to some basic subjects, e.g. vector maths, bitwise operators, basics on graphics, http/web stuff, practical uses of data structures, ...
Basically link the knowledge instead of copy-paste only the relevant parts (Don't Repeat Yourself).

It'd be interesting to see some useable structure emerge out of all knowledge that exists today.
 

BQubed

Member
I second this. I'm a newcomer to GMS 2.3 and I'm only now feeling like the ball is rolling. I started with looking up and copying tutorials to acclimate to the new typing style and good coding practices, then I started modifying that code and experimenting and asking questions. Now I'm mostly independent with the exception of a few snags here and there. However it has taken over 500 hours in GMS to reach this point and I'm still getting stuck in places that are easy fixes for those with a more formal education in coding. I would like to see some kind of curriculum to help fill in the blanks that I didn't even know were there.
 
Last edited:

samspade

Member
I've been thinking of creating some tutorials myself on specific subjects and it occured to me how it'd be interesting if those could refer to some basic subjects, e.g. vector maths, bitwise operators, basics on graphics, http/web stuff, practical uses of data structures, ...
Basically link the knowledge instead of copy-paste only the relevant parts (Don't Repeat Yourself).
I second this at least in part. I think there are already a lot of good tutorials on some off the more basic math subjects highly relevant to game programming out there. For example, this channel, Coding Math, covers a lot of really useful skills that are almost completely transferrable to GM. And Hobby Tutor just put out some for vectors in GM (I was actually working towards doing my own vector tutorial, as I wanted to use them in an upcoming series, but like you would be happy to link to an existing one if it covered the same things).


On another note, one thing this curriculum doesn't have, perhaps by design, is any reference to drag-n-drop. I would be interested to know from anyone who has done drag-n-drop tutorials what the response is. Especially if they have done both drag-n-drop and gml. The only one I can think of off the top of my head is Slyddar and of course YoYo games themselves. It would seem comparing YoYo's series, that the GML tutorials are more popular than the drag-n-drop tutorials most of the time (but not always).

Edit: as a side note, I just went and watched on of Slyddar's videos because I was interested in seeing what more advanced drag-n-drop looks like. Two things stuck out to me. 1) Once it gets complicated, it really seems way more complicated than the equivalent GML would be (mostly?) 2) It actually has a really nice way of presenting fundamental concepts of coding. Things like variable assignment, for loops, switch statements, if statements are all much easier to understand in isolation than their code counterparts. In part for the same reason that it becomes more difficult to understand when things get larger - that is that everything is much, much more explicit (and therefore takes up more space). For example, variable assignment isn't name = value it is a giant box which says variable assignment with two additional lines to name the variable and set its value. If I ever completely redo the coding fundamentals in GML series I'll probably illustrate examples both in GML and DND.
 
Last edited:

samspade

Member
YES I feel like all of the tutorials tell me what to do but not how it works and how to adapt it.
This is a common problem, but not one with an obvious solution sometimes. If you ever find a tutorial you think does a good job of this, I'd be interested to know what it looks like from your perspective.
 

FrostyCat

Member
I second this at least in part. I think there are already a lot of good tutorials on some off the more basic math subjects highly relevant to game programming out there. For example, this channel, Coding Math, covers a lot of really useful skills that are almost completely transferrable to GM. And Hobby Tutor just put out some for vectors in GM (I was actually working towards doing my own vector tutorial, as I wanted to use them in an upcoming series, but like you would be happy to link to an existing one if it covered the same things).
I saw some of the Hobby Tutor videos, and they seemed more like generic math slideshows than "for vectors in GM". Quite frankly I'd have it in text-and-pictures form.

Also, given the number of distinct items to learn for basic GML and vector math, I think units 1 and 2 might be overpacked with content, it's just that the label makes it look small. Say, maybe spreading it out through 3 or 4 units would allow more time for the skills to settle?

One of the issues I find with novices who keep saying "I don't know how it works" isn't that the tutorial's author didn't explain it. For example, the right-minus-left line is clearly explained in Spalding's video where it comes from. The problem is that they have no practice in dealing with control structures or evaluating expressions in basic GML, yet the plagiarized products give a false sense of competency. If they were made to practice this before doing large multi-part "how to make X" tutorials, they could explain it themselves.
On another note, one thing this curriculum doesn't have, perhaps by design, is any reference to drag-n-drop. I would be interested to know from anyone who has done drag-n-drop tutorials what the response is. Especially if they have done both drag-n-drop and gml. The only one I can think of off the top of my head is Slyddar and of course YoYo games themselves. It would seem comparing YoYo's series, that the GML tutorials are more popular than the drag-n-drop tutorials most of the time (but not always).
I excluded Drag-and-Drop on purpose to not distract learners with two distinct coding systems. I've dealt with "students" who were taught a DnD-then-GML curriculum on the Q&A before, and every one of them sucked hardcore and were visibly lost. This is a teaching pattern known to produce poor outcomes.

There's room for better onboarding with Drag-and-Drop, but I don't plan on doing it with this initiative.
 

samspade

Member
One of the issues I find with novices who keep saying "I don't know how it works" isn't that the tutorial's author didn't explain it. For example, the right-minus-left line is clearly explained in Spalding's video where it comes from. The problem is that they have no practice in dealing with control structures or evaluating expressions in basic GML, yet the plagiarized products give a false sense of competency. If they were made to practice this before doing large multi-part "how to make X" tutorials, they could explain it themselves.
I mostly agree with this. It's true that most tutorials explain what they are doing, and often why, at least once. However, a single explanation often isn't enough. Most people in most subjects that they don't have a great deal of familiarity with, myself included, need to have something explained several times and in different ways coupled with hands on experience (this is a large part of why traditional education has a course book and in person instruction along with homework and generally has some form of tutoring or office hours available as well). Some of this lack can be made up for by the learner, but it is definitely a harder task. Some of it could also be made up for by better teaching, but most tutorial makers (myself included) don't have a formal background in teaching and even if someone did, online teaching is something different entirely. (this is why in both the github and json tutorials I've started adding a how to follow along slide and I'd also be interested at some point in creating suggested exercises for the gml fundamentals course).

I think that one of the great ways to supplement existing tutorials (suggested in your original posts) could be suggestions for expanding upon the project or using the ideas in the tutorial for a related thing. Github particularly has the ability to build in 'tests' or 'exercises' for those who want them in the form of a downloaded projects where you would have to complete functions etc to pass automated tests. Or games, demos, etc that could be modified.
 

Yal

🐧 *penguin noises*
GMC Elder
I wholeheartedly support this initiative! The number of times I've seen someone post what looks like a verbatim Shaun Spalding or Heartbeast code snippet with absolutely no idea what it does is somewhere between "terrifying" and "disillusionary", and some of the more proudly thinking-averse newbies seem to think that the only way to solve a problem is with The One Tailor-Made Solution (TM), downright refusing to try breaking their problem down into smaller parts that they know how to make and expecting the result on a silver platter. (I'm glad to see that lesson 2 seems to encompass exactly this idea, by the way)


Also, one thing that struck me as odd starting up GMS2 is that there's a lot fewer demos and of a much lesser genre spread than I remember there being originally - I get that the old Asteroids demo that used Kirby 64 boss music is outdated, but this selection of official tutorial projects just strikes me as weird... having a step-by-step (with clearly labelled lesson numbers!) "how to use game maker" series of tutorials to ease new users into the program would make a lot more sense than a number of highly specific projects. The GMS1 --> GMS2 transition is pretty fresh in my mind, and I remember looking for some sort of "start here" guide in this section and giving up when there wasn't one. Having used GM for over a decade, I got used to 2 quickly enough, but I'm not sure I want to know how confusing it'd be for someone with absolutely no frame of reference.

1599680303788.png
 

Toque

Member
I was always puzzled that they didnt have a course. It would be a great resource to help promote the education market.

Hopefully it would be approachable for younger or new to code users.

Really looking forward to seeing some lessons.
Great job.
 

gnysek

Member
From what I understand, official YYG tutorials are in fact not working with 2.3 (except DND), as HTML included with them have out of date info about scripts? And examples works only because they converts?

It's sad that community needs to fix what they made wrong.
 
As someone that feels like they really know what they're doing in certain areas of GML but is completely clueless in others, I'm fully behind this idea. I know there are things that I should have been doing from the start of my project that'll bite me when I try to implement them later, and, as stated earlier in the thread, it would be nice to have something to:

help fill in the blanks that I didn't even know where there.
I'm mostly self-/manual-taught, and I would definitely use "here's how this function can be applied in various ways" or "here's the best practices for using GML" tutorials. I've learned a lot about more "out of the box" uses of various GML functions here on the forum, and would love to see that solidified into a community-driven curriculum.
 

Kezarus

Member
I would gladly lend a hand to anything necessary wherever I am most useful. As @Rui Rosário said, I could also test and proof read the tutorials too.

There are some points that @FrostyCat said in the curriculum that I am interested myself in coursing. Like Lightining and UI. =]
 
I like this proposal. While I am new to GMS and game development, I come from business app development and do have some teaching experience. I am willing to help in whatever way I can to this endeavor.
 

samspade

Member
It would be great if more of your tutorial content could be sourced in the curriculum. Don't hesitate to ask me or other members for a review if you're unsure.
Taking you (or others) up on the offer, for anyone who wants to offer feedback, I'm starting into the tutorials on functions, methods, and structs. I've finished the first video on writing functions, but before posting it to YouTube, where I won't be able to edit it, I've posted it to this google drive folder here: https://drive.google.com/drive/folders/1NJPBklu2m9M_ZNuVn81g_TEaZS2LwIvb. Feel free to offer comments on it which I will try to incorporate (in in this or future videos). You can see a lot of the other slides as well, some of which are more done and some of which are works in progress. The goal of this tutorial is to talk about writing functions in general. The next tutorial on writing script functions will cover writing named functions in script assets, and then there will also be tutorials on script assets, methods, annoymous functions, methods versus script functions and a couple other things as well.

If no one minds, I can post here when I add new videos to this folder, and I'll try to add new videos for review if people are interested at least a few days in advance (this video would go up Monday or Wednesday of next week, I haven't decided yet).
 

Sybok

Member
'Curriculum' sounds to much like 'homework' to me. Makes me glaze over just thinking about it! 😆
 
I'd like to volunteer my services as a guinea pig. If you can teach me game development, you can teach anyone game development. I guarantee it. I've been using GM for ~15 years and I'm still struggling to make very simple games. 😭
 

otterZ

Member
I think this is a great idea! I've even bookmarked your suggested learning structure so that I can look into each of these areas or existing tutorials, even if it doesn't get completed.

I have been bouncing around between tutorials on YouTube, to the GM official instruction manual then to Google searches and back again. It would be great to have a structured curriculum of learning.

Quite often I miss something fundamental that I could have learnt about sooner if I had had a laid out plan to learning GML.

I have one suggestion for Unit 1 . . . and that would be the 'Fundamentals of Good Programming and Practices', which would teach how to comment code, how to code succinctly, how to approach your first GM project etc. I have seen some helpful posts on GM that you have already written on this subject that could be linked to from the curriculum. So in a way the work has already been done if this unit was included.

I am too inexperienced in GML at present to help with content, but I can give constructive feedback about my experience going through each unit.

Once again, a fantastic idea.
 

Coded Games

Member
I haven’t read all the suggestions but having one about the applications of trig in GM might be really useful.

lengthdir_x/y is easily one of my most use functions and I feel like it took way to long to figure out how to use it.
 

Rob

Member
I've read the whole thread and I'm still not sure on one thing - are these going to be videos, written tutorials, both, or either/or? I've mainly watched videos to learn but I've used some written tutorials as well, especially when it's just to "grasp" an idea - they weren't even GameMaker specific - and I know some people prefer video and some prefer written tutorials so maybe "both" would be the optimal path?

I'd like to help with some of the content and I definitely feel like there should be some kind of cohesiveness or flow between tutorials. If somebody was to go through each tutorial one by one, you'd want them to feel at least some familiarity from one tutorial to the next.

There's a wealth of knowledge on these forums but packaging it into easily-digestible forms is the hard part I think.
 

FrostyCat

Member
I've read the whole thread and I'm still not sure on one thing - are these going to be videos, written tutorials, both, or either/or? I've mainly watched videos to learn but I've used some written tutorials as well, especially when it's just to "grasp" an idea - they weren't even GameMaker specific - and I know some people prefer video and some prefer written tutorials so maybe "both" would be the optimal path?

I'd like to help with some of the content and I definitely feel like there should be some kind of cohesiveness or flow between tutorials. If somebody was to go through each tutorial one by one, you'd want them to feel at least some familiarity from one tutorial to the next.

There's a wealth of knowledge on these forums but packaging it into easily-digestible forms is the hard part I think.
The tutorials will be in both written and video form as they arise. The idea is to string together hand-picked / newly written tutorials of all forms in a cohesive learning order, make them GMS 2.3-compatible from the get-go or with errata, and attach independent exercises to all of them. In order to reduce the amount of new work, existing tutorials will be sourced as long as it's recent and correct enough and it fits in the flow. With 95% of tutorial content now GMS 2.3-incompatible to various degrees, we don't have the luxury of choice in the current environment.
 

samspade

Member
Just checking in on this idea. I think its a great one and wouldn't want it to not going anywhere. Also, as I finish up several tutorial series, I'm thinking about what to do next. Sort of. I have ideas that would last me for six months or longer probably but need to choose which ones to prioritize. Or perhaps depriotize as it might make sense in some cases to due video tutorials after the written tutorials are done so that they could refer to those written tutorials (e.g. for follow up individual practice).

And thinking about individual practice, which is something that is really missing from YouTube tutorials (really all tutorials unless they're through something like Udemy which supports it), I've been getting back into things like leetcode and hackerrank. I'd be curious if there is a way to do something like that (not as extensive obviously but at least some of the basic problems) natively in GML online (i.e. no downloading a GM project).
 
Top