Overview
Where my party people at?!
It’s been two weeks so here are your regularly scheduled updates for that one SCP game where you “build stuff”. 😉
(Ultra) TL;DR: Pause & settings menu, more build system improvements, preparing for events.
What progress has been made on the SCP Game?
Pause System
Rejoice, we have a pause menu!
In the current version of the game the pause menu is around 60% functional. You can enter it by pressing ‘ESC’ on a default keyboard during gameplay and pressing it again will close the menu. Pressing the “Resume” button also closes the menu. The “Save game” button links back to the SaveManager.Save(); function. We decided to have the “Load game” button only be in the main menu (except in the debug menu), might change later. The “Quit game” button quits the game to desktop.
Settings
When pressing the settings button you are treated to 4 different menus! Resolution, display mode, quality, and shadow quality are fully functional while post processing and FOV & Brightness are not interactive as of yet. The controls have functional keybinds that should support every type (even controller?). Right now you can change keybinds for:
- Camera movement
- Camera zoom
- Changing floors
- Pausing game
- Return/ESC
- Set speed 1-4
- Rotate structure
- Multi-place button
New components
Creating the settings & pause menu took some time to fix since we had to add more functionality to menus and rework huge areas of the Save-manager and the Input Reader. We also worked in some new component types & designs:
Save file changes
We changed how the save files are stored. Each save file now has their own folder but now we also have a “GlobalData” which contains the settings that carry between savefiles.
Build System
Reworked the way that structure collisions are handled.
Previously, the build-system handled structure collisions – which is how the build-system determines if a position is occupied or not – by splitting a structure into the individual grid cells which it will occupy and then checking each of those cells individually. The system would no longer work with the new structure snapping system because now, structure can have snapping-preferences which will un-align the structure with the grid thus making it difficult to determine which exact cells the structure is supposed to occupy. This new system instead uses two diagonally opposite corners of the structure to determine its bounds.
Reworked the way ‘valid-structure-placement’ is determined.
Because of the new system for storing and handling collisions between structures, the way we determine whether or not a placement is valid, i.e. the position is un-occupied, had to be reworked as well. The new system for the is a lot more scalable than the last and can check any collisions independent of what snapping-preference a structure might have. The way it works is that it checks if at any point in time, the bounds of the structure (which was explained previously) intersects with the bounds of a different structure. Generally, if the bounds of a structure intersects with the bounds of a different structure, the placement is invalid.
Reworked the way structure “dependency” is handled.
Structure dependency is what I have decided to call it when a structure might need one or many supporting structures for its placement to be valid. This system is part of the ‘valid-structure-system’ and thus needed to be reworked as well. For a structure to be considered supported, the entirety of its bounds has to share a space with the bounds of the supporting structure or the supporting structures. It was relatively easy to check if the bounds of a structure is contained within the bounds of another but, check if it is contained within multiple was a bit trickier. The solution that I came up with was to first find all structures within the bounds of the structure that you want to place, then get the total area of their bounds and remove the area of the total area which is located outside the bounds of the structure that you want to place. If the bounds of the structure that you want to place and this ‘total area’ is roughly the same (the difference is less than about 0.1), the structure is considered supported.
Started reworking the preview-system.
Previously, each build-state had its own preview-system which bothered me so, when I was already reworking most of the build-system, I decided to rework the preview-system as well and have thus started compiling the different preview-systems into one master preview-system.
Reworked the area-selection-system.
This is a relatively minute system but, for the sake of thing running more smoothly, I decided to rework this system as well. Generally, at any point when you’re selecting an area – be it for placing structures, demolishing structures, or something else – you are using the area-selection-system. This system was generally just made easier to initialize and disable.
Prototyping Audio
Dynamic acoustics
In another project we have been testing out some audio features that are going to be implemented in the next devlog. With this system we can run some calculations to determine how the audio should sound depending on where the camera is, like making it more muffled if there are objects in the way and adding more reverb if the room is bigger.
Subtitles
To go along with the audio system we are working on some rudimentary subtitles. These subtitles only show up if you are near the audio-source as well so you won’t be bombarded with workers screaming two floors down. 🙂
Audio settings
We have hooked all audio to a mixer in their respective mixer groups so it will simplify when we eventually want to connect this to the audio settings.
What have you done this week?
Leo
I have been designing props for our booth and planned together with the others on our game development and coming events. And we have also together finished up some submissions for the event contests.
Isak
This week I prototyped audio, made settings, pause menu, reworked save-files, and helped on a lot of extra stuff. (:
Max
Improved build system. 😏👍
What is happening the next weeks?
The coming weeks we’ll be trying to work more on the build manager as well as implement audio and a main menu! The next week we are going to be attending two events and we’ll be posting some pictures from that on our social media.