stackcollision / GardenConquest

A new conquest game mode for Space Engineers
6 stars 7 forks source link

Upkeep #2

Open zrisher opened 9 years ago

zrisher commented 9 years ago

Currently this mod helps limit the growth rate of ship number and complexity, which has plagued server owners looking to keep CPU down in the long term. But even with a limited growth rate, eventually players will create more stuff than the server can support at once, and it sucks to have to wipe because of that. Thus I propose the introduction of an upkeep_cost for each classified grid dependent on its leading HullClassifier, as well as a maximum pool of outstanding ShipLicense components that the upkeep_cost is measured in.

You could hook the upkeep check into GridEnforcer.UpdateBeforeSimulation100 or Core.timerTriggered. The first comes with the advantage of not having to look for grids or their info - you're already there. The second comes with the advantage of working off a Timer instead of simulation updates. Any upkeep drained from a ship should go back into the total pool of available ShipLicenses.

You could enforce the max pool by making ControlPoint.TokensPerPeriod check the total available pool remaining (stored in Core or settings).

Any grid that doesn't have enough ShipLiscenses onboard to support itself becomes a HullClass.CLASS.DERELICT. Derelicts should slowly lose their parts over time, starting with the most cpu-intensive and ending with armor. They should also immediately become unpowered and stopped. This allows server to support some cool semi-persistent battle-aftermath-wreckage without lagging, as well as players to recover from momentary lapses in supply.

Derelicts are different from Unclassified ships in that a player can have a certain number of Unclassified ships for free before additional ones are marked as Derelicts and removed. Perhaps it would make more sense in this case to call the allowed Unclassified ships UNLICENSED and reserve UNCLASSIFIED for ships whose type truly has not yet been determined.

stackcollision commented 9 years ago

I think that upkeep is not the best solution. If there are no procedural asteroids people will be forced to mine at the CPs, and their ships will be at risk. I think for the initial version we should let the players manage the grid counts for us by killing each other. If it this is still not effective enough, we can talk about upkeep. I don't think this will be as big as problem as you think.

zrisher commented 9 years ago

I think it's a larger problem than you expect :smile:, but testing with a live audience is the only thing that will tell us for sure. I think that makes a lot of sense here, since this is a big chunk of functionality to add.

chickenbranches commented 9 years ago

How about a running total value of invested license component cost active on the map and when it hits a soft cap of lets just throw in a random number of 5k, then all currently controlled points are paused until combat bring its down below say 4.5k. To help encourage fighting rather then just hoarding your ships when the cap hits, during the period when the cap is in effect, allow any newly captured point to generate up to say 100 points or some other number before capping out assuming the total number is still above 5k.

zrisher commented 9 years ago

To confirm my comment above, this is not needed for Beta.