PseudoWalrus' Tips to Avoid Lag:
1. Do not overload the map with sprites (grass, barrels, and limestone sprites are the most common) or units (the idle animations are strangly taxing on VPU cycles). However, do not eliminate sprites from your design, as they do play a large part in making a map look realistic. In case you are wondering, sprites are two dimensional textures displayed in a primarily 3D engine.
2. If you are using a large map (700+ x 700+), use abrupt elevation changes sparingly, and avoid slow, gradual slopes as they take the most filespace and make maps take a long time to load (I believe Cheezy proved this while designing his World Map).
3. In cinematics, DO NOT use camera angles that cause large portions of the map to be rendered at once. Viewing an area larger than a 150 x 150 tiles on many machines can cause spontaneous freezing ( when RAM < 256 MB DDR).4. In any map, try VERY hard not to place more than 300 units on a map at a time, or more than 100 units together in a small area. This can be hard on a large RPG map with lots of area to explore, but with Cinematic Blocks and careful use of the Change Unit Type trigger, much lag weirdness can be avoided.5. Above all, less is more. Cluttering one area with too many objects easily makes it look ugly, even if you are using "eye candy" techniques (some of which I do not necessarily agree with). You should strive for simplicity in design, while maintaining beauty. This is most easily achieved by excellent terrain blending mixed with sparing use of objects. Often, the best scenarios will employ good terrain blending mixed with innovative and creative use of objects. Take a look at some of the hidden "eye candy" gems in ES' campaigns, like their dry riverbeds for instance.6. Having many (10+) looping triggers causes lag. Also, having many (100+) triggers active at once causes lag. Try to break your triggers down into groups (organizational purposes are not their only use), and have single conditions that activate entire groups only when they need to be active. Massive example incoming: For example, say your hero has to progress down a linear path. Along that path, he will encounter 500 monsters of varying difficulty. Now, for some reason, each one of these monsters needs a trigger associated with it. 500 triggers all active at once will cause lag, but you can avoid this lag by using a clever trigger trick. Disable the triggers half way along the linear path at a certain point, and mark that point along the path with a cinematic block. Then, use a "Units in Area" condition on the cinematic block to activate the disabled triggers once the hero has passed that point. Thus, you can cut down the number of active triggers from 500 to 250, easily. You could also couple this with making all the monsters after the first half of the path cinematic blocks, and use the same "Units in Area" condition to turn them into monsters only when the hero gets near. Thus, you would also be decreasing the number of active (animating) units on the map by 250. Lag cutting indeed. 7. Playtest thoroughly. Often, a person with a different computer than you will experience lag in areas you will not. To make the scenario enjoyable by as many people as possible, it does not matter how it runs on your computer, it matters how it runs on theirs. Ask playtesters to report any areas where they noticed lag, so you can make the scenario more fun for them.8. Playtest thoroughly. This is very useful not only for killing lag, but for killing annoying bugs as well. You don't want to have to release a second version of your scenario to fix a major bug. People will most likely not download it, after being dissapointed by the first release. Even though playtesting with many people is important (not only to spread word of how amazingly good your scenario is, but to test for bugs/lag on as many computers as possible) only distribute your scenario to people you can trust with your hard work.
Hope this helps. Whew, that was longer than I planned.
-PW