1. Police Simulator: Patrol Officers
  2. News

Police Simulator: Patrol Officers News

Brighton was not built in a day: A look behind-the-scenes of Police Simulator



[h3]Hey everyone,[/h3]

Quite recently we released The Operation Anti-Drug Update, which introduces some new game features like drug dealers. It also adds Brickston as the third playable district to our open-world map. How we created the map including road and building generation is what we want to focus on in this article.

We are Jonas Reich and Philipp Brasin, two Tech Artists from the team at Aesir Interactive, and we would like to take this opportunity to show you how we approached the creation of the open-world environment and how we integrated Houdini in our custom procedural content pipeline inside Unreal Engine 4.

[h2]Going Procedural[/h2]
After developing the Windstorm games, we already had some experience with open-world level creation at Aesir Interactive. Those games were mostly set in the countryside without any traffic or NPCs taking a stroll. We knew that we'd have to up our game for PS:PO if we wanted to fill a densely populated city with content that allows interesting exploration on foot while still being large enough to allow travel by car.

Creating big cities like this from scratch usually requires big level design and environment art teams consisting of dozens of people. We always planned with a relatively small team, so leveraging procedural workflows was the obvious choice. The goal was to use smart tools that would allow us to work as efficiently as possible and enable content creation with as few repetitive or mundane tasks as possible.

[h2]Visual Prototypes[/h2]
During prototype development, our environment artists still placed everything manually. They could play around with ideas and still scrap everything without having to wait for tools to be adjusted to their needs.

We created two levels during this time:
  • A small prototype game map to showcase gameplay and atmosphere for a prototype meant to be submitted to the German funding body FilmFernsehFonds Bayern
  • An art vision scene without gameplay which had more refined visuals that acted as target visuals

Creating these maps helped us to determine how we wanted our artists and level designers to work and which steps in the process we wanted to simplify.

1: The art vision scene

[h2]Functional Prototypes[/h2]
In parallel with these art prototypes, we already familiarized ourselves with the unique challenges of generating roads and buildings for Police Simulator: Patrol Officers by developing throwaway prototypes that were scrapped and completely redone shortly before we went into full production.

2: Prototype for generating building topology with module attach points (white spheres) from a UE4 spline outline

3: Graybox building shapes generated from Houdini. This version of the generator used Houdini-generated geometry instead of instanced static meshes.

4: In-engine prototype for roads and bridges

Some of the features we tested here, such as the roads with elevations and bridges, were dropped to reduce the complexity of the tools and to allow a focus on what was essential for our gameplay purposes and scope.

[h2]Grayboxing and Planning[/h2]
Going procedural naturally allowed us to iterate road layouts quite a bit. Still, the generation times of our Houdini generators were long, so we had to approximate the city with grayboxing tools for faster iteration times. To visualize these first design steps, we used HDAs that converted 2D drafts created in Photoshop to 3D models in real in-game size.

Trying out different road layouts was possible within minutes, which gave us a better feeling of the dimensions, scale and density of roads and buildings required for aesthetic and gameplay purposes.

5: Graybox map generated from photoshop draft

6: Driving around in the graybox map to get a sense of scale

A different grayboxing tool was created to layout neighborhood and district areas using simple spline curves. The volumes generated from this tool were not only used for planning the layout but could also be loaded into our main generators to load area-dependent pools of materials and props.

7: The neighborhood area editor inside UE4

[h2]Road Generation[/h2]
Let’s take a closer look at the first of our two big Houdini tools: The road generator is the source of all ground meshes (roads, sidewalks, curb stones, etc.) and the node network required for traffic simulation (see Road Generator Outputs below).

[h3]Road Generation Part 1: Road Editing and Rebuilding[/h3]
Roads can be edited by our level designers using simple spline HDAs to get a preview of the road layout. This preview includes the rough topology of the roads (lane widths, shape, etc) as well as some meta data (connections to other roads, etc).

8: Preview road meshes. You can see the spline control points of the road that is selected

9: The road network preview shows color codes for intersections and sharp turns that help to check if the input splines are valid

There are a couple of restrictions for how roads can be connected, such as not allowing two oneway streets to be placed in a way in which traffic would cause a face-to-face collision. This preview helps level designers find mistakes early in the process, with fast iterations due to short generation times for the entire map.

[h3]Road Generation Part 2: Inside Houdini[/h3]
The road generator consists of multiple geo-level HDAs which were split in a way that allowed the separation of different problem areas of the road generation. The first one of these generators takes care of generating all geometry for the roads and sidewalks. This is one of the more complex steps of the entire pipeline because we’re generating unique shapes for each intersection.

We decided early on that restricting ourselves to a finite set of
intersections with predetermined angles and lane configurations would not cut it because we considered this to be too limiting to our level designers.

