Update: Last Dance May 25, 2019
This game was never meant to feature a full-fledged combat system. The protocol was designed to allow movement and actions from hundreds of simultaneous players with as few messages as possible, ensuring logical consistency (two players can't both pick up the same object at the same time and cause the object to duplicate), but not realtime interaction guarantees. In fact, the protocol was design with extreme and variable latency in mind, because I always intended players from around the world to connect to the same server. One of my test cases involves using the tools TC and NETEM to manually insert up to 2.5 seconds of latency for all messages sent to my test server. The game still mostly works, even in those extreme network conditions.
So why is there combat in the game at all, then? Because it's necessary for society to function. How can you have rules or laws if you can't enforce them? How can you enforce anything without, well, using force? So yes, it would be easy enough for me to remove combat from the game entirely---just a few mouse clicks. But then the whole thing would fall apart, and the game would be ruled and ruined by griefers, happily ever after.
As a simple example of an endless annoyance: you set down a tool that you are busy working with, and a griefer grabs it and won't give it back. This is kindergarten stuff, but it graduates to petty or even grand theft in the adult world, and in any case, we solve these issues by adjudicated force, at the end of the day. But let's say we want no violence in our game. How do you deal with the person who took your tool and won't give it back?
A game could "solve" this problem for you---and many games have tried---via a very detailed system of hard-coded privileges and rights and transfer operations, essentially hard-wiring a legal system into the fabric of the game itself. Your tool would have an owner list, and that other player couldn't touch that tool unless you added them to the list, and they can't add other people unless you also add them to the admin list. All to just lend someone a tool. If this sounds fiddly and tedious, you're right. We might call such a design a "trust system," but is is anything but, as I will explain in a bit.
Much simpler to let an understanding develop between players---who was using the tool first, when it's acceptable to grab it yourself, and when you should ask first---and give the player the power of force-in-numbers (in other words, law) if that understanding is repeatedly violated. If you say, "Don't plant wheat here, I'm tilling these rows for milkweed," it's expected that the other person will listen. If they don't listen, you complain to them, and warn them. If they keep on with their violations, you get the backing of the town elders, and you take it to the next level. After all, they can't keep violating the community standards if they're dead. Unvarnished, it sounds barbaric. But that principle is at the beating heart of every functioning society in the real world. The less-barbaric-sounding version is imprisonment or banishment, but even those are carried out at weapon-point, for obvious reasons.
Even without the will of the majority to back you up, you can see how an understanding could develop between two isolated players over time, and how that understanding could blossom into a real sense of trust. Real trust comes from freedom and power: you could hurt me if you wanted to, but you choose not to. If you are powerless, I may not need to worry about you, but that doesn't mean that I develop a trust with you. Two free wolves develop a real trust. Two toothless dogs stuck in neighboring cages have no need for trust. That's why a hard-coded trust system, in the place of powerful and free players, actually squashes trust instead of fostering it.
And that is what One Hour One Life is about, from its very first moments onward. Two strangers trusting each other, sacrificing short-term gain for long-haul mutual benefit. Mother and baby are the basic example. There's no hard-coded guarantee that you won't betray me, but I have your back, and you have mine, and you haven't betrayed me for the past 30 minutes, so even though you're a complete stranger to me, I sense that I'm growing to know you. And just maybe---dare I say it---I'm growing to love you. Because you could kill me, but you choose not to.
All that said, for this to function, we don't need a full-fledged combat system. Violence can be a logical operation, or at least it should be, and was meant to be, in this game. If I choose to kill you, I should be able to do that without any execution skill required, and regardless of network latency and so on.
Which brings us to that infamous dancing griefer. Because the movement protocol is not a realtime one, it was possible to exploit it to make yourself nearly impossible to kill. The server essentially had no "sync points" between players in the system until the players landed at the end of their movement. Okay, the player's movement just ended, and we know where the player is standing, for real, and all clients and server agree about that. Now they can execute an action on an neighboring tile. Mid-move, due to variable latency, all bets are off about where a player actually is on each client screen. Griefers could exploit this by moving continuously.
Even if the protocol didn't work this way, a moving target is still way harder to click. And what happens if you misclick? Well, you just right clicked on the ground, which means you just dropped your weapon. Trying to finally hit a dancing griefer was an absolute click-fest of frustration. So even if the town elders have collectively agreed that this person needs to go, they had trouble carrying out their decision. And the griefer, who could sneak up on an unsuspecting person who wasn't busy dancing, would get the jump on each victim and be able to land the kill.
This update changes the semantics of the client KILL action.
It used to be an isolated action that would either succeed or fail depending on where you clicked and whether the server believed that the person was actually there and in range.
Now KILL is a state, not an action, and SHIFT-right-click puts you into that state, with essentially a death warrant for whoever was closest to your mouse when you clicked. You get a forced-ANGRY face when you're in this state, and you can still move around freely. But if you ever cross paths with your target server-side, so that the target of your request is in range of your weapon, the kill action is executed instantly.
This comes as close to a logical operation as we're ever going to get, while still preserving the effects of weapons with different ranges. If you kill-target someone with your bow who is in a locked room, and you stand by the door, the arrow will fire instantly as soon as the door is opened. If you target someone outside the gate with your sword, and then stand by the gate, you will attack them instantly the moment they walk through the choke point.
You can cancel this state by putting your weapon away momentarily, and your angry face will return to normal. The face also gives the target some warning about your intentions---and of course, it can be bluffed with the usual angry emote.
This is a pretty big change, and it will dramatically change town griefing dynamics. But there are some other big changes beyond that.
The temperature system in buildings has been improved again. Now the heat simulation map is 13x13 instead of 8x8, allowing larger buildings to function as insulated spaces. Furthermore, an enclosed building acts as a direct temperature bonus on its own, and also doubles the effectiveness of the clothing that you're wearing. So buildings do more than just hold in the heat of a fire. The best way to think about it is that they reduce some kind of inherent wind chill in cold areas of the world. But for this to work, you have to be completely indoors, which means walls on all sides and corners, along with a full floor, and along with a closed door. If the door stays open too long, the wind will blow in, making you colder slowly over time.
The way last names are passed down to babies, especially in the case of a generation gap where no name is given, has been standardized. This should fix the lost-family-name bug.
Laying tracks for rail carts is now a lot cheaper---one kit can lay six tracks instead of just one. Gates can be built across roads again, and unused property twig bundles decay away quickly, so you don't need to spend time cleaning them up. You can finally move bowls of sterile pads around---mobile medicine can be a thing now.
Next week, I'll be tackling Eve overload around existing cities, and also the balance between close towns and stripped natural resources.
|
|
|