New to GM: looking for tutorial for turn based resource management game.

Hello πŸ™‹β€β™‚οΈ I'm Benjamin, normally board-game designer, with an online game idea that's been obsessing me since my teenage years and which I decided to work on. I've heard GM has a strong community and hope to find support here. I'm working as a Chief Data Officer, and so I'm familiar with data architecture and a bunch of programming codes, mostly database and ETL management, but also basic in Python and Javascript.

Anyways, I just downloaded GM and haven't even started yet. I've seen few titles to tutorials that are mostly for platform games, with lots of movement and action. In my case though, I would like to focus on learning what I need to get right into the material of what I want to achieve.

I want to build a turn-based game with resource management and player interaction with some simulated "populations". Graphic-wise it's pretty minimal, in fact I don't care about graphics for the MVP and want to work on the simulation engine and order execution. So what I want to start with is some data tables representing said "population", fill them with attributes, and schedule-run some engine that will modify that population over time.

The most basic example I can provide is:
  • Creating 1 city and give it a name.
  • Creating 1 population in that city and give it a size.
  • Running a scheduled workflow on the back-end that will increase the population by 100.1 % every hour / turn.
  • Display said data on the screen.
  • Sit back with popcorn and watch the population grow every hour πŸΏπŸ€“
So TL;DR: what's a good tutorial to get started with turn-based, resource management games with scheduled workflows running on the back-end?
 

TsukaYuriko

🌠
Forum Staff
Moderator
Welcome to the GMC! :)

The best advice I can give you when you're starting out is: Don't try to make a game. As in, don't let that be the intention of whatever you do at the start. Take some time to get familiar with the IDE, the language, and the workflow that chains both of them together. Skipping this step may result in the majority of problems relating to unfamiliarity with the IDE and language themselves rather than the game's logic.

Your experience with other languages will undoubtedly be helpful in one way or another here, but take some time to familiarize yourself with the basic concepts such as events, the different resource types, the difference between objects and instances, variables and variable scope... as these are the major differences between GML and other languages. Such highly specific tutorials as the one you described in the opening post won't teach you these. Once you've understood and mastered these basic principles, you likely won't need such a tutorial anymore, anyway, as you'll be able to use the knowledge you've gained to just make whatever you can think of without having to look for a tutorial in the first place.
 

HayManMarc

Member
I agree with Tsuka. With what you said about your programming background, I think you will pick up GML pretty quickly. However, I don't think it would hurt you to just run through the Game Maker Space Rocks tutorial and make the Asteroids clone, after you've perused the language and workflow in the manual. Sure, it might be a silly novice game, but it will give you hands-on experience using the language at the very basic level. After that, you'd be in a much better position to assess your abilities to engage your resource management project.

Good luck, and welcome to the GMC!
 

samspade

Member
Hello πŸ™‹β€β™‚οΈ I'm Benjamin, normally board-game designer, with an online game idea that's been obsessing me since my teenage years and which I decided to work on. I've heard GM has a strong community and hope to find support here. I'm working as a Chief Data Officer, and so I'm familiar with data architecture and a bunch of programming codes, mostly database and ETL management, but also basic in Python and Javascript.

Anyways, I just downloaded GM and haven't even started yet. I've seen few titles to tutorials that are mostly for platform games, with lots of movement and action. In my case though, I would like to focus on learning what I need to get right into the material of what I want to achieve.

I want to build a turn-based game with resource management and player interaction with some simulated "populations". Graphic-wise it's pretty minimal, in fact I don't care about graphics for the MVP and want to work on the simulation engine and order execution. So what I want to start with is some data tables representing said "population", fill them with attributes, and schedule-run some engine that will modify that population over time.

The most basic example I can provide is:
  • Creating 1 city and give it a name.
  • Creating 1 population in that city and give it a size.
  • Running a scheduled workflow on the back-end that will increase the population by 100.1 % every hour / turn.
  • Display said data on the screen.
  • Sit back with popcorn and watch the population grow every hour πŸΏπŸ€“
So TL;DR: what's a good tutorial to get started with turn-based, resource management games with scheduled workflows running on the back-end?
There's not a lot on this particular issue but if you're familiar with programming then I also agree with TsukaYuriko. Learning the basics of the interface in GMS 2 is going to be the best place to start so you can translate what you do know. That said, this is the closest I can think of:


Also, it may be worth learning about the basics of how most people create larger data structures:


You can also use the JSON structure in GMS 2 which may be what you want it you are going to save and load a bunch of things.
 

chamaeleon

Member
All the above is good information. I'll just pitch, really focus on the Event model, Objects, and Instances, and Rooms.
Code:
for each event type (some events are defined to happen in certain orders, some are not, try to not make assumptions for those)
   for each instance (in unspecified order, except drawing events where depth and layers can fix the ordering)
      execute event implemented by the instance's object (or if not implement in that object, the event of a parent)
If something is displayed on the screen, it is because it is the exact representation of an instance (its sprite being displayed at the position of the instance), or because an instance is drawing (at arbitrary coordinates) sprites or text or using drawing primitives or GPU calls, and an object has been created for the purpose. Not everything need to be displayed though (if no sprite is assigned, it won't show up, and you won't be able to interact with it by user input like mouse or touch, but it will still execute event code), it just has to exist in the room, which is typical for objects implementing state or data management.
 
Top