Discuss the massively-multiplayer home defense game.
You are not logged in.
You can grab it now and feel the chill.
A full post about it is coming tomorrow.
Uploading the v10 client builds now.
There's no world reset, but all tapes have been wiped (because they will no longer make sense with the new dog movement rules).
If you're in the middle of something when the server shuts down, it lets you finish that last operation before it kicks you. So, you can finish editing your house, or finish a robbery. But you can't start editing your house again or start a new robbery.
So, when you see that shutdown message, usually nothing you've done has been lost.
Furthermore, before actually changing anything, I watch the server admin interface after shutdown and make sure everyone's current action really has finished (so I don't change the server code out from underneath you, causing your last action to fail).
It works pretty well most of the time. :-)
Well, I think the "fix" that I put in place for that one player (who never wrote back to tell me if the fix actually worked) was causing some of these more recent hangs.
I can see how locking the audio before closing the audio can cause a deadlock (because CloseAudio waits for the audio thread, which might be blocked on the lock that you just locked before calling CloseAudio). Of course, this would only deadlock if the audio thread happened to run right between the lock call and the CloseAudio call, which is why it rarely happens.
Anyway, removing that lock for v10. Should fix the occasional hangs
Back in April, I got a report from someone on Windows 7 who saw the game freezing consistently on exit. They would then need to force-kill it to exit the game.
We traced this down to SDL_CloseAudio hanging. Not sure why.
So, I tried inserting SDL_LockAudio in front of the SDL_CloseAudio call. Unfortunately, I never heard back from this person about whether this fix worked.
BUT.... the fix has been in the main source tree ever since, working its way into v6, v7, v8, and v9.
Now... occasionally on Linux, *I* am seeing hangs on exit, and can trace it to SDL_CloseAudio. But I don't recall this ever happening for my other games that use the same code, so I think that having the Lock in there is actually causing a new problem for me. And the sample code that ships with SDL does not lock before closing the audio. Thus, I'm thinking about reverting it.
So... is anyone here using Windows 7? Did you ever see v5 freeze there on exit? What about later versions?
Aha!
If some of the family leaves the house, but you kill one of them (to force the house state to save) and then commit suicide, the escaped family members do not return to their starting positions and are gone forever. Will be fixed in v10.
I'll take a look at the Fraps crash on my end. Thanks for the tip!
Ah, that explains it! I've found the email now. Thank you for the memory-aid, folks!
Anyone ever had their kids (or spouse) disappear from their home forever, even though they weren't killed? Like, the last tape you have of them shows them running out the door, but then the tape after that shows them gone? And when you come home, they're gone?
Largestherb reported this to me a while back, and I saw it happen myself on tape. But now I can't find his post about that on the forums.... maybe it wasn't Largestherb. But I'm pretty sure it happened in Miller's house (I have in my notes that it was Ronald Roy Constant's tape of robbing Miller where Miller's kids left for good).
Can anybody help me with more info here? Especially with finding the posts where we discussed this (the date is important, because then I can go pull that database backup and get the tape back).
Hmm... that's strange!
Nothing should be able to make something crash.
Do you have the recordedGame file of that happening?
If you watch it yourself (drop it into the playbackGame folder and launch the game), it should crash again at exactly the same spot. If it does crash again at exactly the same spot, PLEASE send me the generated stdout.txt (if you have it) and the recordedGame file!
Only if you reach the vault or die in the house.
If you run out the door, you drop your tools in the street.
Well, the idea is that your vault or spouse should never be 100% safe. Doing that should be impossible.
Of course, players WANT to do that (naturally), which is why some took comfort in the pre-blueprint (v5) world. When blueprints were added, it was like, "Well, how am I going to protect my family now!!!???" The same for the backpack change: "Well, now they can cut through anything, this is hopeless!!"
But can you imagine a game were there WAS hope of protecting your stuff in all cases? I guess that was v5. Of course, everyone would do that, and the game world would stall. Toward the end of v5, we had 50 houses, 5 full pages, that were successfully protecting their vaults.
So, security isn't impervious. It's sort of just a temporary stay. It may slow people down a bit, make it more difficult, and dissuade some people. But in the end, if someone is REALLY determined, PROTECT WHAT'S YOURS is just a fantasy.
My wife has stories about her father's store getting robbed repeatedly. They'd cut through the lock, so he'd install a hardened-steel latch plate. They'd cut through the wall to bypass the door, so then he wired the walls to detect cuts. They'd snip the phone line so that the alarm report wouldn't even go through, and then cut through the wall, so then he installed a cell-phone based alarm reporting system. Finally, they just brought 10 guys with them and set off the alarm, but they emptied the entire store and drove away before the cops showed up.
In each case, the newly-beefed-up security gave him a temporary sense of peace: "Okay, finally, that will stop them for good. We're safe now." But it was only a matter of time.
With family protection, you should hopefully be able to build something hard to bypass, but not impossible to bypass. In general, you can slow probing intruders down until you return home (at that point, you can move the family to a different spot). But even with your best efforts, someone will come through and get you, eventually.
A chill on death in a house will help with this (because if you manage to kill a particular robber in your house, that will REALLY slow them down).
The reason it does that is because the Suicide button is usually only available on the Self-Test page.
But if you have no money, you can't change your house in order to GET to that Self-Test page.
If your house has not been robbed, hitting DONE will take you back to the menu. The only way to reach the Self-Test page at that point (if you are trying to kill yourself) is to ERASE something from the house, which is hard for people to figure out.
If your house has been robbed and some family members are now blocked in, the DONE button is hidden until you fix that. But if you have no money, fixing that can be counter-intuitive (because you can't place objects, etc.)
So, the Suicide button is shown for convenience in that case. It disappears as soon as you edit something in the house, though, because at that point, you've indicated that you're not simply trying to commit suicide.
Ah! But it was there all along, hidden in backpacks.
Though that hidden value suddenly did cause a bunch of houses to start earning again, which is where all the extra money is coming from.
The backpack was never intended to serve as a nest egg.
That's what the spouse is for.
If tools cannot be sold, then a good house that builds up lots of tools (through robber deaths) will not be able to convert them into anything.
Hmm.... well, a dog is a moving pit that costs roughly 2x to cross (in v10 with a gun). Keyboard mess-ups still really hurt around dogs!
I've used flat files for server-side stuff in the past, but would never go back.
MySQL + PHP are the quickest way to get complicated stuff done that I've ever found. The data storage and retrieval part of your project are done, right from the start.
Furthermore, it is SO easy to solve many common "programming problems" using a simple DB query without even writing any real code. These solutions are inherently robust, in that they usually fail and rollback in the case of a bug, instead of doing something that you're not expecting.
Finally, it's pretty malleable, in that I can change table structure in rather dramatic ways rather simply without breaking things. I never need to do anything manually, like writing scripts to filter and update data files after a structural change. Again, such updates can be done with simple queries.
Finally finally, it's really fast. Or at least fast enough where it doesn't matter. A black box that just works magically, and always works. I've never found a single bug in it.
The C side of my world (client code) is much more messy, time-consuming, and error prone because I don't have MySQL running there. You should see the hairy, branch-laden mess that is used to slurp in all the house object configurations out of a directory tree. That would be like one line in MySQL.
Hmmm.... tapes catch everything now except the case where the robber just stands on the mat and leaves.
Sounds like the player may have quit mid-robbery. In that case, there is a 5-minute timeout before they are force-killed, and no log is saved (because they quit before the log is even sent).
All intentional. Each painter chose their own title and credit line.
The two sky paintings are not identical.
The glitched-out ones are part of a series called "MISSINGNO"
Well, that part isn't intentional! I'm designing the game assuming that people will play optimally. Of course, they are human and do make mistakes.
Oh.... yeah, not in the initial push of existing backpacks. I used a place-holder value of $100 for all of those existing backpacks.
But ever after, a separate value estimate (rounded-off resale value) is being track for every backpack. So, whenever backpack and vault are merged, the value estimate can reflect the true value of backpack items added. I'm pretty sure this part is working.
I wasn't able to assign true values for existing backpacks because I did the update with a MySQL query in one fell swoop, and there's no way to do the item-string to value conversion in such a query (the value calculation occurs in my code), so I just used a placeholder value there. That means that some houses are rather undervalued in the house list right now. As soon as owners touch those houses, though, each will be fixed.
Backpacks are now returned to your vault after 5 minutes of inaction, and also if you view security tapes. So, you can no longer use the backpack to keep tools hidden and safe from robbers.
Hilariously, this change brought 50 houses out of the woodwork that had been fully looted but were still hiding tools in their backpacks! They are now back to earning salary as a result.
This change happened server-side. As usual, keep an eye out for any strange server behavior. This time, I made a full database backup right before applying the change, though.
Well, the similarity is just a coincidence.
All paintings were made before the game launched by my close friends, relatives, and indie game design colleagues. Some people gave me more paintings than others did, and I didn't curate at all (except for hand-picking the initial group of people that I asked).
The plan is to keep the painting set fixed forever, and to not include player-generated paintings in the game (this is not a game about making paintings). The paintings are there as otherwise-meaningless physical possessions to lust after and revenge-quest after.
This is a game *about* player-generated content, but I'm trying to do something different than other PGC games. They usually just let you generate icing (picking rugs and furniture and hats) that has no effect on core gameplay. The experiment here is to let players generate content that is the gameplay. The gameplay is all about designing and refining and studying that generated content.
Yeah, but that's just a 5-minute timeout... not THAT long. You could also sit in the middle of a robbery and go away from keyboard for that long before being force-killed in the robbery.
Jere: this was something that I was worried about from day one with this design. Thus, the player anonymity, etc. Chills on houses that you die in will further help with this problem (get a second account and die in your house a few times to give your other account lots of free tools to sell).
That's supposed to be the trade-off for pits. They are much harder for the robber to cross (needs a ladder, the most expensive bypass tool in the game), but they are no good in conjunction with animals. Right now, dogs are too easy to get past with just a pack of crowbars, so people just chose pits and forget the dogs. But if dogs represent more of a tactical threat in v10, that may change, where most people will WANT some dogs in their houses, in which case it will push down the use of pits.
The idea is that all the objects in the game have some kind of trade-off. Windows are see-through but the cheapest to cut through (brick), and can be cut through with lots of different tools. Wood walls are cheap to cut through, but don't conduct electricity (insulator), but can be cut through with three different tools. Metal walls conduct electricity but are immune to saws and explosives (need a torch). Concrete walls behave like wood walls, but can never conduct electricity (no wired version), but are very expensive to cut through (explosives).
Trapdoors are the opposite of doors (can only pass when current is ON, not OFF), but are dangerous to animals. Electric floors are the opposite of trapdoors, but become very cheap to bypass when they are in the ON state, and stop conducting once broken.
If pits blocked dogs, they'd just be a window that's very expensive to cut through.
Yeah, high security when you're getting that much per hour.