Hey folks, thanks for stopping by. It is my pleasure to announce the overhaul and conversion of SCP: Containment Breach to a new engine: Unity. That’s right, we’re moving into the future folks!
1) Remake the gameplay and levels of the original game inside Unity. The most important thing is to move what already exists to a new engine. This doesn't mean that I'm copying and pasting from the original, just that its content will be part of this game. For example, in the original game, SCP-173 moves when it shouldn't be able to. I built a look object system so that SCP-173 knows when a wall is blocking it and it can move. This is just one example of the enhancements I am building in as I add more content.
2) Add controller support, so that people can choose how they want to play. This will also prepare the game to be ported to consoles, should that happen in the future.
3) Add modding support. The original game would not exist without a strong community of fans. I'd like to make it easy for people to add their own content, whether that be new levels, SCPs, or even gameplay elements! Eventually there could be a centralized repository of mods for users to download and add into their game. I'm building the engine for the game with modding in mind, and hope to add mod tools in the future.
4) Flesh out the story and gameplay. A lot about the original game needs to be improved. The keycard system, for instance, needs a total rework. My desire for the game is that progression be randomized; different seeds will spawn different rooms, which will allow the player to complete the game in different ways each time.
5) Upgrade the graphics and engine. Unity's lighting enhancements have already improved the game's graphics a lot. I plan on incorporating addons and improvements from Unity to continue improving the graphics with global illumination, vector based lighting, post-processing, and other cool effects! The game already uses Unity's beta post-processing stack to add ambient occlusion and anti-aliasing.
Downloads and Links
General: Alpha 0.5.5 (11/25/17): Link
Currently supporting Windows and Linux. Windows users only choose x86 if your computer is not 64-bit.
Patreon Weekly: Link
Official Website: Link
Previous Builds: Link
Code: Select all
Some fixes / changes to SCP-1499-1 instances to make them scarier / more of a threat
-Instances now run when attacking
-Instances that pause when the player is within attack range now switch to attacking the player
-Increased stopping distance so the instances are no longer pushing their bodies into the player
-Added a movement delay to simulate an attack animation; if they attack they will wait to move until the attack delay is expired
-Sometimes when colliding with them they will start attacking you. This is a bit wonky because Unity's default CharacterController doesn't like to play with physics. Will be streamlined when the CharacterController is updated
Player's vision now always goes black upon death
Better handling of vision going black when switching dimensions
Added a very crappy healthbar that responds to 'player health changed' message
Fixed sprite for button behind player not showing - RearButtonSprite now responds to events instead of using an update loop
Removed some extraneous code from game loader
Dimensions now use a GridLoader to load / unload grids, instead of doing it from the generator.
Added function to copy a grid config
Built the grid system for SCP1499. There are nine grids so that units can pathfind around the player; grids will be enabled / disabled as the player travels to keep memory usage low.
Removed black lines from skyboxes - set texture wrap mode to clamp
Added unity component that sends messages when a player enters and exits a grid
1499gridloader responds to PlayerEnteredGrid and PlayerLeftGrid and generates new grids as the player travels
Faster grid loading in 1499's dimension. The center grid is loaded quickly and then the others are streamed in at low latency as the player begins to travel.
Some new GameEvents: PlayerEnteredGrid, PlayerLeftGrid, PlayerStanceChanged, PlayerEquippedItem, and PlayerUnequippedItem.
Equipping / unequipping items now sends messages. GameUI responds to these messages. Added functionality to GameUI to add an overlay sprite if the equipped item is a HeadEquippable and has an overlay sprite.
Added SCP-1499 gasmask overlay sprite.
HeadEquippable now mirrors its changes from base pickups to instances
Increased spawn chance for 1499 chunks from 15% to 20%
Gave chunks a slightly randomized position inside their grid cells
Added functionality to apex path to disable grids that are in the process of initializing
Grid loaders now add and remove messages on OnEnable() and OnDisable() so that they aren't incorrectly called
1499 grids are now unloaded as the player travels through the dimension
Save button now closes options menu
Added containment door frame, containment doors finally implemented!
Containment doors placed in room2closets and 173_opt
Both dynamic door portals and static room portals now regenerate when switching back to the facility dimension
Fixed lockroom buttons
Slightly modified 173 to stick to the ground better, and compensated height slightly accordingly
Fixed archive room / armory - extended floor collider, fixed missing wall, and added missing door
Fixed lower grid in scp012 being too tall and trapping 173 downstairs inside the room
Decreased forward interaction distance from 5 units to 3 units
Rewrote the visibility system.
There is a LookObjectController that handles all LookObject MonoBehaviour components. These components add / remove themselves from the controller OnEnable and OnDisable. The controller asks the camera each frame if they are visible or not, and sets a flag on the components. This makes the system MVC and removes that functionality from the AI and camera, keeping it inside the look object system. This will also enable multiple objects to be queried for visibility at the same time. In addition, this allows the look objects to have multiple colliders of different sizes. All memory for the system is allocated on the LookObject scripts at Awake(), so there will not be any extra GC being generated by this system.
Resized 173's controllers to fit the new system.
Rewrote the GetColliderBoundsNoAlloc function to take colliders of various sizes and subdivisions
Added a delay when the camera responds to blinking in order to allow 173 to finish its move before the player can see it
Fixed 173 pathing through the walls around doors. Started by shrinking down portals. This broke 173 in doorways sometimes, as it was not on any grid. I then implemented Apex Path's CallbackPathRequest! This now handles all path requests. If 173 starts off-grid, it finds the nearest cell and moves there, then re-generates the path. This fixes that problem. I can also use this to move 173 back to the grid if it falls of the map.
Went into all rooms and resized grids. They will now fit standard humanoid NPCs like 173 better.
Lowered chance of t-shaped lockroom spawning from 15% to 10%
Reworked small_testing_room so that objects were separated, added missing colliders. Continued the vent and capped it so that the player can no longer see the skybox
Fixed door in 1123 room going through wall
Fixed missing collider for computer in scp012_room, added portal for stairs
Disable recursive hallway from spawning, as it is breaking maps and isn't done yet
Added vent blocker to lockroom to block skybox until I can model another vent
Fixed elevator room's wall not extended far enough in one area and thus allowing the player to see through the wall. Redid room in blender, separated upstairs mesh from downstairs (downstairs incomplete as there are no elevators yet)
Fixed bug where mustSpawn rooms were not being copied from their prefabs, so room grids were not working correctly
Changed arrival distance for 173 to 0.46 to avoid it overshooting as per Apex Path support's instructions
Rebuilt the RoomCache to be a lot smarter
-Utilizes classes for each type of room
-String lists for per-zone random and mustSpawn instead of instantiate a lot of copies
-Cleaner and easier to read and use
Noticed that 173's attack raycast was starting from the ground. Added an AttackPoint field for an empty transform, so that it can be started from its hands instead. This avoids it being blocked from raycasting the player with its own collider, which broke attack in many cases.
Added a new button type, AirlockButton, for the t-shaped lockroom that should ensure that the doors always end with one open and one closed regardless of starting state.
LookObject system now correctly hits the corners of the colliders when raycasting. Added two more points to check, front and back center.
Increased room grid spacing from 20.2 to 20.5. This fixes some rooms extending into others
Reworked grids in several rooms to ensure that they didn't allow 173 to enter walls near doors
Reworked Doors. Door abstract class now defines only information needed to set up type of door. StandardDoor extends this, and provides all functionality for most Facility doors. Added a new bool, gridConnector, which lets the door know whether it needs to generate portals or not.
Went through all rooms, upgraded their doors to the latest version
Added a new function to Tools/Containment Breach to auto create an empty room
Fixed bug where sometimes grids would not all initialize. This is because the number of grids to initialize is compared to the number of already initialized grids; if all grids are initialized, the loader moves on to the next sequence. Sometimes the current grids would finish initializing before the rooms were all placed and initialized, which meant that there were grids that were not correctly initializing.
Added RaycastBlockBetween function to Utilities
Interaction handler now checks if there is a wall / obstacle between the player and objects behind him.
Fixed bug where dragging an item out of an equipment slot would make the item image black (image darkened incorrectly)
Increased inventory slots to 12 to fill the grid better
Did work with the PDA UI for items and equipment so that it looks better on 5:4 resolutions
Fixed bug where resizing resolutions ingame would break InventorySlots