Discuss the massively-multiplayer home defense game.
You are not logged in.
I've thought about this, but I keep stumbling on two issues:
--Cheaters will still be able to get the full map anyway (the only way to prevent map-reveal cheating would involve intractable changes in the client/server relationship.... it would not just entail partial map delivery, because animals and such move even on the parts of the screen that are covered by the fog, so the server would have to simulate everything that you can't see, step-by-step, move-by-move, and THEN deliver you whatever pieces of the map you can see).
--Partial scouting always feels like a slow, grindy means to the same end. If you keep trying, day-by-day, you will eventually obtain the full map. Maybe, in some cases, it would be "gameplay" to decide which parts to reveal first, so you wouldn't waste time revealing useless parts. But in many other cases, it would be trial and error.
Finally, given that NP-hard puzzles are totally possible to build in the game, having the description of a given puzzle (aka, a map) is not a puzzle-killer. Yes, it pushes puzzle design to the next level. But I'm really eager for us to move beyond the current level (combo locks and magic dances).
Working on this for v6:

They do nothing other than light up when they have power.
I'm not sure if they're useful for final house designs (maybe for their psychological effect?), but they are useful for testing trap setups without killing yourself.
Not sure about those... will think about it!
Trying to keep it simple, so... no, I wasn't planning on that.
Hmm... yeah, family will move differently in v6.... I've been thinking about doing a full, system-wide reset, but maybe I won't have to.
I'll certainly have to wipe all security tapes, though (they won't play back correctly because of the family movement changes).
Also, it might be really nice to wipe the slate clean. Get rid of all the houses that no one is playing anymore, bring the house list back to the core players, and so on.
On the other hand, it would be really interesting to tackle all the combination-lock houses with the new map feature. All those secure people would suddenly become vulnerable!
No release date. I'm busily working on v6, though! Should be pretty soon.
Good point, Setz, there are certainly some interesting abandoned houses. I just went through one myself, going after $240 or something, that was indeed very tense and cool. Seemed totally de-toothed by previous robbers, but then I found myself in this very scary maze, and uncertain about whether I'd come out alive. A nice "press your luck" feeling.
What I'm more worried about are the abandoned houses that are empty except for a safe, or are only half-built. The ones that have 0 deaths. Those were still earning money, too. And it is indeed weird to hinge salary on death-count in an abandoned house. It makes sense that salary is earned only by people who are still playing the game in some way (even if they are playing by designing a really good house that no one has gotten through yet).
Salary was originally added as a kind of band-aid for an over-time money drain problem. Money only enters the system when someone dies and starts a new life (+ $2000). But over time, people spend money on tools and house stuff.... the average person WANTS to spend more than $2000 on their house. So, the amount of money in the system shrinks, in general. A rich person dying with a bunch of money adds to it. And then the game becomes paralyzed.
There needs to be some slow drip of money into the system beyond what is injected every time someone starts a new life (because they will likely spend all of that on their house, anyway).
And yes, one-in-a-million guessing game houses are really broken! Those will be fixed soon by maps.
Okay, server has been changed to only pay salary to houses that have not been successfully robbed since their last edit.
Currently, there are only about 30 houses that meet this criteria. There were 700 that didn't meet this criteria but were getting paid before.
Working on this for v6:

