OFFICIAL Little Town - GameMaker Studio 2 Tutorial

rmanthorp

GameMaker Staff
Admin
GameMaker Dev.
https://www.yoyogames.com/en/blog/little-town-gamemaker-tutorial

Welcome to Little Town - a major new full game tutorial for GameMaker Studio 2. The following tutorial provides an introduction to the principles of game development using GameMaker.


Developed in collaboration with award-winning game developer and university lecturer, Benjamin Rivers, Little Town has been designed to help new game designers quickly learn the core functionality of GameMaker Studio 2 in a natural, fun way. Little Town is an adventure game in which players control a child in an idyllic small town. By following clues, players must find the right items and bring them to one of the town’s three characters - the Baker, Teacher and Grocer.
The tutorial enables students, hobbyists and new game designers to create their own layout for Little Town and use code to bring it and its people to life. Users will also be able to choose where to hide each item, as well as writing their own hints and dialogue. With over eight hours of video tutorials as well as a wealth of supporting materials. The Little Town tutorial teaches many core skills from creating vibrant animations using GameMaker’s powerful Sequences tool to controlling sprites, sounds and laying-out the playing area - providing the perfect introduction to GameMaker Studio 2 and the fundamental principles of game design. The Education Materials version of the tutorial provides a robust framework for educators with teaching guidelines and assessment criteria with which colleges and universities can effectively start teaching game design to their students.


TUTORIAL LINKS
Contains: 6 Session tutorial video series - Tutorial outline document - Game Assets - Full Project files
Contains: 6 Session tutorial video series - Assessment Guide - Instructor Guide - Game Assets - Full Project files
 
Last edited:
At a glance, this looks fantastic! When I'm finished with CS50 I'll complete this tutorial to familiarize myself with GMS2. Between the two, I hope to have a proper foundation to build games. I've been flailing around in the dark for 18 years now. It's about time I learn how to do it proper.
 
Last edited:

FrostyCat

Redemption Seeker
Unfortunately, at a first glance this looks like more of the same "Make XYZ Game" fare. It does not appear to be the kind of material that can fulfill gaps in educational outcomes left behind by tutorials on the Learn page. Instead it looks like a massive duplication of effort that has gone into Space Bubbles.

Yes, they'll have a visible product in the end, they'll learn the basics of the IDE and sequence editor, and they'll feel good about getting started. But I can tell from my experience on the Q&A how far that kind of feel-good bootstrapping lasts. 9 times out of 10, they've only learned to copy a specific setup, and they don't realize that until at least half a year down the line. They will find that they can't even write a proper for loop or scope a variable right.

Even worse, there are several examples of code smells in there that I don't agree with teaching to novices, and that's not counting personal tastes like indentation styles. Here are some examples:
  • Yin-Yang if blocks (page 32 if (vx == 0 && vy == 0) and if (vx != 0 || vy != 0) / page 83 if nearbyNPC and if !nearbyNPC )
  • Comparing to true and false (page 98 hasGreeted == false and hasGreeted == true)
  • Contaminated instance scope (page 134 iii = instance_create_depth(_x,_y,-10000,obj_prompt); with no var)
The first two points are in places where I think they can send mixed messages and ingrain seriously defective habits early.

At the end of the day, I just want to see more recognition of the genuine need for specific education on basic syntax, cold logic and technique-specific practice, rather than just project-/genre-centric material. The alternative to that is more spineless rookies who can't do anything without someone else holding their hand from start to finish. A good next step would be to work with samspade to compile a cleaned-up version of his Learning to Code in GMS 2 series, and compile a new officially linked playlist free of 2.3-inappropriate material.

I hope to see better educational outcomes, but the current content just doesn't leave much room for me to feel optimistic about that.
 

ATY@Y@

Member
Little Town is quite different to Space Bubbles. Space Bubbles was designed by a secondary school teacher to meet the curriculum requirements required by secondary schools for teaching students aged 12-14 using drag & drop. Little Town is aimed at students at college or university, designed by a university lecturer in game design around the courseware they use to get students started in learning game design using GML.
 
Unfortunately, at a first glance this looks like more of the same "Make XYZ Game" fare. It does not appear to be the kind of material that can fulfill gaps in educational outcomes left behind by tutorials on the Learn page. Instead it looks like a massive duplication of effort that has gone into Space Bubbles.