Of course, there are still limits to how many roads you can connect, but those restrictions also apply to real-world intersections, so this is not a problem for us.

10: The detailed topology of two mesh chunks connecting roads of different sizes. Grid size: 5x5m

The intersections require the most complex geometry wrangling by far. Connecting them with road strips is relatively simple in comparison. After this is done, we have the basis for the next two parts of the generator:

On the one hand we need to generate some more geometry for all the areas between sidewalks. They are filled with ground meshes and strips of curbstones alongside the road edges. All these ground meshes are further refined by adding mesh decals and vertex colors for natural-looking wear and tear.

On the other hand, we have a complex traffic simulation in the game that needs to know the placement of roads, lanes, parking spots, etc. This data is also generated within Houdini. It is organized in a directed graph that contains meta information on speed limits and markup for traffic control objects such as signs and light signals.

11: Final output of two chunks with instance points and traffic system data. It also contains meta information such as LOD class, navigation area class and more

Finally, we also scatter a bunch of props alongside the roads: Anything that is gameplay relevant like fire hydrants, signage or crosswalks come first, followed by beautification props including trees and trash cans. Not all the props are placed procedurally though: We always decide on a case-by-case basis whether it makes sense to include additional rules in our generators. For most cases it can be broken down like this: If any of the following questions can be answered with yes, it’s placed with Houdini - otherwise we go for manual placement.
  • Is it connected to the traffic system?
    • e.g. traffic lights, trees, signs
  • Does it visually align with streets and/or have very simple placement rules?
    • e.g. street lights
  • Do we need more than 50-100 instances in the level?
    • e.g. trees
Placement is realized with instancing point attributes to instruct Unreal Engine 4 which assets to place in which locations.

[h3]Road Generation Pt 3 - Road Generator Outputs[/h3]
Let's take a look at the outputs of the road generator inside Unreal Engine! The generated meshes are divided into 50 by 50 meter chunks which are themselves grouped into streaming levels - we settled on a streaming level size of 150 by 150 meters, so there’s 9 Houdini chunks in one UE4 streaming level.

12: All of the Houdini-generated geometry and placed props for a single streaming level inside UE4

13: The same streaming level up-close. Here you can see a bunch of props placed by Houdini.

The props placed by the road generator get additional meta information via UE4 properties and actor tags including their relation to the traffic node network. The prime example for this is our traffic light blueprint. We use the same blueprint for all traffic lights in the game so the blueprint needs to know the amount and orientation of lanes that it controls to adjust its components accordingly.

14: A traffic light blueprint actor as shown in the editor


15: The same blueprint with all of the possible signs activated at the same time

Depending on the lane count of the adjacent road, the blueprint can automatically extend the poles and add appropriate meshes and light components. Signage and pedestrian traffic lights that are attached to the same pole are also added on-demand based on the properties passed from Houdini.

16: A traffic light at the exit of a one-way street combined with a pedestrian crossing

17: A traffic light at the entry of a two-way street with a single incoming lane, also combined with a pedestrian crossing

The json serialized traffic system graph created alongside the static mesh geometry is imported to UE4 in order for it to be usable for our traffic system. We also created a custom editor mode that lets us inspect and edit the imported data to be able to debug it more easily.

18: Debug visualization showing the traffic node network of an intersection in our feature testing map

Overall, the generation time inside Houdini for everything related to the roads is around 2.5 hours with an additional 10 hours for importing and processing all of the data in the UE4 editor. Because of these long run times we have an automated schedule to run the pipelines outside of regular working hours and on weekends, so that the artists' workstations are not blocked by Houdini pipelines checking out streaming levels.

[h2]Building Generation[/h2]
[h3]Building Generation Part 1: Instancing[/h3]
The building generation can skip some of the steps required for road generation, simply because the buildings can be generated one by one without influencing neighboring buildings. As a result, we only need a single HDA with one HDA instance per building. The building generator also takes a different approach for geometry generation: Instead of generating all geometry with Houdini we instance prebuilt tileset pieces in UE4 using instancing points.

This approach has three main advantages:

  1. Rendering can be optimized to use hierarchical instanced static meshes (HISMs) to reduce draw calls
  2. Artists have more control over building geometry and can go crazy with unique details without making the generator overly complex
  3. Development time and execution time of the HDA is a lot faster because of decreased complexity across the board

[h3]Building Generation Part 2: Tilesets[/h3]
All pieces of a building are usually placed together in a folder with all its materials and some data assets that define tilesets.

19: All assets required for a building tileset, excluding attachments

Each tileset can vary in size compared to other tilesets because artists can configure which tilesets may be mixed and matched. To accomplish this, we use these Tilesest Asset Maps (TAMs) that define which pieces may be used together. The asset map defines a base piece size, so we can create a snap-grid from this smallest unit. We then configure floor ranges that use a custom expression syntax to group floors and walls together, which allows for having different meshes and even heights for different floors.

