Suggestion Non-GML Learning Resources

N

NobleValerian

Guest
Hi,

I'm reaching out to the community to see if anyone has discovered non-GML learning resources for more "advanced" game features. I have done some searching for this on my own through Google and YouTube. The majority of what I have found focuses on very simple, short term sort of game play, but I know the event system is capable of quite a lot that hasn't been demonstrated in tutorials. I'm currently exploring those features using the manual, and it's time consuming. I understand this sort of content is rare, but if you've found something, I'd appreciate a link.

An example of the sort of things demonstrated would go beyond the basics of making objects move and setting up rooms. Much of the content lets you start a game, briefly go through a level, maybe change rooms, and then it ends. You start the game again, and it's like you were never there. I'm interested in things like basic techniques for saving and loading games, setting up arrays or grids, keeping track of and displaying multiple variables across multiple rooms, and making sure that information is available the next time I load the game. The simplest way to set up that core functionality, so I have a starting point to build off of without having to go through a bunch of trial and error to get the basics before I can even build on those basics.

For instance, If I set a variable in an object, and make that object persistent, is that variable now basically a global variable? Is that what I'd do to set and keep track of achievements and user statistics? I haven't had a chance to fully explore stuff like this. Relatively simple, just limited resources on understanding how to implement it well. I understand this could be faster with GML, but GML is not a good fit for what I need right now. The ultimate goal is to create a full, professional quality game - just very small in terms of scope, but feature rich - without GML. Not that I think that's the best way, that's just what I need to be able to do right now.
 

ShaunJS

Just Another Dev
GMC Elder
It's an interesting topic. Especially as someone who's largely only written code tutorials (because it's my point of expertise). There is a lack of good info on the topic out there. I don't have many good resources on the matter to list, but I do have thoughts on the subject.

I've met people who've used only D&D because it was sort of only what they needed. For example, Gary Napper, at the time lead designer on Alien Isolation, often used GM to prototype mechanics, ideas and minigames. As well as create gamejam entries iirc.

He showed me some of his stuff and it was all built with D&D. Very impressive. There definitely is a lot you can do if you're creative enough to wrangle the logic and it can be a great creative exercise. It's also a great way to start understanding game logic. I started making games with a tool known as "Klik n Play" which was entirely drag and drop, event driven logic. The lessons I learned there formed a foundation for me to later learn code with greater ease.

I do personally think you quickly hit a point with GM:S where it will take you much longer to achieve results when you start to want to make fine tweaks or implement complex behaviour, but I don't think I would call it strictly limited (in most senses) rather than often simply less effective. This leads to less use, which leads to less experts in the field, which leads to less community driven content.

But that said I don't think by any means it's good that there's a lack of strong D&D learning content out there. It is an accessible system and you could argue it doesn't require a great deal to get you going (as is often the main point of tutorials), but I think we can do better than some of what's out there. I was very happy that after I started doing videos the quality of other video tutorials for GML rapidly increased to match. Whereas I think for the most part a lot of D&D stuff has not improved.

But with THAT said, it's all a matter of time and resources. If we could we'd have perfect tutorials for everything you can imagine! :)
 

GMWolf

aka fel666
When i think about what video tutorial to make, i often end up with a coding problem.
recently though i have been trying to incorporate non code GM features in my tutorials (like this button does that, or you can do this in the room editor, etc).
I think the main problem for me is that many features dont warant their own videos.
I have made videos on things such as parenting though. but again, i demostrated the effects through code.
 

GMWolf

aka fel666
Why must you use drag and drop?
Its true that DnD looks easier. but yes. I want to tell all DnD users that all there are doing is coding, but with boxes instead of words.
setting a variable? "foo = 5" instead of draggin a box that says set varaible foo to 5
bouncing of an object? "move_bounce_solid(true)".

In the end, many users advanced enough to make learning content find it easier to use code in most instances. though i do use DnD for destroying an object, for example.

I'm interested in things like basic techniques for saving and loading games, setting up arrays or grids, keeping track of and displaying multiple variables across multiple rooms, and making sure that information is available the next time I load the game.
These things can get complex enough when done correctly that setting them up in DnD can take hours, instead of a couple minutes in code.
Some things are (to my knoledge) impossible using DnD, like setting up grids for example.