Yes, they'll have a visible product in the end, they'll learn the basics of the IDE and sequence editor, and they'll feel good about getting started. But I can tell from my experience on the Q&A how far that kind of feel-good bootstrapping lasts. 9 times out of 10, they've only learned to copy a specific setup, and they don't realize that until at least half a year down the line. They will find that they can't even write a proper for loop or scope a variable right.

Even worse, there are several examples of code smells in there that I don't agree with teaching to novices, and that's not counting personal tastes like indentation styles. Here are some examples:
  • Yin-Yang if blocks (page 32 if (vx == 0 && vy == 0) and if (vx != 0 || vy != 0) / page 83 if nearbyNPC and if !nearbyNPC )
  • Comparing to true and false (page 98 hasGreeted == false and hasGreeted == true)
  • Contaminated instance scope (page 134 iii = instance_create_depth(_x,_y,-10000,obj_prompt); with no var)
The first two points are in places where I think they can send mixed messages and ingrain seriously defective habits early.

At the end of the day, I just want to see more recognition of the genuine need for specific education on basic syntax, cold logic and technique-specific practice, rather than just project-/genre-centric material. The alternative to that is more spineless rookies who can't do anything without someone else holding their hand from start to finish. A good next step would be to work with samspade to compile a cleaned-up version of his Learning to Code in GMS 2 series, and compile a new officially linked playlist free of 2.3-inappropriate material.

I hope to see better educational outcomes, but the current content just doesn't leave much room for me to feel optimistic about that.
I do not understand why you say it is not good, I spent this morning reading the PDF and i find it extremely beautifully written and explanatory.
even your example for bad code i find it extremely useful instead of "short code" for a beginner.
It is something i will use as teaching aid.
 

samspade

Member
Unfortunately, at a first glance this looks like more of the same "Make XYZ Game" fare. It does not appear to be the kind of material that can fulfill gaps in educational outcomes left behind by tutorials on the Learn page. Instead it looks like a massive duplication of effort that has gone into Space Bubbles.

Yes, they'll have a visible product in the end, they'll learn the basics of the IDE and sequence editor, and they'll feel good about getting started. But I can tell from my experience on the Q&A how far that kind of feel-good bootstrapping lasts. 9 times out of 10, they've only learned to copy a specific setup, and they don't realize that until at least half a year down the line. They will find that they can't even write a proper for loop or scope a variable right.

Even worse, there are several examples of code smells in there that I don't agree with teaching to novices, and that's not counting personal tastes like indentation styles. Here are some examples:
  • Yin-Yang if blocks (page 32 if (vx == 0 && vy == 0) and if (vx != 0 || vy != 0) / page 83 if nearbyNPC and if !nearbyNPC )
  • Comparing to true and false (page 98 hasGreeted == false and hasGreeted == true)
  • Contaminated instance scope (page 134 iii = instance_create_depth(_x,_y,-10000,obj_prompt); with no var)
The first two points are in places where I think they can send mixed messages and ingrain seriously defective habits early.

At the end of the day, I just want to see more recognition of the genuine need for specific education on basic syntax, cold logic and technique-specific practice, rather than just project-/genre-centric material. The alternative to that is more spineless rookies who can't do anything without someone else holding their hand from start to finish. A good next step would be to work with samspade to compile a cleaned-up version of his Learning to Code in GMS 2 series, and compile a new officially linked playlist free of 2.3-inappropriate material.

I hope to see better educational outcomes, but the current content just doesn't leave much room for me to feel optimistic about that.
I think that there are definitely major gaps in the series and that for an introductory series into GameMaker, this is maybe the best GameMaker has ever had. It's well paced, accessible, covers topics in a reasonable and helpful order, and looks nice. And for most people the core reason they use GameMaker is to make games—so an introductory tutorial should focus on that.

As others have pointed out, it is also intended at least in part to be used with an instructor in a classroom setting, so it wouldn't be the only programming information the person is learning. In fact, if this were used in college there would be a decent chance they are taking a pure programming class along side this.

That said, I also agree that for the true hobbyist, the person starting from scratch and learning on their own, this is not enough. It was definitely not for me when I started (although this is higher quality than what I had). What I would love to see in addition to this is 1) something that focuses more on coding fundamentals and 2) a tutorial aimed at intermediate to advanced users. One that doesn't need to cover things like what a variable, what an object is, how to make a function, etc. and can just use those things to talk about more advanced concepts. These are the things I really needed after finishing my first introductory "Let's Make a Game" style tutorial and had to go outside of GameMaker community to find (primarily to Daniel Shiffman's The Coding Train YouTube Channel, but also to Udemy). Not everyone is willing to do that and might quit instead, and some of those that are might not return.