20: Tileset Asset Map (TAM)

The example from the screenshot uses indexing similar to python array indexing. Positive numbers count from the bottom, negative numbers count from top:
  • 1: 1st floor (we use the US-American style of counting floors, so this would be the ground floor in British English)
  • 2: 2nd floor
  • 3+: 3rd floor and everything above
  • -1: topmost floor (overrides previous rule)

The artists can then assemble the floor range asset maps that reference all of the available meshes, materials and blueprints for each of these floor ranges.

21: Tileset Asset Map (TAM) - Floor Range

Finally, a last Tileset Fill Pattern (TFP) file is created that references a single asset map. The tileset fill patterns define how often and with which patterns the assets should be placed within a single floor. Separating the fill patterns from the asset maps makes it possible to create multiple configurations for how assets should be distributed from the same collection of assets.

22: Tileset Fill Pattern (TFP)

All the tileset files are automatically exported to json text files that can be referenced inside the Houdini HDAs using a custom variable syntax. In the screenshot above you can see a Houdini Path in the first line:

In the screenshot above you can see a Houdini Path in the first line:
%UE4_HOUDINI_INPUT/Buildings/Tilesets/TFP_BS_B02.json

Notice the variable %UE4_HOUDINI_INPUT at the beginning of the path. We set up environment files and added utility functions both for Houdini and UE4 to resolve them, so the paths can be used across workspaces and programs. In this case the variable refers to a folder that contains generic data files, exported from UE4, and acts as input to Houdini. We also have variables for the UE4 project root, working files, and many other commonly used directories.

This setup allows us to resolve project file paths independently from the working directory of the current Houdini session.

The environment file also contains a UE4_CURRENT_MAP entry that is set automatically by our UE4 Houdini plugin and makes it possible to access content for the currently loaded level in the UE4 editor. For
example, %HOUDINI_ROOT%/%UE4_CURRENT_MAP%/Buildings/BuildingOutlines.bgeo contained a geo file with all building outlines of the current level.

This environment variable system is not used exclusively for the buildings, but for all other HDAs that need to exchange data via applications. Small systems like this really paid off by keeping the way we exchange data simple and consistent.

[h3]Building Generation Part 3: Inside Houdini[/h3]
The HDA for the building generator is created on the object level and contains multiple sub-objects that are attached to each other for different parts of the building:

23: Overview of the building generator graph on object level

The base idea of this hierarchy is pretty simple: We start the generation with a core generator that creates a grid of points where potential building pieces may be placed. Then other Houdini objects (see image above) are attached to this “armature” that actually uses the points to add…

  • instanced static meshes for the main building modules (walls, doors, windows, etc)
  • instanced static meshes or blueprints for additional attachments like flower pots, AC units, etc
  • generated static mesh geometry for the roof, graybox previews, debug info
  • generated collision geometry

As most of the building geometry in UE4 consists of instanced static meshes and blueprints, the buildings in Houdini consist only of the roof and the instancing points.

24: What buildings look like in Houdini (instancing points and generated roof geometry)

25: The same building with a debug visualization that shows the different modules

[h3]Building Generation Part 4: Using the Tools[/h3]
To speed up the initial placement of buildings, we added a new mode to the grayboxing HDA mentioned above which already contains outlines for potential buildings. Level designers can simply select an area with a polyline and new editable buildings are placed for all contained outlines.

26: Selecting an area on the graybox ground plan to generate two buildings from the ground shapes

27: Both buildings are unique actors that can be selected and edited individually

Buildings are initially generated in a grayboxing mode that takes less generation time and therefore allows faster iteration of the ground outlines and building height.

28: Editing the outline of a building in grayboxing mode

Artists can then switch over to the actual tilesets in which all of the meshes and blueprints from the UE4 data assets are instanced. A random tileset is assigned automatically, based on the area in which the building's origin resides, but any of these settings can be manually overridden.

These areas are defined with the area grayboxing tool mentioned above in the “Grayboxing and Planning” section.

29: Tileset variant A

30: Tileset variant B

31: Tileset variant C

32: Tileset variant D

Sometimes the outline has to be tweaked a little bit after changing the tileset - after all, meshes with different base grids will result in slightly different outline shapes. From this point on it usually makes sense to make some adjustments to the walls and adjust the number of floors to make the building blend in a bit better with its environment.

In all cases the generated buildings are just the foundation for manual beautification. Of course the tools already offer many creative decisions and our target was always to reduce the manual work required, but some props still need to be placed manually to make the level feel more organic and recognizable.

33: The finished square

34: The same square from a different perspective

