I've been a gamer since around 1981 or thereabouts. My older brother was the gamer back then, and the various systems we got in the house were really his, but being the quintessential brat I wanted a slice of the action too. Our first gaming system was the wonderfully retro Phillips Videopac (also known as the Odyssey in the US) . The Videopac was a clunky, oversized thing with a plasticy silver finish, chunky cartridges, and and pygmie dick thin joysticks.
The whole package looked like a prop out of Space 1999 or Moonraker, and absolutely reeked of 1970's tech. However, the games library was healthy, and most titles were somewhat fun albeit EXTREMELY basic.
Things heated up when on a day trip to Glasgow in 1983 (or '84), my brother came walking across the car park at the back of John Lewis with a strange black rectangle thing with rubber keys.
That of course was the famous Sinclair ZX Spectrum, - the machine that almost single handedly launched the UK teenage bedroom game making market. In 1987 we upgraded to an Amstrad 6128 and I had my first experience of a floppy disk drive, which at that time being used to loading games on cassette tape, was tantamount to extreme witchery! We then moved to the daddy of the 16-Bit computers in 1989 - the Commodore Amiga, and then stumbled into the world of consoles a year later which took a step back to 8-Bit with the Nintendo NES in 1990. The following years, and many mowed lawns and washed cars later, saw a Nintendo Gameboy, Super Nintendo, and Sega Megadrive enter our home, and the gaming journey finally ended with the Sony Playstation in 1995. This is around the time where pubs and music started to become lifestyle staples, and so the interest in games somewhat faded out.
Fast forward another twenty odd years (.....!) and I was messing around on Paint Shop Pro as I sometimes do. I made a small mock up of a scene from one of my favourite games 'Golden Axe II' depicting a three player mode and the addition of buckets and buckets of gore! Pretty snazzy I thought, and left it at that. However, in my brain there was a small itch and a voice that kept telling me " I wonder if there's any software out there to actually make it a reality? After a five minute Google search I came across exactly what I was looking for, and that was Game Maker.
Game Maker is a software program written by Mark Overmars WAY back in 1994 (known then as Animo) as a simple animation tool. This grew into a fully fledged video game making software package complete with it's own graphics, and animation studio, plus its own unique programming language known as GML (Game Maker Language). The program spans a user experience range I don't think I've ever seen before. You can literally make a (very simple) game within five minutes using the drag and drop icons for absolute beginners, but you can also create a modern 3D FPS type game using advanced mathematical code, shaders, and texture mapping. It's all there. Everything you have ever seen in any game can be done with Game Maker (depending on your level of experience). For me though, it was retro games that I wanted to get wired in to.
A game is made using certain...things, and there are a lot of these things. The five main ones are called objects, sprites, instances, collisions, and rooms. Gamers will instantly recognise the word "sprite" as being the term for things on screen that aren't background graphics.
Sprites in Game Maker don't actually do anything in the game, they are simply pictures or animations designed to be purely visual.
Objects on the other hand are completely the opposite. This is really what you are seeing
on screen, and it's where you put your code which controls movement, speed, events, and of course, graphics. Sprites are nothing more than the graphics in which objects use to make themselves visible. Imagine a sprite as a human body but the object is the personality, the consciousness, and the soul. A sprite must be assigned to an object in order to do anything, and it is the object itself that stuff happens to.
Instances are copies of an object which do their own thing. You will make one enemy object and give it it's graphics and code etc. but you can pop two or more instances of that object within a game. Otherwise fighting and killing just one enemy in the whole game would be seriously dull. These instances all share code with it's master object, but there are ways to manipulate them individually with code.
Collisions are just what they sound like. They are when two or more objects collide with each other and something happens (which you need to code). This could be saying what happens when a player object punches an enemy, or it could be what happens when a player or enemy object touches a ground or floor object after a jump. Collisions happen by the object using the sprite's collision mask (also known as hitbox or bounding box), which is basically just a selected area of the sprite that can be 'seen' by another object. When the masks of two objects touch or cross, then that is considered a collision. Collisions with invisible objects can be used to trigger off fades, room transitions, effects health point increment or decrement, and many others.
Rooms are where you put objects, and it's the area in which your game happens. Room could be seen as game levels or stages and can indeed be used that way, but you can use multiple rooms for the same level if you wish either as sub-stages or just to connect slightly different looking places (outside then into a house for example).
In order to make objects come alive you have to code them using GML, and while this can be tricky to start with, it becomes increasingly clearer with experience.
GML, like all programming languages, uses statements, functions, and variables:
The " if" statement is your bread and butter. It basically sets a condition that if met, will do something. "If hungry then eat" would be a crude example, but that's all you are basically doing. You will use the 'if' statement to change sprite animations - for example, push a button to punch or fire, or to set up what happens when a collision occurs with another object (play a hit animation). Other statements can be used with 'if' in order to expand and refine the condition. Statements such as 'else' 'with' 'for' or 'while' can be used to pinpoint, refine, loop, and all sorts of other shit that even I don't quite get yet.
Variables are basically containers to which you assign a value such as health = 100. Game Maker comes with a shitload of built in variables, such as gravity, hspeed, and vspeed (sets how fast you fall or move horizontally or vertically), plus lots of others. These native variables are ok and there's nothing wrong with using them as it's the end result that matters, but you can also create your own custom variables too and in that you can create your own gravity system and variables for movement. It's a pain to do, but I'd say this is more advisable as not only does it give you complete control over every single aspect of your game engine, but for a control freak like me, using the built in variable is like children's potty trainng.
Game maker also has it's own native collision system for objects, and this means that the objects can be flagged as 'solid' or 'non-solid'. This just means that when you collide with a 'solid' object you won't pass through it, which is ideal in theory for floor or walls objects. The reality is though that the built in collision code for 'solid' objects is inefficient and clumsy when it comes to being pin point perfect with the pixels, and this often leads to sticky walls and floors if the collision masks aren't set correctly.
The only problem I foresee for the future is really Game Maker itself. It is an AMAZINGLY flexible tool that is so easy and addictive to get in to. However, from what I can see, the current owners, YOYO games, need to make a huge step with Game Maker - and soon!
The V1.4 program needs a MONUMENTAL overhaul and is rife with bugs, glitches and simply just doesn't help the workflow. The GUI is terrible and still looks like it was written in the original Delphi in windows '95, and the room editor (Level editor) is one of the most frustrating tools I think I have ever used in my entire life. YOYO keep promising a total overhaul of the GUI and program in general, and to be fair small fixes do happen with updates, but it never quite seems to get anywhere. Some users were getting so pissed off that they even created their own third party external room editor application. Now, if I was head of a company that made a product, that information alone would have me thinking a bit. The community forums, while full of amazingly helpful fellow game makers and loads of superb tutorials, are a little too strict for my liking, and recently they seem to have become infested with unhelpful Gatekeepers.
Another big issue is compatibility. Functions are removed and new one's added every so often which makes the YOYO site awash with tutorials that are now outdated, obsolete, and useless. Also, every time a new version of the program comes out there seems to be major issues with projects made in previous versions which are now incompatible with the new build.
In saying that, I still think the good FAR outweighs the bad in Game Maker, and you may think I'm being unnecessarily hard on YOYO games, but at nearly £800 (Holy fuck!) for a copy of Game Maker: Studio with all these really crap and frustrating flaws is really ripping the pis out of the consumer.
However, taken as an educational tool I can probably say that there is nothing that will get you familiar with the world of coding so fast as with game maker. Seriously, they should have this in schools to get children familiar with computing terms, as it's guaranteed to hold their interest far more than stuffy Basic programs.
Striding forth from his lair at Castle Stareskull one morning, Prototron decided to not reign down terror on the villagers, but instead go back inside, crack open a beer and load up Streets Of Rage 2. One hundred years later, he's still there. A avid music maker (of TERROR!) and retro gamer, he can be found whooping any and all heroes at all manner of SNK-based challenges.