I guess what im saying is that DnD has become harder for more experienced users. Also that since DnD is just coding with pictures, many people argue it isnt truely easier to use.
Add to that the fact code is better documented and is used by more people... Its only natural we dont see much content for DnD.
 
N

NobleValerian

Guest
Why must you use drag and drop?
I need to demonstrate the most amount of functionality, in as little time as possible, as simply as possible, to an extremely diverse age group with no experience coding or making games.
 

Mike

nobody important
GMC Elder
So... I did want to comment on the other one before, but as you mentioned it went down hill fast and was closed before I woke up!

SO!! I'm a big fan of D&D (although I don't use it), and it's going to play a more important role in the future. A friend of mine Erik Ruth who has been using GameMaker for years is a D&D only boy! A few years back we met with him at GDC and the games he showed me were astounding! I couldn't believe it was done with D&D. Here's a couple of videos of his work - including early works. (I love his Team Fortress one, and I've seen a 2D beat-em-up that's not available that would blow your mind)


The reason I show these are you can see it's perfectly possible to make amazing, fun games with D&D. The issue we've had in the past is extending D&D has been a nightmare, so all "new" features to GML were never added to D&D. We are looking to change this going forward (don't ask, I can't tell you).

D&D is vital for new comers, and not everyone "wants" to progress past it into script. Erik is quite happy D&D-ing and his brain just doesn't work with huge amounts of script. Whenever we have D&D/Script argument, we always use his work as to why it's vital, and whats possible. If you're more a designer that coder, then you might like the look and flow of D&D over scripts - and that's just fine. We hope to extend D&D and add more of the scripting abilities to it, so it'll become even more powerful in the future.
 
N

NobleValerian

Guest
So... I did want to comment on the other one before, but as you mentioned it went down hill fast and was closed before I woke up!

SO!! I'm a big fan of D&D (although I don't use it), and it's going to play a more important role in the future. A friend of mine Erik Ruth who has been using GameMaker for years is a D&D only boy! A few years back we met with him at GDC and the games he showed me were astounding! I couldn't believe it was done with D&D. Here's a couple of videos of his work - including early works. (I love his Team Fortress one, and I've seen a 2D beat-em-up that's not available that would blow your mind)


The reason I show these are you can see it's perfectly possible to make amazing, fun games with D&D. The issue we've had in the past is extending D&D has been a nightmare, so all "new" features to GML were never added to D&D. We are looking to change this going forward (don't ask, I can't tell you).

D&D is vital for new comers, and not everyone "wants" to progress past it into script. Erik is quite happy D&D-ing and his brain just doesn't work with huge amounts of script. Whenever we have D&D/Script argument, we always use his work as to why it's vital, and whats possible. If you're more a designer that coder, then you might like the look and flow of D&D over scripts - and that's just fine. We hope to extend D&D and add more of the scripting abilities to it, so it'll become even more powerful in the future.
Thanks for sharing those videos! I can definitely identify with what you're saying coming from an art/design background. The visualization of the D&D with the event system is a lot easier for me to process than lines and lines of code. I really appreciate the info and examples! Since my project is for people coming into this world for the first time, I want to make the entire process as simple and visual as possible. I can't get them to do a match 3, but it would be nice to do more than click enemies and watch them disappear. I'm still plucking along today with trial and error, trying to make a space invaders sort of concept as cool as possible (tracking lifetime kills, achievements, etc). I dropped a brick breaker concept that was kinda fun, but a little more static and less exciting.
 

FrostyCat

Redemption Seeker
An example of the sort of things demonstrated would go beyond the basics of making objects move and setting up rooms. Much of the content lets you start a game, briefly go through a level, maybe change rooms, and then it ends. You start the game again, and it's like you were never there. I'm interested in things like basic techniques for saving and loading games, setting up arrays or grids, keeping track of and displaying multiple variables across multiple rooms, and making sure that information is available the next time I load the game. The simplest way to set up that core functionality, so I have a starting point to build off of without having to go through a bunch of trial and error to get the basics before I can even build on those basics.
The only GML-free way to do saving and loading is with the Save Game and Load Game actions from main2. As long as you stick to desktop platforms, don't retain saves across builds and don't use dynamic things like data structures, Load Game will give you the exact state from when it was saved.

