Devlog Update 108 + Alpha 4

Alpha 4 is now available for download! The full change log is at the end of this post.

Devlog

We added a Spinning Coaster:

And we worked on audio. One of the main problems we had with audio for a long time was that the default way how Unity handles it doesn’t work well with our game due to its near-orthographic perspective. Consider this scene:

There’s a red coaster on the ground and a blue coaster that’s been raised. They are both roughly in the same position on the screen from this view. Now the way Unity figures out what’s audible and what’s not is that you place an “audio listener” somewhere in the scene. You can imagine that it works somewhat like a microphone - everything close to the listener is loud and the further away an audio source is from it the less audible it becomes. The yellow circle in this example shows everything that’s within the audible range of the audio listener:

Looks about right! But if we look at it from another perspective…

…the two coasters are actually not close to each other at all and no matter where we place the audio listener, one of them will always be outside of its range. We could increase the range, but then we’d hear audio sources that are way off-screen.
What we really needed was a way to control the volume of an audio source depending on its position on screen instead of its physical distance to the audio listener, and that has been added now.
This also means that we need to rebalance our audio, so if things sound a bit too loud or too silent currently that’s why :)

Alpha 4 Changelog

- significant performance improvements
- added Spinning Coaster
- added 4D Cinema
- added palm trees
- added customizable colors for some shop products
- added area delete tool
- added controls instructions (beginning of a tutorial system)
- added monitor selection
- added camera scroll/zoom sensitivity settings
- added autosave + save hotkey (Z by default)
- added more rebindable keys
- added detection of performance problems due to mods
- added lateral and longitudinal G visualizations + graphs
- improved audio panning
- improved tracked ride stat visualizations
- improved weather
- improved Janitor behaviour for cleaning dirty toilets
- improved translation support
- increased guest spawn rate by 25%
- fixed stat heatmap visualizations not working on lowest quality settings
- fixed rides saying they have outdated values after loading savegame
- fixed raised objects not being placed at correct height if raising over sloped terrain
- fixed broken employee colors
- fixed errors when trying to load a savegame containing non-existant tracked rides (e.g. missing mods)

Devlog Update 107

Art Stream

It’s Art Stream time again! Join us on Garrets Twitch channel on Wednesday at 1pm PST to chat while watching some new Parkitect art being created.

Devlog

We’re mostly busy with making sure everything still works and runs stable after the engine upgrade. After some days of testing it turned out that the “experimental” improved multithreaded rendering in Unity 5.4 is labeled so for a reason :) We’ll not use it for now which costs a couple FPS compared to last weeks test results, but at least we know that it’s something to look forward to in a future update.

The tracked ride visualizations received an update. So far we’ve only been able to show one value for the entire segment, which was precise enough for most cases but a bit lacking on longer segments like the loops or scaled up curves. Here’s an example showing the velocity:

It shows the train loosing speed as it nears the top of the loop and gaining speed afterwards now, as you’d expect. We also added a second color to distinguish between positive and negative vertical Gs:

(And there’s finally a lateral Gs view too)

And here’s a new 4D Cinema :)

Devlog Update 106

The parks you guys are building are getting crazier all the time, so I’ve spent the last two weeks almost entirely on performance optimizations.
There are three major areas that have been improved.

Rendering

Big Parkitect parks can contain tens or even hundreds of thousands of objects, and Unity was not too great at rendering lots of individual objects so far.
That’s why we’ve been eagerly looking forward to upgrade to Unity 5.4, which we’ve been testing over the last half year or so and which seems stable enough to use now.
Unity 5.4 adds instancing, which is a technique that allows faster rendering of multiple copies of the same object and moves a bunch of work that previously needed to be done on the CPU over to the GPU. Due to the way scenery works in Parkitect the same objects are usually on screen tens or hundreds of times and as a simulation game we need all the CPU time we can get, so that’s perfect :)
They also added experimental support for improved multithreaded rendering, which helps quite a bit as well.

