Register a SA Forums Account here!
JOINING THE SA FORUMS WILL REMOVE THIS BIG AD, THE ANNOYING UNDERLINED ADS, AND STUPID INTERSTITIAL ADS!!!

You can: log in, read the tech support FAQ, or request your lost password. This dumb message (and those ads) will appear on every screen until you register! Get rid of this crap by registering your own SA Forums Account and joining roughly 150,000 Goons, for the one-time price of $9.95! We charge money because it costs us money per month for bills, and since we don't believe in showing ads to our users, we try to make the money back through forum registrations.
 
  • Post
  • Reply
kvx687
Dec 29, 2009

Soiled Meat
'Empty space' is, from what I can tell, mechanically just a 5000-unit tall wall, if nearby creeper reaches higher than that it'll overflow into the void. This is one of the few maps where that can happen without spending ludicrous amounts of time. It's pretty difficult if you haven't figured out how good powered-up Berthas are!

Adbot
ADBOT LOVES YOU

Regallion
Nov 11, 2012

kvx687 posted:

'Empty space' is, from what I can tell, mechanically just a 5000-unit tall wall, if nearby creeper reaches higher than that it'll overflow into the void. This is one of the few maps where that can happen without spending ludicrous amounts of time. It's pretty difficult if you haven't figured out how good powered-up Berthas are!

500, not 5000.
It also has very interesting interactions with crpl, because it's SIMULTANEOUSLY a -1 height wall, a 500 height wall AND a 1 height wall if there is live digitalis on it, but only for the purposes of creeper flow.

Regallion fucked around with this message at 20:44 on Jun 30, 2019

General Revil
Sep 30, 2014

by Jeffrey of YOSPOS

Regallion posted:

500, not 5000.
It also has very interesting interactions with crpl, because it's SIMULTANEOUSLY a -1 height wall, a 500 height wall a 1 height wall if there is live digitalis on it, but only for the purposes of creeper flow.

That has to be editable, because some of the CSM maps give you 1000+ Creeper depths.

Regallion
Nov 11, 2012

General Revil posted:

That has to be editable, because some of the CSM maps give you 1000+ Creeper depths.

:ssh:
We'll discuss it when our host gets there, but suffice to say it's a bit trickier than that.

Strategic Sage
Jan 22, 2017

And that's the way it is...
Somebody told me that factoid about void space before, but I forgot. Doesn't take long for the SuperEmitter to reach 500. Also ya'll are doing a good job breaking things up so that this new page doesn't get too image-heavy. *clapclap*.

And by the way, it's still IF, not WHEN. :colbert:

Regallion
Nov 11, 2012

Thotimx posted:

Somebody told me that factoid about void space before, but I forgot. Doesn't take long for the SuperEmitter to reach 500. Also ya'll are doing a good job breaking things up so that this new page doesn't get too image-heavy. *clapclap*.

And by the way, it's still IF, not WHEN. :colbert:

Well, i suppose you COULD get hit by a meteor... but we do hope that ain't gonna be the case.

Strategic Sage
Jan 22, 2017

And that's the way it is...
Thanks, I hope so too! I was more referring though, to the impending and not-that-far-off-now (weeks probably) vote about whether I do any custom maps at all. We've yet to have a majority in favor of that in the first two versions, and there were some who chimed in a while back that they were just waiting for Particle Fleet at this point, so it's far from a sure thing.

I wouldn't want people assuming stuff is going to happen that … well, it might, and it might not. Time will tell.

Regallion
Nov 11, 2012

Thotimx posted:

Thanks, I hope so too! I was more referring though, to the impending and not-that-far-off-now (weeks probably) vote about whether I do any custom maps at all. We've yet to have a majority in favor of that in the first two versions, and there were some who chimed in a while back that they were just waiting for Particle Fleet at this point, so it's far from a sure thing.

I wouldn't want people assuming stuff is going to happen that … well, it might, and it might not. Time will tell.

TBF CW 1 doesn't have any real custom maps and CW2 customs are somewhat basic (but some of them are p good!)
CW3 tho is a goldmine.

That said PF is very short compared to CW, do we could do a hard pivot back if the worst comes to pass.

