So trying to finetune an idea.

Started by Courtesy, December 14, 2014, 04:29:57 AM

Previous topic - Next topic

Courtesy

I've got a map I feel would be far better if I simply had a good grasp on CRPL. I'm attempting to do it with emitters instead and failing at the finetuning.

If I had CRPL, I'd want Void to constantly have a certain value of creeper in it, like 0.5 or 1 for example, resulting in it constantly and continuously flowing inland, with a slight gravitational pull inwards to nudge it along.

The closest I can manage to do without CRPL though: is make the map impossible, or a pushover. Some assistance finetuning this would be great.

stewbasic

I added a few scripts to your map (attached). The gravitational pull part is easy to implement and balance; see Pull.crpl. You can adjust fieldStrength to get the right difficulty.

Setting every void cell to 0.5 every frame isn't viable as it causes significant slowdown (see VoidCreeperBruteForce.crpl). One alternative is VoidCreeperRandom.crpl, which randomly picks 1000 cells each frame and sets creeper level to 0.5 if it's void. This does its task decently (each cell should get hit around every couple of seconds) and doesn't seem to lag too much (at least on 1x). Another alternative is VoidCreeperBoundary.crpl, which only sets void cells which border on non-void; this has the same effect on gameplay.

To balance the void creeper, keep in mind that a void cell with creeper level C will dump C*0.2*CreeperFlowRate onto any adjacent non-void cell each frame. CreeperFlowRate defaults to 0.2 and you have C fixed at 0.5, so that's 0.02 creeper/frame, or 0.6 creeper/second added to the boundary non-void cells. This continues until the creeper level reaches the effective void terrain level, which IIRC is 500. I suspect that will make the map impossible. I'd use SetTerrainOverride to decrease the void terrain level to ~15 (see VoidCreeperInit.crpl). You could also use SetCreeperFlowRate with a rate lower than 0.2.