[h2]Micro-Tools[/h2]
Whenever we had some new demands for the tools from an artistic or gameplay perspective, we expanded the generator and added small micro-tools that allowed artists to influence the Houdini generation on a more detailed level to visually refine an area or make some performance optimizations. One example are geometry volumes that enable the modification of enclosed objects by removing or adding props, swapping materials, or cutting holes into the generated geometry.

35: A volume that makes the sidewalk extend inwards to create narrow streets

Because these features were added little by little, not a lot of forethought went into them in the initial design phase during which we set up our pipelines. In hindsight we had some usability issues, especially with the aforementioned volumes because they would constantly overlap and clutter the level making it harder to get a clear picture of what was going on.

36: A part of the volumes placed in the level. 150x150m streaming level with a police car on top for scale.

This opaqueness of some of the tools was amplified by the waiting times required to see the actual output of the generators. We had done a good job with the road network preview (see above), but some of these smaller tools lacked immediate visual feedback.

We don’t have any clear plans on how exactly we want to address these issues yet, but for the next version of the tools we will certainly focus even more on usability, iteration times and the maintainability of complex scenes.

[h2]Continuous Integration Pipelines[/h2]
The long execution times of HDA rebuilds and bakes mandated automating most of our Houdini pipelines. To accomplish this, we wrote custom UE4 commandlets which take care of rebuilding, baking and submitting assets to perforce. These pipelines are an important part of our overall CI setup.

The Houdini commandlets are usually executed after working hours because they have to check out and submit content to the same maps that are used by content creators. While we do have separate maps for HDAs of roads and buildings, the final meshes have to be baked into the same streaming levels alongside manually placed assets. We use actor tags to differentiate between Houdini/pipeline-controlled actors and manually placed actors so we can freely delete and replace previous bake outputs every night.

[h2]Streaming Level Proxies[/h2]
We use UE4 level streaming proxies (also called level LODs) to reduce the amount of streaming levels that need to be loaded at the same time.

Our proxy generation commandlet loads up all original levels and bakes their entire content into a single proxy mesh per streaming level.

37: Brighton when viewed from above. The streaming levels close by are loaded in full detail, whereas the sky-scrapers in the back are loaded as proxies

38: The proxy meshes when viewed from a close distance

Obviously, the result looks super chunky up close, but when it’s loaded in the distance we get quite a nice skyline of the city as seen here in the Downtown district:

39: An ingame render from the Downtown district

[h2]Parks and Landscapes[/h2]
If you play Police Simulator: Patrol Officers, you will notice that the city of Brighton is not all flat ground and concrete. There are some beautiful parks scattered all across the city. These parks are not made with any Houdini tools. Instead, they are built by our artists in UE4’s landscape editor.

40: One of the many parks in Brighton

[h2]Aesir PreCook[/h2]
Everything generated by Houdini can be optimized without a big effort because we can adjust the generation algorithms and simply re-run the pipelines, but we also want to allow artists to place blueprints by hand and use them as a creative tool to assemble combinations of props. To deal with such actors, we made use of a tool from our toolkit: The Aesir PreCook is a commandlet that runs a preset of optimization steps on an arbitrary set of levels. Some of the things it can do:
  • convert child actors into real actors
  • break blueprints without logic into their components
  • batch components with the same settings together
  • create hierarchical instance static meshes where possible
  • convert ground decals into static mesh planes that render into a runtime virtual texture
  • register all lights with a single light manager actor per streaming level

All of these steps are super simple by themselves but when combined they yield great performance gains. The overall execution time fluctuates a bit based on the density of content. Timings range from 8 - 12 seconds per 150m parcel, that is 5 - 10 min per km² or 30 - 40 min for our entire map.

As a nice side effect we were able to easily add level metrics like actor counts, memory size, and their development over time.

After the precook we run the regular cook and packaging steps via BuildCookRun and deploy our builds to a Steam branch for testing.

41: Average static mesh actor counts before PreCook

42: Average static mesh actor counts after PreCook

[h2]Final Words[/h2]
We hope this article was insightful and gave you an idea of the work that went into creating our beautiful open world. After all this talk about the technical aspects of our open-world tooling it’s easy forget how many other people are involved in making this game possible. So here’s a big shout-out to our incredible environment art team and everyone else who contributed to the game!

If you want to visit some of the areas shown in screenshots above yourself, you can grab a copy of Police Simulator: Patrol Officers on Steam.

If you have any feedback on the article or simply want to reach out, you can contact our team at Aesir via [email protected] or join astragon’s Discord server.

If you’re interested in the timeline for the ongoing development of the game, it’s worth checking out our Early Access Roadmap, where we outline all upcoming updates.

https://store.steampowered.com/app/997010/Police_Simulator_Patrol_Officers/

OUT NOW: The Keys-to-the-City Update!



[h3]Fellow officers,[/h3]
It's finally here! After weeks of beta testing (thanks, btw), we're pleased to announce that The Keys-to-the-City Update is now available to all players of Police Simulator: Patrol Officers!

