Useful Tips and Methods for MMF Users! (New/Experenced Alike)
Author: | Silveraura
|
Submitted: | 25th November, 2005
|
Views: | 6875
| Rated: |
|
|
Alright, I'll start off by stating that almost everyone who uses or used MMF, TGF, or CNC, can honestly agree that when they first started out, they were very messy. This is because they were learning how to use it, how everything worked, and so on. After a while how ever, alot of people tend to move away from the messy eventing and start getting into methods of cleaning everything up. Some people still have a hard time doing this how ever. My main goal here in writting this article is to help people like that, and provide useful tips for new MMF & experenced MMF users alike!
Naming Everything!
Ok, first things first, when making something in MMF, I dont think many things can be more helpful then naming almost everything you make. This includes frames, objects, alterable values, global values, everything! You have the ability to name them for a reason! It seriously breaks up confusion and allows you to continue working without jumping back and forth between windows, trying to remember what was what. Dont rely completly on the little pictures, or remembering that Alterable Value A is something, and Alterable Value B is something else, because eventually whats going to happen, is your going to start losing track, and find yourself guessing and/or spending minutes, or even hours, of valuable working time, trying to find out what's what, by checking back in your events! Save yourself alot of work, and name everything, it will pay off in the long run.
Grouping Events!
A wonderful feature in MMF is the ability to group events. Again, naming every group you make, this will save alot of time on finding what you need to find, because you can easyly keep your events into sections, rather then spreading them all over the place, or creating event after event as you need them, with absolutly no order kept in them at all! A great method of grouping, which I use myself, would work something like this:
Player Movement:
All the events in this group, would handle how the player moves, and all the special little details and such, to avoid the player from getting stuck and so on.
Level Properties:
In this group, you can handle things such as music, or setting variables for particular objects in the level.
Weather: (If you have any.)
Alot of times if a game has weather, its a good idea to keep it nice and clean, so you can easyly change or tweak it to perfection, expecially if you have some people testing it, and they dont like something, its easy to change.
Other:
If you have alot of small events that do alot, and you cant afford to remove them, but there arent enough to fit into a nice large group, why not make a group for all of them?
Constants!
Not sure what they are? Not sure if they would make any use? Well get ready for a shock. Constant values can make and absolutly amazing experence as far as ease and simplicity in your events.
What are constants? Well in MMF, constants can be something as simple as a counter, that marks a number you will be using alot for a single thing, for example:
Your making a grid system that uses 32 by 32, and you have to make the player move in all 4 directions, using the 32x32 grid system, but to do this, you need 4 events, 1 for each direction. Well once you get done doing this, no big deal, but suddenly you decide. Maybe a 16x16 grid would work better! Now you have to go in, and change every single event, from 32, to 16.
This task alone, can be very annoying, and I think that unfortiently, alot of people will know what I'm talking about here. In the same example how ever, I am going to show you a great method to fixing this time wasting problem!
Your creating grid movement, but in addition, create a small counter, then in the start of the frame, set this counter to 32. Now when you make all 4 directions, dont use the number 32, use the line: value( "Counter" ) Now if you need to suddenly change the grid system down to 16x16, rather then having to change it for all the directions, now you only have to change the 1 event, in the start of the level, change it from 32 to 16! The rest of the game will run directly off of that!
This is an amazing method for almost everything that requires alot of complex events. Things such as gravity, speed, acceleration, and in this case, grid movement, are all great examples of how this method can be used!
(HELP!) Wait a second, what happens if suddenly you find yourself needing to use that value, as a negitve, rather then a positive. In our grid movement example, in order to move left, or up, you needed to use -32 or -16, rather then just 32 or 16. This is very easyly fixed. In addition to the: value( "Counter" ), just add * -1. This will take the value of the counter, and multiply it by negitive one, and changing it to a negitive. The math used in this is as fallowed: 32(-1)=(-32), or in our counter case: value( "Counter" ) * -1 will give you the results you need.
Alterable Values and Flags?
What are the point of alterable values of flags, many would ask. Well long story short, here is the best way I can explain them:
Alterable Values are built in "counters" if you will, that are attatched to every single active object in the game.
Flags are true and false plugs, placed on every single object, that can be marked on or off.
Now what is the big deal with alterable values and flags? Well one thing is, they make for a very clean frame, because you dont need to use a load of counters, to keep track of an object, but where these 2 things work there magic the most is, that they are independent to that object alone! So for example:
You create an active object, we'll keep its name Active. This object by default has an alterable value of 0, but lets change that to 10. Now lets create a copy of the Active object. Now we have 2 objects, they are copies of each other, to according to MMF they are the same object. If you edit one, the other is changed too. Lets try something out though, lets take another object, and make it overlap 1 of our active objects, but only 1. Now we create an event, if our object is overlapping our active object, subtract 1 from its alterable value. As soon as we run this game, our object will rapidly start losing points, and go into the negitives, but only the active object with the other object, overlapping it! The other active object, though a complete copy, is still at alterable value 10!
Why is this useful? Well things such as health, armor, X & Y positions, and so on, can make extreme use of this! Expecially if you have alot copies in the same frame!
Flags are the same way, each object has its own set of flags, even if they are copies. A create way to work with flags in my oppinion, is direction. One example I'd like to use is Diamond: Revolution. The ball moves up and down automaticly, how this was done was, the ball had a flag, if the flag was on, the ball moved down, if the flag was off, it would move up. If the ball smacked anything on its way down or up, it would toggle the flag, causing the ball to move in the opposite direction!
Comments
The good ol' comments. They are so useful, yet so unappreciated!
What are comments, well in MMF, comments are basicly lines that take up event spaces, and allow you to write what ever you want in them. This is a great way to keep track of things, or discribe how something works maybe for an example, or incase you need to look back at it later, and rather then trying to study how it works again, you can read your comment, and instently know how it works right off the bat. Comments are truely very useful, and though I cant see the open source of many games I play on DC, I think I can honestly say, not many people use them.
Locking Objects
Another great method of keeping things clean in your frame, expecially if your not going to be using them once they are placed down. This is a great way to keep things from crouding up the place, when you go to click on an object. I dont think many things can get more nerve recking, then when you try to click on an object and end up accidently clicking on another, expecially if you have a backdrop in the back. A great way to keep this from happening is just lock things like the backdrop, and then you wont be able to touch them unless you go out of your way to unlock it!
Additional Tips
When you create strings, unless you plan on editing them while the game is running, through events, its a good idea to make them active objects or backdrops, expecially if they use a font that the player might not have on there computer, otherwise, it will show up as Arial.
Use backdrops as often as you can, expecially for things like level design and such, because it will speed up the games performence alot. They may not be editable by runtime, but they seriously free up alot of stress on the game.
If you want your game to look your best, avoid keeping the Windows look intact. This means custom buttons, and scrollbars. This is easy, if you take the time to learn how.
Avoid using the default movement in MMF at all costs, this is in many cases, your worst enemie, expecially if you wish to have a nice smooth and bugless experence. Custom movement might have a higher chance of having bugs, but in the end, YOU are the cause of these bugs, not MMF. So they CAN be fixed. In most cases, the bugs in the default movement, cant be fixed, and will cause alot of issues in the final project.
Make sure you check out the window properties for your game, there are alot of useful options in there, including No Thick Frame (keeping people from resizing the window), No Maximize (keep people from maximizing your game), and for full screen games, Change Resolution Mode (Makes the game change the screen to the resolution of the game, so that its full screen, but it doesnt have to stretch the game out, and cause alot of performences issues.)
Global Values are your friend, they can be used to transfer many different things over frames and can be very useful!
You can easyly create save games or data that you want to use, after the game is closed, through INI's or the Save Game Object, but if your worried about people changing it without the actual game itself having control of it, you can use extentions like Blowfish, to encrypt & decrypt the information, and keep sticky fingers out.
Avoid using wav files as music, they can get very large, instead, try midi files, or for high quality music, MP3's or OGG's, but wav files should only be used for sound effects.
The active and background system objects are great for things such as paralax backgrounds and can even be used as Strings, with alterable values! They work great for custom buttons, with text that can be changed through the games runtime, they can also be used as speech bubbles in your game.
Anyway, I hope you enjoyed my article, just remember. The key to creating a great game in MMF or better yet, almost any other program or program language, is simplicity. Keep things easy on yourself! It doesnt have to be hard, it can be a great experence if you make things alot cleaner and easier to work with.
On that note, if anyone else has anything to add, feel free to comment.
|
|
|