During the day, Barry Young works a regular job in the game industry. At night, he becomes Delayed Victory, the developer of upcoming online co-op, Mining Mechs.
We managed to steal some of Barry’s time to ask about his design philosophy, the game that inspired Mining Mechs, and whether he actually has a fondness for mechas or not.
How did your adventure with game development start?
I started by developing when I was about 14 years old, using GameMaker's drag-and-drop features to learn the basics. Those early 'games' weren't great, and since then I've been working on numerous projects on and off during my day job as a developer.
Even though none of them ever released, every project I worked on taught me something new. Mining Mechs is the first fully-fledged game I'm releasing commercially.
What is Mining Mechs?
Mining Mechs was created in about two months of development time.
You've been called in to investigate strange noises coming from underground. You do this the only logical way any human would: by drilling down into the earth using a mining mech.
As you descend, you gather resources that you can sell on the surface to upgrade your mech or buy a new one. Better mechs allow you to dig faster, deeper, and carry more loot.
Additionally, you can construct an underground piping system to generate a passive revenue stream. You can play the game alone or with up to seven friends in online multiplayer.
Who said hard work doesn't pay off?
What's the inspiration behind Mining Mechs?
Mining Mechs is inspired by the old classic web game 'Motherload' by XGen Studios, but I added my own unique twist to Mining Mechs by making it a bit more of a relaxing experience and adding online co-op multiplayer.
How did you design a multiplayer game in GameMaker?
I'm using GameMaker’s Steamworks extension for all the networking. This allows me to have a lobby system and matchmaking through Steam so you can simply invite your friends through your Steam friend list.
One player hosts the game and the clients connect to the host. Clients sync their actions with the host and the host shares those actions with all the other clients.
The game features drop-in drop-out multiplayer, so any player can quit and rejoin at any time.
What is the most important rule when designing a multiplayer game?
Don't try to sync every single variable every single step. Let me explain.
All the draw events in Mining Mechs independently define which sprites and animations to use, based on what’s happening without requiring any direct input. For example, is the player character moving left but not touching the ground? Then animate and draw the character jumping left.
This might sound inconvenient as opposed to simply changing the character sprite into their jumping sprite whenever you press the jump button. However, by using this method, I only have to sync the character positions of all online players and voila; I have fully animated characters running around!
Additionally, I only sync the player positions a couple times every second and use those positions as a target, to which I gradually move the character on the client side. This way I drastically reduce the amount of bandwidth. Even if the connection was lost for a second, the player would still gradually move towards the target.
Since Mining Mechs is a casual co-op game, it's totally fine if there's a little delay - there's no issues like the host having a competitive advantage over the clients.
What made you choose GameMaker over other engines?
I've tried working with a couple of different engines over the years, but none of them were as user-friendly and quick to use as GameMaker.
GameMaker Language is a very simple but powerful programming. I can make a prototype for any 2D game concept I can think of in less than a day and find out if it's fun right away.
If I wanted to expand or bring Mining Mechs to other platforms later down the line, GameMaker supports all major platforms as well, so for me it's the perfect engine.
Pick your own dream mecha!
Is there anything you’d change about GameMaker?
Absolutely; GUI - and specifically menu buttons.
Creating flexible GUI buttons is overly complicated in GameMaker, especially compared to how incredibly easy and fast it is to make an actual game.
It’d be great if GameMaker offered out-of-the-box solutions to make flexible menus that scale with the game at different resolutions.
How did you deal with that?
When developing Mining Mechs, I set a clear deadline and focused on creating a solid core game loop first. To finish a polished game, you need to set a clear goal and stick to it. It's really easy to overscope when no-one is holding you to any deadlines. I then tested the concept with a lot of people, gathered a ton of feedback, and optimised it.
It's hard to keep your imagination from running wild and adding new features every time you have a great idea, but in the end it paid off.
I'm really happy with how polished the core gameplay loop is, and I'm confident that every feature in the game is a meaningful contribution..
Nothing brings friends closer together than mining
What are your plans for the future?
I'm aiming to make my next online multiplayer game in less than two months! I started this project with the goal of not only making one game, but to create a robust 'core' upon which I can build more.
Now that I have my menu system, controller support, localisation system, and online multiplayer integration implemented, I can re-use most of that code for any new game I make.
I can spend more time developing the actual game and I never have to worry about menu GUI again. Yay!
Which one of the available mechs is your favorite?
I like the Scorpion mech most. I love the way its little legs move around, and how it shoots a laser beam to dig. I mean come on... it's a laser beam!
Are you interested in mechas?
Well, to be honest, not really.
It just worked out very well for the player to control a machine to dig down and 'Mining Mechs' sounded very catchy so I went with that. Who doesn't like robots?