Setting up arrays is just a matter of tacking an array index after the variable name to set (e.g. myarray[0]), no different from a single-entry variable. Keeping variables across rooms just means using global variables or instance variables in a persistent controller, you already know the gist of it.

For instance, If I set a variable in an object, and make that object persistent, is that variable now basically a global variable? Is that what I'd do to set and keep track of achievements and user statistics? I haven't had a chance to fully explore stuff like this. Relatively simple, just limited resources on understanding how to implement it well. I understand this could be faster with GML, but GML is not a good fit for what I need right now. The ultimate goal is to create a full, professional quality game - just very small in terms of scope, but feature rich - without GML. Not that I think that's the best way, that's just what I need to be able to do right now.
That's one way to do it. Another way to do it is to prepend global. to the variable to set/get (e.g. global.player_name). It works the same way from both D&D and GML.
 

GMWolf

aka fel666
etting up arrays is just a matter of tacking an array index after the variable name
thats really good to know. but somehow i feel like its not very neat, as the text box should contain the variable name. but here you get the array name + the index. This may lead to some confusion if someone is learning arrays that way...
 
N

NobleValerian

Guest
The only GML-free way to do saving and loading is with the Save Game and Load Game actions from main2. As long as you stick to desktop platforms, don't retain saves across builds and don't use dynamic things like data structures, Load Game will give you the exact state from when it was saved.

Setting up arrays is just a matter of tacking an array index after the variable name to set (e.g. myarray[0]), no different from a single-entry variable. Keeping variables across rooms just means using global variables or instance variables in a persistent controller, you already know the gist of it.


That's one way to do it. Another way to do it is to prepend global. to the variable to set/get (e.g. global.player_name). It works the same way from both D&D and GML.
Thanks! A little challenging and time consuming to look through all the extra things I can type into fields when I set values :/
 
M

Me Myself and I

Guest
I need to demonstrate the most amount of functionality, in as little time as possible, as simply as possible, to an extremely diverse age group with no experience coding or making games.
I work in SAAS and do a lot of system training during my day job. If you're working with first timers, you'll want to keep it simple for two reasons: 1) they could get overwhelmed and give up; 2) you'll make them think they can do advanced things before they do any of the basics, which means they could get frustrated and give up.

Furthermore, you're doing them a disservice by teaching them advance functions using DnD -- not only is it more time-consuming and more difficult to plot/plan, but it's also a dead end in terms of their growth. GML may be a proprietary language but it is still a language. It uses the same core concepts as most other languages, meaning it will be easier for them to learn other, non-proprietary languages should they decide to pursue game development as a hobby or career.

The Clown and Scrolling Shooter tutorials should be more than enough to keep a group of first-timers occupied and there's always the DnD Platformer by Sean Spaulding. If you really need something deeper, start poking around on your own and making notes. You can then apply what you've learned to said tutorials as "additional tasks" or "challenges" for your students.

Another option is to take the "Coding Breakout" tutorial and convert it to DnD using the DnD->GML document and then have them make that game.

Failing that, you might want to consider going with Scratch, which is a coding block system. Similar to DnD but better from an educational standpoint in that it teaches coding concepts.
 
Last edited by a moderator:

Mike

nobody important
GMC Elder
I totally disagree. As I said before many designers "think" better in D&D, and many kids also find it much easier to not have a wall of text but friendly icons. On top of that D&D is much easier to pick up, and is great for teaching flow control as it's very visible. D&D still teaches logic, so it's far from a disservice to teach it.

I've also been told the you hit a wall very quickly in Scratch - this from someone that uses it.
 
N

NobleValerian

Guest
I totally disagree. As I said before many designers "think" better in D&D, and many kids also find it much easier to not have a wall of text but friendly icons. On top of that D&D is much easier to pick up, and is great for teaching flow control as it's very visible. D&D still teaches logic, so it's far from a disservice to teach it.