Yeah, this is a huge problem. It's really just a very tedious kind of grinding (like killing sewer rats over and over to level up).
The money earning thing was originally put in place to make sure there was always something to do, no matter how many players were playing. Otherwise, if only a few people are playing, the house list is quickly filled with a bunch of $0s.
Also, other players would "spend down" to push themselves to the bottom of the list, but build a good house down there, and kindof just hide there. The money earning means they will eventually rise back to the top. This also makes houses that become more difficult (or impossible) post-robbery still attractive robbery targets (they eventually float back to the top).
But this is clearly something that needs some kind of adjustment. Thinking about it!
Actually, it's pretty easy for me to adjust on the server-side. I can set the money earned to whatever I want. I'll try turning it off for a few days and see what happens. Maybe we have enough critical mass now that this isn't needed anymore...
Also, it could be that you only earn money as long as your house has not been robbed since you last edited it. So a house that is abandoned stops earning money after it is robbed once.
Well, the ban-hammer isn't needed anymore. They don't need to respect it, because that kind of cheating is now impossible, so no one will ever be banned in the future!
Dogs on the entrance tile is a simple bug (they should never be able to step on the welcome mat like they do).
I hear you about maps and their effect.
The problem is that any kind of partial map (only wiring) would still allow for a guessing game (even a wall-maze with many branches could have 1000s of possible paths). Guessing games are not interesting to play. They require trial and error, not intelligence. You are guaranteed to die a lot during the process, meaning that you can only attempt such a house if you have nothing to lose (when you are rich, you stop playing as a result).
Finally, cheaters are just sniffing the protocol (or hacking their client) to get the map anyway, and there's no way to detect this. The client has to know where the dogs are (to move them!), so the information has to be there.
Psychological tricks, on the other hand, ARE still possible with a map. Fake switches are still confusing, and so on.
Even if I remove the debug output, the client still has the map, so a hacked client could easily spit out maps. Or the protocol could be sniffed.
The way I'm dealing with this in v6 is that maps (blueprints) will be available for ALL houses. This, of course, will have a substantial impact on house design (pushing it away from "guessing games with 1 million possible answers" and toward "real puzzles").
In the mean time, it's a little weird for robinhood to post this. On the other hand, it kinda makes the current game more like what v6 will be.
Also, I believe that lots of people are quietly sniffing the protocol anyway, and using it to their advantage. So, everyone should beware: if you design a house with a guessing game, someone might use an illicit map to help them with their guess.
Yeah, even seeing this map, the house is still a pretty significant puzzle.
I figured out why this happens sometimes.
If someone cheats (their robbery-end is blocked), or they quit mid-robbery without finishing, then they are force-killed. But no tape is saved in theses cases (the tape would be invalid in the case of cheating, and the tape isn't even sent to the server if they quit mid-robbery).
Still, they died while in your house, so the death counter goes up.
Here's the fix:
The game must be run from inside the CastleDoctrine_v5 folder.
If you move the EXE (or the .app on Mac) somewhere else, the game won't be able to find and load its graphics files.
It's also part of the aesthetic, the mystery about who these other people are, and the mystery about who you are.
Thematically, it's pretty strange to not know your own name. On the other hand, we don't refer to ourselves by name very much in real life. It's not like I have my name painted on the wall of my house in real life. But anyway, the aesthetic is, "It doesn't matter who I am, because I'm just like everybody else."
Other people obviously need visible names so that you can revisit the same house, and so on.
In terms of explaining it inside the game.... I really like to avoid as much explanation as possible.
v6 will have suicide confirmation.
I'm helping Prisinor by email.
When we figure out the solution to this unusual problem, I'll post it here for future reference.
The Castle Doctrine server is now using a robust robbery simulation and verification system.
The server is essentially running a copy of the game client itself, and for each robbery (and house self-test) submitted, it passes the move list and map to the server-side client. The client runs the robbery with that move list and computes the result, returning that result to the server.
This allows the server's simulation of a robbery to match the game's behavior exactly (because it's running exactly the same code). Furthermore, it means that when I want to modify the way the game behaves, I only have to change the code in one place (the game client). In other words, there is no duplication of the game rules in the client and the server.
This also means that if you mod your client in a way that substantially changes the rules of the game (in other words, you cheat), your robbery results will not match the results of the server-side simulation, and the server will reject your robbery results, killing you in the process.
Mod-based cheats that plagued the game are now a thing of the past---walking through walls, moving after death, and so on. Yeah, you can still do it, but the result is that you will steal nothing in the process and end up dead.
The server-side simulation even forbids tool use after death (possible through a bug in the v5 game client), so be careful if you're thinking about exploiting this v5 bug for gain or laughs (you'll end up dead).
Finally, I've had a change of heart regarding the eleven people who were banned for excessive cheating in the past. It was their activity that eventually motivated me to take on this rather daunting programming challenge. It's done now, and the game is much more robust, in part thanks to them. So, I'm inviting all the cheaters back and unbanning them.
It's possible that the server-side simulation misses some potential exploit (or that it wrongly rejects valid behavior). I'm hoping that the former cheaters will return with their modded clients and really try to punch some holes in the new system. If you find an exploit, please report it to me! You will no longer be banned for trying to cheat.
Cheating should now be impossible, so if you can cheat, that's a bug that I need to fix.
However, keep in mind that if you find a hole, you shouldn't try to exploit it repeatedly at the expense of other players. Remember that each person who was banned didn't just cheat---they each cheated excessively and hurt many other players in the process. Damage done in The Castle Doctrine represents real harm to someone else in the world (hours of hard work lost).
So, help me find it and fix it instead.
At the start, the Wiki database was about 500 MiB in size.
Spent all afternoon dealing with this mess, which was less than ideal, but it's done now.
4300+ accounts and spam-laden User and User Talk pages deleted.
And how to prevent this from happening in the future?
It's strange that the spammers don't ever touch any of the "real" pages in the wiki. They always make their own, new pages. Probably to stay under the radar, while still showing up in search engines somehow, maybe even through the Random Page link. Orphaned pages are actually a lot harder to deal with (and delete) than wayward edits on the real pages.
So, the first step was to disable page creation, but only for accounts that have never made at least one edit. And no account is needed at all to make edits (though you can't create pages without an account). This seems like the thinnest, weakest spam prevention imaginable. Any anonymous person---or bot---can edit anything on the site! But it seems to work, because the spammers don't want to actually edit something.
This stopped the spam pages cold. But new accounts were still flowing in. About 10 accounts every 30 minutes or so. Yeah, they weren't able to DO anything, but the were still clogging up the changelog (and taking space in the database).
So, I put a simple question in front of the account creation screen (how much does the gun cost?), and the spam account creation has stopped completely (much like it did on this forum with that simple question, when even a CAPTCHA wasn't working).
This experience has been absolutely baffling. How can MediaWiki, the most widely-used wiki software on the planet, ship with a default setup that is an absolute spam sponge? How can it NOT have any way of mass-deleting accounts, at all, not even with an extension? I had 4000+ accounts to delete, and the only way to do it was to muck around in the database. At least there was an extension (Nuke) that helped me bulk-delete the posts. But they still lingered (archived!) in the database until I cleared them manually from the command line, and even then, parts of them still lingered (search indexed!) until I mucked around in the database some more.
Have the anti-spam features turned on by default, please.
After all this: total wiki database size, uncompressed, is 7 MiB.
I wouldn't exactly call it a "good feeling" though.
Yeah, this is a HUGE problem.
The daily backup for the wiki is now 25MB compressed. (the forum is 400K compressed, for comparison).
This is all being caused by "account spam" where someone makes an account and then posts spam on their user page, and then leaves. Hundreds (and thousands?) of accounts have been created so far.
I'm hoping that someone can look into media wiki and help me figure out how to stop this from happening. I know they say "just use a captcha," but that clearly didn't work on the forum (because the spammers are human).
I may have to mod the media wiki source to ask a real question.... but I'm hoping there's an out-of-the-box solution.
I just got server-side robbery verification working.
It runs a headless game client server-side and feeds each robbery (and self-test) move list to that client. The client runs the moves and makes sure that everything is legit. If anything is off (like walking through walls, using tools that you don't have, etc)., then the robbery (or self-test) is rejected, and the player is killed and given a fresh start.
I'll be doing a longer post about this later.... but I just wanted to warn people that this is in place now.
Keep an eye out for any strange behavior on the server. For example, if you're NOT cheating, and the server denies the end of your robbery or self test, see if you can can isolate the series of steps that cause this to happen and email me about it (if you can't figure it out, sending me the stdout and recordedGame from when you were killed unfairly would be better than nothing).
I'm guessing that there are still a few cases where the headless client doesn't simulate things exactly right. I've done a lot of testing on my end already, but you know how it goes.
Yeah, the verification will actually be running a headless client---a compiled C++ program.
However, this verification step will be optional (so you can still run your own server if you can't run compiled programs). You'll be able to turn off verification in the settings.php file.
It's really not practical to duplicate all of the game logic on the PHP side, so I need to solve the problem this way.
Actually, I figured out how to fix this server-side.
Oh, yeah colorfusion, the idea about giving dead players a timeout would only work in game with maps. I'm also thinking of ways to make map usage more tense and interesting. So you have to study the map to be REALLY sure how it will work before you try the house. You wouldn't have to do that if you had infinite throw-away lives.
Running through a house over and over, trying all possible paths and dying over and over, is not interesting gameplay. It's just grinding.
Also, not caring about your life or your current family (a natural consequence of the current design) is dissonant with the themes of the game. Many people are just running out, leaving the family undefended and $2000 in the vault, to try that hard house again.
The timeout could also shrink the longer you've been alive with this current life. Example:
You die. You start again instantly. A 60 minute timer starts running. If you die again in 5 minutes, you have to wait 55 minutes to play again. But if you die again in 70 minutes, you can start again instantly. This would essentially be doling out the lives at a maximum rate of 1 per hour.