0. CONTENTS
1
Table Of Contents This Issue We're back with yet another packed issue for everyone. Issue 9 contains things that were originally planned for issue 8, so you can look forward to reading these parts. One special day is coming up, it's GMTECH's 1 st year anniversary. This will not only be a remembered GMTECH day, but it will also be a great day for our longer known staff members that have been around since issue 1.Besides that we will be hitting our first magazine goal, that is, reaching the 10th issue. It's amazing to think that it's already been nearly a year since our first released issue. If you go back and view issue 1 you will really see how far GMTECH has come. The magazine has gone through 3 major design revamps, has gotten many new staff members, and we have gone through lots of ups and downs throughout the year. GMTECH has had a few changes since Issue 8. One of these is the loss of 3 more staff members bringing our staff count down to 16 staff members. The magazine has had a font change and the next change would be the permissions on the forum. As you may have noticed the submission section on our forum is now only for registered members. The reason for such a change is the countless spam topics we have received. This change will make our forum a much better place to be. YoYo Games has also been stepping up a gear with its new upcoming Game Maker updates that are due to be finished by February 2008. They have also been making progress on their website through updates with their instant play plugin and new website features. The next thing we can probably look forward to is the completed v1 of their site. Remember it's not too late to submit your ideas for issue 10 yet, so we really need to hear what suggestion you have to make issue 10 a really special issue. Finally I hope you will enjoy reading issue 9. gmjab Editor
1
1. ARTICLES What's Going On...........................................................................2 Creating a Good Story Line.......................................................4 Finding Bugs – Some Good Ways..........................................5 Reasons to Upgrade Game Maker..........................................6 Game Distribution.........................................................................7 Dealing With Comments Correctly.........................................7 User Opinion: How Much Would You Pay For GM?.............9 The GM Consortium..................................................................11 2. GMDEV Game Maker Tips.......................................................................12 Speeding Up Game Loading....................................................13 Getting Delphi + Your First DLL.............................................13 First Person Shooter Design................................................15 Tut: Loops and Tables..............................................................16 Tut: Record Scenes.................................................................16 AI Tutorial....................................................................................17 Pixel Art Tutorial.......................................................................19 3. GAMES & REVIEWS Follow Up Review: Starboard 8.1...........................................20 Preview: Huhnahpu: Memory of the Sun............................21 Review: Battle City 3D..............................................................22 Review: The Adventure of Hank VanSail............................23 Review: Yabog............................................................................24 4. EXTRAS Interview With: Sinaz................................................................25 Quick Interview: Mailas.............................................................26 Comic............................................................................................27 Adverts........................................................................................28 Closing..........................................................................................29
Staff
Gamez93.......GMTECH Owner rup13............Assistant Editor Christian Sciberras.....Writer HalfMillennium................Writer Polystyrene Man.........Writer GMmarine.............Researcher the9thdude...............Reviewer Hiyukantaro.............Tut writer eagleprof..........Proof Reader
gmjab........Magazine Editor Alex..........................Advisor TheMagnitude..........Writer mememe...................Writer Medieval..........Researcher Bob–11500KComic Artist trose7...................Reviewer NAL................Proof Reader
Online Website..............................................www.gamemakertech.info Forum............................................www.gmtech.invisionplus.net Email.............................................Gmtech.magazine@gmail.com
1. ARTICLES
2
What's Going On GMT: PDF Font Changes Last month a few people pointed out that the PDF document loaded very slowly. Whilst there is not much we can do about this, we have made a small change. We found that the previous font slowed down loading a lot, so we changed it. The new font is very similar to the previous font but should load slightly faster then the previous font.
GMT: Submit Forum Changes As you may have noticed there has been some changes to the GMTECH forum. Due to the amount of spam we have been receiving we have stopped guest submissions of content to the magazine. The guest/members suggestion section is also for members only now. We said that we would keep the forum clean and friendly, so this is the step we have to take to make sure this happens. We are very sorry for the inconvenience. You can still submit content to the magazine, however you will need to register first.
GMTV: Episode 1 Released Some people thought GMTV by Danny would never happen. But months later, and after a lot of doubt from GMC members, GMTV released it's first episode. After the release many people viewed the video which used up the 1GB bandwidth set aside for GMTV very quickly. Now that GMTV is going, the next question people are talking about is: how long will GMTV last for?
YYG: GM Mac Screenshots Last month YoYo Games released some screenshots of the Game Maker Mac version. The next two versions of Game Maker (including Mac) will be a big step towards the future of Game Maker.
GMT: Join Us at GMTECH GMTECH Magazine has staff positions available. We are looking for happy, hard working dedicated staff for some main positions such as: Article writers Spelling checkers Reviewers If you are interested in doing something for the magazine that is unique, please contact us with your ideas for the new position. To find out more information about applying and the benefits of working with GMT visit our website.
GMT: Alex leaves Game Maker & GMTECH Its sad to see a popular Game Maker Community member and GMTECH staff member leave. Alex will be moving on to C++ to produce a high-quality game before moving on to other adventures. We would all like to wish you the best of luck in the future.
GMR: Top 5 Games Decided The Game Maker Race Top 5 games have been listed on the website here. These games will now move on to the next round. Congratulations if your game is a part of this list. We would like to thank the participants for entering even if you do not win. Mount Contradiction The Meltdown Orbiter Triton Freeze, Melt, Vaporize
2
YYG: Winter Competition If you are not interested in competing in the Game Maker Race we suggest you check out the YoYo Games Winter Competition where you could win up to a stunning $1000 for making a game. This is a huge prize and many will be entering, so get in today!
GMRumors Closing Down GMNews have announced the closure of GMRumors due to the lack of user interest and opinions. The GMRumors website will be left running for historical purposes only.
Shout Out: YoYoFiles Hello, my name is Mike Rodriguez, owner of YoYoFiles.com, Educational Computer Technician for the Alisal Union School District, web designer, and game programmer. YoYoFiles is a project I decided to make available to the public. It really was a spur of the moment site. I wanted to give back to the YoYoGames community as they have helped me out so much. I have been with Game Maker since GM4 or even before that and have throughly enjoyed my time at the Game Maker Community. Let me tell you about YoYoFiles and it's mission. It's mission is to simply allow users to upload files and serve them to the public. When a user clicks download they are not taken to a download page to click again, they can simply download. Period. When a user links to an image, the image shows up without a watermark. It's that simple. It's made to be hassle free. (Continued on next page) .
1. ARTICLES
3
What's Going On - (Continued) Shout Out for YoYoFiles (Continued) Now about the framework. This is what separates us from every other file uploading site out there. YoYoFiles is not hosted on shared hosting, nor on virtual dedicated hosting, not even on dedicated hosting. It is hosted on four dedicated servers out of three datacenters in Texas and California providing you with constant quality speed. Each datacenter is equipped with power backup generators, RAID configurations “so your data is never lost�, and is on a Peer1 Network (same type of network as YouTube) on multiple OC48 lines. This hosting is made to deliver large high quality videos to thousands of users, so it can easily handle games. I hope you all take advantage of YoYoFiles.com, and thanks to GM Tech Magazine, all users who sign up will get a very generous space and bandwidth allotment.
Shout Out: Outbreak byTobias(NL): The game is called Outbreak, an action/puzzle platform game. You'll have to defeat bosses to gain new abilities. With some of these abilities you can destroy 'unbreakable' crates and other passage blockers. When you've completed a world, it is possible for the player to visit a finished area again; simply for fun, or to destroy these 'unbreakable' crates, which may hold a new weapon, or a new passage to new secret area's. And with new secret area's I mean completely new levels. you will find various skills and weapons through out the game; some of them are needed to make progress, others are pure for the 'battle fun'.
3
you will find various skills and weapons through out the game; some of them are needed to make progress, others are pure for the 'battle fun'. I can't tell you how many weapons I will make yet, simply because I don't know. Same with the abilities. I think of making 3 - 4 weapons. There will be 3 worlds, outside, underground, and snow (with lab). + some extra hidden area's.
The main gameplay is based on these: -variable jumping, jetpacking. (make speed by running to win air time). -destroy crates to create your own path. -play with a bit of tactic to kill guards. -and of course, a high replay value (think of finding new weapons, abilities etc). when the game has been completed, you can select 'boss rush' mode from the menu.
The new demo will feature: -underground world. (60%) -new enemies. (done) -some puzzle maps. (this is the other 40%) -and probably a boss. (not done yet) This game is based on the MAD Engine. If you want to know more about this engine,then you can PM me [Tobias(NL) ]
1. ARTICLES
4
Creating A Good Story Line By GMmarine Most games today cannot function without a base story, which is essential for creating a good game. But, why? Well, a good story keeps the player engaged in the game and ready for more action. Whether your game is a action shooter, or an strategy game, it needs a good storyline to help carry the player throughout the game levels. Without a storyline, your game is pretty much more pointless than to begin with( every game is, if you think about it.) I would also like to clarify the differences in a story and storyline. A story can also be referred to as a tale, or a work of art in words. The storyline( which can also be called the plot) is the sequence of events in a story, the beginning, climax,etc... The latter is the term I will be using throughout the article. Unless your game is completely multi-player, you do not need to read this article, otherwise, read on. In order to create a good storyline we first have go indepth about the parts of a storyline. It is ok to just say the storyline has a beginning, middle, and end but I recommend you learn the correct terms for each part. Beginning - Also referred to as the exposition, where you introduce and describe the character ( if there is no main character, next step is first ) Problem or Conflict - Describe the problem or conflict Rising actions - What leads to the climax, usually subplots, or smaller problems because of the problem/conflict Climax - The big problem, highest point, where the problem/conflict is worked out Falling action - Follows after a climax, wraps it up, events after, possibly smaller problems to follow Resolution - Where the problem is worked out, the end, or where you leave the player wanting more, leading to a sequel Note: If you search the Internet you can find many alterations similar to this one. Another important aspect,( if your game has main characters ), is that you need to introduce characters at the beginning and throughout the game. Although you need to introduce them at various times, it is sometimes more appropriate to leave certain characters secret. Say, your game has a character whose home world was destroyed, instead of right off telling the audience at first who did it, save it for later. Or possibly, have the character work alongside the one who did it( not knowing he destroyed it), and then surprise the audience and character later. So, it really isn't good to tell everything at the beginning, but release certain details throughout the story. Not only does this keep the player engaged in the story and wanting more, it allows these details to be released later in a sequel. Introducing players throughout the game can be done in more than one way, this is also the case with developing them.
4
Introducing them can be as simple as saying " This is Bob, he is a marine in the army," and leaving it at that. But sometimes you want to tell more about certain characters than others, and in some cases it is better this way. It leaves the player wondering about the character and wanting to know more about them. This can be compared to the one who killed Harry Potter's parents( whose name escapes me.) At first they didn't speak his name, and didn't tell much about him. Yet later, you started to know more about him. Developing characters first starts when we introduce them. You must first decide what kind they wish to be: Simple(flat) - A good or bad guy. Round - Complex; has many sides: good, bad, etc. Static - Doesn't change at all. Dynamic - Grows or changes during the story. These are the main types of possible characters, whether you need one of every type is up to you.
Putting it all together Developing a basic problem is very important in a storyline, it isn't much to have Bob the marine just go around killing people for no reason. There has to be a problem with him, or a reason that drives him into doing that. Let's say that he kills people because an evil emperor killed his home world and he is out for revenge. This establishes who he is killing, not just random people, but people who follow the evil emperor. Rising actions are the battles and sub-missions that he takes. For example, in order to get to the emperor's home world he must first buy a ship, but since he has no money he has to steal one. Stealing a ship is a felony, and soon a group of cops are chasing him, who he must kill, a sub-plot! The Climax, Bob soon reaches the home world after many battles, and is now standing directly in front of the emperor. They duke it out, and Bob tells the emperor why he has done this, and the emperor didn't do it. Sadly, the emperor dies. What? He didn't do it? The story isn't over? This means that his adventures aren't over and he has a new problem/conflict. Falling actions, a sub-plot, in which he must now find whoever really did this, this is an example that a character can be both dynamic, and round. Round, he is bad for killing people, but he is actually a good person engulfed in anger. Dynamic, he can not go by what his friends have said, and learns that rumors are sometimes the case. Resolution; he leaves the emperor's house, angry, and leaves having more questions than answers... sequel! That pretty much sums everything I know about making a good storyline up, if you want more info don't hesitate to visit these two sites: ThinkQuest.org Wikipedia.org
1. ARTICLES
5
Finding Bugs – Some Good Ways By TheMagnitude What any developer will almost certainly get whenever they program something is bugs. Bugs are events or outcomes in a program that weren't meant to be there. Don't worry if your game or application has some bugs, they're very common and extremely hard to avoid when writing complex programs. In this article I am going to explain how to find these bugs and squash them. Game Maker actually has a built in debug menu, which is accessed by F6 or by clicking on the red arrow. This is a very handy tool, which can count all the instances currently in the room and lists them. It can also some other handy things, but I'll talk about them a bit later. This is handy if you are not sure whether an object that needs to be there is actually there. Also, sometimes, you may find that there is an object there which isn't meant to be there but thats quite uncommon. Another handy feature of the built-in debug menu is that you can execute code directly. This means you can try out some code statements to try and fix the bug there rather than having to re-run the game or application everytime you add some code. Local and global variables can be viewed also, local variables requiring you to type in the instance id. Identifying the values of variables in a game or application can really help you to see what's going wrong, if anything, and is a very useful technique. Another way that you can find bugs in your game or application is that if you use the very useful function: show_message(string); This is useful when you want to find out what is the value of certain variables. I recommend implementing this debugging system into complex scripts, especially scripts that depend on the value of certain variables. So say if you wanted to monitor the values of the variables x and y at different parts in a script you could write something like this:
if is_real(x) then xt="x Real: "; else xt="x String: "; if is_real(y) then yt="y Real: "; else yt="y String: "; show_message(xt+string(x)+";"+yt+ string(y)); if x=89 and y="str" the output would be: "x Real: 89; y String: str" Monitoring variables has proved helpful many times personally for me. If a script is really ticking you off monitoring the variables can be a good way to understand what is going wrong and what is going right so you can correct it. Sometimes just drawing the variables on the screen is ineffective if your script is processing them too fast to see. Now the more widely-used way of finding bugs in a game or an application, is to go down every crack and take every route. Here's a list of some common bugs you should look out for in a game or application followed by the most likely cause(s) of the bug and how to correct it. The format of the list is:
5
Bug > Cause1 (Correction1) > Cause2 (Correction2); Player gets stuck in what's meant to be an impenetrable object > Player's or Other's object solid isn't checked (Make sure the right ones are checked, usually impenetrable object) > Player is using precise collision checking and using image_angle (Use a mask for the player instead of a sprite and instead of setting image_angle draw the player sprite in the draw event with an angle); Player can go outside the room > Player does not get pushed back into the room (push the player back into the room by setting there x value to 0 if x<0, x value to room_width if x>room_width; and do the same with the y variable) A script or piece of code does not work entirely correctly > code written quickly and typo made (read slowly your code (especially variable names) before executing making sure you have typed everything correctly) > all code "{"'s haven't been closed (run through your code to make sure you have closed all "{"'s with "}"'s otherwise you would get an error saying "unexpected end of code reached") Game ending messages
at
startup
without
any
prompts
or
> a script referred to does not exist (rename the script (not recommended) or change the script reference to a real one) Application or Game becoming unresponsive and taking up masses amount of CPU > program may be stuck in an infinite loop, use task manager CTRL+ALT+DELETE to end (use the show_message(string) method to find out why this is) In online gaming when a player hosts a game other people can't connect to it > hosting player is stuck behind a router and needs to configure it by forwarding the listening port (www.portforward.com)
1. ARTICLES
6
Finding Bugs ~ Some Good Ways - (Continued) > hosting player is not connected to the internet (connect duh) > player connecting to the hosting player mistyped the ip address (retype ip) > player connecting to the hosting player is not connected the the Internet (connect duh) When d3d objects in the distance are displayed in front of objects closer > d3d not configured correctly (read up on d3d_set_hidden(true))
Game or application window closes automatically and strange things happen to the hard drive > virus (install and configure antivirus software and firewalls and run a virus scan at least once a week) That last one was a joke and isn't very common if you know what you're doing with your antivirus protection and firewall, but if you don't I recommend you get your computer secure. Anyway, above is just a few of the many many possible bugs you can have crawling around your code. There are far too many to list, so remember to use the methods learnt today to help crush those horrible bugs.
Reasons To Upgrade Game Maker By Bendodge & Gmjab Game Maker Light is free to download, and many people enthusiastically try it. But soon they find that its functionality is severely limited. Why would they want to pay for a program like this, when it seems to be missing so many basic abilities? Here are some reasons to upgrade your copy.
One of the best parts of purchasing GM is the advanced drawing functions that become available to you. These functions make things such as drawing distorted sprites so much easier. One of the best drawing functions you will get from upgrading is the ability to make 3D games such as a First Person Shooter. Particle effects are one of the biggest reasons to upgrade, since almost all modern games use particles for special effects. Some effects can be done with objects, but this is much slower and more difficult than using the built-in particle system.
One of the most compelling reasons to upgrade is the loading banner that appears at the top of the screen during game load. It looks very unprofessional, and serves its purpose quite well. Anyone trying to produce a polished game does not want another company's logo on the front.
Game Maker 7's new GEX extension system is very powerful, but it is not available in the Lite version. Extensions allow you to do everything from easy lighting effects to advanced multiplayer communication systems to terrain generation.
6
At only USD$20, Game Maker's registration is not expensive by any stretch of the imagination. Other programs with functionality like Game Maker's cost hundreds of dollars, so GM really is a bargain. Advanced features such as data structures, sprite rotation, 3D, and much more can make your games smaller and faster, and anyone trying to create high-quality games should consider upgrading. If you don't choose to upgrade, at least don't complain about it. The price is more than fair.
1. ARTICLES
7
Game Distribution
By Bendodge
Programming is only part of the process of producing a great game. You also have to get the game to potential players. This article will cover distributing free games, which, thanks to the Internet, isn't a very difficult task. But before you go and post your game for all to see, you need to make sure it's ready. One of the first questions you need to ask yourself is “is my game user-friendly?” Some of the things to check for when making sure a game is user-friendly are ensuring that the controls are easy to pick up, that the game loads quickly, and that it works on as many systems as possible. You also need to make sure the game is easy to run, which leads to my next point: installers. Installers can be beneficial to some games, but you should be absolutely sure that your game needs an installer before you add one. Games that need installers would be games that have many different data files, games that needs application extensions (dll's, ocx's, etc.) registered, and games that are distributed on optical media. An installer must be very well made and tested, and I would highly recommend that you use a solid install creator like Inno Setup, Nullsoft Install System, or Click Team Install Creator. Most casual games, especially games that are just one file, do not need and should not use an installer. When an installer is used unnecessarily, many users are annoyed. Some won't even play games
that use installers! So only use one if you must. When you are ready to distribute your game, you will need to upload it to websites. YoYo Games has made it very easy for you to publish your game, and I would recommend that you publish it there. You also want to submit it to software sites. (a short list is included below.) When you submit your game to websites, you need to take the time to write a good description and especially to get some good screenshots. Try to get a screenshot that captures the spirit of your game, and that will look good when it isn't moving. This can take some time, so be patient. If you have your own website, you will naturally want to put it there as well. But if you don't already have a good site, you probably want to wait until you have a good base of players and several games before you start a website. It will just take extra time and your game will usually get far more exposure on large game sites than on a homemade site. Short list of sites to publish on: freewarefiles.com freewarehome.com free-games.com softpedia.com snapfiles.com
Dealing With Comments Correctly By Medieval & Gmjab It is very common for one to spend tons of time developing a game then submitting it somewhere to get opinions( GMC, YoYo Games). Whether you like it or not, your game will be greeted with bad and good comments. With some simple steps, you'll learn the proper way to deal with comments. Another note is to be as friendly as possible, even though you may not of liked their opinion, you need to be polite!
Dealing with bad opinions should be done with care, and without yelling or absurd language. Please, refrain from yelling or using absurd language for the good of your players! You should take what they say, which is usually what you should improve on, and improve on that. Your players come before you, if they say something needs fixed, fix it for them. They're just trying to help you and offer advice on what should be made better. Don't expect your WIP to be rated 10/10 on the first try ! Though I see this quite a lot, they are over-exaggerating, it is quite rare for a WIP to truly be rated 10/10. At times you may find downgrading comments from
7
other members that include no suggestions for improvements. The best way to deal with those comments is to do nothing. Don't get angry or upset that your game doesn't please everyone. People are entitled to their own opinion whether it is good, or bad. Take this for example: You go with your friend to buy an ice-cream and your friend says “ice-cream is disgusting!”, but you love it. Does this make the ice-cream a bad product? No, it's just his opinion. Enough with bad comments though, you also get good comments which we all like. You may think you know how to deal with good opinions, but you don't. Even though it is easy to not reply to them or just say "thanks" don't do that. When someone posts positive insight only, ask them what they thought can be improved on. Remember to ask nicely though, don't demand your players to do things. There is always something that can be made better in a game, whether you realize it or not. Or if they only give your game a rating ten out of ten, ask them what they thought was good and bad, they most likely have something they didn't tell you. Telling your game is great doesn't help you much, does it? Also when making topic titles, don't make up fake 10/10's. This will give people a reason to give bad comments. Remember players, deal with comments the correct way, not the lazy way.
1. ARTICLES
9
User Opinion: How Much Would You Pay For GM? By GMmarine Staff Opinion: Christian Sciberras “I am sure that the GM price as is, is just perfect for persons of all ages. It is an inexpensive but powerful tool which in my opinion is worth more. But don't complain on that, as the price would increase!” User's Opinions The Zro “To be honest, I would pay anything from 20$ - 35$, as Game Maker is a powerful tool to create high quality games. I think that people don't know it, but you can make a decent profit using Game Maker. Understanding that a lot of teenagers enjoy working with it as a hobby, that's one of the main reasons why people create bad quality games in my opinion, not being serious about a project. This is one of the most common things we see these days: people spending about 15 minutes on a game and then asking for no constructive criticism. Anyone would like to know what others think about their games, but they feel bad or even offended when someone gives them bad reviews or comments. They often get annoyed and try to get rid of that review, but actually they’re realizing why they gave them bad reviews… it's so you know what's wrong and what to fix. Anyways, I think I'm getting off the point here a little ;) but this is the idea: such powerful games can be created with Game Maker, so it's definitely something to try. Let's look at some of the successful commercial games created by Game Maker. We have MAGI, Immortal Defence… the list just goes on and on. When you play these games, don't you ask yourself “how did the creator manage to create this with Game Maker?” Do you sometimes compare your games with these? Don't you ask yourself “when will I be ready to make games as great as these?”. If you think of it, it's just that the creators took it seriously, and they planned this for months. They gave it their best shot, and checked how it turned out. And, actually, we have quite a few games that are yet to be released publically, and these games can show you the quality of Game Maker when you put everything you learned into a project, and when you sell it, you will make up for the money you gave for this wonderful and powerful tool. My advice to everyone: take Game Maker seriously, and you can create high-quality games. When you see this, ask yourself this: “what can I accomplish with Game Maker?” If you think you can achieve many things with it, why not give it a try? Most importantly, look at it at this way: “will I be able to enjoy working on Game Maker and get something in return?” The answer is simply yes, you can go commercial, and make some decent profit out of it! It's like putting your thoughts in a game which everyone can feel and really get to be there. Isn't it worth it? Ask people who bought Game Maker. Ask them “what do you get by buying Game Maker?” Don't be afraid to ask, that way you're not wasting your money, and you're getting an idea of what Game Maker can do! Play some popular games, and try to
9
The Zro (continued) always do your best at Game Maker, and I promise you, you will be satisfied with the results.” Game_boy “I paid £10 ($20) for GM5. If the next version was drastically sped up with many improved features I'd pay an additional £10 ($20) for it, because I really like how simple and accessible GM has made programming for beginners and the only flaws are the speed and the Windows-lock-in. If the next version worked on Linux I'd pay upwards of £20 ($40) because GM is the only thing forcing me to buy Windows at this point.” Tony155 “I would pay about 100 bucks. The reason, very simple, GM rocks! Well out of all of the features it has, it could add up to 20 bucks, but, from all of the possibilities? Exactly, GM could even be better if Mark made some 3D libs or a new FPS tutorial, but still. That's what the manual is for! Anyways, that's why i'd pay 100 bucks.” Dan1 “I wouldn't usually want to pay any more than about £10 for Game Maker anymore (US$20.50, AU$22.80, CA $20.25, EURO14.35, NZ$26.65) because although the old GM was defiantly worth paying more for I personally think the switch to YoYo Games has made GM far too different and it seems silly to want to waste money on something from YoYo Games after proving themselves as a company that only wants to make money and is not even half as good as Mark Overmars. With Mark the games and products of Game Maker were free for whatever use you intended, since YoYo Games has eliminated that one clause and replaced it with the rule that anything even related to what you have made from GM is theirs its value has certainty gone down. I hope that has answered your question” dmitko “How much would I pay for Game Maker? Well, I think I would give $20 - the price for it. But if you had asked me the same question 7 months ago I would have probably said $2. Why? Because I didn't really know Game Maker very well. I thought I could only make stupid small games, but after a year of working with it, I got to know it better. I realized that this is a very nice program and it could be used to make very very good games. And I guess I will get to know it better and better.”
1. ARTICLES
10
User Opinion (Continued) Sawyer Studios “I already own the registered version of GM. However, if I hadn’t already registered, I would feel the current price ($20) is about right. I don’t know about you, but I dislike YoYo Games. I feel that they released GM 7 before it was ready, and taken the public view of GM in the wrong direction. If in GM 8, if many new features were added, and all the legal rights about the games were removed, the current price should be raised to something along the lines of $40. This would give the YoYo team better recourses to make GM 8 amazing. If the Yo-Yo team is going to simply repeat the same thing with GM 8 that they did with GM 7, the price should stay the same.” ibintheman “I would probably pay for a one time payment $20, if they went any higher than that i would most likely switch to dark basic because its not that much more than Game Maker.” spacerat “I paid for GM ages and ages ago, when I still thought it was good. Now if I found Game Maker I wouldn't care so much, because I would be using .NET and Blitz Basic. Perhaps I'd pay £5-10 for it if I wasn't trying to save up for a ThereminTheremin, however if I were going to pay more for it, I would want FAR, FAR more access to the underlying workings and more flexibility with the core engine, like Blitz Basic has (it is written in C and C++, and almost all of the source code for the engine is open source, available to browse and edit). I do think, if Game Maker had even one THIRD the flexibility of Blitz Basic, then I would be happy to pay out much more than £10 (I bought Blitz for £40), and so would other people, therefore, YoYo would be using £5 notes for toilet tissue.
10
StopThatGuy “Game Maker, as you all should know, is made more towards simple, less hardware crunching games, and you should also know that for registered version is currently at 15 (Euro) AKA $20 (US). For a program like this, $20 is definitely worth it. Why? Because other game making programs could cost hundreds of dollars, I mean, sure they're better and allow much greater things, but Game Maker also teaches other things that could bring in the money. Example: HTML. GML is very similar to HTML, and when you learn HTML, you can learn more advanced languages like CSS or Javascript, and many webmasters need these knowledges to create a prolific website. So, that was entirely off-topic, but backs up my opinion, I would pay $20 for Game Maker.” Sinaz “This is tricky... As a professional, I am able to afford much higher license fees. 20 USD is very affordable. However, since GM has such limited performance, it is important that the price be significantly less than other alternatives. For instance, XNA Studio is free, though development fees for the Creator's Club is 99 USD per year. I would expect that GM be significantly cheaper to use than that because it does not compile to machine code, and it especially cannot compile to a console platform. With the addition of features proposed for GM8, I think the value could go up, especially with the possibility of compiling for Mac. Perhaps 40 USD would be a limit to my interest to purchase GM7, but if GM8 has many of the proposed features, then 50 or 60 USD.”
On the other had, I'm glad I did buy Game Maker when I did, because I have had some fun times with it. I just don't see it as so much of an awesome thing as I used to, and it's what kick-started me into programming in the first place (before that all I had used is some crappy halfworking BASIC thing on my brothers educational laptop thingy... I must admit that was quite cool at the time).”
X3no “Personally I like the current price of $20 however I would probably pay up to around $50 for GM because I use it almost every day either to develop my games and software or to make small little apps to automate tedious tasks. I really like GM so I would definitely pay more for it if I had to.”
Bathy “I would probably not pay much more than the current price. The reason for this is not just the fact that it's a very high level language, but the fact that there are many limitations placed on the programmer. For instance, there is no typecasting, so we are always stuck with 8 byte double precision integers. I feel that the current price matches pretty well with the substance of the product. Overall, Game Maker is a great product at a fair price. Even though I don't use Game Maker as my main language, I always find myself tinkering with it to see how far I can optimize routines to push the interpreter.”
max_r_61270 “I guess it depends. I've never been willing to pay for the current version, because it never added any really useful capabilities. However, I'd be willing to pay about $49.99 for the Mac version of Game Maker, possibly even more although it would have to be really, really good. The current version could cost no more than $30 before I would refuse to pay for it.” Nijg “Well, I would probably pay $15-$20 because I don't have much money... but probably most people would pay far more... I wouldn't know.”
1. ARTICLES
11
The GM Consortium By Rhys Andrews I had advertised this in the team requests forum and in my signature, but I don’t think the people I am looking for are likely to have a look in those places.
The Idea Throughout the GMC I see many brilliant ideas being formed, and some of them are developed and published. Many however are not promoted enough or do not last very long, and so the ideas are flushed down the toilet. I am interested in producing a consortium of GM experts - particularly the elders of the GMC, to combine our ideas and thoughts how we can: ● ●
●
●
●
Improve the Game Maker Communities Provide enjoyable activities and events for GM users to participate in. Develop and maintain useful resources, such as knowledge bases, tutorials, examples, etc, for Game Maker. Sponsor or Assist ideas made by nonconsortium members in getting the idea put to matter. Develop these ideas, projects, events, etc into one central website or service.
I believe that we can accomplish more for the community if we form such a team that can take ideas and thoughts from the community, plus input their own, and discuss ways in how we can put them to work - as opposed to posting topics providing your argument and making little action. This is not profit-based, let me advise you. Some ideas I have that I am interested in having developed by people employed by our consortium members include: ●
● ●
●
GM Knowledge scripts, etc)
Base
(all
functions,
common
Online Help Desk All known GM DLLs, Extensions, Scripts, Examples, and Engines 'Loud and clear' - Anyone can submit their ideas and suggestions and it will be considered by the consortium.
These are just ideas off the top of my head, and it’ll all be discussed when I launch the consortium.
Skills I am looking for For my board of consortium members, I wish to pick those who have been with the GMC for a long time. They need to be mature and intelligent in the issues they raise
11
and the ideas they have. A lot of experience in GML and Game Maker is strongly recommended, but this is a community-based project more than a technicalitybased one, and so it is not absolutely necessary. If you don’t meet some of these criteria’s feel free to apply anyway. I am most looking for role models of the GMC whom are well known and are looked up to. The members must be willing to devote some of their time to this cause, and though they probably will not need to in the establishment stage, it must be applicable later on. I understand expert website developers, servers, graphic artists, etc, may be required for any projects the consortium wishes to produce for the community - this however will not always be the job for a consortium member. Think of this as the shareholders, who make the decisions and discuss the issues - we then will call up the appropriate professions when applicable.
Interested? Just PM me with your thoughts on the consortium, your history and experience with GM, and anything else you think I should know. When the consortium is established I wish not to be the top of a hierarchical structure, but I feel that this may be required initially in order to establish the consortium properly. If you have any questions, or you're a bit confused, I'm happy to discuss this with you as I understand it may not be clear what my mission is here. Thankyou for your Time
...
2. GMDEV
12
Game Maker Tips Designing an Effective HUD If you don't already know, a Heads Up Display's purpose is to show information that aids the player in completing their goal. That means your HUD has to display information that aids the player in successfully completing their goal. A good and effective HUD doesn't get in the way, and projects as much information as possible unto a small area. A HUD is usually a must have in a game, but it is sometimes tricky to decide what goes and what doesn't.
You may have a HUD in your game but if it has a pointless purpose, does it really need to be in the players' way? For example, under the score you have the mouse's vertical and horizontal position, is it really needed? For debugging purpose maybe, but for the final product that reaches the players, no. Not only is its purpose pointless, but it gets in the players way. Another method to keep the player from being distracted is having certain messages only visible for a short time period. Example, you have one player talking to another in a multi-player game, most likely once they have read the message they don't need it anymore, in which case it is helpful and efficient to clear the message, coding these are quite simple.
12
Even though this may not be the most important aspect in the game, it is always nice to have an effective and informative HUD!
Storing User Settings Storing user settings is very important, because it gives your game a more professional feel and makes players more comfortable with returning to the game. There are two basic methods for storing user data: ini files and registry keys. Sometimes it can be hard to choose between the two, but I strongly recommend that you do not use registry keys. The Windows registry is already way overused and suffers from extreme bloat, and the more bloat it has, the slower it is. The registry is also very inaccessible to users who want to backup or transfer data from the registry. So the logical choice is ini files. There is one common question about ini files â&#x20AC;&#x201C; how do you keep the setting straight for different users on the same computer? Well, you could do one of three things. You could use different sections of your ini file for each user, you could make different ini files in your game folder for each user, of you could have your ini files stored in the user's Application Data folder. Making different sections in your ini file and making separate ini files in the game folder have the same basic pros and cons, so I'll list them together. This is probably the easiest method, but it has several limitations. One is that it usually requires you to ask your user for a username when the game starts, which can be a nag. Another is that the Program Files directory (eg. games with installers) is not writable to a Limited User on NTbased systems (2000/XP/Vista), which could cause some hassle.
Even though your HUD should consist of very helpful info, it doesn't need to be dull. Adding graphics is a must! You wouldn't want to go to a web site that is just text, would you? Exactly the case here! Instead of showing the player's ammo, show bullet sprites, or instead of showing just a gun's name, include a picture of it. This could be compared to a flash web site, or in a case where the text is actually a sprite. Don't skimp out on the small details, spice it up! For example, take the above Need For Speed screenshot, if you look ,there really isn't anything you don't need on there, which means most of the info is important. Not only does it have helpful info, but it is nice looking. Here are some basic guidelines to follow:
The third method is to store the ini files in the user's Application Data folder. This is the most â&#x20AC;&#x153;standardizedâ&#x20AC;? method, and it's what most professional applications use. The problem with this method is that GM can only open ini files that are in the program's working directory. This is easy to fix though; just copy the ini file from the Application Data folder to the working directory and then back again. You'll need to use environment_get_variable("APPDATA") to get the name of the user's Application Data folder. This means that you don't need to ask the user to log in in order to load their personal settings, and you don't have to worry about permissions. I recommend that you use this method.
- Don't use bright noticeable colors unless new data is being shown - Take off info you use for debugging purposes - Try to make it as small as possible yet easy to see - Don't overdo it, if it's not needed, don't show it - If you can't decide if something goes or doesn't let the player choose in the options menu - Use abbreviations when possible - Make your HUD transparent if possible - Don't just have all text, spice it up some!
No matter how you do it, saving and loading user settings is a very important part of polishing a well-made game. It doesn't take much effort, so don't overlook it.
2. GMDEV
13
Speeding Up Game Loading By Bendodge Have you ever downloaded what looks to be a great game, and then waited all day for it to load? It's one of the more frustrating experiences you can give to players, and it certainly makes players start your game less often. So what can you do to reduce that pesky loading time? First and foremost, turn off preloading on almost everything. The only thing you might want to preload are sounds that are used immediately; you can use sound_restore() to load the others into the audio memory shortly before you need them (like at the beginning of a room). The second thing you can do is to use external resources. This is a bit more difficult and also raises security concerns. If you don't care about users having access to your game resources, you can just pack the files into the game's zip. Then, you can load sprites using sprite_add() or sprite_replace() and sounds with sound_add() or sound_replace().
If you are concerned about having any of your resources stolen, I would recommend using a resource loader like TARC that encrypts the files to prevent user tampering. A good resource loader compresses all of your external files into an archive and encrypts it. You then include the encrypted archive with the game, and then the loader can extract the resources as needed. Although it would slow down the loading a bit, you could also pack the file into the exe with the include file function. If you do this, you probably want to export the archive at game start and use the “Free memory after export” option. These are the most effective methods for cutting down on the load time, but they do require that you manage your resources more carefully. However, it's well worth the effort and can even make games run faster. At the very least, you should turn off preloading on your sprites, which is harmless and can really give your game a boost.
You should probably load your resources at the start of a room that uses them. If you want to be fancy you could make an animated “level loading” screen like the ones most professional games use. Also, to protect your best resources, you could keep the ones that you value (like character animations) internal.
Getting Delphi + Your First DLL By Christian Sciberras Delphi is one of the best IDEs, (Integrated Development Environment ex: like Game Maker), for creating Windows™ programs, including dynamic link libraries aka dlls. It is object-oriented, (note Game Maker does teach various aspects of object-oriented design ex: object.x=0) and has a Pascal language construct (again, Game Maker also teaches Pascal: if x=y then begin x=0; y=10; end;);). So the language shouldn’t look too much alien to us Game Maker users. Delphi compiles into assembly programs, making it fast and lightweight, unlike Game Maker which is interpreted. For those curious out there, Game Maker was built with Delphi. Fortunately for us, there is a free and legal version available on the internet, which is Delphi 7 Personal (meaning it is for non-commercial projects). There are two problems with it though; the download size is a mighty 54Mb and Borland doesn’t advertise it anywhere, but secretly (well infamously) hosts it. Further information on obtaining your own registered version of Delphi could be found on Mario’s Valdez Blog, where a link to the Borland site with Delphi’s download is to be found. The installation and registration of Delphi is left up to the reader.
13
Looking at the first dll example in the history of Game Maker, we find the infamous example by Prof. Mark Overmars in the Game Maker manual, which is in Delphi. So we will start by using that sample code for our dll. But first let’s give a quick glance to the IDE.
There is a main menu which gives access to everything, some tabs with components (they work like GM’s D&D, except that they need to ‘Drawn’ on the forms), and some toolbar buttons to give quick access to typically used functionality. On the left side there two tool windows, the top one shows the object tree view, a hierarchical view of the components
2. GMDEV
14
Getting Delphi + Your First DLL (Continued) used and the object inspector, basically, a two column table with component’s attributes (aka properties) on the left and their values on the right.
Important: Delphi does a lot of automatic code generation and manipulation, for example as we saw, the project name changed automatically when it was saved.
To create a new Delphi dll project, run Delphi and click File->New->Other. A window should open displaying all available projects. Select the ‘DLL Wizard’ item and click ‘OK’.
Now let’s look at the Delphi code. First thing we notice is that unlike GM, Delphi, uses ‘{’ and ‘}’ for multi-line comments (GM uses ‘/*’ and ‘*/’). Single line comments still work like GM’s ‘//’. Ignore the warning in the comments; we use PChar not Strings, so just remove the comments to gain some more space. Next, there is the Uses keyword, after this, you define a list of what units you are going to use, just like c/c++’s header system. Each unit is used for a particular purpose, for example, for mathematics, system utilities, forms...
Before we start with the code, we must understand how object-oriented works. There are several keywords you won’t find anywhere else; here are some of them: Form – A Form is simply a window were you could put controls on. Controls/Components/Objects – This is a sort of plug-in code which you could use and reuse, for example buttons, edit boxes, labels... Delphi is designed to work with objects, as such, nonvisible components exist. For example, popup menus are still viewed as a small button like the other controls. Property – This is a sort of control’s attribute, for example it’s left position, ‘Left’, in Game Maker it would be object0.x . Method – This is new for Game Maker users, methods are functions/procedures executed by a particular object, for example: RichEdit1.Lines.LoadFromFile(‘text.rtf’);. As you see, only RichEdit1 will load rtf data from the rtf file (lines is a property showing the rich edit box’s data organized in an array), the actual method here is LoadFromFile(). Basically there are two types of methods: Procedures – These are blocks of code that could not return values. Functions – These blocks of code must return a value. In the editor (the central window) you will find some code created by the dll wizard. Delphi’s code editor colorhighlights your code in Pascal (it has support for 8 languages: c/c++, c#, default, HTML, IDL, Pascal, SQL and XML). It is a bit limited, but I find it to my liking. The editor shows reserved words in bold. The first such word is ‘library’ this shows to Delphi that the project is about a dll. The next word is what the dll will be named. In order to make my explanation more clear, save the project as MinMaxEx. This will automatically change the second word in the project code, which is the project’s name.
14
We need to add ‘Math,’ after SysUtils (note the comma after Math); this is because Min and Max are found in this unit. Note that sometimes units are added automatically, and that you could create your own. The next text is {$R *.res}. This is a compiler directive, that is, when the program is going to be compiled, the compiler does something special. In this case, it is specifying a resource file $R=resource switch, *.res=use all .res files. Resource files contain information like the program icon, version info... It is managed automatically by Delphi and is considered poor practice to change manually as Delphi continually updates it. Next, there is ‘begin...end.’. The code is executed when the dll is loaded, and usually we dll makers don’t use it, all code after the final period is ignored by the compiler, this applies to every code file. So let’s create our first dll function, add the following code before ‘begin...end.’: function MinEx(arg0,arg1,arg2,arg3:double):double; begin Result:=Min(Min(arg0,arg1),Min(arg2,arg3)); end;
The first line of code has this structure: function <name>(<args><arg type>):<result type>; ‘name’ is the function’s name; make sure it doesn’t clash with other functions. ‘args’ is a list of variable names that will receive the argument’s value. ‘arg type’ is declaration that tells what the variables’ type is. ‘result type’ tells what is the function’s result type. First we note the variable type ‘double’, this is exactly what GM’s variables types are. Double is larger then a normal integer. The best two variable types used in dlls for GM are Doubles (for numbers) and PChars (for text). ‘Result’ is a variable created only in functions, which is used to contain the function’s result. Note: the code flow doesn’t end when ‘result’ is used (unlike GM’s return).
2. GMDEV
15
Getting Delphi + Your First DLL (Continued) Min function is declared in the Math unit, and takes only two arguments, so for four arguments, we use two Min functions for two arguments and another Min() for the results. Lastly, we need to make the function public to the dll’s users, thus we need to export the function. This is done by using the exports keyword, so add the following code after the function code:
Now let's look at the Game Maker side; as you see, we didn’t say anywhere what the dll call type is (stdcall or cdecl), so Delphi defaults to stdcall (which by the way is a standard call). So here is our GML initialization code: // Initialize MinMaxEx dll global._MME0='MinMaxEx.dll' global._MME1=external_define(global._MME0,'MinEx',1, ty_real,4,ty_real,ty_real,ty_real,ty_real)
And MinEx script:
exports MinEx;
Implementing MaxEx is left as an exercise to the reader. Hint: When using multiple function names in exports, use a comma inbetween them. Here is a collection of all resulting code so far (without MaxEx hehe): library MinMaxEx; uses SysUtils, Math, Classes; {$R *.res}
// MinEx(1,2,3,4)=1 return external_call(global._MME1,argument0,argument1, argument2,argument3);
Hope you had a good read and hope you are more enthusiastic in next month’s issue, where we will discuss in creating dialogs with Delphi and using them with our dll. Keep MinMaxEx source code as next issue’s code will be built on it.
function MinEx(arg0,arg1,arg2,arg3:double):double; begin Result:=Min(Min(arg0,arg1),Min(arg2,arg3)); end; exports MinEx; begin end.
First Person Shooter Design
By TheMagnitude
Better games are usually produced when the creator designs them with pencil and paper first. All big games nowadays are designed thoroughly before they even begin to code them. In this article i'm going to give you a few hints and tips for how to design a successful FPS (First-Person-Shooter, who doesn't know that!).If you have Registered Game Maker 6.x or you have Game Maker 7 Pro then you have the functionality to create 3D games. This functionality is powerful if used correctly, and makes it possible to create a FPS game. Now not all FPSs succeed and one of the main reasons why a FPS may not succeed is because the developer(s) have not spent enough time actually designing them. A well thought-out plan is usually necessary for any game but I'm talking about FPSs and now I'm going to tell you what makes an FPSs look and feel like a masterpiece. One of the things you should think about is the weapon/powerup balance. You could either choose that all weapons/powerups are equally balanced with their pros and cons, or you could make the better weapons/powerups harder to come by. Usually a mix of both of these points combined works really well, especially when thinking about making your game multiplayer. Weapons/Powerups that are way too strong
15
against other ones when playing multiplayer will most defiantly frustrate other players and may even take the skill away from the game. Moving away from FPSs for a minute Mario Kart DS' weapon/powerup system makes it so the worst players (the ones coming last in the race) will be able to obtain the strongest weapons/powerups, while the winning racers will only be able to get the weakest weapons/powerups. Balancing weapons/powerups in this way removes a lot of the skill in the game because players that are clearly worse will be able to get weapons/powerups to even come first in a race. Choosing to code your FPS' like this would make the game more easy to play, but it would certainly decrease the amount of skill needed to actually emerge victorious. Giving all players a fair chance to get the best weapons/powerups is the best approach in my opinion. Now the levels, or maps, which you choose to use depends on your game type, levels if you want to make a hardcore single player mode, or maps if you want to make a hardcore multiplayer mode, choose both to make it a hardcore game. The difference is this: levels are a form of progression through the game from one to the next linking there predecessor which developers usually tie in a story line to keep the player hooked; a map is simply a very well-designed environment on which there is usually no right way to go. Maps are often aimed at the multiplayer aspect of a game and if you plan to make
2. GMDEV
16
First Person Shooter Design (Continued) your FPS online well-designed maps are key to it's survival on the Internet. Games like Unreal Tournament and Counter-Strike are good examples of this. As I said before about using both maps and levels, have a good intensive single player game and a competitive online mode and it's pretty much a hit before release.
not. It's not as hard as you may think. A few 3D tutorials from ThatGamesGuy should do the trick, his tutorials are top notch. A fully 3D environment gives the game an edge, especially if its a Game Maker game, but not crucial. To conclude this article I'll briefly summarize what you need to keep in your head, an inventive single player mode and a competitive multiplayer mode stirred for 5 months with a healthy dose of graphical eyecandy and a good helping of long nights solving errors, bake for a week and you'll have an excellent professional FPS with the people playing online to back it up. Enjoy but watch out it: may contain nuts.
Maps/Levels that are just 'drawn' in 3D but do not possess multiple z levels are not as invigorating as ones
Tutorial: Loops And Tables By Calle Ekdahl Drawing tables is a good introduction to loops. Maybe someone finds it interesting. What we want to do is to draw a certain number (or uncertain number) of values, one after the other in two columns. Array works best for saving these values. 1) it can take up to 32 000 different values 2) it's a good way to separate and know what kind of value you are dealing with ... look:
value1[0] value1[1] value1[2] value2[0] value2[1] value2[2]
= = = = = =
"Value01"; "Value11"; "Value21"; "Value02"; "Value12"; "Value22";
Then to draw the values: for (i=0; i<3; i+=1) { draw_text(10,10+i*15,value1[i]); } for (i=0; i<3; i+=1) { draw_text(80,10+i*15,value2[i]); } One loop for each column. The x value is constant, since we know where we want each column to start. Then the y value is not constant. We make it such that the space from where the above word has its y value to where the below word should have its y value is fifteen. Thats why the y value of the n:th word is i*15... If you find this hard then you might be interested in my article on for-loops, which you can find in the crashcourse.
Tutorial: Record Scenes By Calle Ekdahl Game Maker has no capacity to really record a scene in your game as a movie clip. The best (the only good) way to have Game Maker records scenes at all is to save positions of all objects (alternatively only the moving objects) and this is how to do that.
//Which objects to draw nr_obj = 3; //How many objects obj_d[0] = object0; obj_d[1] = object1; obj_d[2] = object2; obj_d[3] = object3; And then next thing would be to save their position into
First initialize an array to decide which objects to save the positions of (those objects who are moving):
16
2. GMDEV
17
Tutorial: Record Scenes (Continued) i = 0; d = 0; while(i<instance_number(obj_d[d])) { //Selecting information x_id = (instance_find(obj_d[d],i).x); y_id = (instance_find(obj_d[d],i).y); file = file_text_open_append(object_get_name( object_index)+string(instance_find(obj_d[d],i))); file_text_write_real(file,x_id); file_text_writeln(file); file_text_write_real(file,y_id); file_text_close(file); i +=1; if (i==instance_number(obj_d[d])) { d += 1; i = 0;} } You might want to save other stuff too, like image_single, health, time etc. but this is the basic. It saves the position of all moving object such that you may later recreate the same thing using those variables.
AI Tutorial
Easiest way to recreate it, and by doing so creating a visual replay of an earlier situation, is by adding the same objects as in the real room, to the review room and then in each of the review objects let them read their positions like this (event): y = file_text_read_string(file); file_text_writeln(file); x = file_text_read_string(file); file_text_writeln(file); The tricky thing is in the create event, where we will have to open the correct file. To make this easier we created one file per object and we save them as the object name plus their id. The id was to make the file unique in case there are several instances of the same object. As the different instances in the review room are visually equal it doesn't matter which read from which, as long as two instances doesn't read from the same file. There are several solutions to this, I suppose. The one I came up with is to change the name of the file as it is selected. This will make it unselect able for other instances. So in create event:
By Bendodge
Introduction This tutorial teaches you the logic of a simple AI system for a top-down shooter. Since making a good top-down shooter takes some skill, I'll assume that you know what you're doing. So if you haven't gotten your game's basic movement and shooting down this tutorial probably isn't for you.
Getting Started First, we need to think about what we want our AI to do for us. For this tutorial, we'll make an AI that runs around and tries to shoot the player while strafing keeping his own health above a set minimum. The AI will also have a setting that adjusts the accuracy of its shots. Next, let's outline the environment our AI has to live in. Let's assume you have walls, ammo and health. To help our AI navigate, you need to set up an A* pathfinding system. The A* algorithm uses a grid to find the shortest route around obstacles, and it does this by examining a grid. The result of the algorithm is stored in a path. I recommend that you use the potential step method once
17
the AI is close to the target. I will assume that you can make your own A* algorithm, but I have included a basic example in case you are having trouble.
scr_ai_init() globalvar bot_health; //declare our bot's //health as a global var //A* setup code //init vars bot_health = 100; bot_ammo = 25; (You'll need to integrate bot_ammo into your shooting system.) Now that you have your pathfinding set up, we need to decide how we want to design our AI's brain. We'll use a variable status to indicate what the bot's current objective is. The status actions are arranged by priority, with 0 being the lowest and 4 being the highest. This code should be in the initialization script.
2. GMDEV
18
AI Tutorial (Continued) //status variable //0 means doing nothing //1 means finding the enemy //2 means engaging the enemy //3 means looking for ammo //4 means looking for health status = 0; //the bot starts doing nothing
scr_ai_brain() Now let's make a main script that is run on a repeating alarm or when certain events trigger it. The script will check the bot's priorities and current environment to see if the status need changed. I'll leave the movement up to you, since there are so many different ways you could have implemented your movement. //scr_ai_brain var cenemy; //closest enemy cenemy = instance_nearest(x,y,obj_enemy); if status == 0 //if doing nothing { if bot_health < 30 then {scr_ai_health(); exit} else if bot_ammo < 10 then {scr_ai_ammo(); exit} else if point_distance(x,y,cenemy.x,cenemy.y) < 100 then {scr_ai_engage(); exit} else scr_ai_find(); } if status == 1 //if finding the enemy { if point_distance(x,y,cenemy.x,cenemy.y) < 100 then scr_ai_engage(); //adjust distance // as needed //some sort of stuck movement checker here else {exit} } if status == 2 //if engaging the enemy { if bot_health < 30 then {scr_ai_health(); exit} else if bot_ammo < 10 then {scr_ai_ammo(); exit} else {scr_ai_engage(); exit} } if status ==3 //if looking for ammo { if bot_health < 30 then {scr_ai_health(); exit} } //nothing is needed for status 4 //reset alarm here You might notice that several scripts are called here. Specifically, scr_ai_find(), scr_ai_health(), scr_ai_ammo(), and scr_ai_engage(). We'll outline these next. I won't give you these scripts in detail; we'll just cover the concepts.
scr_ai_find() Here you will need to use instance_nearest() to find the nearest enemy player and make a new path to the
18
enemy's location. The brain script should change the AI from “find” to “engage” mode when the bot is somewhere close to the target. If it doesn't, you may need to shorten the repeat timer for the brain script.
scr_ai_health() In this script you need to use instance_nearest() to find the nearest health powerup, and then compute a new path to get to it. The AI's brain should still be running on its timer. You'll need to add to the bot_heath variable in the collision event with the health object and then call the brain script.
scr_ai_ammo() Same idea here; you need to use instance_nearest() to find the nearest ammo powerup and then compute a new path to get to it. The AI's brain should still be running on its timer during this. You'll need to use to the bot_ammo variable in the collision event with the ammo box and then call the brain script.
scr_ai_engage() Ok, this one will be a little more tricky. What you want to do is use the choose() function to choose between strafing or shooting at the enemy. Obviously, you will want there to be many more chances to choose shooting than moving. The shooting should be done with a bit of randomization. Here's an example: //random shooting accuracy var cenemy, denemy; cenemy = instance_nearest(x,y,obj_enemy); //the //nearest enemy denemy = point_direction(x,y,cenemy.x,cenemy.y); //direction of enemy randomize(); denemy+=random(20); //lower this to change //accuracy randomize(); denemy-=random(20); //lower this to change //accuracy
Conclusion So the overall idea is that your AI frequently runs a priority scripts and takes action based on its environment. Here are some things you need to watch out for and tweak: 1. Your A* implementation. This is a whole different subject, so I'm leaving it out of this short tutorial. The included example can help get you started. 2. The repeat interval of the AI brain script. 3. scr_ai_engage() needs to have good balance between moving and shooting. 4. Adjust the priority triggers to suit your game. I hope that this can help you jumpstart your game's AI, and I'll look forward to playing it!
2. GMDEV
19
Pixel Art Tutorial
By Hiyukantaro
Platform I've been looking at what kind of games you people on the GMC mostly make, and found out that many of you are very fond of platform games. Therefore, I decided to make a tutorial that will help you make a nice platformer graphic, the platform itself. I've been playing some of my old video games (on my SNES!), to give this platform a little classic nintendo look. It came out very nice I must say. The platform you will be making will be in the jungle theme. Before working: For each step, you can check the corresponding picture as reference. Let's start. 1. Make a rounded rectangle-like shape. I used 2 long horizontal lines, and 1 pixel between the vertical and horizontal line. If you decide to make a thicker floor, use some more pixels in the corner.
2. Draw some vertical lines, varying in length, to show where plants will be hanging.
3. Use a medium green colour to draw around those lines as if you are winding an iron thread into a spring.
4. Now, take a darker green and go over some of the black pixels that still haven't been covered by the medium green. (Warning: don't cover ALL black pixels, as that will make it look pretty ugly)
19
5. Take a very light green colour (Which I would advise not to use for normal stuff, it's awesome for this) and colour the remaining black pixels and a little bit around to give it an extra touch. Also, use all three green colours to cover the bottom of the platform, as the plants are growing from there.
6. Use four colours of brown to make the platform look as if it had been cut away from a tree. Use the darkest of your collection only to colour some spots at the sides. Use the little lighter brown to colour inside it. Go on with the other two colours, then use the second darkest colour to dither in the center and around. (Shown on the reference picture)
And there's our final product. I hope you have enjoyed doing this tutorial, hope you have learned from it too. Keep on practising with the techniques you have used so far, and you will be able to make some great graphics for your games.
...
3. GAMES & REVIEWS
20
Follow Up Review Starboard: The Final Front 8.1 Created By: Mgamerz Productions Reviewed By: gmjab It's always good to go back and have a look to see how far a game has come since we previously looked at it. This issue we are having a look back at Starboard: The Final Front. Our previous review can be found back on page 8 of issue 3 if you want to have a read. Instead of just talking about it's updates, I'm going to give the game a new review. First up, let's take a look at the graphics. When I first started the game it's hard to miss the loading splash screen. As was mentioned in issue 3 the loading bar looks silly because of the words “Loading enemies” and “loading guns” etc.. Removing these words will make the game look better. The next screen to appear is another loading screen that I think can be removed, The second loading screen is good for informing the user about what the controls are but when the game is complete it should be removed to give it a professional look. The next two intro screens don't really need improvement besides the 'BGM' sound intro words which are barely readable. Now the menu still needs a little work on the text. I found the text appeared below ship explosions and the health status on the right was hard to read because of the colours. As far as in-game graphics go, I found all the graphics to be consistent throughout the game even though a lot of the sprites came from resource packs. As also pointed out in the previous review, the game lacks visual effects. Even though this game keeps and old-style look, it will definitely benefit from some effects such as an explosion glow. Again in the game I found the ships and explosions were above the text. The graphics are very colourful and sometimes there are too many colours. Finally the game's graphics would benefit from multi-layered star backgrounds to give space some 3D-like depth. Overall I think a decent effort has been put into the graphics. There isn't a lot to say about the sound besides the need for more sound effects for shooting and explosions. I also found the midi music annoying after a while so an option to turn it off would be a great feature to add. Apart from that, everything works well in the sound department. Last but not least, what's the game play like? Well gameplay is definitely a high point for this game. I found the controls easy to use and the game flowed without lag. It is almost impossible to kill all the ships and avoid bullets. Luckily bullets don't do a lot of harm to your ship. However I didn't like it that when you lost a life you restarted the level. It was very annoying and can make you lose interest fast. But nevertheless good work on the gameplay. Overall it's a good game that still has some issues that need to be fixed, but I think with yet more work we could be looking at an excellent classic GM Game. Nice work Mgamerz Productions.
20
3. GAMES & REVIEWS
21
Previews Huhnahpu: Memory of the Sun Created By: correojon Reviewed By: Medieval Hunahpu: Memory of the Sun is a platform game that contains some hard puzzle elements mixed with some quick response game play, creating a nice and enjoyable game. This game is very well presented, using pre-game scenes, a nice menu, cut scenes, etc. and makes it worth trying when you download it. All in-game graphics are very good-looking too, as they are more than single 32x32 squares like many other games. I haven't played any further than the first world, but I can tell from some screenshots that the graphics will only become better in the next worlds, meaning that the creator really did a good job on creating them. Of course, as the graphics got me hooked, I got to try out a part of the very fun gameplay, which kept me playing. As stated earlier, there are a few parts in the game that you need to think hard about. Even harder are some of the parts where you need to respond as accurately as possible as you jump through narrow spaces, avoiding spikes, hitting spring, and running on falling blocks. Even though this game is as tough as it is, it doesnâ&#x20AC;&#x2122;t frustrate you enough to quit, which is good. The sounds and music are a nice fit to the game and its graphics. They are clearly noticeable, but are not annoying enough to make you turn down your speakers. The creator has made or picked out some very good music which does not disturb you whilst playing. I have come to the conclusion that this sure is one of the better games that have been made with GM, and itâ&#x20AC;&#x2122;s definitely worth a play.
21
3. GAMES & REVIEWS
22
Reviews Battle City 3D Created By: kbyoyoa Reviewed By: Polystyrene Man Here’s another 3D tank fighting game reminiscent of Battlezone. The graphics and sounds are appealing, but the game itself is predictably bare and much too difficult. I had a good feeling going into this game: The menu was intuitive, the background music was fitting, and the graphical style was pleasing. The effects gave it a very retro feel, which was both nostalgic and enjoyable. Even at the start of the first level, I was excited. The game seemed to function well and had a very “smooth” feel to it, but when I actually started playing, I was disappointed. The game is too hard. Now, the difficulty has nothing to do with the level design or the number of enemies, but rather the controls and the manipulation of health. Sure, it is hard to make an easy-to-control 3D game, but Battle City 3D does not manage to alleviate this problem. In particular, aiming with the mouse is both clumsy and slow. It is not reasonable to try shooting behind yourself, because the view does not adjust in a way that you can see what you’re aiming at. The camera always points ahead. This, coupled with the buggy collisions, makes it hard to navigate about the playing field. One of the most frustrating aspects of the game was the way health was calculated. The enemy always seemed to deal more damage than myself. It may have been that health was taken away in random amounts, but I always seemed to go down in less shots than my opponent. That’s not to say the game was all bad. The background music and sound effects were very fitting. The graphics were nicely done (minus some gradients and a few of Game Maker’s built-in particle effects). The setup was clean, and the controls were mapped out well (despite not being so great onscreen). This is a game that one could jump right into - there’s no need to read instructions or go through an extensive tutorial. The concept is simple: Shoot and kill the enemy before he kills you. That said though, the game (as far as I saw it) had few surprises. There’s an upgrade shop and unlockable levels, but none of these manage to put anything new on the table. With the gameplay polished up a bit and new elements added, Battle City 3D could prove to be a very enjoyable game. It already has the framework for a successful 3D game; all it needs is some debugging and a reworked control system.
22
3. GAMES & REVIEWS
23
Reviews The Adventure of Hank VanSail Created By: Ulrik40 Reviewed By: Polystyrene Man There’s something about Hank VanSail that I really enjoyed, but I can’t quite put my finger on it. It must be the innocence of the game. Most likely this is one of Ulrik40’s first games, but it is fun nonetheless. From a technical standpoint, the game is rather clumsy. One of the most glaring bugs is that the character, Hank VanSail, does not move to the contact position upon landing on a platform. Another obvious problem is that the speed of some objects relative to others is off - I could outrun bullets but didn’t stand a chance against arrows. Also, when Hank VanSail meets his untimely death, the game doesn’t respond. It’s up to the player to click on a dropdown menu and return to the menu screen (don’t press the escape key or the game will end instantly). Also, the game would have really benefited having variable jumping. Not surprisingly the game suffers from the same bugs as many peoples’ first games do. Behind these bugs, however, lies a fun game. The graphics may seem sketchy and low quality, but the style is consistent throughout the game and they work nicely together. I found myself chuckling in a few places (or more specifically, when I saw the pirate mouse holding a gun). I wouldn’t call any of the graphics ‘eye candy’ necessarily, but they were nice for what they were. The background music – all MIDI tracks - is nothing to complain about either. The music and the sound effects are all appropriate for the game, though nothing is particularly outstanding. I noted that in places where the same event happened simultaneously multiple times (for example, when numerous arrows were shot out of the wall), the volume was much too loud. As an exploration game, The Adventure of Hank VanSail has good level design and is an appropriate length. That is, the save points are realistically spaced and there is a good learning curve. I played into the third level and was impressed to see new elements consistently being added as the game progressed. This kept the game fresh and created an interest in future levels. That said though, nothing is entirely ‘new’. The obstacles are the same that you would find in any other platform adventure game. A little more originality would have been nice. The Adventure of Hank VanSail is good for a play or two. The bugs are not so much gameplay-limiting as they are annoying, and the graphics are the type to put you in a good mood. Ulrik40 has clearly put a good deal of work into his game, and it has paid off.
23
3. GAMES & REVIEWS
24
Reviews Yabog Created By: ricke Reviewed By: Polystyrene Man The name does the game justice: Indeed, this is “Yet Another Breakout Game”. In ricke’s “Yabog”, the classic game has received a graphical makeover, but it suffers from the common shortfalls of a Breakout-inspired game. The only Breakout game I was ever truly addicted to was the original version. Since then, I have played numerous replicas and been unimpressed by most. Yabog, however, does manage to bring new elements to the table: Tied in with a number of power-ups are bricks that shoot, slide, and fall. Many of these special bricks are hidden, thus creating an element of surprise when they are uncovered; it is an interesting twist on the classic gameplay. The most surprising power-up (if it can really be called a power-up) made the ball create a trail of bricks as it bounced around the screen. These unique additions kept the game from being a total cliché. The graphics in Yabog are beautiful - crisp, clean, and consistent. If anything, this is what caught my eye and made the game more enjoyable. The groan-factor set in when Game Maker’s built-in particle effects illuminated the playing field. One might argue that they at least fit with the graphical style of the game, but on the other hand it would not have been difficult to make some more original (and fitting) effects. In contrast to the outstanding graphics, the sounds were atrocious. There are plenty of freeware sound effects on the Internet, but Yabog instead uses the default freeware effects that accompany Game Maker. The background music wasn’t necessarily bad, but it could have been better (and more varied - I only heard one track in the few levels that I played). The title screen was lacking any sound at all. In short, a game with sound is better than a game without, but Yabog definitely could have made use of some better effects. Apart from the new elements mentioned earlier (the special bricks and the power-ups), the gameplay is unfortunately all-too familiar. It plays just like Game Maker’s Breakout example. The ball takes too long to speed up, and I did notice at least one occurrence of the ball traveling through a brick instead of bouncing off. The physics were altogether too reminiscent of the breakout example. In terms of Game Maker-created Breakout games, Yabog is one of the better ones. There are a number of surprises, especially in the later levels, and the graphics are quite appealing. It’s a shame that the game suffers from the common shortfalls of most Breakout replicas, and that the sound is so detracting.
24
4. EXTRAS
25
Interview With: Sinaz GMT: Tell us a bit about you, and how you found the software GM? SNZ: “I discovered Game Maker around late '05 looking for a program similar to Corel's Click and Create products. I didn't really know what I was looking for at the time, just something simple to prototype in.
I got to stick my fingers into projects like Saints Row and Stuntman 2 and a few aborted spin-offs of major THQ properties.
I was really fortunate to have found Game Maker. It turned out to be a valuable asset in my development as an indie game programmer (and helped with presenting some of my professional ideas.)”
GMT: While working as a Graphics Artist, did you find it stressful? SNZ: “Yes. Being in the industry is stressful. Deadlines are killer because you tend to deal with a lot of finicky supervisors at the publishing level who like to change things just so they look important. I think it's a problem with all corporate beasts. But when you are dealing with such a time-intensive process, last minute changes mean spending weekends at the office with no sleep.
GMT: How did you get involved in the company you use to work for - Tell us a bit about that? SNZ: “After I graduated from The University of the Arts in Philadelphia, PA, I travelled to Los Angeles to get a job. As I like to tell people, I pretty much arm-wrestled the president of a small independent developer for a job. This was Mass Media, Inc. At the time they were working on a few projects for NAMCO and Fox Interactive. I had gone to Los Angeles ready to speak with a few companies like Westwood, Liquid Entertainment, and I forget who else. It was a nightmare because some of the companies decided they didn't need to meet me anymore, nearly wasting all the effort and capital I had invested just getting there. I came to Mass Media in a time when they needed to expand, and I won over the job with my interview. So, never underestimate the power of a good interview.” GMT: What role did you play at this company? SNZ: “I came on as a junior artist. After about a year and a half, we acquired an art director from another company that had just collapsed. At that point, I began training up to be a lead. When it came time to promote, I had the opportunity to go into Lead Artist (managing a team of artists) or just promote to Senior Artist (more art responsibilities, learning new technology, and training others.) I chose to promote to Senior Artist because I couldn't maintain the hours of a Lead Artist due to my commute. I left Mass Media ten months after THQ acquired them. My duties had always been a mix of concept design, asset creation, and art support. I was also a particles and effects expert and helped to design effects for games as well as a tool for implementing the particles into the engine (as a consultant... I didn't actually make the tool.) Basically, I had to figure out how to make things look as cool as possible within the limitations of the engine.” GMT: What where some of the titles that you worked on, as a Graphics artist? SNZ: “At first, Mass Media was stuck in this rut where we made a bunch of kiddie party games. Pac-Man Fever for PS2 was my first title. We did a bevy of party games that were all pretty much the same, just with different graphics. The last year with THQ had been pretty exciting. Though most of the work was porting from system to system,
25
I also got to work on Tetris: Evolution for Xbox 360. Yay, Tetris!”
I imagine even at companies like Bungie that the stress can feel overwhelming, even though you are working on a game you love to play. It's just that the pressure from the people signing your paycheck can be pretty unsympathetic and give you Herculean milestones to meet.” GMT: Do you spend hours in front a computer, what type of environment were around you? SNZ: “I pretty much spent the whole day in front of a computer, though, as an artist, I did a lot of drawing with pen and paper. The computer was still on my desk though. Game studios in general tend to be like grown-up playgrounds. We had a gym, arcade cabinets, table games, and what not in our studio. We even had an HD projection theater system in the office where we'd watch movies projected up on the inside of our offices wall (it's a converted warehouse... so think really high ceilings and lots of open head room). And I've seen from visits to friends' studios and word of mouth that pretty much all game studios tend to have plenty of nerdy recreation behind their doors. We had giant star wars cardboard model droids protecting various corners of our studio as well as an armory of Nerf guns at our disposal. Professional game designers need a lot of outlets for their stress.” GMT: How flexiable is doing this sort of job? SNZ: “On the day by day sense, it's pretty flexible. You work in whatever you feel like wearing. I've worked in pajamas before. You can often make your own hours so long as you are getting your work done, though teams often try to stick to a similar schedule so communication can occur. In terms of holidays. Well, the video game industry in the US is ultra-competitive. At THQ, we got 2 weeks vacation, one of which you take during Christmas. So, in reality, you get 1 week. My boss rarely was ever able to use his vacations.”
4. EXTRAS
26
Interview With: Sinaz (Continued) GMT: Tell us a bit about the new Game Making company your starting up? What do you we expect to see from you? SNZ: “I can't tell you too much. I still have to register the business name with the state. Basically, I'll be producing my own independent games for PC and Xbox Live Arcade. At first, I'll be developing in Game Maker, but at the same time, I'll be learning to produce games in XNA or Torque X. I firmly believe I could make viable commercial games in Game Maker, but I need the portability to Xbox 360 to meet my goals. My first game will be rather safe with a built-in market appeal. Basically, I need something that can provide me with a source of profit and income. After that, you'll be seeing innovation from me on the pocket-games for hardcore and casual gamers. I currently have slated for my second project, a game based on an evolution of my rEVO engine (that powers my game Asteroids rEVOlution.) I have no shortage of ideas, but I have to be careful to select projects I know I can complete.”
GMT: Can you tell us some things that we should all think about, before thinking of taking our Game Making hobbies, into professions? SNZ: “Make sure it's what you really want to do. Some people get by making hobby games in their free time and that can be great. Actually making a profession out of this takes a dedicated person. If you want to be an artist, go to art school, if you want to be a programmer, go to a computer science school. Make lots of friends who can support you with skills you don't possess if you decide to go independent. Most of all, just understand that it takes a lot of hard work before you fully realize a game worth playing.” Sinaz Today: “I am now President, CEO, and sole employee of More Bit Entertainment, Inc., a privately shared company of California. I am aiming on releasing my first commercial game in March, currently being developed in Game Maker v7, but may be ported to C#/XNA/Torque X for release to a broader audience on both PC and xBox 360.” Links: Massmedia THQ Asteroids rEVO
Quick Interview: Mailas GMT: Firstly, could you tell a bit about yourself? MLS: “I'm an outgoing person and enthusiastic. Hard working too.” GMT: When did you start GM, and how did you find out about it? MLS: “I started GM in 2003, and found the forums in 2004. I found out about game maker from a friend.” GMT: If any, who are your role Models at the GMC? MLS: “I guess one of my role models would be E Barroga since I learned a lot from him.” GMT: What are your favorite games that are made with GM? MLS: “My favourite games would have to be Slime Online, Scapade (fairly new actually), and the Super Mario bros. 3 engine” GMT: How many projects have you started and made? MLS: “Ive started at least 7 projects, finished only 2.” GMT: I know you are currently working on your latest game, called Goomba Online. For people who don’t know what it is, could you tell them what it is about? MLS: “Goomba Online is about you (the goomba) interacting with other Goomba's. Right now all you can do is explore, collect coins, pick up swords, buy outfits, put outfits on and off, and just enjoy some of the sights.”
26
GMT: When did you first get the idea for making Goomba Online, and what inspired you to start it? MLS: “The idea just came to me. I wanted to make an online game after seeing BlaXun making slime online, also out of interest.” GMT: During the making of Goomba Online, if any, what breakdowns or problems did you face? MLS: “I faced a lot of online errors and bugs because I have never used 39dll before I made this project, and it was hard coping with it.” GMT: What are you thinking about adding into Goomba Online in the future? MLS: “Possibly something that would interact better with other people, arena battles, team explore areas, etc.” GMT: That’s all for now. Is there anything else you want to add? MLS: “Just to have fun when you play the game.”
4. EXTRAS
27
Comic
27
4. EXTRAS
29 28
Take A Look
28
4. EXTRAS
29
Closing That's a wrap for issue 9, we hoped you gained some points to remember throughout the issue. Our next issue will be a special issue for GMTECH and you. Be on the lookout for issue 10 and check out some of the content that will be included, below. Please send all your comments into us or contact us on the forums to get a quicker response, as we have a large staff base, which are all willing to answer your questions.
Next Issue: -
Make your own Programming Language in GM Tutorial How to stay motivated Producing Better Game Graphics Exclusives Resources And much more...
Feedback Good or bad, we value your feedback. Your feedback lets us know how we should improve to satisfy all the Game Maker users. Your feedback can be about (although not limited to) articles, reviews, gm tips or the magazine in general. You can leave feedback in either our GMC topic or on our forum.
Submit to us Yes, we at GM TECH will take almost any submission for a chance of it being published in the next issue. To submit to the magazine, simply go to our forum and submit in the â&#x20AC;&#x153;submitâ&#x20AC;? section, registration is required and you will get a fast reply by one of our friendly staff. If you're not sure what to submit have a look at the example list below:
29
-
Games Programs Screensavers Exclusive information Interview requests Desktop Screenshots Creations to be reviewed Reports/News Articles Letters Shout Outs
We only ask that you submit content that you have permission to. Do not submit things that are not your own unless you have permission of the owner and do not submit illegal content. At GMTECH we take submissions seriously and we will do what it takes to keep our forum clean and friendly.
Creative Commons The Game Maker Technology Magazine is licensed under Creative Commons license. This means you are free to copy, distribute and transmit the work. This work is for Non-Commercial use only. You are NOT allowed to alter, modify or build upon the work contained in the magazine.