[previewyoutube]YOUTUBE LINK[/previewyoutube]
[h2]What's inside The Keys-to-the-City Update?[/h2]

We've prepared a plethora of new features and improvements for you. Some have been planned for a long time now and quite a lot come straight out of the oven - and are based on your feedback. Without further ado, let's dive right into it!

Open Patrol

Right as we began our journey in Early Access, people wished for one feature: "Please give us the option to play shifts with fewer restrictions!" Okay, to be honest, you've articulated your questions in a different way - but it's here now, anyway. Roam through the districts of Brighton with more freedom and play the game the way you want with Open Patrol!

Keep in mind that before selecting Open Patrol, you have to unlock it first by playing and progressing through some shifts. Obviously, you don't have to do that should you have already unlocked basically everything by now or at least the third district - Open Patrol will be available for you right from the start. Lay back, protect your city and get back to the precinct whenever you want. Currently, you need 14 Duty Stars to unlock the feature but we are observing your feedback and discussions about these requirements.



New Duties

Throughout Brighton, citizens have reported new violations: A bunch of wallet thefts was observed and drinking in public became a major problem in the entire city. Stop the thieves, stop the alcohol, stop the offenses!

However, you can also relax and focus on interacting with your fellow citizens in new ways. Some of them will ask you for directions while you are now also able to greet them back. Say hello! 👋

The moment you discover some exciting Point of Interest, the in-game map gets updated with a corresponding shiny icon - which is especially useful when your fellow citizens are asking for directions.

More NPC Variety

With the new update, we're also shipping three new male faces and three new female faces - in addition to four new haircuts for female NPC and two new haircuts for male NPC. Since all NPC are randomly generated from a larger amount of different options (gender, hair, face, hair color, clothes, etc), you will definitely see a lot fewer twins at every corner now. Apparently, they are not all related to each other. I'm relieved.

In addition, we will now have tenfold the number of names than we had previously. We're speaking of 733 female first names (previously: 77) and 754 male first names (previously: 75). Plus, we will now have 769 last names in total (previously: 60).

You see, more actually means MORE. I recently bought a new calculator and the first thing I did was to calculate how many possible combinations of names we now have. You won't believe the number: 1.100.000.



AI Improvements

I'm confident that basically everyone has experienced this: You want to blip a car to the side, they try to find a parking spot and... never do that. Do they just have bad eyes or are they trying to scam us?

We were aware how annoying that must have been which prompted us to improve the AI behavior significantly: Blipping now forces vehicles to stop in the right lane instead of looking for a parking spot - unless there is an available spot immediately nearby. In addition, blipped vehicles will now no longer brake abruptly when starting their parking maneuver.

If vehicles are under the influence of your patrol car siren and blue lights, they can now also be blipped and consider their current "stop location" as "stopped for parking". They are also blocked from moving forward when your ELS is active. Last but not least: In general, vehicles should react better to the player and also to the player's vehicle with activated sirens.



Some other Quality-of-Life Improvements

We now have an explanation system for the loss of Conduct Points so that the process is more transparent. You won't hurt yourself in your confusion anymore. Starting today, Car Patrol Shifts are also available within high crime areas and Field of View Adjustments are working better.

Voice-overs

We spent our last few weeks and months recording new voice-overs in both English and German and can finally ship them with this update! In the beta, they were not included yet as they were simply not finished. But hey, they're ready now and you can enjoy them in all their glory.



Bugfixing

Once again, we are prioritizing bugfixing above all. Our backlog of tasks is quite long and the team has already ironed out a lot of them - but just like with every game, work is never done! Please continue to send us your bug reports as we collect and read them all.

We know there are some that cause bigger issues and are also aware that there are some very nasty ones, especially when it comes to clipping and AI. Fixing those isn't easy and very often, we cannot reproduce them internally until we get that one piece of information that is so crucial.

Please check out the full patch notes down below for more details on everything we've fixed with this update!



[h2]Update 4.0.0 - Full Patchnotes[/h2]

We had an amazing start to the new year and cannot wait for everything that's in front of us. Some of you have already seen our updated roadmap in which we tease some upcoming features like holding cells in precincts, being able to transport arrested people yourself, first modding capabilities, traffic management... and more!

We hope you're excited for the future of Police Simulator: Patrol Officers and eager to develop the game alongside us. Thousands of new players are joining us on our journey each month and we see no signs of stopping.

Okay, enough said - let's get to the patch notes!

New Features
  • New Feature: Open Patrol
  • New Feature: Conduct Point Explanation System
  • New Feature: Helping NPCs asking for directions
  • New Feature: Greeting NPCs
  • New Violation: Wallet Theft
  • New Violation: Drinking in Public
