Game
A Place for the Unwilling
9 years ago

Update #23 : Technical mumbo jumbo


Hey everybody!

It’s time for a new update and no, it’s not Friday yet, from now on we’ll release updates on Wednesdays instead of Fridays. They’ll still come out every two weeks, so the only thing changing is the day of the week.

This time we’re going to talk about some of the technical aspects of the game, we won’t be getting too specific but hopefully this update will give you some perspective about what’s like working on “A Place for the Unwilling”. We’ll be focusing on NPC behavior and interaction, but if you think this kind of text appeals to you we’ll do more in the future explaining other parts of the game.

Though the prototype was built in a different engine, we have been using Unity for about 5-6 months now. As of today, this is how we see the game when we start the engine.

5d0b84fa545e8.png

The yellow lines right next to the fog wall are the edges of the map, once the player collides with one of them the next map gets loaded. Maybe you already noticed that most times we post a map of the city it’s over a grid. That’s because we broke the city in many smaller areas. Take the rich quarter for example, which isn’t big at all, that zone is formed by 12 of these small areas.

5d0b84fbe511c.jpg

Why do this instead of having the whole map loaded all the time?

1) We use assets with a really high definition and we want people to be able to play “A Place for the Unwilling” on modest computers without having to lose its image quality.

2) NPCs would be way harder to implement in a larger space. If a character needs to go from point A to point B we need to find a path avoiding obstacles, as well as refreshing it so they don’t bump into another character. Doing this for all the NPCs in the city all the time would take more processing resources and it’s more likely to produce bugs or unexpected situations.

With the map divided into smaller areas we can have NPCs wandering around and, as soon as they cross the fog, they’ll be wherever we need them to.

5d0b84fd6e831.gif

Once you start a conversation with one of the NPCs they will stop moving until it’s over. As we explained on an earlier update, we use a narrative engine called INK. So basically what’s happening here is that Unity requests content to INK, which pulls it out from our dialogue files, and then hands it over to Unity. Once we receive some input from the player we decide which piece of content we want to load and send a new request to INK.

5d0b84ff3ebfd.png

This image show just a few lines from one of our dialogue files, which can get pretty lengthy, we already have some of them with over 500 lines. We’ll probably go over this in a future update, but let’s do a super quick explanation of how the syntaxis works.

Every dialogue is divided in “knots”, marked by the blue ”===”. Think of them as chapters. We can easily target them whenever we want. Each line starts with “NAME:”, which makes it look like the script of a theater play and tells the engine who is speaking (so it can highly their portrait).

The second line(the green one) doesn’t start with “NAME:”, that’s because it’s not something supposed to be displayed, it’s just indicating a new value for a given variable. In this case we’re setting “sombra_AUGUST” to false, triggering a small cinematic in which the shadow will go away and we’ll see the character who was under it.

There’s also a grey line. The engine will skip these as they’re just comments left by the writers, either to remind themselves why they wrote something or to tag something that couldn’t be completed at the time for some reason.

Finally, lines starting with “+” or “*” are player choices. When the engine reaches one of these it’ll display all of them and, once the player chooses, it will carry out whatever actions we have added to the right (from displaying a new line to changing a value, targeting a new know or ending the dialogue).

INK is very powerful and allows us to create functions and complex behaviors, these were just the most basic tools we use while creating dialogues in “A Place for the Unwilling”.

And that’s it for today! Once again, do tell us if you found it interesting or what kind of content you’d like to see featured on future updates. We’ll be back in two weeks, in the meantime, you’ll always be able to find us on twitter or reach us through [email protected]



2 comments

Loading...

Next up

We are taking a week off to be with our families and get some rest. Hope you're doing the same. Merry Christmas! ;-)

Hi everyone! We just sent the last batch of beta keys (picked from the people that joined our mailing list). Go ahead and check your email (remember it could be under spam or promotions, you can always double-check with us).

We have one huge announcement planned for next week. Make sure you don't miss it 👀 Meanwhile, wishlist the game on Steam! That's super helpful for a small team like ours 😊 https://store.steampowered.com/app/1064310/A_Place_for_the_Unwil…

Sneak peak of the new interface

Hi there! This is a friendly reminder for you to wishlist the game on Steam (something that would help us a lot). https://store.steampowered.com/app/1064310/A_Place_for_the_Unwil… We also have a Discord available, join it to get the latest news!

https://discordapp.com/invite/a-place-for-the-unwilling

Merry Christmas! We are taking a week off to be with our families and get some rest. Hope you’re doing the same. Merry Christmas! ;-)

Update #38 : Getting started with interiors

Short intro of us 💕✌️

We're an eletro duo based in Seoul 🇰🇷 Heavily influenced by the 90s.

Our new album #Xennials is all about the nostalgia of that era 💽 CD listenin 📟 beeper beepin 💾 floppy disks floppin days 😎

Stream now! 🎧

https://open.spotify.com/album/3YwWhnHWVy5cA8XOpbaGRA?si=8E9awqU…

Chiaki Nanami!

Shadow The Hedgehog X pixel art