Gw Temp

Menu

Tutorial - 'Less Image Lag Trick' by IceSage

An item about RPGMaker 2000 posted on

Blurb

IceSage shows you an interesting trick to circumvent the looped "Show Picture" lag.

Body

Less Image Lag Trick
Tutorial Difficulty: Novice


Hello! You may have seen me in such tutorials such as, "Time Travel / Teleportation Effects" and... erm... Well, actually. That's all... erm, wait... maybe there was another... having to do with teleporting.. Erm.. oh well.
Anyway! Today I have a short, and simple tutorial which has NOTHING to do with Teleporting... but in fact, it has to do with a neat little trick on how to lessen the lag on your games when using images! BY THE WAY, while I'm writing this it's like... 7:45am in the morning... and like... I haven't slept in two days... Erm.. what does that have to do with anything? Erm, it doesn't... Now then! FORWARD WE GO!

So, first you wanna open up Rm2k or Rm2k3!
Go into the Common Events, and do the following as a practice... later, you can just easily incorperate this technique into your game with whatever custom menus or images you have setup!

Now then, Create a Wait event at the beginning... it's a very SMALL wait event, like... 0.2secs! Now then, what we need to do next is memorize the place your hero is in. We only need the map, but since you need to set variables to the X and Y co-ordinates... just use 1 variable for them both.. to save variable space.

Now, you want to make an IF statement, (Fork Statement) making it check an extra variable to compare with the map. So... we'll call it variable 3... and let's say the map is variable 0001 and the X and Ys, which aren't used... are 0002.

So, make the if statement check if 0001 is equal to 0003. Leave the if statement blank, but in the ELSE case, that's where you put all your picture information! However, before or somewhere stuck in the middle of it... you want to change the variable 0003, so that it matches the current map you're on! So, just change the variable 0003 to be SET (equal) to 0001!

So, basically... If 0003 = 0001 (Which basically would mean, the pictures are being shown...) then DO NOTHING (which is good, because we don't want it to do something if the pictures are already shown.) ELSE if 0003 does not equal 0001 (Meaning, if the pictures ARE NOT shown) then show them... and then change it so they aren't to be shown again until the variable changes again!

The way the system works is, very simple... RPG Maker checks for where you are every couple of seconds or milliseconds... then... it checks if the map changed or not. If it did, then it re-shows the picture. If it didn't then it does nothing but loop nothingness until the map changes!

Anyway, here's a short example code:

<>Wait: 0.2 sec {Waits a couple of seconds}
<>Memorize Place: Map[0001], X[0002], [0002] {Memorizes where you're at. The X and Y variables don't matter, we're only looking for the map.}
<> If Var(0003) V(0001) (=) {Checks to see if Variable 0003 matches Variable 0001 (Current Map), if it does, it does nothing.}
-<>
:Else Case
-<>Change Var: Var[0003] (Set) - Var[0001] {If 0003 doesn't equal 0001, you must have switched maps. Here, it sets 0003 to be the same as 0001, so the pictures only get shown ONCE.}
-<>If Switch(0004: Image 1) is ON {These 3 show the images I want.}
--<>Show Picture: ID:1-Image1-(300,20)
--<>
-:End Case
-<>If Switch(0004: Image 2) is ON
--<>Show Picture: ID:1-Image1-(300,20)
--<>
-:End Case
-<>If Switch(0004: Image 3) is ON
--<>Show Picture: ID:1-Image1-(300,20)
--<>
-:End Case
-<>Wait: 1.0sec {Waits another sec, you can change this to a lower value, or delete it entirely.. it's rather redundent.}
-<>
:End Case
<>


There! That's done with! Basically, if you already have your own picture system setup, all you need to do is rig something like this:

<>Wait: 0.2 sec
<>Memorize Place: Map[0001], X[0002], [0002]
<> If Var(0003) V(0001) (=)
-<>
:Else Case
<> {THROW YOUR CODE HERE!}
:End Case

In my example from my game, I had 3 crystals that needed to be acquired... So, when I found one, a switch was turned on for each one. If I had the crystal, then it would show it on the upper right hand of the screen... but only do it once! (Instead of making it an infinite loop)
And, well... the picture erases when you change screens, right? So, the code checks to see if the map changed... and if it did, it shows the crystal again!

So, there you have it! I apologize for the poor wording of this tutorial if it seems like so... if you didn't understand it... you're an idiot. It doesn't take a friggin genius to figure this tutorial out! I basically created this tutorial because most people just leave their images in a loop, running them OVER and OVER... and while you may not notice the image lag on faster, new computers... it still exists... and people creating games have to keep in mind, that people with computers that aren't so great as yours, or different, will have trouble playing the game.. and will probably lose interest if the game lags too much... especially if it's over something stupid as a picture loading infinitly!

Most people don't know about this trick... and for those who do, (which I really don't know many) they don't bother using it.

So... in conclusion... I'm friggin' tired and I've been drinking a medium sized coffee! Gwa ha ha!

...

Here's my contact info, and I'm always open to comments, good or bad! (And if you're trying to be insulting, at least keep it classy.)

GW Name: IceSage
Current Forum Name: SliceMage (Or until I change it back.)
IRC Name: IceSage
Email: icesage@gmail.com
Website: http://icesage.gamingw.net -- (http://icesage.cjb.net)
AIM: GelidusSepiens
MSN: icesage@gamercrossfire.net