by Simeon Radivoev, |5 min read
  • game development
  • unity
  • commercial
  • showcase
  • recipe for disaster
  • indie game
  • 11+

We started prototyping the bar way before we had the art since we didn't have enough time and I was the only programmer left. With limited resources, we decided not to worry about characters teleporting to the seats without a proper animation as that would have required new functionality to be implemented and new animations to be made. Table chairs for example only had the side sitting animation. The chairs also were to be included with the bar as that ultimately would be easier for the players and would save us some dev time on separating chair types to not be able to put table chairs on the bar.

Ultimately the bar scope was reduced by quite a lot for release because of the lack of dev manpower.

At first, with the health inspector, we wanted to make their AI a bit more advanced, but because of time constraints, we decided to just make them wander around on interesting points, like appliances, tables and random tiles. Fun fact the restaurant evaluation is actually done right after the inspector is spawned, this was mainly to make sure players don't just delete bathrooms or quickly clean up stuff as the inspector is around. Also, I based the look and name of the health inspector on Nadar Kessard from Ratatouille as a nod to the movie.


We had problems with players accidentally, clicking on the buy plots buttons, so we decided to add press and hold.


Cozy VFX for the fireplace, feels warm and cozy. This was a special object added for a christmas update. First only available for freeplay only. :christmas_tree:


Taking out fires test animations with particles.


Taking out fires test animations. Artists wanted particles in the animation. This was a problem since there was no data to use to drive the particle emission, so I had to add custom animation curves that I manually added in unity to follow the animation and drive the particle emission.


Burning object turned into rubble. First we wanted to turn destroyed objects into some sort of rubble. But later on we realized that would require lots of new art, so we just went with a shader effect that turned the objects black.


Particle effects for burning objects.

At first, I made the VFX more similar to the pom optional material rendering. Just square glowing particles. But in the end, the artists made an animated sprite sheet for the fire. The spawn volume of the fire actually follows the bounding box of the object, so no matter the shape or size the fire will engulf it.


The panicked animations made me chuckle.


2D Raytraced Interior Light Simulation (Moody), we decided to scrap it since it forced players to place lighting and windows and gave a false impression that lighting affects gameplay.


We didn't have stand up animations, so we just decided to reverse the sit down animations, and it worked out great.


First implementation and UI for plots. First I decided to use the unity line rendered but end up writing a custom mesh that had data for offset between regions done was all in shaders.


Just thought the 3D effect was nice. :dizzy_face:


Dynamic Event Camera with effects. In the end we decided to scrap it for a more conventional UI window, since it did interrupt the flow of the game too much.


Interaction Wheel. The battle tested interaction radial menu that stayed in to this day.


First Boids Character Avoiding. We wanted characters to be able to pass through each other for gameplay reasons, but we didn't want to have obvious clipping, so a simple boids avoidance was sufficient to create an effect of characters avoiding each other without greatly affecting their actual simulation path. Some special cases needed to be addressed like stopping characters from going towards walls or objects to avoid other characters.

The first implementation was decided to be implemented as part of the simulation. But later on, I decided to move that as a post-processing step part of the presentation, so it did not have to run at the slower simulation step. This also helped with performance since at greater simulation speeds the simulation could run multiple times per frame.


Wall cutouts for characters. It was hard to keep track of characters that were behind walls, so we played with the idea of showing employees even when they were behind walls. We decided against it.


Rain Weather Transition. I decided I wanted to use the new unity VFX graph to create a realistic looking 3D rainfall. Since most of our shaders are custom, it was also straightforward to implement weather effects on surfaces for everything.


Snow weather transition. Show is very similar to the rain effects, it also uses the unity VFX graph.


Show is very similar to the rain effects, it also uses the unity VFX graph.


Rain particle effects with the VFX graph and screen depth collisions. This allowed for a constant cost no matter the scene complexity.


Smooth wall fading. In the end, we left the smooth wall fading in since it gave a very professional look. You can notice it when you switch between wall hiding types and if you rotate the camera.


The automatic hiding of walls when the camera is zoomed in. We decided walls would always get in the way if they were up and the camera was closely zoomed. So we decided to hide them close to the camera. In the end we scrapped the idea.


Special post processing with better lighting when building mode is enabled. In the end we decided against this even though it looked cool, since it mainly got in the way of players and we also scrapped the idea of predetermined room types.

The effect was mainly done with box meshes that followed the room and were rendered to a buffer later used in post processing to desaturate everything else.


Eating animations syncing up. To this day you can still see this as we didn't add multiple eating animations, but it's not that noticeable since customers can finish eating at different times.


Object manipulation tools + UI. Later on we ended up going for a more streamlined centered radial menu that we also used for interactions and was only visible when you right click an object.


Pollution visualization exaggerated green goo. Me just playing around showing the team.


Rounded pollution visualization. In the end with went with a more advanced version of this with some fancy masking.


Player pinging. It was decided from early on we would want multiplayer at some point. This was an idea for players to communicate using simple pinging system. The code is still in the game to this day, but the input to trigger it was disabled.


Dynamic Event conversation camera zoom. This was the first concept I came up with with what we wanted to look like. Much later on this was itterated upon, and eventually was scrapped to make place for a more conventional dialog UI that fit more the gameplay flow.


Snap object auto rotation. At first rotation of snapped objects was not automatic. But since in most cases you could only put chairs in only a very specific rotation, automatic rotation made more sense and increasing placement speed was a bonus.


At first we didn't have any sitting animations, so we just blend between the standing and sitting animation poses. Later on we implemented proper sitting animations that needed to be synced with the position and orientation of the chairs.


Walking animations


Since this was a management game, we needed to have a simulation logic that can be ran at a greater speed. This was us testing if the game could handle it and if the visuals followed the simulation correctly.


Testing different camera rotation animations. I wanted to have a cure sway animation each time you rotate the camera. It gave a very nice juicy feel to the controls. Funny thing is later we reduced that effect quite a bit since one of the devs pointed out that they were getting motion sickness from it.


Testing out pathfinding adapting to the placement of walls. Later on, the game logic and what characters could do became really complex. So for a time, we had to block structural changes when the game was playing with characters on the map. In the end, we had to account for a lot of circumstances where walls or new objects placed would affect characters and what they did or were doing, but we managed it and players could once again edit the restaurant while there were characters in it.

This was the very first development stages of the games after we build a prototype and lots of reusable framework tools for the game and later on future titles.