PTR Changelog 2016-09-09
-
Either players need to start doing more war games so that they can test out their defense code, or there needs to be some other way of testing your defense code. You can't ensure that your defense logic will work unless someone attacks you. For most people, that isn't going to be a mutually agreed upon fight.
-
I have to agree with Waveofbabies on this. As a game mechanic it doesn't seem to fit well with everything else. I can appreciate that you want address the disadvantage of an absent player, but I think there must better way. For one thing, it makes attacking a lot less interesting because it completely removes the spontaneity of it. For that matter, it makes defending less interesting too. It is fun to try to think of a robust defense system that doesn't need you to be present.
I can only imagine this was inspired by people complaining that they were attacked while they were asleep or away from the game. I think the correct response to encourage people to actually code a defense. This mechanic isn't going to solve the problem, it still needs to be coded and managed well in order to be an effective part of your defense. People are still going to have bugs and get overrun why they aren't there. This will just make things less interesting for everyone in the meantime.
There are already mechanics that give the defender (who may or may not be present) an advantage: towers, walls, and ramparts. People need to just use these effectively.
The biggest problem with the unattended defense is that it is difficult to test. People's tower code fails, or their tower refilling falls behind, or their defender creeps have bugs, but they don't know these things. The PTR has the nice feature where you can summon invaders at will which is a great start, but due to unreasonably long ticks it is difficult in general to use the PTR.
I think it would help a great deal if a feature like this was available in the regular screeps world. There have been a couple times that I wished I could turn my creeps into hostile creeps to see if a defense feature was working. Maybe some sort of "simulate attack" feature that spawned invaders that were more difficult than usual and had more robust healing/wall breaching behavior. Maybe you could also easily end the attack at will to take the risk out of using the feature. Perhaps you could choose from a selection of commonly used invasion styles which will be a great learning opportunity for new players. Even just having a hostile creep that sits at the border and heals itself to drain the tower would help a lot and inform players about that commonly used tactic.
I hope you choose a solution that is more in-line with the spirit of the game. It is a game about automation and planning for contingencies while you write your code. If you are encouraging players to be present as a solution to the problem, I think that is going in the wrong direction.
-
One point of clarification, if this is meant to protect players while they are offline, are there any plans to disable the protection upon a player logging in?
There is no mechanism to do that reliably. Many players call auth endpoints to gather statistics externally, they are considered always online because of that.
The biggest problem with the unattended defense is that it is difficult to test. People’s tower code fails, or their tower refilling falls behind, or their defender creeps have bugs, but they don’t know these things.
And the problem is that even a little bug will lead to you being wiped out completely. In most cases, the attacker will use a flaw in your defence not just to take one or two rooms from you, but to destroy your entire empire, and you wake up to an empty state when you can’t even test this bug again. In this case you have much less incentive to continue playing than if you had some rooms alive in safe mode.
-
Not when the defender is online, an attacker would be lucky to get through 10mil in his entire time awake at the computer.
One boosted dismantler can go through a 10mil wall in 1.5 hours if defence is broken.
-
But this is going to make every attack become more drawn out and easier for the defender to make up for the subset of players that can't code decently robust defense code. I honestly believe that the main reason people have trouble with defense is because they don't have a good environment to test their defense logic in. The only way to do it right now is to either do it in PTR (which is slow) or by doing wargames (which is expensive). Even with those limitations, I was able to get my defense code to be pretty solid through those wargames with Atavus. If I had the ability to test out more scenarios, I could make even more robust code.
Having that 10,000 tick delay just makes it more likely that people will have the chance to actually test out their defense code and fix it (although they're still having to test it in production in that scenario). It's helping to ease some of the pain, but it's also going to make every significant assault a drawn out and tedious affair. It's (partially) fixing one problem while also introducing an entirely different one.
If I have to wait 10,000 ticks whenever I want to attack someone, that means I would have to wait over 9 hours at current tick rates. That means that if I want to siege someone, I'll either have to start the siege in the morning & hope that they trigger safemode, or I'll have to automate sieging (which is a hell of a lot harder than automating defense). If they do trigger safemode right when the attack begins, then I can head to work and do the siege afterward. If safemode is instead triggered later, then there's a decent chance the room is going to come out while I'm sleeping. Then 27 hours of window to siege. But that doesn't mean that I'm going to be attacking when the defender is online. If I have an idea of what timezone they're in, I'll trigger safemode, wait for the cooldown, then attack while they're asleep. It just means that I have to announce to them a day beforehand that I'm going to be sieging their room, which really sucks, because it completely removes the option for element of surprise (even surprising defense logic or resource balancing logic - not necessarily surprising the other programmer). If the goal is to give the defender a chance to test out their code, I really don't think this is the best way to do it.
It sucks to lose your shit, but it's also a part of every RTS out there. It also sucks that players are gonna leave because they lose their rooms, but even more players are leaving because it's a programming game, and it's gonna be hard to play.
-
It’s helping to ease some of the pain, but it’s also going to make every significant assault a drawn out and tedious affair.
Yes, and this is a good thing, not a problem. This is a slow-paced game. You wait for days when you upgrade your room, you wait for days when you build your colony, why wiping it all out should be immediate?
Screeps is not Starcraft. It is more like chess, where one game can last for many days.
Then 27 hours of window to siege.
16 hours actually. The window is 30,000 - 10,000 ticks.
But that doesn’t mean that I’m going to be attacking when the defender is online. If I have an idea of what timezone they’re in, I’ll trigger safemode, wait for the cooldown, then attack while they’re asleep.
The safemode trigger can be (and should be) programmed in such a way that it always ends when the owner is awake.
If the goal is to give the defender a chance to test out their code
Not really. Not to give a chance to test out, but to protect from fatal consequences of even a little flaw. Fatal consequences should be due to fatal superiority of the attacker. Minor bugs should lead only to minor damage.
-
If they do trigger safemode right when the attack begins
This is not a good use of safe mode. Better to trigger it only when the attacker has proved to be successful and is about to breach your walls. This way you will have some info to analyze when you come back.
-
Also, don't forget about nukes. They can be launched even to rooms in safe mode.
-
I agree with the design of having battle and siege to be more drawn out, but is it possible at all to tune the game without adding a mechanic for it? Specifically, make it takes longer to take down wall -- may be dramatically decrease the damage AND cost of the WORK and ATTACK part on wall? Since there is a limit of space that you can put creeps on, it will just naturally make siege last longer.
-
My post was long winded but I made a suggestio that might help a lot with the testing problem and the defense issue overall. I'll trim it down:
The PTR has the nice feature where you can summon invaders at will which is a great start. I think it would help if a feature like this was available in the regular screeps world. Maybe some sort of "simulate attack" feature that spawned invaders that were more difficult than usual and had more robust healing/wall breaching behavior. Maybe you could also easily end the attack at will to take the risk out of using the feature. Perhaps you could choose from a selection of commonly used tactics. Even just having a hostile creep that sits at the border and heals itself to drain the tower would help a lot and inform players about that commonly used tactic.
It isn't very hard to code towers to attack invaders but even this commonly fails. It isn't because people are dumb, it is because there is no easy way to test it and refine the code. You will have the exact same problem with this mechanic.
-
"One boosted dismantler can go through a 10mil wall in 1.5 hours if defence is broken."
Come on Artem, you know as well as I do that an online attacker would be lucky to get 100 ticks straight attacking a wall if the defender is online and knows how to defend. That 10mil wall would take several hours or days. Coming from my own room design, having walls a single tile from the edge of the room means only a set amount of healing could ever be done on a dismantler, but the defender has all the room behind the walls, so he will have no problem overpowering the single row of healing of the attacker.
How does that mean they're "too powerful" for me? Literally anyone could do it if they had enough boosts and energy. All they need is a rudimentary creep army system and to be online and bam, you simply can't overwhelm them on attack because the game isn't built for that.
-
I'd like to add my 2 cents on this topic.
I think the idea behind "safe mode" is a good one, but safe mode itself is not. I base this on the following things:
- We got markets now, people can buy stuff to defend themselves.
- Screeps defense systems are a must, automated or not.
- We got alliances, some even have automated reporting in slack channels when they're attacked
- Alliance system would be amazing, so we can see who belong together, I know this is planned.
- It's already extremely hard to start and plan an attack on a player. The retribution is extreme. Most of the times the attacker will be in the hole if he fails an attack, and will be obliterated later by allies or the defender itself.
- There is little incentive to attack players as is. This will probably even lower the attacks/month further. There should be a reward system for destroying players.
- Aside from 1k ghodium (which can be produced by 1 room in 375 ticks) it’s an extremely cheap tactic to defend your rooms.
- It doesn’t scale for higher level players. You’re expected to have active defense systems as a higher level player.
- You need vision in the room to detect when to attack (or store it in memory). This puts extra logic burden on the attacker. A way to grab this information without vision is a must if you’re going on with this.
> “Also, don't forget about nukes. They can be launched even to rooms in safe mode”
Nukes are extremely cheap to defend against, and always puts attackers in the loss (resource wise).
> "One boosted dismantler can go through a 10mil wall in 1.5 hours if defense is broken."
If you're lucky. Well planned out defense will pick up dismantled energy and put it straight back into the walls (happened to me multiple times).
> “If they do trigger safemode right when the attack begins”
This is probably what will happen. Its ‘hard’ to detect when a wall is about to be broken through compared to just enabling safe mode when a giant boosted hostile creep is on a border tile.
Good things this can be used for:
Respawned players get X amount of “safe modes” for their new rooms. This way you can still “novice” your zone yourself. It also grants protection of noobs early on, and they can decide if they need it or not.
“Vacation mode” for players going inactive for whatever reason for prolonged time due to unforeseen consequences.
Don’t get me wrong. This update will probably affect my empire in a good way, this method will make defending my huge-ass empire a whole lot cheaper cpu-wise. It does take away the challenge of defending such a large area, hence I’m strongly against it and would like you to reconsider pushing this to PROD
Idea's on improvement:
Don't block anything at all, just affect the room. You could diminish every hostile action (HEAL, ATTACK, etc) by 90%. This way your walls will hold longer, but the attack is not for nothing.
-
Come on Artem, you know as well as I do that an online attacker would be lucky to get 100 ticks straight attacking a wall if the defender is online and knows how to defend.
I mentioned “if defence is broken”. When your towers are not firing and your defend creeps are not being spawned because of a small stupid typo in your defence logic.
-
Were you secretly playing the game and this happened to you?
PS: where can I find the markdown rules?
-
Atavus: this happens all the time, and shouldn't shock anyone as you write defense code without ability to properly test it, so when it clashes with reality it fails one way or another. And unlike attacker, who is online and can adjust it as he goes, you are offline and very soon dead.
-
I was not arguing for or against it. Just found it funny to imagine Artem playing the game incognito and then dissi accidentally crushing him overnight.
-
Although I should mention a few things.
First and foremost, modular code which fails gracefully is one of the cornerstones of proper software development and certainly one of the good lessons people can take from this game. Structuring your process so that unexpected code failures are isolated at the creep, room, spawn etc level is quintessential to survival in this game.
I have to agree with hernuander that the way the game is now, large empires cannot be taken down overnight anyways. They might lose a room or two in the initial strike, but that's the benefit of first strike, a fundamental aspect of warfare. It is indeed already quite difficult to envision how you might be able to overcome some of the more effective defense tactics. It is likely that future warfare among the big players will end up as a very long term grind where resource efficiency will be more relevant then actual tactical effectiveness. Where the key will simply be to drain all possible resources from the opponent. Although the introduction of the market allows players to bypass this restriction.
On the other hand, I have to agree with Artem, that this mechanism would allow screeps players to get a more comfortable sleep. If this mechanism must be implemented, I would strongly suggest:
- Make it empire wide rather then room based
- Extend the refresh timer to 50k
I can understand the desire to make the game more accessible and fully support any change in that direction. The game is already super niche and having a larger community would be welcome. As the community grows the challenge for the established players will certainly increase.
Suggesting that players which do not have the following:
- Modular error handling
- Effective automatic defense system
- Daily access and activity within the system
Should just suck it up, is not ok. Yes, people should just restart when they get wiped. People should do a lot of things, but they don't. What matters is the perception people have of the game. If you want this game to develop, a strong community behind it is quintessential. Constructing necessary mechanisms which protect and engage players is important. Just not sure if this method really has an impact.
-
Atavus: if a player does not have daily access to the game, the safe mode system would not be helpful for them. That reason is partly why I think this design is a bit against the theme of the game. Without safe mode any player in a war can take shot at the other at their convenient time. With safe mode, it will let the one with more consistent daily online time some advantages (imagine the changes in a war between someone that can go only twice a week and someone that can go online daily, with and without safe mode). I do not know if said advantage is significant or not.
-
if the sole role of this protection is to defend you against your own tiny and stupid defence bugs and typos - add some limit to it - 10, 100, 1000 protections per player per respawn.. but a limit so this is not abused in all other cases
-
Not only typos and tiny bugs, but even if your entire siege mode didn't kick in - that will work as failsafe against it (or just normal bugs in defense logic). A hard limit on top of existing one, which resets on respawn, is actually not a bad idea as a limiter, although it will reward not-warring players more than the aggressive one, discouraging attacks even further.