Google Frog's Terraform improvements goals and tasks page.

Constructor Based Terraform

5 commands:

  • Level
  • Raise
  • Smooth
  • Ramp
  • Restore

The first 3 commands will have custom areas defined by players with a lasso (think custom formations style drawing). The area will then be broken into segments that each constructor will work on, this prevents constructors from building too far past their range and small areas put less single-frame strain on repathing.

Fix Command-Constructor interaction:
The system that allows builders to spend bp/metal/energy on a terraform block while making sure they are in the vicinity needs improvement. Ideally:

  • Able to place under buildings or under units without them needing to get out of the way. -done
  • Units should be able to walk over the active area and buildings should be placable. -done
  • Completely undetectable by the enemy.
  • Nano turrets set to auto assist should help out areas that the constructors with the orders have not yet reached. -done
  • Adding and removing constructors to the task should be easy. -done

I am not aware of any way to make constructors 'shoot' at an empty patch of ground while draining resources. If anyone knows how to do this it would be great, if else the current idea for implementation is below.

My current idea is to spawn an unreconstructed building (on every site which cons will have to work on) when the terraform order is given, selected constructors then queue repair on all the buildings. This will allow nanos to assist areas not yet reached and constructors will be able to move away without losing the command. The building will need to:

  • Be undetectable by the enemy (stealth, invisible, non-blocking etc..)
  • Not give players any information about areas that they have not explored.
  • Destroy themselves if the order no longer has any cons working on it.
  • Invulnerable.

Partial Construction:
Large amounts of ground should be moved incrementally. The current instant terraform completion looks messy. For example a massive spire should update it's progress every few or so seconds, the update frequency will have to be balanced against performance

Dynamic cost:
If a building is blocking terraform the terraform should cost less. Re-costing will have to occur if a building is created/destroyed in the terraform area. The area will also have to check other terrain changes(probably not weapon explosions) to re-cost the terraform.

Level and Raise

Most terraform actions will be achievable with level and raise. The only difference between the commands is that Level will level the ground to a height and Raise will raise/lower relative to the ground directly below.

The function of level/raise can be split into 2 general modes; area and wall.

Area commands will consist of the player defining an area with the lasso and moving the mouse up or down to indicate where the ground should be levelled to or how far up or down to raise/lower the ground.

As a lot of terraform is used to construct walls there should be a non-tedious way to do this. I think defining a thin area of constant width would be much too tedious. A wall command would activate when the player indicates that they have finished 'drawing' with the lasso INSTEAD of closing the lasso gap to create an enclosed area. The player would then drag the mouse up/down to indicate their desired height as stated above. A 16 elmo wide wall will then be constructed along the line.

The interface to achieve contextual area or wall and then the height of either could very easily become messy. The general situations it should cover are below.

Player wants to create a Spire/Hole:

  • Start Lasso
  • End Lasso almost immediately
  • Chose Height

Player wants to create a Wall/Ditch:

  • Start Lasso
  • Draw Wall
  • End Lasso
  • Chose Height

Player wants to do something to an Area:

  • Start Lasso
  • Draw Area
  • End lasso by drawing back to the start to create a circle.
  • Chose Height

Start Lasso will be LMB Down
End Lasso will be LMB Up - This puts the command in Wall Mode if the loop is open and area mode if the loop is closed
Chose height by clicking LBM

The issue is what if a player wants to make an area enclosed by a wall?

  • Start Lasso
  • Draw Area
  • End lasso by drawing back to the start to create a circle.
  • Indicate that they want to make a wall not fill the area
  • Chose Height

The only solution seems to be to add another key which makes the command a lot more clunky. I would like to keep RMB free as RMB during any stage of the command should cancel the command.
Saktoth: Simply use the same interface as spire: click to begin lasso, depress to end it, click again to chose height. If the player closes the loop, its an area. If they overshoot the loop (doubling up the line), it does not join and remains a wall (of a uniform height, the doubled area doesnt go twice as high). This is more consistent, besides. There should be a graphical effect telling you whether you are closing the loop or not. However, the call for circular walls is not high, you need to draw several lines to surround an area currently and this is not that problematic. Sorrounding a building is trivial as they do not move with terra, so area terraform isnt a problem.
Google Frog: Ignoring the problem sounds good. Maybe if a player selects terraform then clicks and releases on the building it will be interpreted as make a wall around the building. This would be as easy as the current Alt,Shift,Ctrl key combos to easily surround a building.