NPCs
  • Added 4 new haircuts for female NPCs & 2 new haircuts for male NPCs
  • Added 3 new face models for female NPCs & 3 new face models for male NPCs
  • Added more than 700 new first names for male NPCs & more than 650 new first names for female NPCs
  • Added more than 700 new last names for NPCs
  • Added some new animations to the police officers in the precinct reception
Police Car & Traffic Cars
  • Improved NPVs reaction when blipped over: Blipped vehicles now do not stop abruptly
  • Improved NPVs reaction when blipped over: NPVs now stop on the right lane if they can not find a parking spot nearby
  • Improvement: Vehicles under the influence of your patrol car siren and blue lights can be blipped and consider their current "stop location" as stopped for parking
  • Improvement: Pulled Over NPVs / Blipped Vehicles are blocked from moving forward when ELS is active
  • Improved vehicle reaction to sirens: When blipping an NPV it does react to my code 1,2,3 and stops searching for a parking spot while the siren is activated (or the horn). When running code 1,2,3 NPCs and NPVs do not react enough and do not try to avoid me as a player / make way.
  • Improved spotlights on Panther Z
  • Car patrols are now available in high crime areas
World
  • Added more lights in darker areas (especially useful in Night Shifts)
Sound
  • Added more voice overs for English and German languages
Handbook
  • Modified handbook entry for Parking Regulations, to include explanation about cars with “Shift” sticker on them
Balancing
  • Decreased chance for 'Smoking Exhaust' to be more realistic
  • Decreased chance for 'Engine Too Loud' to be more realistic
  • Beta Change: Adjusted the chances for NPC to ask for direction
  • Beta Change: Decreased distance range for greeting and asking for direction because the NPC voice lines are inaudible


Bug Fixes GAMEPLAY
  • Fixed a lot of cases where the action was unjustified in report, even though it was a justified action by the player
  • Fixed an edge case where sometimes players were losing SP instead of CP
  • Fixed an issue where player was able to hold two tools at the same time
  • Fixed an issue where restarting shift was placing players into the running shift again
  • Fixed an issue where incorrect CP was deducted when ticketing broken windshield
  • Fixed a issue with Radar Gun where pressing escape deleted the evidence photo the officer took
  • Beta Fix: Fixed an issue where player could not greet back when he had a tool equipped
  • Fixed a minor issue with night shift timings
MULTIPLAYER
  • Fixed an issue where some NPVs were invisible for client
  • Fixed an issue where the player's position from the previous shift was also displayed in the new shift when leaving the area of jurisdiction
  • Fixed an issue where 'Asking for ID' was blocking the client
  • Fixed a multiplayer issue where the client sometimes had camera view of the host while talking to accident witness and this lead to game being stuck for client
  • Fixed a major NPC flickering issue in multiplayer sessions
  • Beta Fix: Fixed an issue where sometimes players where not able to join Open Patrol in multiplayer
  • Beta Fix: Fixed an issue in background check where the host and client saw different information about the NPC
NPCs
  • Fixed many issues concerning NPC behaviors (e.g.: Drug dealer did not walk away after being let go)
  • Fixed issue where graffiti sprayers were spraying on advertisement boards and windows of buildings that were invisible
  • Fixed an issue where graffiti sprayers had no spray can in hand
  • Fixed an issue where graffiti sprayers were spawning on top of buildings
  • Fixed an issue where drug dealers were spawning in unreachable places
  • Fixed an issue where sometimes the buyer does not walk away after a drug deal
  • Fixed an issue in crime scenes where the criminal was still on the scene due to broken navmesh
  • Fixed an issue where NPCs did not walk on sidewalk due to broken navmesh
  • Fixed an issue where NPCs were floating in bus stops
  • Fixed an issue where NPCs were sitting on invisible benches
  • Fixed an issue where NPCs are sitting behind the bench
  • Fixed an issue where NPCs were clipping through tables
  • Fixed an issue where NPCs were clipping in Kiosk
  • Fixed an issue where the NPC faces LOD were incorrect
  • Fixed an issue where NPC feet were inside the ground
  • Fixed an issue where some NPCs were showing skin through dress
  • Fixed an issue where sometimes NPC fingers were all weird
  • Fixed an issue where you could not interact with NPC when aiming with a tool
  • Fixed an issue with drug dealers fleeing
  • Fixed a navigation issue under the bridges which caused drug buyer to not interact with drug dealers
  • Fixed a NPC navigation issue due to a narrow sidewalk
  • Beta Fix: Fixed an issue with wallet theft victims no longer fleeing from player when he fires taser or gun
  • Beta Fix: Fixed an issue with wallet theft where the victim animation was not played correctly
  • Fixed an issue where sometimes wanted suspects did not flee the crime callout area
  • Fixed a issue where some NPC standing near the sidewalk were blocking the traffic
  • Beta Fix: Fixed an issue where sometimes the NPC asking for direction does not mention the location
  • Fixed an issue where sometimes player could not interact with the pulled over NPC
  • Fixed an issue where sometimes you could not call an ambulance for an injured NPC