(And while I have done a coding fundamentals series (and intend to redo it in a year or so know that I have a better grasp on what I'm doing) I think it would be great if an actual professor, someone with more knowledge of coding and teaching coding, in communication with YoYo directly did this. Even if YoYo did both of the above, there would still be plenty of things to make tutorials on.)
 
Last edited:

Evanski

Raccoon Lord
Forum Staff
Moderator
As much as I like to see new tutorials I think the amount of "How to make X game with game maker" is starting to get stale and not as helpful

Sure it teaches basics, But it doesn't teach ideas, or multiple solutions to a problem.
You're not teaching what you can do with game maker,
You're teaching how you can do X with game maker

If I ever wanted to learn AI or movement, I'd only know from the tutorials I've watched, I wouldn't know from learning myself or from how to go about doing it myself
But if i ever wanted to know how to make a clone of an adventure/shooter game, I'm covered.
 
Last edited:

samspade

Member
I'm sure YoYo didn't make this announcement to seek suggestions for follow ups, but the more I think about this, the more I have them :).

I think a great follow up to this series would be a counterpart series done by the same person, in the same form, using the same project which covers coding concepts used in the little town series in greater depth. I haven't watched through the whole series yet (I'm a little over halfway) but in general it seems like they could make videos on the following topics and easily tie them back to the main series:
  • Variables
  • Data Types
  • Boolean Logic
  • If Statements
  • Switch Statements
  • Operators
  • Loops
  • Arrays
  • Runtime functions
  • Custom functions
  • Enums
And probably a few more. They don't even need to be deep dives, just more structured explanations of the coding concepts themselves as coding concepts, that the user can apply in a broader and more general way.

Each of these videos could reference the video in the little town series where they are first used and YoYo could even go back through the little town videos and add cards linking to these new coding videos. They would be a great aid to teachers and to the hobbyist who is learning entirely unsupported on their own.
 

Pzaan

Member
I've been reading through the written doc for the tutorial and want to say thank you and congratulations to the GameMaker crew. The tutorial is polished and does a good job piquing your interest in making the game. I hope that this becomes part of a larger family of content, since GameMaker has far more capability (and complexity). But for now, this is a great addition to excite and instruct the community.
 
The alternative to that is more spineless rookies who can't do anything without someone else holding their hand from start to finish.
..is this what we call them now? "Spineless rookies" 🙄


GameMaker was created with the intention of people with little to no coding ability to get in, and learn and create games. One of my favorite GM developer is Poetkathi; a grandma who somehow puts together little games in her spare time for her grandkids.

It's incredibly disappointing to get people negatively type-casted for lack of coding ability, I'm happy to call it out for what it is. It's the complete antithesis of GM's original spirit, and the spirit this forum use to have.
Bad Cat, Frosty. Bad Cat. 👺

There's a general principle in life; Don't punch down; If you have to punch, punch up. If there's a frustration with YYG's decision making in the education decision, and concerns with the general outcome of their decisions is negatively affecting the learning of their new users, then I'd encourage you to keep your critique (or insults) directed towards YYG's.

If it's a frustration with Project Based learning as a whole, well.. PBL is pretty much a standard in Game Design Education. Even programming (education) has a heavy focus on projects. You'll be swimming against the tide if you advocate an educational series which is "not" project based. Might be great for learning programming.. but then if you wanted to learn programming, GM is kind of the worst place to start. (The programming is merely incidental in GM.. a means to the end, rather than the end itself).

Nice coding critique, btw.

Tutorial looks awesome. Love the art style. ❤ Is Benjamin a GMC member?
 

FrostyCat

Redemption Seeker
..is this what we call them now? "Spineless rookies" 🙄
If what they "learned" cannot enable independent work and some semblance of professional judgement, then that's what I'll keep calling them.

It takes spine to do your own work and call your own shots.
 

jonjons

Member
Something that itches my delicate sensitive virginity in the prefaces of precocity on game gebytle... Is we never see a tutorial ( or game ) that uses the GM built in variables... Its mostly the ussual costum made variables hsp / vps that go back moving the built in variables x and y... GM has built in variables for everything hspeed, speed, gravity, accelaration, direction, move, motion..etc.. that already do everything, ( it must be a problem in the manual search option we dont see them often )... The one thing that needs to be made from scratch using costum variables is a costum animator...
 
