Mark Overmars' Game Maker
My intent for this lens is to allow you to follow the development of a simple invader type game. I've been working on one in my spare spare time (yes, I meant to write that twice, it's an indication that this Lens may not be updated very frequently, so add it to you RSS feeds and you might catch my changes) and still have quite a ways to go before it's working game, but it should be fun!
Note: Mark, if you would rather I not use your logo as my Lens title, I'd be happy to remove it.
For those interested in Game Maker, the current version is 7.0 and can be found at YoYo Games.
I was hoping to do this in some kind of controlled manner, but I'm not publishing much doing it that way, so I'll be jumping around here and there whenever I can. Maybe some of the stuff I put in here will give other people some pointers or ideas that they can use.
The Game Maker's Apprentice
Game Development for Beginners
YoYo Games Glog
Where the World comes to Play, Make, Share and Find Games
YoYo Games is the official web site of Mark Overmars Game Maker. You can find a lot of good resources there as well as games to down load.
Fetching RSS feed... please stand byGame Maker Tutorial
A Random Find on YouTube
Also, I am not the author, the author can be found here.
Game Maker Tutorial
This is a tutorial geared towards the newest of beginners coming to learn the aspects of the GameMaker software. Beginners...you could learn something from this; advanced users...if you are to watch this I apologize if this vid has made you dumber. UPDATE: Do not write me asking questions. I mean not to be a jerk, offering no help, but this video I made a couple years ago, learned all this in two weeks, made this video in a day. Whoever has a question most likely knows more of the program than I right now. If this video helps you then I'm happy for you, if not I apologize and advise you visit the "Game Maker Forums" for help: http://gmc.yoyogames.com/
Runtime: 595
288962 views
903 Comments:
curated content from YouTube
Part I: Designing the Game
What is the story behind the game?
This is the story about a computer manufacturing company that is struggling to return to its glory days back in the late 90's. With the commoditization of computers, every computer manufacturer is now producing the same thing. Even the packaging has become a copy of our struggling manufacturer's.Everyone was using the cow spotted boxes!
As it turns out, some aliens have hijacked a shipment of fake cow spotted boxes, added anti-gravity devices and armed them with exploding 3.5" floppy disks.
Maybelle, the retired cow, has been given the task to destroy the fake cow spotted boxes and eliminate the aliens possessing these card board containers before it's too late (whatever that means).
Part II: Our Main Character
What is our hero going to look like?
There is one condition- no laughing. I am not a graphic artist and will never be one (as you can probably tell).None-the-less, I'm sucking it up and ignoring all comedic comments regarding Maybelle the Cow.
Why? You ask, is the cow upside down?
Because our cow is equipped with nuclear cow milk that she uses to destroy those alien controlled fake cow spotted boxes which fly above her head. So, she needs to be upside down.
Part III: Our Fake Cow Spotted Boxes
What will the aliens be attacking with?
Remember, they've taken control of the competitors fake cow spotted boxes and have armed them with exploding 3.5" floppy disk. Random Path Generation: dataPath
The next few postings will be how I set up a random path generator.
Script Name: initGame
// Create and set global variables
// SCREEN DATA
// Screen width
global.gScreenWidth = 1024;
// Screen height
global.gScreenHeight = 768;
// The view is the rough area within which
// we'd like our path to remain.
// Left position of view
global.gViewLeft = 112;
// Right position of view
global.gViewRight = 936;
// Top position of view
global.gViewTop = 72;
// Bottom position of view
global.gViewBottom = 500;
I created some globals for configuring our path generator.
Script Name: dataPath
// PATH DATA
// Number of random paths to create
global.PathCountCreate = 25
// Number of times to loop the path
global.PathLoop = 4;
// Speed of objects on path
global.PathSpeed = 30;
// Create path queue
global.PathQueue = ds_queue_create();
// Set this to true when a new path is desired
global.PathGetNew = false;
Random Path Generation: createPathPoint
Script Name: createPathPoint
// This is the path we're working on
// argument0 --> path
// The quadrant from which we want our random point
// argument1 --> quadrant
// The speed along the path
// argument2 --> speed
var nPath;
var nQuad;
var nSpeed;
var nLeft;
var nRight;
var nTop;
var nBottom;
nLeft = global.gViewLeft;
nRight = global.gViewRight;
nTop = global.gViewTop;
nBottom = global.gViewBottom;
nPath = argument0;
nQuad = argument1;
nSpeed = argument2;
{
switch(nQuad )
{
case 1:
path_add_point(nPath , random((nRight-nLeft)/2)+nLeft, random((nBottom-nTop)/2)+nTop, nSpeed );
break;
case 2:
path_add_point(nPath , random((nRight-nLeft)/2)+((nRight-nLeft)/2)+nLeft, random((nBottom-nTop)/2)+nTop, nSpeed );
break;
case 3:
path_add_point(nPath , random((nRight-nLeft)/2)+nLeft, random((nBottom-nTop)/2)+((nBottom-nTop)/2)+nTop, nSpeed );
break;
case 4:
path_add_point(nPath , random((nRight-nLeft)/2)+((nRight-nLeft)/2)+nLeft, random((nBottom-nTop)/2)+((nBottom-nTop)/2)+nTop, nSpeed );
break;
}
}
Random Path Generation: createPath
Script Name: createPath
// argument0 --> number of passes
// argument1 --> speed
var quadrant_pattern;
var loop;
var maxloop;
var pathspeed;
maxloop = argument0;
pathspeed = argument1;
path = argument2;
// Select a path pattern to use;
// Clear path object
path_clear_points(path);
// Create beginning of path
path_add_point(path, 0, global.gViewTop/2, pathspeed );
path_add_point(path, 80, global.gViewTop/2, pathspeed );
path_add_point(path, 128, global.gViewTop/2, pathspeed );
path_add_point(path, 176, global.gViewTop, pathspeed );
for (loop=0; loop < maxloop; loop+=1)
{
quadrant_pattern = round(random(6));
switch (quadrant_pattern)
{
case 0:
// Quadrant order is 1-2-3-4 (SAME AS 6)
createPathPoint(path,1,pathspeed );
createPathPoint(path,4,pathspeed );
createPathPoint(path,3,pathspeed );
createPathPoint(path,2,pathspeed );
break;
case 1:
// Quadrant order is 1-2-3-4
createPathPoint(path,1,pathspeed );
createPathPoint(path,2,pathspeed );
createPathPoint(path,3,pathspeed );
createPathPoint(path,4,pathspeed );
break;
case 2:
// Quadrant order is 1-2-3-4
createPathPoint(path,1,pathspeed );
createPathPoint(path,2,pathspeed );
createPathPoint(path,4,pathspeed );
createPathPoint(path,3,pathspeed );
break;
case 3:
// Quadrant order is 1-2-3-4
createPathPoint(path,1,pathspeed );
createPathPoint(path,3,pathspeed );
createPathPoint(path,2,pathspeed );
createPathPoint(path,4,pathspeed );
break;
case 4:
// Quadrant order is 1-2-3-4
createPathPoint(path,1,pathspeed );
createPathPoint(path,3,pathspeed );
createPathPoint(path,4,pathspeed );
createPathPoint(path,2,pathspeed );
break;
case 5:
Random Path Generation: createPath
continued...
createPathPoint(path,1,pathspeed );
createPathPoint(path,4,pathspeed );
createPathPoint(path,2,pathspeed );
createPathPoint(path,3,pathspeed );
break;
case 6:
// Quadrant order is 1-2-3-4 (SAME AS 0)
createPathPoint(path,1,pathspeed );
createPathPoint(path,4,pathspeed );
createPathPoint(path,3,pathspeed );
createPathPoint(path,2,pathspeed );
break;
}
}
// Create end of path
path_add_point(path, 176, global.gViewTop, pathspeed );
path_add_point(path, 128, global.gViewTop/2, pathspeed );
path_add_point(path, 80, global.gViewTop/2, pathspeed );
path_add_point(path, 0, global.gViewTop/2, pathspeed );
Random Path Generation: setPaths
Script Name: setPaths
while (ds_queue_size(global.PathQueue) < global.PathCountCreate)
{
myPath = path_add();
path_set_kind(myPath,1);
createPath(global.PathLoop, global.PathSpeed, myPath);
ds_queue_enqueue(global.PathQueue, path_duplicate(myPath));
}
In the end, the way this should be done is by calling this function every time a path is used. "global.PathCountCreate" should be a global indicating the number at which to create more paths.
If you find this at all useful, and are having troubles getting it to work for you, drop me a line. This works perfectly for me, but I created it about 2 years ago, so I may have missed something.
Oh, I forgot to say that this should be called just before your level starts. Otherwise you won't have any paths in the queue until the function is called the first time.
New Guestbook
-
Reply
- Christy Christy Jul 3, 2009 @ 11:24 pm
- Game maker is a good maker if 2d games, and there are more tutorial videos on youtube. might want to check out http://www.gamemakerslist.com for more game creators. And http://www.gamedev.net/ for tutorials and allot of other help.
-
Reply
- MusicMadness MusicMadness Jul 22, 2008 @ 1:44 pm
- Nice lens on Game Developing. I've been a passionate fan of games and building them for years. It's nice to see game development become more and more accessible to the average creatively minded person. I just wrote an article on a new company helping independent game developers become more successful by developing and retaining their own intellectual property. Give it a read if you like.
Games For Purchase
Games you can by from Amazon
Industry Jobs
Jobs you can apply for
Maybe you'd like to get into the gaming industry as a developer. Here's a list of current jobs related to game development.
- Freelance Widget / Game Developer
-
- Brooklyn, NY
Developer needed for a freelance project creating an interactive widget/game (picture crosswords-meet... future. Design assets and game framework are ready to... ... - Mobile Game Developer
-
Studio B Productions, Inc. - New York, NY
is looking for Mobile Game Developers to write articles on a variety of topics including: - Moving games... how-to - Developing games for a mobile format (i.e... ... - Windows Game Developer
-
Modicom - San Jose, CA
Windows Game Developer Responsibilities: - Developing PC games for a variety of platforms (such as Windows... interfaces. - Casual games development experience... ... - Marketing Game Manager - WB Games Inc. (Chicago Location) - #114470
-
Warner Bros Games - Chicago, IL
About WB Games Inc: WB Games Inc. is a new... WHV), to bring games to market. WB Games oversees the creation of games by internally owned developers as... ... - 2D to 3D Game Developer
-
Studio B Productions, Inc. - New York, NY
Studio B is looking for game developers with knowledge and experience moving from 2D to 3D in game development to write articles for our client. Subject areas... ...
Game Development Links
Resources for beginner game developers
- YoYo Games
- This is the official site of Game Maker administered by YoYo Games.
- GameDev.net
- Gamedev.net is the leading resource for game developers, featuring daily news updates, over 1500 featured articles and tutorials, and the most active game development forums anywhere!
- Writers Cabal Blog
- Writers Cabal Blog - Tips, tricks, and unconscionable wastes of time for game developers dealing with writers or writing Comic con: games and comics and geeks, oh%uFFFDmy! I survived an event so massive, it bears but one name: Comic-con. If you haven’t been to the San Diego comic-con before,
by 3 people |