I've also been told the you hit a wall very quickly in Scratch - this from someone that uses it.
Thank you, Mike! I really appreciate that show of support for D&D, especially as it's related to my goals. It was clear to me going through the manual that the D&D features were powerful. It's certainly quite the dance deciding which features I can incorporate with the amount of time I have, but I feel confident I can really get them proud of what they can put together. It helps that I'm creating and providing all the art and audio resources for the project in advance, so I feel I have enough time to really go beyond the sort of tutorials I started with (which I also always chose to make my own resources for).
 

Weird Dragon

Wizard
GMC Elder
Sometimes there seems to be an "either or" discussion, like either you use DnD or you use GML. I have never looked at it that way.
DnD is a great and I think very powerful. When I downloaded my first Game Maker software I started using DnD since that was what I could understand and apply. From that point I could expand the possibilities with GML, still use DnD but put in a piece of code here and there with the "Execute a piece of code" Action and sometimes add a script.

I got hooked on GML and thereby started to learn what programming is about, but that certainly doesn't mean I don't use DnD whenever that suits me best.

At one point I thought: Is it possible to make a level editor with plain DnD? And yes, it is possible because I made one. I made it a sport to make the level editor with 100% DnD. This was many years before GM:S came so I would need to take a fresh look at it today. The most tricky part was saving the levels; you do need to somehow save the levels that you made, so you can play your own levels next time you start the game. That is a part of the game where GML would be convenient. Without GML I could only apply the inbuilt game save DnD Action and that was a challenge to apply for this purpose.
 

Weird Dragon

Wizard
GMC Elder
An array builder for DnD would be pretty awesome. That may be something the GMS design team might want to look into making.
You can already make arrays with the DnD Actions.

Drag the Action called "VAR" into an Event.
Give it a variable name and include this part: [0]
Let us call the variable "my_array", then type

my_array[0] and give it a value
Drag another VAR Action and type the variable name
my_array[1] and give it a value
Continue with the next one my_array[2] and so on.

***

What if you want to create an array that goes from index 0 to index 49?
That would be 50 VAR Actions.
Well, then you can do this:

First you need a variable that is supposed to count from 0 to 49. Call that variable "i" (often the letter "i" is applied as a variable name for counting).
So drag the VAR Action into an event like the Create Event.
Type the variable name: i
Give it the value 0.

Then drag the Action called Repeat, type 50.
Then drag the Action called Start Block.
Then the VAR Action, type as variable name my_array[ i ] . Give it the value 0.
Then another VAR Action, type as variable name i and give it the value 1 and tick Relative.
Then the Action called End Block.

There you go, with DnD you have initialized an array that goes from index 0 to 49.
 
U

Uhfgood

Guest
You can already make arrays with the DnD Actions.

Drag the Action called "VAR" into an Event.
Give it a variable name and include this part: [0]
Let us call the variable "my_array", then type

my_array[0] and give it a value
Drag another VAR Action and type the variable name
my_array[1] and give it a value
Continue with the next one my_array[2] and so on.

***

What if you want to create an array that goes from index 0 to index 49?
That would be 50 VAR Actions.
Well, then you can do this:

First you need a variable that is supposed to count from 0 to 49. Call that variable "i" (often the letter "i" is applied as a variable name for counting).
So drag the VAR Action into an event like the Create Event.
Type the variable name: i
Give it the value 0.

Then drag the Action called Repeat, type 50.
Then drag the Action called Start Block.
Then the VAR Action, type as variable name my_array[ i ] . Give it the value 0.
Then another VAR Action, type as variable name i and give it the value 1 and tick Relative.
Then the Action called End Block.

There you go, with DnD you have initialized an array that goes from index 0 to 49.
That is awesome, I think I just might use that.
 
U

Uhfgood

Guest
I have a reason that most tutorials focus on coding. I was doing one of the GM: Basics tutorials (it's its own kind of breakout style game), and there was some logic with if statements, so I wanted to continue using d&d, and in the end it took more time to drag all the actions into the box than it would be to type a few lines of code. Especially if you want to do really complex nested if statements, it can quickly become unwieldy. It's not that it's impossible, it's that, it takes so much more time and gets more complicated that you are probably better off doing code.
 
Top