Something that itches my delicate sensitive virginity in the prefaces of precocity on game gebytle... Is we never see a tutorial ( or game ) that uses the GM built in variables... Its mostly the ussual costum made variables hsp / vps that go back moving the built in variables x and y... GM has built in variables for everything hspeed, speed, gravity, accelaration, direction, move, motion..etc.. that already do everything, ( it must be a problem in the manual search option we dont see them often )... The one thing that needs to be made from scratch using costum variables is a costum animator...
This is primarily because GM's in-built variables take some control away from you as a programmer and tend to lead to problems down the line. I wish they would actually just remove them; too many people think of them as doing some "black magic" behind the scenes that is somehow different from what is achieved with coder-created variables. It's just numbers all the way down. But I think that's a pipe-dream, unfortunately...
 

FrostyCat

Redemption Seeker
Something that itches my delicate sensitive virginity in the prefaces of precocity on game gebytle... Is we never see a tutorial ( or game ) that uses the GM built in variables... Its mostly the ussual costum made variables hsp / vps that go back moving the built in variables x and y... GM has built in variables for everything hspeed, speed, gravity, accelaration, direction, move, motion..etc.. that already do everything, ( it must be a problem in the manual search option we dont see them often )... The one thing that needs to be made from scratch using costum variables is a costum animator...
The custom speeds came into fashion around the legacy GM6 timeframe, when full-featured platformer tutorials started appearing. The custom speed variables, the integer-pixel collision algorithm and other more advanced behaviours became mainstream at that time. Before then, the platformer tutorial by Mark Overmars used solid for block collisions, the built-in speeds for the vertical component of movement, and the keyboard events for horizontal movement.

This is primarily because GM's in-built variables take some control away from you as a programmer and tend to lead to problems down the line. I wish they would actually just remove them; too many people think of them as doing some "black magic" behind the scenes that is somehow different from what is achieved with coder-created variables. It's just numbers all the way down. But I think that's a pipe-dream, unfortunately...
I too wish they'd remove the novice-geared elements that are no longer best practices and have no real community support anymore, but we missed the shot for that at the GMS 2 timeframe. YoYo resisted delisting score, lives and health from built-in global variables (source), they're sure to resist removing something as integrated as the built-in movement (which has a page full of features linking to it). They do a lot of counterproductive favours that novices don't really need in the long run.

Removing is also the wrong term, in my opinion. Both the built-in scores and the built-in movement can be remediated using compatibility scripts if they exist in legacy projects, and they won't be taught anymore going forward. Maybe in the GMS 3 timeframe we should bring it up again.
 

Cpaz

Member
If what they "learned" cannot enable independent work and some semblance of professional judgement, then that's what I'll keep calling them.

It takes spine to do your own work and call your own shots.
I was agreeing with you up until this. This is absolutely not constructive in the slightest and potentially harmful language towards new developers.

I will say, nitty-gritty aside, I think we just don't make it clear what's supposed to be taken away from tutorials like this. Even as @FrostyCat has mentioned, you can have a working product, but not be entirely sure of what's been learned.
Just to take from the abstract of the tutorial:
" The tutorial enables students, hobbyists, and new game designers to create their own layout for Little Town and use code to bring it and its people to life. "
This is very non-specific for code concepts. More emphasis should be made to clarify what concepts are being applied so they can be applied elsewhere.

To be more general, the weakest part of these tutorials is always the actual code sections. It always seems a bit glossed over. This tutorial seems to be an improvement, teaching enums and states together is pretty smart, for example. But then you have the teacher copy-pasting some pretty unorganized code that a newcomer will have trouble following.

Seems like a fun tutorial for, say, an elementary class setting, at least.
 

Toque

Member
I always thought GM was primarily used to make games. Coding was just a part of that to get to the goal of making a game. I always thought it impossible to make tutorials. You have kids, seniors, professionals, university students, jammers. Etc ………. How impossible to fit tutorials to work for everyone. A variety of skill levels and styles is always welcome. Thanks for more of these tutorials.
 

Roldy

Member
I think the tutorials are fine. Anyone expecting CS instruction from GMS2 tutorials is simply looking in the wrong place. And anyone advocating snobbery or elitism when it comes to programming should keep it to themselves. Save it for your own project and teams.