A minor issue is that Spring seems have have a pathing system made of squed hexagons arranged in a grid. This causes diagonal walls in 1 direction to be less walkable than diagonal walls in the other direction and orthogonal walls. Terraform blocks are currently 26 blocks high as this number interacts with vehicle and bot slope-tolerance to make all walls impassable for vehicles and passable for bots. All 2 high walls are impassable for bots. With greater control of terraform height players will be able to exploit the hexagonal pathing system. Wall commands could snap to a horizontal grid 26 elmos big to workaround this problem, it would also improve the interface as players will know what will be able to cross their walls.
Saktoth: This is important and an elegant solution to several problems, id go with this.
Google Frog: It can only be a solution for raise as a uniform height is added. Level wall could be below and above the ground at the same time.

Extra Control:

  • Hold a key and click on a building (press and release while while moused over the same building both times) to quickly give a surround building order. Replaced current CTRL+SHIFT block building.
  • Hold a key to drag a rectangle to be terraformed.

Smooth

Player selects an area with the lasso which will be smoothed.

The entire area will not be smoothed at once if the area is too big. An algorithm needs to be created/found that can deal with this.

Saktoth:What does smooth do, makes walls less steep, spreading lumps out over an area? Is this a replacement for restore?
Google Frog: It will make the ground the same height as nearby ground, this will level out bumps. It is meant to be a replacement for restore. Level or Raise have no way to easily make a bumpy ramp(eg clogger spam on DSD) passable again, terraform ramp will not work in all cases. Smooth is more 'natural' than level or raise so it will be linked to some weapon explosions.

Ramp

Works much the same way as ramp currently.

Goals

  • Allow players to define the width of their ramp.
  • Improve interface, make a custom command.

Ramp Interface

  • Click on ground, this is the start of the ramp
  • Move mouse up/down and click to set start height
  • Click somewhere else to choose end position
  • Move mouse up/down to choose end height, Snaps to terrain orstart height if the height is near either of those values.
  • Click somewhere to choose width.

Restore

Replaces engine restore so that the cost and method is easily controllable. Lasso drawing will be used which is an improvement over the current restore interface. Restore will not have any cost bonus compared to other terraform.

Terraform Weapons/Abilities

Currently Clogger.

Anticlogger skuttle.

Link weapon/death to partial smooth to knock down walls.

Link weapon/death to partial level, level would be massively OP on many thing. Full level could be used for seismic missile

Ramp Bulldozer!

Non-Gadget

  • Move turret aim-points up to prevent invulnerable turrets.
  • Create Building to shoot seismic missile OR multi-stockpile gadget.

Pathing

When Spring is presented with a maxslope of 36 and a left-top to bottom-right sheer cliff the blocked path detection falls over and dies. Current Level Terraform can be walked up on the bottom right and top left by using FPS. With added control it is more exploitable.
Solutions:

  • Less slope tolerance for bots; vehicles have no problems with their 18 slope tolerance. A change from tolerance 36 -> 30 corresponds to reduced cliff walking possible on elevations 120 -> 40. This is by far the simplest and most effective but impinges on everything else and may break a couple of maps.

After testing 30 slope tolerance the only map that was effected that I could think of was Scorpio Battleground. It also makes the ramps that bots can climb non-ridiculous and would presumably make hills more powerful.

  • Typemap solution if/when lua gets access to typemaps.
  • Detect (somehow) localised terrain formations that cause the bug and edit user's commands to avoid them. This would only make causing the bug harder (currently it is quite hard to make a hole that a bot cannot walk out of).
  • Stick with 24 elmo wide walls as they do not cause the bug and igonre the bug for area - basically the current situation.

Specific Constructor Goals

  • Destroyed/Created building recosting. - done
  • Overlapping terraform recosting and re-progressing - done
  • Convert ramp to use the new modular terraform segment control. - done
  • Fix pathing - jk fixed for next Spring
  • Cost balance terraform - done (modoption + metal)
  • Clean up the gadget by removing old terraform method. - done
  • Optimise repair command order for area terraform
  • Fix occasional double segment creation bug - done (haven't seen it lately)
  • Update terraform guide page - done

GUI

  • Reduce graphics related slowdown for large terrafrom areas
  • Fix depthtest problems for the grid parts of the interface
  • Replace the stuck mouse height choosing method
  • Fix command menu clicking - done
  • Interface for ramp - done

Terraform Block

  • Does not decloak enemies - done
  • Invisible - done
  • Invulnerable - done
  • Destroys itself when unused - done
  • Prevent Allied units from trying to avoid shooting the block. - done
  • Fix self-d Cob error
  • Remove gibblets

Attachments