Project Zomboid is an open-ended zombie-infested sandbox. It asks one simple question – how will you die? Whether surviving in Knox County free-roam or controlling Indie Stone mascot Baldspot in his quest to save his injured wife Kate – death is always a certainty. Quite how long you manage to put it off is another matter…
If it’s Monday, then it must be time to open the curtains, take down the barricade and worriedly scan the horizon. Yes, survivors of Muldraugh – it’s time for an update on The Indie Stone’s slow, yet relentless and inevitable, march to the front door of your safe house.
Posted by Batsphinx on Oct 22nd, 2012
This week we’re chatting with Chris ‘Lemmy’ Simpson about all manner of mischief – including streaming, NPCs and how to care for whippet puppies. Before he gets his moment in the sun, however, we should say that things are still coming together. It’s likely, for example, that the code and map deliveries will coincide for the update – although we still need to play with item distribution, create a new tutorial house and get RingoD transplanting the action into K&B’s new home.
We know that people are chomping at the bit for the new update, and we know that reading about the new stuff we’re introducing is a bit of a tease when people have gone without for so long. We’re aware that stuff like the improved NPCS sound a bit feature-creepy, but assure you that the work spent in fiddling around with them is a necessity brought on by the necessity of introducing map streaming. There's a lot of necessary stuff going down, basically.
In terms of polish, too, at the moment we're systematically going through the game and trying to fix and polish as many of PZ’s gaping holes as possible. NPCs and the UI were two of the biggest holes that needed quickly barricading shut ASAP. Lemmy will explain a little bit more about all this, and our plans for thicker and faster future updates, after we plaster a picture of his big stupid face all over your computer screen.
First things first, how's Cally the Wonder-Dog?
She's doing great! Though she's teething so is leaving nice sharp presents for us to stand on along with nice soft smelly squishy presents - though she's finally getting the hang of doing the latter outside. That's a clever nickname you came up with for her there, because we certainly do wonder about her.
Huzzah! So, anyway, how has the recently-added map streaming changed the game, and the way you code it?
Well the main difference is obviously there's a lack of any loading screens when walking around the map. The impact this has is on the immersion – you never see that black border and you’re never aware of, say, being in the 'top left corner' of here or the 'bottom end' of there. It's just one big seamless world. From a coding perspective it's saved a ton of memory since we've been able to go back to only having the 0.1.5d map-size loaded into memory. That memory save is what made the streaming a necessity - many people would have struggled with the code in its former state. It's also brought a few challenges with it - but they’ve been welcome ones really. We now need to think about how to deal with NPCs in a more meaningful way, for instance.
So what are you currently doing with those hardy Muldraugh NPC-types?
This has been the subject of many a four-way Skype design chat, and even more latte-supping with Binky. Will (who is the one asking these questions, but never mind let’s not confuse things) has written a mountain of NPC chat that's yet to go into the game, and we want to use that to its fullest. The thing is, with streaming potentially making the ultimate persistence of the NPCs more difficult, we had to rethink how they work on a fundamental level.
As such, we've been looking at quick design ways to get most 'bang for your buck' with NPCs. Trying to make them the HAL 9000 of zombie survival seems to be a fool’s errand, especially when one day in the far-flung future only 1/1000th of the map will be loaded into memory. So right now I'm working on a 'meta-game' that extends across the entire map that has virtual survivor groups moving between buildings, looting and surviving according to statistics that’ll let us trigger infinitely more interesting NPC encounters. I'm also implementing more information to the player on NPC survivors, including traits in the form of 'observations' and a few more group commands for them.
Here’s a screenshot from the current build, where I'm printing out a debug overview of the world with survivor groups (red = aggressive, green = friendly, white = mixed) to see how the survivors get on. With the new meta-game survivor groups can now last for weeks, even months, without dying.
When people play the update, what will they notice as being different about fellow survivors?
NPC meetings should be infinitely more interesting. Instead of running around from one vague X, Y coordinate to another - and telling you to 'fuck off' – they could be say… running to their safehouse and invite you to come along. Alternatively they may be ambushing you at your safehouse to steal your stuff, or perhaps be in the middle of an altercation with one of their teammates.
NPC meetings will still be driven by a sandbox environment, but will be more like story points when you meet them. Also they’ll be massively more useful since you can tell them (or they might decide independently) to go on looting missions. You’ll be able to ask them to go get food, and then see them wander off for a day or so. They may come back, they turn into a shambling corpse somewhere, they may bring those supplies – and if they do return they might’ve taken a bite in the process.
Here’s the unfinished 'send characters on looting mission' selection screen, where you can choose (by observing the character's personalities and traits) who to send to get supplies (or die horribly in the attempt). Please note a stupid illiterate programmer wrote those descriptions as placeholders, and not our resident writer…
And here’s the WIP character info screen:
So, if an NPCs is capable of bringing in more food than he/she can eat, then they could well suddenly prove to be an asset and not a liability. Finding tough, survivable NPCs will be a big help to surviving longer. Since the NPCs will have such relevance now – you’ll be able to check a character sheet of sorts which will describe observations that you've picked up from them. In fact Will has just sent these over, so you can have a sneak peek.
Lastly, to make survival harder and to make NPCs ever more necessary we’re going to be a lot stricter with item distribution. You can expect it to be a lot tougher to scavenge food and resources to survive - since the high loot area will be mid-town where all the zombies are. So a lone wolf without good survivalist skills will find it tough, so might need to look to others for support.
Sweet. We’ll probably expand on all that the NPC stuff when Will (who’s me) gets his slot in the spotlight next week. Is there anything else you've added that would interest the PZ community?
Well primarily all the new NPC stuff, from the UI to the meta-game, is completely written in Lua. As such it's fully moddable, expandable or even replaceable.
Speaking of which uou were posting enthusiastically on the forums about the work of one EasyPickins. Who is he, what's he done and what does it mean for the PZ community?
We approached EasyPickins a month or so ago because, quite frankly, even with his awesome awesome improvements to TileZed, our map production was just way too slow. We came with a few ideas and some rough prototypes we'd put together and he quickly transformed them into WorldEd (which he'd actually been working on for the existing map system), and made some exciting improvements to TileZed on top of what we’ve already shown off in our recent video.
He's also made TileZed about a hundred times more polished and nicer to use. He’s made a mechanism for converting a big BMP (say 3000x3000 for 10x10 cells) into grass, trees, sand, gravel and so it’s all blended together with intermediate tiles, and then spits it out 0_0 to 9_9.tmx. So then you’re ready to start creating buildings with BuildingEd, and to simply drag them into place in WorldEd or TileZed. A click of ‘Export’ will then create files to simply drag into a new Maps folder, meaning that your new map will be selectable as a new game along in the new front-end.
EasyPickins has been astoundingly fast, and everything he produces is really polished and professional. He's continuing working with us and we're very excited at what the future will bring with map production speeds to both us and the modders.
Over on the Desura boards you recently explained why we couldn't release early versions of what we're currently working on. You used quite a good Scrapheap Challenge analogy. Could you possibly cut and paste that here for a wider audience?
"If anyone's seen Scrapheap Challenge or a 3 day time-limit DIY show or something. That's alpha funded dev. You have a pile of garbage for weeks, then it all comes together within the last few minutes. We can't just arbitrarily 'release something'."
It's completely understandable, but frustrating to read 'just release it damn it!' when what you’ve currently got is a version of the game where all the zombies are zipping around at 1000mph (Romaaaain!) or there's only food getting spawned in the map (meeeeeeee!). You just know that releasing what you’ve got in front of you is the worst thing you could possibly do!
We've often ended up releasing earlier than we planned to just because we were worried it'd been too long, and we reached a point where we felt we could 'just release something damnit!' and thought, well our community want it, we'll give it to them. Sadly this has resulted in a lot of our community still playing an older release of the game, and people elsewhere who perhaps weren't aware of their 'test release status' who assume Zomboid is shoddy buggy stuff.
This is the last thing the game, or the community need. So all of us made a pact this time that the next version of the game would be ‘right’. A few quick patch bugs aside, we're just going to remain steadfast and release the best version of Zomboid there has been since day one. And also, finally, get those poor (yet awesome) souls at Desura an auto-updating version of the game.
What's it like working with our new recruit Romain? What's he beavering away on? Will all his work be present when we update?
Romain has been great! After getting the new weather system in, he's currently implementing farming, after which he'll be looking to implement the campfire stuff (since, as the Starks say, ‘Winter is Coming’). It's such a massive relief to me to know that if I'm ever stuck guts-deep in something that the game's code isn't at a standstill, and that someone is still getting stuff in there. I'm sure people have noticed a sharp drop in the number of stressed coding tweets since he joined! I'm sure farming will be in the next update. We'll see about campfires after that.
Something else that it sounds Romain has brought to the Indie Stone’s table is a potential new approach to bug-fix builds. Could you elaborate?
It's the system Romain uses where he works, and basically involves maintaining two concurrent builds of the game. There’s one that’s frozen from the last update, and one development build that new features are implemented into. This means that if a bug is reported, we can fix it in the development build and them merge the changes across to the frozen build. Once we've fixed enough, we can simply release that frozen build as a bug fix release - without people needing to wait for the development work to get to completion. It should have a dramatic effect on both our ability to approach bigger development tasks freely, as well as our ability to quickly fix problems with the game after an update - and to speed up the frequency of the updates.
Anything else that you'd like to mention?
Can we have a photo of Cally the Wonder Dog please?
Oh, and while we’re at it here’s a quick screen of the new map cultivated from Binky’s work-station. We’ll be back mid-week with the next instalment of Community of the Dead. Thanks all!