PATROL CAR & TRAFFIC CARS
  • Fixed an issue where Patrol Cars were accelerating after returning from a tutorial popup
  • Fixed an issue where Patrol Cars were accelerating on their own after closing the Board Computer
  • Fixed an issue where Patrol Cars were disappearing from game session if the previous session was failed
  • Fixed an issue where player could interact with NPCs while asking for NPC ID
  • Fixed an issue where some parked NPC were submerged in the sidewalk
WORLD & GRAPHICS
  • Fixed a lot of places where sometimes you could see spaces in between two buildings
  • Fixed a level design issue with misplaced scaffolding on a building
  • Fixed an issue where a small part of a building in Chester did not have a texture
  • Fixed an issue where some walls were missing collision
  • Fixed an issue where some walls in game were missing collision so that players could walk through them and fall into the never-ending abyss of Brighton
  • Fixed some issues where cables were clipping through buildings
  • Fixed some issues with coffee shops
  • Fixed an issue where bookshelves in precinct were changing textures (are they chameleons?)
  • Fixed issues where some decorative plants did not have collision
  • Fixed an issue in parks where the grass textures looked really wrong
  • Fixed an issue where graffiti cans were submerged into the sidewalk
  • Fixed an issue where bicycles were submerged into the sidewalk
  • Fixed an issue where some street sign boards were small in size, so now we have increased their size to have better visibility
  • Fixed an issue with the LOD of trees
  • Fixed an issue where sometimes the border warning color was incorrect
  • Fixed a visual issue with the parking spot in traffic stops
  • Fixed a lot of level design issues
  • Fixed an issue where some graffiti were overlapping with each other
  • Fixed lighting issue during night shifts, where earlier the areas where too dark without lights
  • Fixed a lot of textures on buildings