The tutorial methodology is sound. Back in the day (1983) I was largely introduced to programming by having to manual type in the code for programs. We had a C64 and about 30 boxes of printed out basic programs; everything from zork, planetfall, loderunner, choplifter, marble madness etc.. (Surprisingly text based games like zork are not ruined when you have to manually type it all in).

You might be surprised how much a person will learn through osmosis of simply typing in code they have no real clue about; and then learning way more trying to debug their typos or bugs that where in the original source code.

Any small bugs and coding deficiencies in the tutorials can be just as valuable to learning as anything else; if nothing else to demonstrate this isn't rocket science, nobody is perfect, and making mistakes and working barebones is part of the process. Don't be afraid to jump in and make mistakes and be an amateur . If small deficiencies in a tutorial is enough to push someone away form learning programming, then they were never going to learn anyway. But being overly formal will surely push plenty of people away that simply needed an introduction on how to make things work and getting familiar with the process and tools.

A tutorial is best by example and to expose people to the process and base concepts. These tutorials seem fine and most likely effective, and targeted to an appropriate audience. An audience more suited to engineering focused tutorials DOES NOT NEED a tutorial.
 
Last edited:
This is primarily because GM's in-built variables take some control away from you as a programmer and tend to lead to problems down the line. I wish they would actually just remove them; too many people think of them as doing some "black magic" behind the scenes that is somehow different from what is achieved with coder-created variables. It's just numbers all the way down. But I think that's a pipe-dream, unfortunately...
For now, we'll ignoring DnD (which is the primary reason for the built-in speed/direction functions);

I like the built in variables. A few people create custom movement/collisions when they need more feature complete engines.. which is great. But most people don't really need anywhere close to this level of control. They just need to throw a few objects on the screen, add some movements, and animations, and tie a few events to them. People really forget how powerful a lot of the built in features are; Way too addicted to re-building everything with pixel perfect movement.
E.g. with Paths (which use the built in speed/direction if I recall); you can create relatively sophisticated Tower Defence, Racing games, Schmup's etc.. with very few lines of code. And something we all learn once we've been writing code for a little while is that few lines of code is usually a sign of good code!

Particles are also a great example of something that uses built-in speed/direction, and work great.
 

Jabbers

Member
I think the tutorials are fine. Anyone expecting CS instruction from GMS2 tutorials is simply looking in the wrong place.
Hear, hear! When I was a kid, what got me into GameMaker were the editable examples. The Blue Lady and Legend of Mana really inspired a 10-year-old Jabbers. I know that I would have loved this Little Town tutorial, having been a massive fan of The Sims Bustin' Out on GBA.

Many of the people coming to GameMaker and trying these tutorials are just here to design and have fun. This is more crucial to building a long-term interest in game development than perfecting GML coding practices. After all, GML is made to be forgiving to novice creators. They'll find their way if they have fun. I know I did.
 

gnysek

Member
Hear, hear! When I was a kid, what got me into GameMaker were the editable examples.
Wait, I missed that those games were editable? I remember some of them were made for some kind of contest on Utrecht University, where Mark Overmars was working and definietly I played .exe versions of those from his website, but I remember only those traditional tutorials (Catch the Clown, 1945, Maze, Platformer, fake 3D, Doom).

That makes my evening today filled with discovering those games again :) I will try to convert them to GMS2, some of them might work (the less DND was used the better).
 

Miradur

Member
The new tutorial is great, would love more of it. But not only for beginners, but please also for advanced users.
In my opinion, 60-70% want to make games and not become top programmers. That's why I still think that GameMaker needs to be more helpful.
That's why I think it's a pity that the layer system will not be continued. Here's what I would like to see:

A collision layer, for tiles and images, black stands for collision and alpha or white, for none. Support for precise recognition.

A light layer, on which special objects can be positioned as lights, gladly with display of the light in real time.

A particle layer, on which you can see the set effects also in real time (values changeable in the new inspector window).

Then I would finally like to have 10-20 predefined standard shaders that can be easily integrated via a single command (also adjustable via the inspector window).

Professionals can still program everything, but for beginners and advanced users it would be incredibly useful to use the full potential of GameMaker.
Last but not least, I would like to see important tutorials in several languages. GameMaker's documentation is one of the best I've ever seen (in multiple languages). So why not do the same for tutorials?
For German I would like to see 1up Indie, the guy makes really good video tutorials.


Miradur


Edit: parts replaced by tiles
 
Last edited:
Top