(Also there might be a kidney harvesting scheme ready for the no-voters, but that's just a rumor i heard)

Regallion fucked around with this message at 10:59 on Jul 1, 2019

General Revil
Sep 30, 2014

by Jeffrey of YOSPOS

Regallion posted:

TBF CW 1 doesn't have any real custom maps and CW2 customs are somewhat basic (but some of them are p good!)
CW3 tho is a goldmine.

That said PF is very short compared to CW, do we could do a hard pivot back if the worst comes to pass.

(Also there might be a kidney harvesting scheme ready for the no-voters, but that's just a rumor i heard)

Not to mention, CW4 looks like it just moved from Alpha to Beta, so there's still lots more to go before that gets released.

Strategic Sage
Jan 22, 2017

And that's the way it is...
Hmm, I don't see anything about it going beta from the official sources, that would make it a lot further along that in has appeared to be.

Regallion
Nov 11, 2012

Thotimx posted:

Hmm, I don't see anything about it going beta from the official sources, that would make it a lot further along that in has appeared to be.

That is pure speculation.
Virgil is indeed working on backend and he is getting some better enemy models from Lumoize but well that's not quite beta yet.

General Revil
Sep 30, 2014

by Jeffrey of YOSPOS
On on a video on 6 days ago: "Units are getting a facelift as the alpha transitions to beta..."

https://www.youtube.com/watch?v=hOpTsqGO_WQ

I guess I oversold the case. It's transitioning to beta, not already transitioned.

Strategic Sage
Jan 22, 2017

And that's the way it is...
Still, that's new information - late alpha, close to beta, however you wanna frame it. The last discussion of the Story I heard was several months ago when it was stated officially that none of those missions had even been designed yet etc. I don't watch the videos, just try to keep up with the blog as I intend to go into CW4 almost totally blind.

Strategic Sage
Jan 22, 2017

And that's the way it is...
Creeper Wall


There are three creeper wall planets in the J system. They're a little ... special. Non-standard. Unique you might say. And I definitely didn't get them figured out right away.




Not an overly-large map, and there appears to only be one emitter.










That's an awful lot of information for someone who didn't know what it was going to do like 10 literal seconds ago, Lia.





Before long, the wall appears moving from left to right. We have a lovely slip-emitter in the west as well, while the one in the east goes for 200 but only every 30 seconds.




First time I was basically just doing a 'let's see what happens' approach. On its way through, the wall incinerates anything fragile including all energy structures. The Command Node takes significant damage but remains mostly intact.




The wall 'crashes' on the east end, creating a tsunami headed my way from that direction. At the same time - though for reasons to be explained in a bit it appears to actually happen a bit later - a new one forms in the west.

Take 2[ - 4:56 video

I then quit and restart. As we'll see, and you may even have noticed by now, I didn't need to restart. I would have been fine, if I knew what to do. I had an idea at this point. A bad idea, but an idea. I noticed at this stage that you are allowed three Thors. I thought about that, but it was obvious that I wasn't going to have the energy to build those in the allotted time.




So here I'm focused on getting Mortars up to try and defend against the wave that comes from the east. Skipping/flying them over the wall as it eliminates my collectors - and then rebuilding them after it passes.




Here's how well that does not at all in any way work. I could probably have gotten a couple more up, but there's no way to terp an effective barrier or get enough weapons in time.

Take 3 - 9:11


At this point I did some offscreen stuff and failed more in the same general way. But then something occurred to me. The key to this level is noticing that the creeper wall, as it moves across the map, sucks up creeper at its location. So if you are patient and don't just ragequit when that wave starts flowing from the east, you'll realize that it will never make it further than halfway across the map. The wall will simply pick it up, drop it back down on the east end, and the process will repeat.

From that realization came the plan to not fight the wall at all at the beginning, but just basically ignore it. Ladies and Gentlemen, Start Your Terps!




Why? Well because we want to move west. The creeper is all going to keep getting dumped in the east, which means we want to be Not There. This is the first, initial pass - future ones won't have as thick of creeper. A few Collectors to get enough energy for the terp, and then I work on flattening out the terrain. I need some mobility for the command node, or it will eventually take critical damage. .




By the time the wall gets back again, I've made significant progress. I can get better efficiency from the collectors, and have some room to manuever if I need it. As ever, the approach from the east looks a lot more dangerous than it actually is.

There's a lot more work for the terp to do as I push further west, and also more competition from the creeper. Eventually I need a Pulse Cannon to clear dry ground for it to work on.




Pushing a little bit further each time, the progress continues. I knew that nullifying on this end was risky, but I wanted to try it and see what happened.




Here the northerwestern third or so is closed off to the creeper. The wall tries to expand that way, but cannons can keep it 'pushed down'. This is big though - it means I can actually build stuff and keep it protected permanently.




This is about as close as I've ever come to winning while still losing. Shades of Titan here perhaps in terms of snatching defeat from the jaws of victory, only I don't think this was that dumb.

Don't get me wrong, it was still kinda dumb because I suspected what might happen. Nullifying the slip-emitter stops the wall from doing its thing. And that means all that's left here is the one weak emitter in the east ... and a whole bunch of creeper. I'm trying to get a Forge up to do some upgrades. And I eventually got an energy boost or two, and I was killing creeper for sure faster than it was generated. But it wasn't enough to stop the wave.

Almost enough, but not quite. Slowly, inexorably, bit by bit it pushed me back and destroyed my stuff. I was very close to being able to stop it ... but I just didn't have the energy for a sufficient fighting force. Grrrr!!

Take 4 - 38:09




So this time I didn't take the trojan horse. Once I got to the west I started getting upgrades in and, with sufficient perimeter cannon defenses to secure them, constructed a basic Reactor farm.




Not until I had a Bertha in place did I do the nullifying this time around. As the wave advanced I threw up a few Mortars to assist, this time with plentiful supply. The Creeper whined for a while but it had no chance this time. Our 'armies' were victorious, and the enigma of the Creeper Wall was defeated.

Regallion
Nov 11, 2012

A simple enough pair of scripts, both attached to the same nullifiable core.

Emit.crpl
Is a trivial emitter script, that adds 10 creeper every second. Nothing new.

MoveWall.crpl
That's the one responsible for the wall itself:

code:
# MoveWall.crpl
# Created on: 2/4/2013 8:00:55 PM
# Author: J
# This script creates a wall of creeper on the left side of the map that moves forward every x frames
# You may choose in-game if the wall should keep going or release the creeper at the end
# If RepeatAtEnd=2 the creeper is released at the right side of the map while a new (empty) wall will run over the map
# If you choose to enable KeepCreeperOut, it will try to keep all other creeper out of the wall
# Spacing is the number of cells the KeepCreeperOut will keep 100% clean of creeper 
# ------------------------------------------
$MoveDelay:30
$InitialWallHeight:500
$InitialDelay:0
$RepeatAtEnd:1
$KeepCreeperOut:1
$Spacing:1

once
	<-InitialDelay Delay false ->stop 0 ->stepx <-MoveDelay ->stept
	MapHeight 0 do 0 I <-InitialWallHeight SetCreeper loop
endonce

This is the first example we see of a bigger script that is not excessively tailored to the map it's placed on
First thing it does, it waits for InitialDelay frames, then sets up a few basic variables. Notably, it also completely covvers the entire Y axis on the 0 X coordinates with InitialWallHeight creeper which is quite a bit.

code:

<-stop not if
	MapHeight 0 do
		#move creeper back from the left side
		<-stepx neq0 if
			<-stepx I <-stepx 1 sub I GetCreeper AddCreeper
			<-stepx 1 sub I 0 SetCreeper
		endif
		#move creeper back from the right side
		<-stepx MapWidth 1 sub neq if
			<-stepx I <-stepx 1 add I GetCreeper AddCreeper
			<-stepx 1 add I 0 SetCreeper
		endif
		<-KeepCreeperOut if
			#keep creeper out of the wall, left side
			<-stepx 3 gte if
				<-stepx 3 sub <-Spacing sub I <-stepx 2 sub <-Spacing sub I GetCreeper AddCreeper
				<-stepx 2 sub <-Spacing sub I 0 SetCreeper
			endif
			#keep creeper out of the wall, right side
			<-stepx <-Spacing add MapWidth 4 sub lte if
				<-stepx 3 add <-Spacing add I <-stepx 2 add <-Spacing add I GetCreeper AddCreeper
				<-stepx 2 add <-Spacing add I 0 SetCreeper
			endif
		endif
	loop
	
This is the code that causes the wall to move forward. The Stop variable gets set if the wall is set to not repeat and has already traversed the map, halting the script entirely.
The comments are fairly descriptive of what's happening here, though it's interesting that KeepCreeperOut appears to be a setting to make the wall be completely empty as it travels past the initial creeper allotment

code:


	<-stept 1 sub ->stept
	#move creeper forward if stept is 0
	<-stept eq0 if
		<-stepx MapWidth 1 sub eq if
			<-RepeatAtEnd eq0 if
				true ->stop
			endif
			<-RepeatAtEnd neq0 if
				<-MoveDelay ->stept
				0 ->stepx
				<-RepeatAtEnd 1 eq if
					MapHeight 0 do
					0 I MapWidth 1 sub I GetCreeper AddCreeper
					MapWidth 1 sub I 0 SetCreeper loop
				endif
			endif
		else
			<-MoveDelay ->stept
			MapHeight 0 do
				#move the creeper in the wall forward
				<-stepx 1 add I <-stepx I GetCreeper AddCreeper
				<-stepx I 0 SetCreeper
				#move the creeper in front of the wall forward
				<-KeepCreeperOut if
					<-stepx <-Spacing add MapWidth 5 sub lte if
						<-stepx 4 add <-Spacing add I <-stepx 3 add <-Spacing add I GetCreeper AddCreeper
						<-stepx 3 add <-Spacing add I 0 SetCreeper
					endif
				endif
			loop
			<-stepx 1 add ->stepx
		endif
	endif

And that's the timer.
the stept variable defines how often the wall moves (every 1 second by default)
it decrements by 1 every frame and every time it hits 0 we check whether or not we are at the end of the map.
If we are, and the wall is not repeating, that's it it ends.
If we are and the wall is repeating it resets it's X position, takes all the creeper from the rightmost column of the map (where it stopped) and loops back around.

If we aren't it moves the wall itself forward a tile.

Xarn
Jun 26, 2015
Huh, it never occured to me that I could terp up terrain and move my base. Instead I threw up enough firepower to the left to make holes in the walls so it would miss my energy generation, and a mortar or two to the right to slowdown the backsplash until the next wave came. :v:

Xarn
Jun 26, 2015
Also I am now really interested how you handle the other creeper wall maps.

Strategic Sage
Jan 22, 2017

And that's the way it is...
I think it's interesting when we run into these maps from time to time that somebody did a lot differently. I'm doubtful that the other two wall maps offer any real flexibility, but we'll see.

Strategic Sage
Jan 22, 2017

And that's the way it is...
Creeper Wall 2


It took me two attempts to get this one right. The first try was a hodge-podge of half-baked and often bad ideas. By the time the second one rolled around I basically knew what needed to be done.




A clear attacking and defending side are obviously delinated, with a ridge in between to buy us some time.




The urgency here is a bit overwrought, as will be seen. Also, what in the name of a finite existence is a 'gaint' wall? Lia, attention should be paid to your ever-malfunctioning gel circuitry.




Beginning in the southeast, the only place I can, I soon realize that Collectors are of little value on the rough terrain and switch to Reactors. Takes a little longer to realize something else: Berthas need open space too and there's precious little of it.




I ended up recalling a couple Command Nodes to orbit once I thought I had a decent energy supply, and then getting some of the big guns going.




The main thing about this map is the Wall is really, really slow. This is almost four and a half minutes in. On the other hand I would eventually see it reach nearly two thousand depth, so it's right good and sizable.

The main flaw in my thinking is I was still stuck in the mode of the first wall map; the idea of jumping over the wall as it passes until you build up enough to handle it. By the time I realized this was a bad idea, it was too late. With how slow it moves it's going to kill anything and there's only one spot you can have the network core at. Also, you need to have a constant barrage up to keep the creeper at the west end of the map under control, and once the wall starts wrecking your network, I don't think there's a good way to do that.

Not fully realizing that, I had sort of half-assed the artillery buildup - enough to take bites out of the wall and keep things workable for now - and was pondering what the heck I was going to do when it made its way over the dune ridge.




So here's a bit of a look at some things I tried. One is, I'm spreading out the reactors as I boost energy so that I don't lose them all at once and keep a critical mass of the economy going. The second thing is using Guppies to transport energy over the wall. While it's too late really to ramp up the firepower for this pass and I know that, I also am increasing the bertha count here - five operational and two more placed as I boost the incoming energy.

The mission time here is 17:35 and the wall is just approaching the crest, with a depth of just over 1200. I've weakened it, but that's not happening fast enough and now it isn't sucking up the creeper on the west side anymore - which will soon require me to direct more artillery fire downrange.

I cut out a lot of me basically not being sure what to do during this first attempt, and also discovered that if a Guppy's base is destroyed, the guppy itself dies too. No matter where it is. Which means I'd need to build guppies on the far side of the wall to make that work at all. And it wouldn't save the day anyway.




About here I realized I was doomed. I didn't have enough energy to feed the berthas and rebuild my energy structures on the far side of the wall, so the Creeper was building up and pushing over the dunes whilst the wall rampaged through my network with increasing effect. That, in a nutshell, is why the patient approach just doesn't work here.

Take 2 - 13:25ish


Ok, time to get this right then. If we can't survive a pass by the wall, then we need to kill it before it gets here. That means more Berthas, and for efficiency's sake it is better to get the energy support up before building the things.




I'm wasting space for no collectors, and using Relays and reactors on the rougher terrain. The clear areas? That's reserved for berthas. I don't know how many I'm going to need, but I know it's a lot, so I plan to build as many as I can fit in.




Just over eight minutes in here. I've got myself a nice healthy reactor farm, and ten artillery pieces under construction. The wall, meanwhile has been completely unimpeded and is nearly that 2K mark ... and still growing. At this point I don't know if I've waited too long, but it's clear I need to start an unrelenting cannonade like yesterday and whittle that thing down to size.




Once they are all going, I keep building reactors and slowly starting adding Mortars to the ridgeline. They won't do much by comparison, but every bit helps.

By the 14-minute mark, the wall reached the line of totems, but was almost out of creeper to fuel itself and well under 900 depth. I was feeling a little better but not yet fully confident.




16 minutes. The wall works its way up the last of the hillside, and is in range of everything now. It's down to me and ugly. Visible weakening of the barrier is apparent just as the frontline troops - i.e. the mortars and Pulse Cannons - are forced to pull back much like the border guards in a more traditional conflict.




As it neared our furthest-forward support structures, the wall began to break up. I searched desperately for places the smaller weapons could put themselves on the rough terrain while still hitting it and keeping it from destroying our energy. The berthas had shifted their targeting to the now-deeper concentrations further west, having done their job cutting the irresistible force down to size. It was literally directly adjacent to my furthest-forward reactors when the last of it was eradicated.

Now it was time to press the attack. And that was slow going at first as well, because of the rough ground and the fact that Terps are not permitted. I also was not at all certain that the wall wouldn't just eventually reform - turns out it's a one-shot deal though and once it is gone, it's gone.




It wasn't hard to get close to the Totems, valuable upgrade-giving targets. It was surprisingly difficult to actually get close enough to access them though. From this point the path to victory is well-worn, but it would take me almost twenty mostly-tedious minutes to achieve it, or roughly half the completion time. The weapon upgrades, esp. range given the fact that the platforms often can't be placed conveniently, were definitely worth their weight in ore. Even though aether doesn't actually weight hardly anything now that I think about it ... whatever, you know what I mean.

General Revil
Sep 30, 2014

by Jeffrey of YOSPOS
Congrats on that map. I managed to pick seemingly all the worst maps in the Alpha Sector, so it's nice to see you do all of it.

Just adding to the mix, Good Morning Maps (GMM) in Particle Fleet are totally awesome and need to be added to the list of custom maps that you need to do once you get that far.

Xarn
Jun 26, 2015
hummm, you made that look a lot easier than it was for me -- I kept over/under shooting the wall with my berthas, doing less damage and just was not able to clear it out enough for the conventional weapons to finish the wall.

CannonFodder
Jan 26, 2001

Passion’s Wrench

Thotimx posted:

Also ya'll are doing a good job breaking things up so that this new page doesn't get too image-heavy. *clapclap*.
I'll let the experts talk about scripts and technique, and I'll just chime in with "Good job!" to get the page moving.


Good job!

Regallion
Nov 11, 2012

Speaking of scripts!

1 of em this time
MoveWall.crpl

code:
# MoveWall.crpl
# Created on: 2/4/2013 8:00:55 PM
# Author: J
# This script creates a wall of creeper on the left side of the map that moves forward every x frames
# You may choose in-game if the wall should keep going or release the creeper at the end
# If RepeatAtEnd=2 the creeper is released at the right side of the map while a new (empty) wall will run over the map
# If you choose to enable KeepCreeperOut, it will try to keep all other creeper out of the wall
# Spacing is the number of cells the KeepCreeperOut will keep 100% clean of creeper 
# ------------------------------------------
$MoveDelay:30
$InitialWallHeight:500
$InitialDelay:0
$RepeatAtEnd:1
$KeepCreeperOut:1
$Spacing:1

once
	<-InitialDelay Delay false ->stop 0 ->stepx <-MoveDelay ->stept
	MapHeight 0 do 0 I <-InitialWallHeight SetCreeper loop
endonce

<-stop not if
	MapHeight 0 do
		#move creeper back from the left side
		<-stepx neq0 if
			<-stepx I <-stepx 1 sub I GetCreeper AddCreeper
			<-stepx 1 sub I 0 SetCreeper
		endif
		#move creeper back from the right side
		<-stepx MapWidth 1 sub neq if
			<-stepx I <-stepx 1 add I GetCreeper AddCreeper
			<-stepx 1 add I 0 SetCreeper
		endif
		<-KeepCreeperOut if
			#keep creeper out of the wall, left side
			<-stepx 3 gte if
				<-stepx 3 sub <-Spacing sub I <-stepx 2 sub <-Spacing sub I GetCreeper AddCreeper
				<-stepx 2 sub <-Spacing sub I 0 SetCreeper
			endif
			#keep creeper out of the wall, right side
			<-stepx <-Spacing add MapWidth 4 sub lte if
				<-stepx 3 add <-Spacing add I <-stepx 2 add <-Spacing add I GetCreeper AddCreeper
				<-stepx 2 add <-Spacing add I 0 SetCreeper
			endif
		endif
	loop
	
	<-stept 1 sub ->stept
	#move creeper forward if stept is 0
	<-stept eq0 if
		<-stepx MapWidth 1 sub eq if
			<-RepeatAtEnd eq0 if
				true ->stop
			endif
			<-RepeatAtEnd neq0 if
				<-MoveDelay ->stept
				0 ->stepx
				<-RepeatAtEnd 1 eq if
					MapHeight 0 do
					0 I MapWidth 1 sub I GetCreeper AddCreeper
					MapWidth 1 sub I 0 SetCreeper loop
				endif
			endif
		else
			<-MoveDelay ->stept
			MapHeight 0 do
				#move the creeper in the wall forward
				<-stepx 1 add I <-stepx I GetCreeper AddCreeper
				<-stepx I 0 SetCreeper
				#move the creeper in front of the wall forward
				<-KeepCreeperOut if
					<-stepx <-Spacing add MapWidth 5 sub lte if
						<-stepx 4 add <-Spacing add I <-stepx 3 add <-Spacing add I GetCreeper AddCreeper
						<-stepx 3 add <-Spacing add I 0 SetCreeper
					endif
				endif
			loop
			<-stepx 1 add ->stepx
		endif
	endif
endif
Hold up. That seems familliar.
wait.
Oh it's the same script just set to only run once and with a bigger InitialDelay?
oh.


oh.

Strategic Sage
Jan 22, 2017

And that's the way it is...

CannonFodder posted:

I'll just chime in with "Good job!" to get the page moving.

Thanks on both counts!

Xarn posted:

I kept over/under shooting the wall with my berthas, doing less damage and just was not able to clear it out enough for the conventional weapons to finish the wall.

Huh, I found that it moved slow enough to make this not an issue. I wonder if you had them on auto-target and an energy surplus? Those are the only things I can think of that would make this a problem.

Regallion posted:

Oh it's the same script just set to only run once and with a bigger InitialDelay?

And RepeatAtEnd changed as well so it only runs once!

Strategic Sage
Jan 22, 2017

And that's the way it is...

General Revil posted:

Good Morning Maps (GMM) in Particle Fleet are totally awesome and need to be added to the list of custom maps that you need to do once you get that far.

Also, I'm adding all such suggestions to a list I'm compiling since there's no freaking way I'm going to just remember them.

Additionally, there is a moderate amount of truth inherent to the rumor than I may decide to start ignoring suggestions worded in such a way as to be a demand rather than a suggestion :P

Ashsaber
Oct 24, 2010

Deploying Swordbreakers!
College Slice

Thotimx posted:

Also, I'm adding all such suggestions to a list I'm compiling since there's no freaking way I'm going to just remember them.

Additionally, there is a moderate amount of truth inherent to the rumor than I may decide to start ignoring suggestions worded in such a way as to be a demand rather than a suggestion :P

I would like to suggest the Arc Eternal Redemption missions for CW3, specifically the first, the second, the fifth, and whichever others don't seem too terrible. 6-8 are just some that look and felt horribly unfun to play, for instance. Mostly because these are Play as Creeper maps that let you see how it works and a couple neat effects while having reference points for you to compare to.

Strategic Sage
Jan 22, 2017

And that's the way it is...
Creeper Wall 3 & the pit


Today we conclude the 'Creeper Wall swing', and then I demonstrate my ineptitude at a different map that doesn't seem to entirely obey its own rules, and seems to contain a more elegant solution than I ever found.




There's more north in this very vertical map. Even so you really can't see much here. Pandora left a Device in the south, and we clearly need to start in the north.




We have a constantly-moving wall that takes seconds - 6-8 I'd say - to traverse the short width of the map. We also have a very weak AC emitter - 3 every 2 seconds - here near our obvious starting location. My initial reaction was profound in its brevity:

"Ok that sucks"

Followed by not really knowing what to do.




After a couple of passes though, the wall was interrupted by the anti-creeper. It's getting very little 'reinforcement' if any up this far on the map, so that tiny little AC emitter gives us a bit of a safe zone.




After a bit I realized that I had a same spot to start getting reactors up, and that I'd soon be able to clear out all creeper from the north end of the wall entirely and focus southwards, including grabbing that ore deposit for my own benefit. I was starting to figure out what the heck to do.




Here I am properly oriented for offensive operations. A few more cannons, but it's hard for them to do much as they only get off a shot or two by the time they pick up the wall, track it, and aim - it's soon out of range. A trio of Beams and an always-on Sprayer are vital for defense and organic attack respectively.

Of course, I can see the solution to my problem already - I don't need to progress far to grab that Totem and start upgrading. Meanwhile we can also see the wall getting bigger. There's a major tug-of-war, or rather push-of-war, element to this where the longer you wait to get going, the more difficult it'll be to push the wall southward. And that's the only way to progress - otherwhise it'll wreck whatever you put up with impunity.




Next, this map makes darn sure you know the value of high ground. This will be a recurring theme as we push southward. Most of these Cannons aren't doing a darned thing, because the wall goes past them at a higher elevation. Mortars wouldn't do any good, because any charges they shoot will just hit empty space. By the time they arrive, the fast-moving wall is long gone. It took me a couple minutes to figure out what was going on, but thankfully not too long. Amusingly, at first I just added a few more cannons which also did next to nothing.




After my working my way downhill to another totem, I came upon this - my first chance to directly undermine the wall's source of strength. It's a weak emitter - 15 every 0.7 - but the sooner I got rid of it the better. It took a while though. There's just not much in the way of good locations to shoot at the higher ground containing the Emitter and Spore Tower. And that Ore Deposit on the far side just sits there and taunts you. I might have been better off trying to go around the left side and briefly bypassing them - but that would have made too much sense.

Brute force eventually did it - eliminating the spores first and using that PZ for a SuperNullifier helped. I also took some time to boost energy income and throw up a couple of Berthas.

That last idea wasn't a good one. As fast as this wall is moving, they shouldn't help much. As it turns out though, I put them at pretty much exactly the right distance, so that when they shot down to the low end the wall had time to leave the map, come back, and reach the target zone at the same time as the shells landed. I do not, however, advocate this kind of depend-on-blind-luck strategy (about 24 mins on the video or a bit afterwards to see this). I also put up a SuperBertha that I would eventually abandon for that reason.

At this point I had one upgrade each of weapon range and firing rate along with a few others. With resistance stiffening from the wall, firing rate esp. would be vital to proceeding further. Boosting ore efficiency is also a fine idea.




With increased capabilities and firepower, I now faced ever-increasing resistance and an uphill approach to the finish. The obstacles on this map are well-considered.




More wimpy structures go down immediately, but the cannons themselves can survive pretty much indefinitely in the path of the creeper. I wonder if the wall speed was specifically tuned to this fact. In any case, that makes somewhat aggressive forward moves possible. You can also see that I'm still pointlessly shooting off that SuperBertha, to virtually no effect.

Shortly after this, I hit what I think is a dastardly booby-trap. Several seconds after knocking out the next spore tower, a bunch of stuff exploded in the rear of my network. It could have just been a spore impact, but I doubt it. No spores got through that I know of before or since. About 20 things blew up, most of them reactors.




Here's the tail end of things, at which we see that mysterious device and there are a couple of emitters just off-screen. Further weapon upgrades have facilitated a steady if still a bit annoyingly-slow advance. I suspected that the device was controlling the wall, but I wanted to be sure.




Yep, it does. Most of the map flooded in anti-creeper, standard creeper down here. I moved sprayers forward, had a reason to build a few mortars at last, and generally conducted a more typical finishing attack. Three very different applications of the same general idea, each of which presents a unique challenge. While I do not withdraw my salt from the earlier quiz map, clearly most of J's material is far better.




And then there was ... this. It's worse than it looks.







I never did find a way to do this, and I'm suspicious of it for reasons that will be explained.




I did initially Skip the spoiler, and would later find it to not be particularly helpful.




One might be able to use Snipers to destroy the Drones ... if this map didn't completely remove snipers. That of course would be a cheap way to win. This image is just over a minute in. They don't waste time building up a healthy supply.

You can also see here elements of the basic issue I ran into, and tried many different bad ways of solving. The drones like higher ground and are therefore encouraged by the steps out of the pit to leave and go elsewhere. They'll mostly hang out on that pier and generally not want to leave it. When they do, they'll leave more towards the western (higher-elevation) end of it. But ... a lot of them always stay in the lower ground of the pit. That being the case, how do you trap them?

My answer: beats the crap out of me.




So I tried to grab one of those Aether Siphons on the pier, and failed. I could have eventually done so by walling it off and doing various other nonsense, but never thought it worth it. I tried to throw up a SuperCannon here, only to have connecting relay blown up. Each attack destroys both the drone and the building it attacks.

I have started here in a pretty safe area - low ground far away from the places they like the best. I could easily survive here indefinitely, and spent a considerable amount of time doing just that, building up energy, and wondering what the actual I was supposed to do.




Here's me impressively demonstrating a lack of critical thinking and cluelessness on how this mission operates. I'm building a max-height wall in precisely the direction the drones are least likely to approach from. I could run this map afk for hours and I don't think it would ever happen, so intensely do they hate low ground. They will eventually, slowly and in very small numbers, approach from the west, but not the north.

However, I have managed to form the coherent idea that Terps are going to be really important due to all that stuff about elevation impacting drone behavior.




Then I had the brilliant idea that I'd just nullify the drones - which isn't the goal, you need to knock out the machines - from behind the wall, because maybe I'll interrupt their Line Of Sight. As this Relay found out immediately upon completion, that is not a thing.




Here's another Bad Idea(tm). I'm trying to draw enough drones over towards the Power Zone to nullify them, but only a small amount would ever approach, the range of a SuperNullifier isn't much longer than a drone so it'll only reach a really small space, and yeah there's other bad things about it but basically it was never going to get me anywhere. Really just grasping at straws here.

I was successful in clearing drones out from the 'countryside' by mass-producing collectors. They're cheap, and anywhere without a big concentration of the pests can be temporarily knocked out this way. Of course the machines just build more ...




Eventually I made my way towards the southwest and tried to terraform the Pit itself. The idea here is to give them high ground that they'd hopefully be attracted to, thin the drone population out that way, and then ... something. I dunno. I have Berthas now - you're allowed two - targeted on the pit to eliminate the creeper that is produced there.

The drones didn't care. They seemed to behave exactly the same regardless of what the height was within the pit. That height-favoring algorithm seems to be turned off there. While I pondered this, Creeper World 3 had a very rare crash. So I did some off-screen testing.




And now we get to where we're really not supposed to win the level this way, but ... So I found some interesting things.

** The drones really like creeper in the pit. If they are in the pit area, and there's no creeper, they'd rather make some and disperse it than attack your units. So while AC itself has no effect on them directly, it can be useful.

** I initially built this south end of the pit up to max height thinking they would stay away from it since they can't go above 8. Nope, they don't care about that either in this part of the map.

** Mass-building of nullifiers nearby combined with that whole MUST.HAVE.CREEPER philosophy allowed me to take out one of the machines just before this shot.

** That also apparently caused their 'child' drones to self-destruct. Without the parent drone machine, they cannot survive because reasons.




This is a particularly egregious tactic here; the Nullifier Hole. It allows enough AC to collect at the SuperNullifier location that a random drone dropping creeper on it doesn't destroy the weapon. Some while after this, with enough weapon - collector - nullifier-spamming, I was eventually able to knock out all the machines and claim victory.

I look forward to being educated on what the 'right way' is to do this, because I sure as heck didn't find it.




Color me unimpressed with this, the previously-mentioned spoiler. Given the relatively inconvenient PZ locations and the difficulty in getting the drones to all leave the pit under any circumstances I could surmise, and/or behave predictably enough to trap most/all of them, I wouldn't have done all that much differently had I seen this right away. So I'm still confused. But at least I finished the level, and moved on.

Carbon dioxide
Oct 9, 2012

Ah I remember this level.

I was confused by it as well. I did manage to get the siphon things by walling off part of the pier, and I think at one point I actually tried to terp most of the western half of the map up to level 10. (Using PZ terps, in part). It did help me build up more.

But as you said, that doesn't solve the pit itself.

I think in the end I just brute-forced it. The drones will target the unit nearest to them. So, dump hundreds of collectors/relays close to a drone creator, drop a nullifier just behind them, and hope it survives.

Regallion
Nov 11, 2012

Okay, so, scripts.

2 of em:
Main_Thepit.crpl
Bullet_Thepit.crpl


The Main script is responsible for the actual spawners:

code:
# Main_Thepit.crpl
# Created on: 5/17/2013 8:01:13 PM
# Author: J
# ------------------------------------------
$speed:1.0
$level:1
$maxlevel:5
$maxchilds:3
$parent:0

once
	12 39 RandInt 20 64 RandInt <-speed QueueMove
	0 ->created
endonce

First things first: each of the initial big cores (manually set to be that way) is this script.
The values listed here with $ are inputs, and i believe differ from what's actually specified im-map.
As for what they do? Speed is movement speed, Parent is not relevant and the rest we'll see in due time.


The first thing each of those cores does is choose a random X and Y to move to and start moving there at a speed of "speed"
The X and Y are bounded by the size of the actual pit.

Then, this happens:
code:
GetQueuedMoveCount eq0 if
	CurrentCoords 0.3 AddCreeper
	<-parent neq0 if
		<-parent CONST_ISDESTROYED GetUnitAttribute if
			self 3 Destroy
		endif
	endif
	12 39 RandInt 20 64 RandInt <-speed QueueMove
	<-level <-maxlevel neq if
		"parent" self GetCoresWithVar <-maxchilds lt if
			"CRPLCore" CurrentX CurrentY CreateUnit ->unit
			<-unit "main" "Default" SetImage
			<-unit "Main_Thepit.crpl" AddScriptToUnit
			<-unit "Main_Thepit.crpl" "speed" <-speed SetScriptVar
			<-unit "Main_Thepit.crpl" "maxlevel" <-maxlevel SetScriptVar
			<-unit "Main_Thepit.crpl" "level" <-level 1 add SetScriptVar
			<-unit "Main_Thepit.crpl" "maxchilds" <-maxchilds SetScriptVar
			<-unit "Main_Thepit.crpl" "parent" self SetScriptVar
			<-unit CONST_CREATEPZ false SetUnitAttribute
		endif
	else
		"parent" self GetCoresWithVar <-maxchilds lt if
			"CRPLCore" CurrentX CurrentY CreateUnit ->unit
			<-unit CONST_TAKEMAPSPACE false SetUnitAttribute
			<-unit "main" "Default" SetImage
			<-unit "Bullet_Thepit.crpl" AddScriptToUnit
			<-unit "Bullet_Thepit.crpl" "speed" <-speed SetScriptVar
			<-unit "Bullet_Thepit.crpl" "parent" self SetScriptVar
			<-unit CONST_CREATEPZ false SetUnitAttribute
		endif
	endif
endif
ClearStack
Let's take this piece by piece

code:
GetQueuedMoveCount eq0 if
	CurrentCoords 0.3 AddCreeper
	<-parent neq0 if
		<-parent CONST_ISDESTROYED GetUnitAttribute if
			self 3 Destroy
		endif
	endif
	12 39 RandInt 20 64 RandInt <-speed QueueMove
Once the core arrives to it's destination it drops some creeper (0.3 of a level) and chooses a new random destination. It also checks if it's parent was destroyed - if so it suicides.

code:
	<-level <-maxlevel neq if
		"parent" self GetCoresWithVar <-maxchilds lt if
			"CRPLCore" CurrentX CurrentY CreateUnit ->unit
			<-unit "main" "Default" SetImage
			<-unit "Main_Thepit.crpl" AddScriptToUnit
			<-unit "Main_Thepit.crpl" "speed" <-speed SetScriptVar
			<-unit "Main_Thepit.crpl" "maxlevel" <-maxlevel SetScriptVar
			<-unit "Main_Thepit.crpl" "level" <-level 1 add SetScriptVar
			<-unit "Main_Thepit.crpl" "maxchilds" <-maxchilds SetScriptVar
			<-unit "Main_Thepit.crpl" "parent" self SetScriptVar
			<-unit CONST_CREATEPZ false SetUnitAttribute
		endif
Additionally, if the Level is not equal (in practice - strictly less) to MaxLevel it spawns a new core with the same script. That core is completely identical, except it actually has a parent (whoever spawned it) and it's level is 1 higher. For the defaults it means that a level 1 core will spawn level 2 cores.
The spawning only occurs if there are less that "Maxchilds" (nice plural) spawns alive.

If the level IS equal tho, then:
code:
	else
		"parent" self GetCoresWithVar <-maxchilds lt if
			"CRPLCore" CurrentX CurrentY CreateUnit ->unit
			<-unit CONST_TAKEMAPSPACE false SetUnitAttribute
			<-unit "main" "Default" SetImage
			<-unit "Bullet_Thepit.crpl" AddScriptToUnit
			<-unit "Bullet_Thepit.crpl" "speed" <-speed SetScriptVar
			<-unit "Bullet_Thepit.crpl" "parent" self SetScriptVar
			<-unit CONST_CREATEPZ false SetUnitAttribute
		endif
Then instead of a clone it creates a "bullet script" which gets it's speed and "parent" inherited. There amount of bullets simillarily cannot exceed "maxchilds"

THis basically means that each root core creates some branch cores, which in turn branch some more (the core with the defaults will produce 3 level 2 cores, each of those will produce 3 level 3s, each of which produces 3 level 4s, each producing 3 level 5s, each of which would make 3 bullets or a total of 1+3+3*3+3^3+3^4+3^5 or 364 cores)
The goal of the map is to nullify each root core since destroying a parent causes every child of theirs to suicide.


Bullet_Thepit.crpl
This is responsible for the actually aggressive drones that leave the pit.

This script is heavy on function calls - will first post it in it's entirety for reference then we will tackle it piece-by-piece.

code:
# Bullet_Thepit.crpl
# Created on: 5/24/2013 3:49:20 PM
# Authors: J and virgilw
# ------------------------------------------

$speed:1
$parent:0

once
	# Initialize our last position since we don't have one.
	-1 ->lastCellX 
	-1 ->lastCellY 
	0 ->firing
endonce

#If we aren't moving, choose a new location.
#The location will be a neighboring cell of at least the same height.
GetQueuedMoveCount eq0 if
	CurrentCoords GetTerrain ->currentterrain
	@ChooseNewCell if
		<-chosenX <-chosenY <-speed QueueMove
		CurrentX ->lastCellX
		CurrentY ->lastCellY
	endif
	<-firing not if
		@GetClosestUnit
		<-closestUnit neq0 if
			@Kaboom
		endif
	endif
	<-parent CONST_ISDESTROYED GetUnitAttribute if
		self 3 Destroy
	endif
endif

	

:ChooseNewCell
-1 ->chosenX
-1 ->chosenY

# Get a list of the neighbors that we can move to.
# This call returns the coordinate pairs on the stack.
@GetPossibleCells

# Choose a random location within the list
0 <-count RandInt ->randCellNumber

# Go through the list and pop all of the coordinates off the stack.
# As we pass the coordinates that we chose in our random number above, remember them.
# Those are the coordinates we will be returning.
<-count 0 do
	->y
	->x
	I <-randCellNumber eq if
		<-x ->chosenX
		<-y ->chosenY
	endif
loop
# Return if we chose a new location
<-chosenX -1 neq


:GetPossibleCells
#Check the four neighboring cells to see if they are acceptable terrain heights.
0 ->count
CurrentX 1 add ->cx CurrentY ->cy @CheckCell		#Right
CurrentX ->cx CurrentY 1 sub ->cy @CheckCell		#Up
CurrentX 1 sub ->cx CurrentY ->cy @CheckCell		#Left
CurrentX ->cx CurrentY 1 add ->cy @CheckCell		#Down

# By default, we won't return the last cell coordinates.  This is so the patrolling unit
# doesn't return back to where it came from immediately.  But, if the only choice is to return
# to the previous cell, then that is what we have to do.
<-count eq0 if 
	<-lastCellX
	<-lastCellY
	1 ->count
endif


:CheckCell
#Check to see if the cell we are looking at is the last cell, if so ignore.
<-cx <-lastCellX neq <-cy <-lastCellY neq or if
	# Check if the target cell is an acceptable terrain height.  If so, push the 
	# coordinates to the stack and increment count.
	<-currentterrain 0 5 RandInt eq0 if 1 sub endif ->MIN_TERRAIN_HEIGHT
	<-cx <-cy GetTerrain ->terrainHeight
	<-terrainHeight <-MIN_TERRAIN_HEIGHT gte <-terrainHeight 7 lte and if
		<-cx
		<-cy
		<-count 1 add ->count
	endif
endif

:Kaboom
	<-closestUnit 2 Destroy
	self 1 Destroy

:GetClosestUnit
99999999 ->closestDistance
0 ->closestUnit
CurrentCoords 15 GetUnitsInRange ->unitCount
<-unitCount 0 do
	->unit
	<-unit GetUnitType "POWERZONE" neq if
		CurrentCoords <-unit CONST_COORDX GetUnitAttribute <-unit CONST_COORDY GetUnitAttribute Distance ->d
		<-d <-closestDistance lt if
			<-d ->closestDistance
			<-unit ->closestUnit
		endif
	endif
loop
<-closestUnit
Let's get cracking then

code:
# Bullet_Thepit.crpl
# Created on: 5/24/2013 3:49:20 PM
# Authors: J and virgilw
# ------------------------------------------

$speed:1
$parent:0

once
	# Initialize our last position since we don't have one.
	-1 ->lastCellX 
	-1 ->lastCellY 
	0 ->firing
endonce
As we know, the bullet actually inherits the speed and parent from the main script that spawned it, meaning that the $ are just the in-case defaults.
The core also sets some defaults: namely it sets LastCell X and Y as -1 to say "there was no previous cell".
Why is that done explicitly? That's because 0 (what every uninitialized variable is considered to be except in truly specific cases) is a valid coordinate for the top-left corner of the map and a drone can concievably visit it.

code:
GetQueuedMoveCount eq0 if
	CurrentCoords GetTerrain ->currentterrain
	@ChooseNewCell if
		<-chosenX <-chosenY <-speed QueueMove
		CurrentX ->lastCellX
		CurrentY ->lastCellY
	endif
	<-firing not if
		@GetClosestUnit
		<-closestUnit neq0 if
			@Kaboom
		endif
	endif
	<-parent CONST_ISDESTROYED GetUnitAttribute if
		self 3 Destroy
	endif
This is the meat of this script. Simply enought it does 2 things:
1. Decides where the drone should move next
2. Kills your units.
This occurs whenever the drone stops moving.

Let's start with 1.
To decide where to move, the drone gets CurrentTerrain and runs a @ChooseNewCell function

code:
:ChooseNewCell
-1 ->chosenX
-1 ->chosenY

# Get a list of the neighbors that we can move to.
# This call returns the coordinate pairs on the stack.
@GetPossibleCells

# Choose a random location within the list
0 <-count RandInt ->randCellNumber

# Go through the list and pop all of the coordinates off the stack.
# As we pass the coordinates that we chose in our random number above, remember them.
# Those are the coordinates we will be returning.
<-count 0 do
	->y
	->x
	I <-randCellNumber eq if
		<-x ->chosenX
		<-y ->chosenY
	endif
loop
# Return if we chose a new location
<-chosenX -1 neq
The function itself calls @GetPossibleCells to find out what cells to use:

code:
:GetPossibleCells
#Check the four neighboring cells to see if they are acceptable terrain heights.
0 ->count
CurrentX 1 add ->cx CurrentY ->cy @CheckCell		#Right
CurrentX ->cx CurrentY 1 sub ->cy @CheckCell		#Up
CurrentX 1 sub ->cx CurrentY ->cy @CheckCell		#Left
CurrentX ->cx CurrentY 1 add ->cy @CheckCell		#Down

# By default, we won't return the last cell coordinates.  This is so the patrolling unit
# doesn't return back to where it came from immediately.  But, if the only choice is to return
# to the previous cell, then that is what we have to do.
<-count eq0 if 
	<-lastCellX
	<-lastCellY
	1 ->count
endif
So, GetPossible cells runs @CheckCell for every adjacent cell

code:
:CheckCell
#Check to see if the cell we are looking at is the last cell, if so ignore.
<-cx <-lastCellX neq <-cy <-lastCellY neq or if
	# Check if the target cell is an acceptable terrain height.  If so, push the 
	# coordinates to the stack and increment count.
	<-currentterrain 0 5 RandInt eq0 if 1 sub endif ->MIN_TERRAIN_HEIGHT
	<-cx <-cy GetTerrain ->terrainHeight
	<-terrainHeight <-MIN_TERRAIN_HEIGHT gte <-terrainHeight 7 lte and if
		<-cx
		<-cy
		<-count 1 add ->count
	endif
endif
FINALLY.
So, what CheckCell does is that it checks that a given cell is
A: not the cell the drone just came from
B: The height in that cell is CurrentHeight <= Height of target cell <=7
That is why 8 is always out and why it prefers to go up.
However! There is a 1 in 5 chance that CurrentHeight gets reduced by 1 for the purposes of this check, allowing the drone to go down.

If the cell is valid, the coordinates for it are stored and the count of valid cells is incremented.

Then , in @GetPossibleCells we check:
If there are 0 valid cells, it says "Only retunring is possible"
If there are more than 1 valid cells it exits back to ChooseNewCell

Now, from the set of valid set we randomly select the one to which we will move.
If we managed to pick a cell to move to, we then issue a comand to move to it and save our current cell as our last cell visited.
Now, if you followed all that, think back to the pier. Barring any terraform shenanigans, a drone at the edge of a pier goes like this:
1. Here's the cell i just came from - can't move there
2. Here's the cell of the same height - valid
3. Here's the cell of the same height -valid
4. Here's a cell of lower height - valid 1 in 5
If it's in a corner 2 cells are 1 in 5 valid but that's rare.
Then, it picks equally from all valid cells.
Practically speaking it means that it has a 1/15 chance of going off-pier whenever it is adjacent to the edge, That's why they tend to stick there so much.


Once we are done with that we get to the "kill your units" part

code:
	<-firing not if
		@GetClosestUnit
		<-closestUnit neq0 if
			@Kaboom
		endif
	endif
	<-parent CONST_ISDESTROYED GetUnitAttribute if
		self 3 Destroy
	endif
We notice the classic suicide on death of parent (very true to life), but then there is that "Firing" check. Eagle-eyed readers might have already realized that something is up - those who didn't will get their answer a bit later.

To kill your unit it uses 2 functions:
code:
:Kaboom
	<-closestUnit 2 Destroy
	self 1 Destroy

:GetClosestUnit
99999999 ->closestDistance
0 ->closestUnit
CurrentCoords 15 GetUnitsInRange ->unitCount
<-unitCount 0 do
	->unit
	<-unit GetUnitType "POWERZONE" neq if
		CurrentCoords <-unit CONST_COORDX GetUnitAttribute <-unit CONST_COORDY GetUnitAttribute Distance ->d
		<-d <-closestDistance lt if
			<-d ->closestDistance
			<-unit ->closestUnit
		endif
	endif
loop
<-closestUnit
kaboom happens if it finds a unit and it's basically a murder-suicide, pretty realistic there.
The GetClosestUnit does the following:
First it finds all of your units within range 15, excluding power zones.
Then for every unit it checks the distance. Whenever the distance is lower than the previous lowest it saves the reference to that unit and the new lowest distance. If it saved anything, it returns the ClosestUnit for Kaboom to destroy.

What was the thing about Firing? Well, Firing is never set to anything BUT 0 anywhere in the script or outside of it. My guess, is that this unit was originally meant to act as a nullifier, channeling the destroying attack, but that was cut.
Why was there a tip about the PZ terp? P sure that's because a PZ terp range is bigger than 15 meaning that it can create level 10 terrain without being exposed to danger.
The bullet script claims it's co-written by Virgil. That's...unusual. I have a feeling that's because it was stolen from gliders, from that one campagin level (Choix?). In fact, i remember gliders having a firing animation so that would explain the firing snafu.

quote:


And now we get to where we're really not supposed to win the level this way, but ... So I found some interesting things.

** The drones really like creeper in the pit. If they are in the pit area, and there's no creeper, they'd rather make some and disperse it than attack your units. So while AC itself has no effect on them directly, it can be useful.

** I initially built this south end of the pit up to max height thinking they would stay away from it since they can't go above 8. Nope, they don't care about that either in this part of the map.

** Mass-building of nullifiers nearby combined with that whole MUST.HAVE.CREEPER philosophy allowed me to take out one of the machines just before this shot.

** That also apparently caused their 'child' drones to self-destruct. Without the parent drone machine, they cannot survive because reasons.
Now that we know all this, let's adress this part of the post
1. False. Not that you can tell but the ones that really like the pit and drop creeper/ the ones that kill your units are actually different cores, so there is no actual preference involved.
2. False. The actual killer drones will stter clear, but the creep droppers to indeed just move randomly within the pit.
3. -
4. The reasons are "Do you really want to clean all of that up after you technically won?"

The actual PRO strat for this level is "Wall off the pier, so only non-killers are in the pit"

Regallion fucked around with this message at 20:00 on Jul 10, 2019

Carbon dioxide
Oct 9, 2012

You got a broken [/code] tag about halfway down your post.

Otherwise, nice write-up, interesting to learn how this level actually works.

General Revil
Sep 30, 2014

by Jeffrey of YOSPOS

Thotimx posted:

Additionally, there is a moderate amount of truth inherent to the rumor than I may decide to start ignoring suggestions worded in such a way as to be a demand rather than a suggestion :P

Allow me to rephrase then. The GMM maps in Particle Fleet are really fun, and I hope you play those once you wrap up the official PF missions.

Strategic Sage
Jan 22, 2017

And that's the way it is...
Child's Play


At the end of the video here there's a bit of a teaser. The next planet ... well, it's pretty rough. Anyone who hasn't played it and is interested in a stiff, unique challenge should give Super Tower a try. In my opinion it's worth mentioning alongside Bardel, Solar Wind, Fortress Siege and the like - it's arguably as tough as any planet we've come into so far. I was going to add it on to this session, but I shelved that plan after spending several hours on it and still not quite defeating it.

Ultimately I did that later, but just a head's up if anyone's interested in it.




Our sole misadventure here though, Child's Play, is well-named.




This is your basic just go have fun map, but I think it's better-designed than most of them have been because you don't have a huge sprawling repetitive mess.




There's a bright flashing neon sign in the lower left saying LAND HERE basically. The SuperCannon ensures you have initial safety, and obviously there are Power Zones galore. Getting that first SuperReactor up will secure our energy for a while, but it would have been better to turn off the artifacts from being harvested until I had a better economy.




Amusingly, after having still just enough to hold off the initial attacks, I got too aggressive moving my weapons out. Also, you can see one of the cannons isn't actually on the power zone which is another super bad idea. So yeah, I decided to restart and forget that ever happened. If you are dumb enough, it's still possible to lose this.




Now for a more intelligent way. Artifacts deactivated till I get a couple reactors up, then a few SuperBeams. There's about 40 spores that come, 18 from one tower alone. A handful of anti-air though, and you're fine. Here I'm well on my way to an expanding wedge of security. Also worth noting that, I don't think we mentioned it before, but the PZ the Node starts on adds more than energy - it appears to give it extended connection range. That can be useful here in expanding.




SuperSnipers to deal with the runners that aren't too far away, and I'll soon add more Digitalis Cannons to clear out that mess. This SuperNullifier is knocking out a dozen at one blow - there's lots of opportunities for such mass carnage.




Grab the ore, push further - and already we're seeing cut off sections of digitalis with the usual creeper-spewing effects.




Gratuitious use of Conversion Artifacts just because I feel like it. There's close to a dozen of each kind on this map, so it's pretty much a playground to do whatever you want.




A bank of Totems in the north to supply the Forge. Berthas and a Thor just because. I've secured the western starting point, and now must smash the eastern island.




I waited some while for the artillery to have its effect, then a combination of anti-creeper and a SuperRelay connection got me in position to clear out a bit of space. Of course, pretty much every type of weapon is participating as the busyness of the screen indicates.




Another gratuitious nullifier blast secures the way. A few more minutes of smashing things and this stroll is complete.

Regallion
Nov 11, 2012

As a reminder:
PZ relays have greater relay-relay connections.
PZ collectors havve greater local connections which is amazing for supplying poo poo with a single unit.

Kangra
May 7, 2012

I'm a little behind on the videos, but you did get hit with spores in Creeper Wall 3; you moved all your beams at once and that's just asking to let one slip by. In most missions you've done that there were backups near your command node, but in this one you didn't put them up until later.

Strategic Sage
Jan 22, 2017

And that's the way it is...

Kangra posted:

you did get hit with spores in Creeper Wall 3; you moved all your beams at once and that's just asking to let one slip by.

Good point - most of the time I would have noticed that being the reason, but there being so much territory 'behind' the front lines made it so the impact was a lot later.

Regallion posted:

The actual PRO strat for this level is "Wall off the pier, so only non-killers are in the pit"

I find this very confusing. For one, PZ Terps do of course have extended range but it still isn't enough to get close to walling off any part of the pier. In order to get close enough to do that, you'd need a ton of Collector-spam to keep your terps from getting killed -- it's not like there's an accessible bend or curve or something in the pier to provide easier access for this. And then you have to know that you can somehow keep killers out of the pit via this method when this is never explained … there's no non-script-reading way to know there are even such things as killers/non-killers. So I can only end up concluding that this actually really isn't materially better than the brute-force stuff I ended up doing *shrug*

Xarn
Jun 26, 2015

Thotimx posted:

Good point - most of the time I would have noticed that being the reason, but there being so much territory 'behind' the front lines made it so the impact was a lot later.


I find this very confusing. For one, PZ Terps do of course have extended range but it still isn't enough to get close to walling off any part of the pier. In order to get close enough to do that, you'd need a ton of Collector-spam to keep your terps from getting killed -- it's not like there's an accessible bend or curve or something in the pier to provide easier access for this. And then you have to know that you can somehow keep killers out of the pit via this method when this is never explained … there's no non-script-reading way to know there are even such things as killers/non-killers. So I can only end up concluding that this actually really isn't materially better than the brute-force stuff I ended up doing *shrug*

PZ terp + a single range upgrade will let you wall off half of the pier, second range upgrade will give you enough range to wall off the whole thing. Then the problem is figuring out how to herd all the killers to the pier :v:

Xarn
Jun 26, 2015
This is what I had in my game, about halfway through (ignore the timer, I didn't pause the game when I went to grab lunch).



A bit later on I made the steps into the trap extend further into the pit to guide the killing drones faster, waited a bit, then I build disarmed nullifiers around the pit and then armed them when the big drones were coming close...

Fangz
Jul 5, 2007

Oh I see! This must be the Bad Opinion Zone!
Honestly I just think that's a poorly designed level. They should have made it so that anticreeper suppressed drone production or something.

Strategic Sage
Jan 22, 2017

And that's the way it is...

Xarn posted:

PZ terp + a single range upgrade will let you wall off half of the pier, second range upgrade will give you enough range to wall off the whole thing.

So this is the part where I sheepishly admit that this wouldn't have occurred to me, because I didn't know range upgrades applied to non-Weapons things. Or if I did, I sure as heck forgot it.

Adbot
ADBOT LOVES YOU

Carbon dioxide
Oct 9, 2012

Thotimx posted:

So this is the part where I sheepishly admit that this wouldn't have occurred to me, because I didn't know range upgrades applied to non-Weapons things. Or if I did, I sure as heck forgot it.

Even without the range updates, you can put an 8-height barrier just a couple blocks away from the pier for the most part. That way they can't walk far from the pier anymore meaning their explodey-range can never reach the edges of the map anymore.

  • 1
  • 2
  • 3
  • 4
  • 5
  • Post
  • Reply