UI
  • Fixed the developer debug string displayed in the intuition messages (no more #hackerman)
  • Fixed an issue that caused the 'Aim mode: Field of View' settings have no effect
  • Fixed an issue where the displayed intuition was sometimes incorrect and misleading
  • Fixed an issue with the tool tip for 'Parking in Front of Bus Stop' that did not mention towing as justified
  • Fixed an issue where the color of the game suddenly turned to black and white (thanks, Marcobarg!)
  • Fixed an issue where placing a custom marker on map sometimes did not show up
  • Fixed an issue where the interaction button 'F' was still present during driving the patrol car
  • Fixed an issue where the NPC ID was displayed completely black
  • Beta Fix: Fixed an issue with Open Patrol: When in open patrol, hovering over the icon does not show useful information
  • Beta Fix: Fixed an issue where the last used car in career mode is displayed in Open Patrol
  • Fixed an issue where the compass did not move correctly
  • Beta Fix: Fixed an issue where the star for Open Patrol where incorrectly updated
  • Fixed an issue where the high crime area progress bar does not get filled
  • Fixed an issue where sometimes the Duty Stars displayed on save game was incorrect
  • Fixed an issue in encounter report, now demanding ID unjustifiably is properly displayed
TUTORIALS
  • Fixed issues with tutorials not triggering correctly
  • Fixed an issue with cannabis tutorial which had broken gender text
  • Fixed an issue where 'Expired Parking Meter' tutorials were triggering on handicapped cars
  • Fixed an issue where 'Underglow Lights' tutorial was not triggered correctly
  • Fixed an issue with 'Using Turn Signal' tutorial
  • Fixed an issue with 'Wanted Person' tutorial
  • Fixed an issue with 'Photographing' tutorial
  • Fixed an issue with 'Broken Lights' tutorial
SOUND
  • Fixed an audio loading crash when entering Patrol Car
  • Fixed an issue where the sound of damaged patrol car engine was still audible after restarting the shift
  • Fixed an issue where continuing a career from main menu after leaving a career mutes many sound effects
  • Beta Fix: Fixed wrong dialogues being player when handcuffing a wallet thief
  • Fixed wrong dialogue lines when detaining for suspicious driving behavior
CONTROLLER
  • Fixed an issue with game pad- it was observed that the shift selection screen does not show any
  • Beta Fix: Fixed an issue where a designated button for controller to switch to the Open Patrol mode was not displayed
MISCELLANEOUS
  • Fixed an issue where player character ragdolled after opening the patrol car trunk (do a barrel roll!)
  • Fixed hands clipping through blazer
  • Fixed an issue where the graffiti was visible when NPC is painting
  • Fixed an issue where some hairstyles were missing in game
  • Fixed an issue with adjustment to female officer uniform
CRASHES
  • Fixed a game crash when performing background check
  • Fixed a crash in shift end report


https://store.steampowered.com/app/997010?snr=1_2108_9__2107

Join us! Follow us on Social Media, Discord & Reddit! 🎉



[h3]Fellow Officers,[/h3]

it's awesome to see how much our vibrant community on Steam has grown throughout the last year. So many threads, so many users, so many questions, so many answers... a huge thank you to every single member of the community 💕

Of course, we're not just on Steam! We're present on basically every other platform so make sure to follow our Socials, join us on Discord and enter the (kinda) official Subreddit!

You won't regret it, I promise! We're posting the latest updates. The latest news. The best fluff. The best posts. Oh, and you can get in touch with our team as well! 💬

Here are all our Socials:
If you want to get in touch with us in a more personal and direct way, we'd recommend you to join the Official Discord Server for Police Simulator: Patrol Officers. Chat with us, other players, and fans of other simulation games.

In addition, a few community members have also set up a Subreddit! It - as usual - will be moderated and operated by the community itself. However, we endorse the subreddit and encourage you to enter it!

We can't wait to get in touch with you about the upcoming launch of The Keys-to-the-City Update, the already teased details about The Holding Cells Update, and the general future of Police Simulator: Patrol Officers. There's a bright future ahead of us.

Thank you,
Your Police Simulator Team

https://store.steampowered.com/app/997010/Police_Simulator_Patrol_Officers/

Steam Holiday Sale is live: Save 10% for a limited time!



[h3]Hello to our new recruits,[/h3]

Santa Claus is coming to town and brought some gifts with him! We've unwrapped them early (sorry for that) and know what's inside:

A limited discount during the Steam Holiday Sale - get the game now and save 10%!

The Steam Holiday Sale starts... today! Oh, and it will end on January 5, 2022.

The Brighton Police Department is always looking for fresh recruits so send us your application: You only have to buy the game and join us on the streets!

See you soon,
Your Police Simulator Team

https://store.steampowered.com/app/997010/Police_Simulator_Patrol_Officers/
(We've also prepared some wallpapers as an additional gift! Click here for details!)

Beta Update 4.1.1



[h2]Changelog - Beta Update 4.1.1[/h2]

Gameplay
  • Fixed an issue where players could not lose CP in Simulation Mode
  • Fixed an issue where new shift could not be started after being critically injured in the previous shift
  • Fixed an issue where players could not play normal career shift after returning from Open Patrol shift
  • Fixed an issue where player could give Wallet Theft report multiple times
Multiplayer
  • Fixed an issue where ending shift in Multiplayer caused problems to Host / Client
  • Fixed an issue for Host in career mode, where the icon displayed in shift selection is of Open Patrol instead of career mode
  • Fixed an issue where compass displayed all available patrol cars for Client
  • Fixed an issue where sometimes Client could interact with both NPV and NPC of a pulled-over car at the same time
  • Fixed an issue where Client could interact with fleeing NPC without tasing him
  • Fixed an issue where Host could not interact with injured NPC sometimes
Graphics
  • Fixed an issue where tasing fleeing NPC animation was broken
  • Fixed an issue where some of the Graffiti was low resolution
  • Fixed an issue with a few Graffiti spots which looked black when looking at them from certain angles
  • Fixed an issue with Grafitti where sometimes they were stretched and behind objects
  • Fixed an issue where Graffiti sprayer was spraying in the air
  • Fixed an issue with camera when interacting with parked NPV
  • Fixed an issue where the license plate for tow truck / ambulance were not present
  • Fixed LOD of male bun hairstyles
World
  • Fixed a level design issue where there was a gap between precinct door and floor
  • Fixed an issue with missing bus stop markings in Brickston
  • Fixed an issue with bus stop placed on the left side in a one way street in "Callahan Financial Sector"
  • Fixed a ton of other level design issues in the game world
UI
  • Fixed an issue where already discovered Points of Interest on the map disappeared when starting a new shift
  • Fixed an issue where the board computer GPS became large in first-person view
  • Fixed an issue where changing the screen resolution was not taking effect properly
NPC
  • Fixed an issue where NPC at the restaurants were placed incorrectly
  • Fixed an issue where some of the NPC at bus stops were floating
  • Fixed an issue where NPC sitting on elevated platforms are not interactable
  • Fixed an issue where some NPC were stuck inside a kiosk
  • Fixed an issue where parked NPV was stuck inside a pole
Controls
  • Fixed an issue where selecting a shift was not possible with a gamepad
Miscellaneous
  • Fixed an issue where sometimes the player could launch the game with no game object loaded
Crashes
  • Fixed a crash for Host when kicking the multiplayer partner
  • Fixed a crash that happened when stopping the same NPV twice
  • Fixed a super rare crash in Traffic System when vehicle location and route go out of sync


[previewyoutube][/previewyoutube]