Guests

We want to have as many guests in the park as possible, so they have already received the most attention for optimizations in the past.
There were still some improvements left to be done though, especially for off-screen people.

Mouse picking

Some of the parks you’ve built got so big that even something as seemingly trivial as figuring out what object is below the mouse could become a performance problem.
We’ve previously used Unitys mesh colliders for this; their intended purpose is more for adding physics interactions to a couple of objects, but it worked well enough in the past.
Since the game received scenery and more content though we’ve seen parks were it could take up to a second to figure out what’s below the mouse in extreme cases…so we’ve replaced that with a custom solution now that’s more suited for our needs and brings that time down to a couple milliseconds.

Results

We’ve tested with a couple of different scenes. Here are some of the results on two of our test systems (graphs showing milliseconds required to calculate each frame, so less is better):

More stuff

Stuff going wrong can cause performance issues as well. Especially right after game updates we’re receiving a bunch of reports about strange issues and performance problems that are usually caused by mods not being compatible with the newest game version yet. Luuk worked on this error window that identifies broken mods and contains the error message so that the problem can be reported to the mod author:

Tim worked on allowing to set specific colors for certain shop products:

And on this area delete tool that lets you select a bunch of objects at once (like the selection tool for creating blueprints) and then delete them:

And we’re displaying some of the controls on screen now depending on context, which should help new players (can be disabled). Eventually this should evolve into a proper tutorial.

And there are some new palm trees:

Devlog Update 105

This weeks devlog entry is by Em!

Hi, I’m Em and I work with Gord at A Shell in the Pit Audio making sounds for Parkitect.
This week I had an exciting opportunity to visit Vancouver’s one and only Amusement Park; Playland, on a field recording trip. Christopher Tammik joined in the adventure and we each attended armed with a recorder and microphone. We went thinking that we were going to have to be quite stealthy, but ended up only sneaking our gear under clothes and scarves on the more intense rides. We rode the mini train a ridiculous amount of times with no questions asked! (With the exception of some curious kids, which you’ll hear in the following recording.)

The aim for this game in particular was to capture as many mechanical, engine, and rattling sounds as possible while avoiding people and music. Not the easiest thing to do even on an overcast monday, but we did manage to grab some great stuff. The interesting thing to note about what you hear in the game is that these recordings are not going to be used only for their corresponding rides, and they’re not going straight in as recorded. The squeaky clacking of the mini-train could be a single layer amidst multiple for any ride in the game.

So we pull discrete loops and segments out of these recordings. For example, this mini coaster:

What you build in your theme park won’t correspond to this 30 second long mini coaster ride. We’ll simply extract similar bumpy and rattly segments of the recording, edit them together, and make it loop seamlessly so it can work for any coaster you build. In Parkitect we create 5 different speed loops per coaster, including the climb loop, which this ride had a great sound for. We were also able to get close enough to the lift mechanism on Playland’s wooden coaster (one of the oldest in the world!) and record a super long segment. That one will most likely be hidden in a couple different rides. In the Wooden Coaster, it was very challenging to keep the microphone steady; it was hard enough holding on and being thrown about the seat.

Other than coasters we were after engines. The louder the engine, the more it would drown out all the background noise of the crowd and music, which all gets recorded and added in separately. It was usually loudest inside the ride, so we spent a lot of time running around riding everything we could. (Yes, this is a real job.) Though it did get to the point where even the kids rides like tea cups were making us feel sick. Note to anyone planning something like this: Do not ride the most spinny thing first.

Here is one of my favourite engine sounds, the scrambler. I cleaned some of the crowd shouts out a little bit but the engine was powerful enough that I didn’t need to alter it too much.

That’s all for now, next up is a trip to a sightseeing train crawling through a vast park. Hope you enjoyed reading about our fun trip. See if you can find these sounds somewhere in the game later! It won’t be easy.

Here’s a merry little video to close off.