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.
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).
And here’s the WIP character info screen. Please note a stupid
illiterate programmer wrote those descriptions as placeholders, and not
our resident writer…:
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 you 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 3000×3000
for 10×10 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?
XCOM!
Can we have a photo of Cally the Wonder Dog please?
Yes!
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!