Here are news from thedarkshift.com project
Last updates of The Dark Shift
3rd variant of the ritual room
Ritual room is sitting in the center of the story and it is supposed to evolve together with it. Having multiple variants of the room is a key.
New environmental sounds for the rooms, and adjustments of the sounds in the first loop.
Music from the initial video sequence is now appearing in the game.
Different materials for all walls and floors. Removing most of the reflections and picking less generic colors
It is time to change the color vibe of the ritual room. Mehmet is sick of the generic textures, lets make it more devil-ish. ;)
Table camera and other ritual room props configurations and sounds tunning
We were struggling with the perspective of the camera over the table. As part of the fix we also tweaked the sounds in the vicinity of the ritual room.
Video room used for inter-loop videos, tuning up of the video room
It is great to have pre-recorded videos, but is even better - from perspective of future iterations - to use camera from the actual room instead. No cost to future upgrades.
Add a video between loops that plays once we finish the loop succesfully
Display random creepy video in our game tv to provde the concept of the story-told-between-loops.
Light environmental sound effects that make us feel like we are in the diner somewhere + Boombox Music
The first loop needs more relaxed environment, this time supported by the proper sounds. And they should be well positioned, right Mehmet? :)
Floor Tiles and Walls are of diner's
Ritual room have finally approprite texture coat which is not a generic bricks tiling from our experimental procedural tiles. Consider it new biom from the procedural perspective.
More interesting environment of the initial room + interactions tutorial
Equipment of the early loop ritual room was almost completely missing - so we added some.
Improve LoS in the ritual room & photos on the wall
Photos on the wall are recurring topic. Especially once they are supposed to be main way how to tell the story. Being able to see what is there and from the right distance is sometimes alchemy (=we do not know the science, so we just experiment :D )
Add Boxes blocked corridor
Corridor tile blocked by items - potentially in the future interactible. The explosions were just fun. We keep them there. For now.
Add Destructible Boxes
Boxes are now possible to be destroyed by the attack move of the player character.
Door interaction fix
There is a problem with the doors, where they become interact-able only at certain frames. It’s frustrating for the player to find that right frame.
Adjust the BP_Physics door actor, so doors are easier to interact with and they cause a minimum amount of visual glitch.
Candles room loop
Finally we have a loop with candles lighting. Currently the last one. Light the candles, find a key, exit the labyrinth.
Loop Zero Ritual Room
First (or zero) loop has finally its own vairant of the room. Just a basic version. It will need our desinger’s touch later.
Cleanup of the latest layouts and integration of tree-based levels to Unreal
Partly collobative learning, partly integration. In the end the game is using the latest tech to generate the levels. Finally.
Branching prototype
Now the formulas are supporting custom branching allowing us to produce more interesting patterns
Candle room
For the first game loop we’re introducing a candle room. Simple place with reactive candles where you can find a key.
TTE prototype
Turtle walker prototype generating the level. It works. And it works good! Hurray!
LSTG prototype
Experiments with different expansion rules for the labyrinth.
L-systems inspired approach documentation
The whole idea is not just have a cool tech, but also tech which is easy to use by non-technical colleagues who just want to take their imagination and make stuff happen. In this iteration I tried to document the tech in this way.
L-System Tree-based generation prototype
Seems the path-based expansions are weak (or overhead costly) for building quests with cross-dependencies. Considering other sub-graphs of map I try to introduce tree-based quest descriptions.
Tweet about main menu
To balance the technical posts with more atmospheric ones, we re-post short video from the main menu.
Save map into JSON prototype
Prototype of map data exported into JSON after pressing O button. It is data agnostic export which reduces the demands on the future API rework to 0 as we extend the map-model.
Nodes positions and tags are taken from Unreal tile blueprints
We still keep the definitions in the LGC online version but the definition values are overridden from the blueprints for
- positions of nodes
- tags of nodes
because this is something which is hard to keep synced after manual edits of the blueprints
Player Can Dodge
- Space button now dodges the player.
- The player gets an invulnerable window for less than a second.
- There are 4 different directional dodges.
- These are decided based on the player’s movement direction.
- If no direction is assigned, we do a backwards dodge by default.
- This can be enhanced with 8 directional dodges if needed.
All level content including Sophie and Loomis are spawned by the procedural generation.
We are moving from hand-placed level desing to the procedural one. Sophie and Loomis placement is one of them. Simple task, but not trivial feature unless we make it part of the design (or override any generic concept).
Cleanup in main and quest generation allowing persistent instance + more practical zoom of debug
First level generation in Unreal has had turned off the environment persist-ency due to piece of code being called just in the first “require”. Also visual debug is always zoomed in + code in main lua was mess a bit.
Loomis is getting hit by combat animations.
- Loomis getting hit
- Can’t get hit more then 4 times until he reduce his demage
- Reduction of dmg increased to 20 sec
- if hit 4 times he Screams and runs away
- IsHurt stops him from attacking/moving while animation is happening
- sound effects added for getting hit and screaming
First Combat System - Additional Hit and Death Animations
- We have a basic combat system that consists of 4 hits.
- The hits are traced with a sphere, and can now detect Loomis.
- There is a combo buffer, so if the player doesn’t continue in time, the combo count is reset to 0.
- The 4 hit combo moves the player accordingly.
- Loomis doesn’t react to being hit yet.
- Now if the player is hit by loomis, there is a hit animation being played.
- Now if the player is dead, a death animation is being played.
- The hit and death animations move the player accordingly.
Full Body Animations instead of Arm Split
- The right arm is not split anymore, and the lighter is moved to the left arm.
- The animations are now full body animations, meaning we can do any transition to apply on the player. (Combat, equipment pick up etc.)
- This also prepares the player body for future animations (cut scenes, death, being hurt etc.)
- Currently only lighter works. Flare will require a short refactor.
[EPIC] Level Generation Control
The goal is to get the under control the current random generation of the level which reached its limits.
First integration
Level currently generated with offset and for unknown reason the persistence of the lua environment is preventing the regeneration (I suspect it is because Quest Based Generator is run only through “require”, not as a proper function.
Custom Mouse Cursors based on Interaction Types
- Removed the animated billboard system. It was too small, too transparent and didn’t add any value for the player to understand what’s the interaction they will do.
- Added 6 new custom cursor types, based on each interaction type we have available.
- The mouse cursor now changes based on which type of interaction we are hovering over.
- It goes back to the default cursor when no interaction is available during that moment.
- The objects are still highlighted to create an emphasis.
- It also works for the puzzle table where different interactions are available inside the puzzle view.
Rework the Inspection System
Reworked the inspection system and cleaned up the code.
- Now the player can easily rotate the objects with better accuracy.
- The zoom in/out action works and limits the player so we can’t infinitely zoom in or out.
- There is a new reset button to reset the rotation of the inspected object.
- There is new UI for better visibility and readability.
Full level in 2D generator
Random population of the map respecting the first quest path and also consequential updates of the map as we go tile by tile. Various issues had to be solved along the line.
First path driven placement of the tile
We now need to place the first rooms along the path. Not trivial because our first selected rooms have certain demands :)
Tiles connection restrictions + Restrictions debug
Final mechanic to be able to make valid tiling is ability to know which connections in each direction are valid.
Multiedges drawing, edges arrows and tile connectors
To be able to see multiedges and structural edges under them we start to draw them as polygons with low Alpha. Looks much better and reduces the clutter.
This is necessary to debug errors while adding / validating connector edges between tiles.
Remove the forgotten nodes and edges
Full graph cleanup.
Nodes debug & fix rotation
Differences between typical scalar axis, Unreal axis and Love2D axis were still causing different vectors interpretation in the debug. I unified that by writing universal love 2D transform drawing functions respecting the Unreal standard.
First tiles transformations & Improved debug
Now we see tiles border and first few internal nodes with the basic edges.
First version of new debug
Initial attempt to view the map in the new detail and matching the unreal more precisely
Nix modules Lua 5.4.x and Love 11.4.x setup on replit
Setting up replit to support the newer versions of modules we need. What a nice day.
New data types & documentation & example definitions of rooms and quests.
Visual tiles documentation and how it matches the configuration or the actual blueprints. Where is the truth?
Cameroid Photos coming in from the procedurally generated level - V0
We have multiple pictures on the ritual table wall.
- Create a system that finds the cameroid camera objects that were placed inside the level.
- Create a camera class that we can use to place inside the level wherever we want
- The camera class takes a picture from it’s viewport
- Then these pictures are saved as textures
- The textures are turned into a material
- The materials find the photo objects inside the level
- The materials change for the photo objects
- ????
- Profit
Core lib integration as submodule => fail, Z=>Y
Provide some of the https://bitbucket.org/notabots/core/src/master/ functionality to generator.
Visual debug for path counts + zoom
To understand the power of overlapping paths we debug the counter on top of green lines.
Track which paths passed the tile in which direction
One of the prototypes.
Integrate LGC submodule to project repository
It would be good to have source lua files as part of the unreal repo.
UA lua assets making will be second step of the story.
Refactor LGC for GitHub, connect GitHub repo
We need to be able to commit changes we do in the virtual machine. Now it is possible.
Add visualization for rooms, better paths and restrictions
- other than dark gray are rooms
- green lines, now with opacity, are showing the paths - intensity is showing how many paths are overlapping
- new red lines are showing prohibited connections
- black tiles are blocked tiles (currently just done as another type of room)
Visual debug for the map
As we we will develop multiple ways how to level will be generated, we need ideally live debug visualization.
Export the generated data structure representing the map into valid lua file.
Actually experimentally developed together with replit AI - first five iterations were very effective and improving with each iteration. Code made sense. 6+ iteration started to de-gradate the function structure and also quality of the output. I had to stop the collaboration and fix the issues myself.
Overall time was probably same, but development was for sure not so exhausting.
AI was not clear about the license of the code we created together so I declared in MIT at the end.
Integration of LuaMachine
Lua in Unreal could unlock the prototyping speed for the purely simple algorithmic mechanics which does not need engine support (for performance or other reasons)
Experiment with https://github.com/rdeioris/LuaMachine
Gameplay status report
We looked at all relevant gameplay aspects and summarized the status of it.
Also we tried to describe the wanted state for the demo.
New kitchen as a tile
From Michelin master-chef architect \@jansroubek1
New male restroom
@jansroubek1 knows what the males want.
Exit door level ending works in procedural levels
Another step in making placement of certain hardcoded tiles procedural as well.
Small procedural level experiments
Variants of the smaller version of the level - created faster, lower complexity to solve.
Loomis is moving through all doors and rooms smoothly
Clearing up all problematic spots where our killer can get stuck.
Generation faster, behind the loading screen
Current generation takes too long time so it is possible to move to the invalid parts of the level or Loomis can fall down from the level
Improve the puzzle -> inspect -> exit inspect flow
Improve the flow and the layer of inspecting, putting back, picking up lighter then using the lighter through different game modes.
Basic UI fix for the unlocked doors.
We fixed the UI prompt for the unlocked doors. It’s not dynamic however it certainly looks better.
Improve the Procedurally Generated Level by adding Loomis and Nav Links
- Improved the kitchen tile by adding walls
- Added Loomis to the procedurally generated level
- Set navmesh to be generated dynamically
- Activated Loomis by adding navmesh to the level
- Added navlinks to all the door tiles so Loomis can move between tiles
- Also listened to Honza’s “The Room” jokes. Super fun 10/10.
Improve the Inspection Mechanics - Enable rotation and Zoom
Reworked the inspection logic to re-enable the rotation and zoom in/out functions.
More rooms in the level
Before we start to improve the generation script, we make at least placeholders for all other rooms.
3x3 Female restrooms from 80's
New 3x3 tile for restroom and secret passage are now part of the procedurally generated level.
Key <=> locked door logic in procedurally generated tiles
Manually created pairs of locked keys and doors are for boomers. We gave it procedural spin.
Procedural level with Tiles 2.0
The first version of tiles was not helping much to speedup the development while many of the 1x1 tiles were also containing hard 3x3 positions and rotation references.
New system contains just a few 1x1 base classes and 3x3 tiles are now stronger in self-analysis, allowing
- self-tagging based on placement of the simple floor tiles
- spawning new 3x3 tiles in the neighborhood in open spaces
- self-destruct 3x3 tiles if borders not compatible
First room for procedural levels with the interactive table
No just corridors and doors, also some rooms should be part of our tiles library for the future restaurants generation. Why not start with the ritual room - typical mandatory property of each restaurant.
Post processing improvements so the lighter is useful again
Adjusted the camera exposure and min/max brightness settings, so going forward the environmant is less lit. The lighter feels more useful again since its showing more area and not everything is incredibly bright.
Handling Loomis as a line of sight exception
As a part of the line of sight logic, now we are not hiding all components of Loomis. His green light and his sounds are always visible and active.
Lego set I
Set of prefabs which could be used for manual or procedural building of the level.
Loomis infinite vision fix
There should be a limit to his view! He is just crazy killer, not a god!
Hammer position and interaction fix
Hammering the mirror can work only if you can grab the hammer. Makes sense, right?
Extended the patrol path to reach also the new areas
Mr. Killer is not longer as conservative during his walks.
Insight camera no so often look through walls and more smoothly turns
Having insights is one thing, pretty natural, we all know it. Clipping through walls is not cool, man.
Loomis is more challanging
Our naughty cat and mouse (and knife) evenings in the dinner. Probably all of you know it from your own dark night shifts, don't ya? Today's night is a bit special. Me and him, behind the bar, first time. Thank you, devs!
Loomis can go anywhere
Walkable connection of all rooms is a prerequisity for more dynamic chasing.
Darkness reduction
Even the Dark Shift can be too dark. We had to reduce it. For people without contrast and brightness 1500 %.
Mock of the full first loop
Draw and implement mock of the first loop through the game. Interactions can be basic, new items can be created by copy pasting.
Play through.
Finalizing the puzzle view with all the relevant fixes
Puzzle alias table view (for now) is finally working in a way we can move on.
Fix the table blocking view
One of the painful bugs related to LoS.
Fix the interactive object regression
Bug was probably caused by Finalizing the puzzle view with all the relevant fixes" title="smartCard-inline">Finalizing the puzzle view with all the relevant fixes
Convert photos and lighter to the new interaction class
Refactoring - to be able to create more interactible items.
Refactoring of the interaction classes system
Refactoring separate it from other actor features.
Faster Loomis on chase + animation fix
Loomis is slightly faster while chasing.
Fix of Loomis after being hit by the stick got stuck in the attack animation. Now he is properly moving away without animating.
Puzzle interactions
3D view to interact with puzzles, in this case photos on the wall.
Door prefab creation for the level design
To easily build the level weve created the prototype of the door-section prefab.
Navmesh connections to dinner + dinner cleanup
Mr. Killer can finally walk to dinner.
Rework for the level
Making the level more unified from perspective of used content.
Upgrade to Unreal 5.2
Having newer vesion of Unreal is always a gamble (as with any other engine). It can be few minutes, it can be a day.
Removal of the old main level
Cleanup to reduce amount of junk.
Line Of Sight blocked by objects
Seeing behing objects is not good in a game where everything should scare you due lack of visibility.
Fixing bug with mouse
Mouses are buggy. Not sure which species of bugs.
Polish of exiting the AI attack pattern
Killer is now less stuck at the end of his attack.
Tool-tip over interactive items
Adding a text tooltip for pickable objects, so the player can see the object they are about to interact with.
Loomis is retreating and attempting to attack from a different direction
Improvement of the attack pattern. Prototype. I’m learning how it works.
Regular meetings weekly May, June with place and date fixed in shared dedicated google calendar
9 sprint in two month
Fog of war + Darkness in Not seen Areas
We have FoW/LoS.
Gameplay experience: Survive first two days in Darkwood
As Mácha, get basic understanding of
- control scheme
- basic game mechanics (light, map, actions, fight)
- camera behavior
Top down view with WSAD + mouse control - Darkwood like
Make sure the top view (e.g. look selected look angle) is not producing any obvious “discovery mishaps” = I can view important stuff without being prevented so by objects & walls
AI reacts on push event
By key “P” we can emulate an event of “being hit by a stick” which will result in Loomis AI to start to behave differently after 3 hits.
=> current changed behavior results in “just patrolling”
=> cooldown of hits is “one hit per patrol waypoint” => after some time Loomis began to chase the player again
map 4 upgrade and downscaling
Vairant 4, with more natural corridors width.
Change the behavior I - fix the path following
AI improvement of the basic behavior. Most of the time it was learning for me how the system works.
Prototype: Loomis not seeing character in the dark as good.
Currently, Loomis is not distinguishing if the player is in the dark or light. He can see her regardless.
We want to do some adjustments on his eye perception, so when the player is in the dark and/or crouching, it’s harder for him to see the player and react.
two levels upgraded by furniture, lights and other props and report changes of the gameplay
Few level variants have now a new equipment.
national technical library booking- FAILED
Booking of our next session place. Did not happen.
Booking of next meeting room.
https://worklounge.com/cs/zasedaci-mistnosti/forum-karlin/zasedaci-mistnost-1
Test all levels with current loomis AI and the candle + glowstick mechanics
We will rate all levels in next categories
- popularity order
- arguments for popularity
General mechanics
- lighter
- insight
- crouching
- movement
- fast movement
- arm animations
- body animations
Create new level with 5 variants of rooms and hallways composition
Follow some sort of structure mimicking the existing level structure, e.g.
- kitchen
- hallway
- dinning area
- toilets
.etc.
Explore the trivial level generation
Explore the idea to generate the level composition programmatically based on the manual creation experience.
Candle dropping mechanic
One currently unassigned button, e.g. X can be used for dropping a candle
* We have infinite number of candels
* Infinite duration of candle live
* Candle is providing light to scene
Book the WorkLounge Karlín
Attempt to meet on the neutral space to do review of the iteration 9. Coworking space
https://www.meatspace.cz/prostory/worklounge-praha/neformalni-zasedacka/
Fix Trello => dev.thedarkshift.com summary skipping some cards and add missing screenshots
Website presenting our achievements is skipping cards and not showing descriptions sometimes. => We are not seen as nice capable boys. Bad.
Glowstick dropping mechanic
Loomis is dropping glowsticks
- Glowsticks are providing cold to the scene = always one color
- Glowsticks are living infinite
- Glowsticks are spawned on Loomis position every 30-60 seconds
Get Honza into services
Arrange access for Mr. Srouby.
Loomis is smarter (again). He patrols in the kitchen and hallway + He has hearing perception.
New way of handling sounds created by a player.
Defense mechanics for the player - First Prototypes
Two short iterations on the idea.
Meet with Honza and share the project outline
Honza was given promises of big bags of money and fame. If the bags or the money will be missing, we promise fun.
Playtest at the end of the Christmas sprint
We will play together the new version of game including the mechanics created over Christmas by @haljord06 .
We expect more completed initial game loop, first goal, more mechanics on avatar interaction side
Interaction improvements
Mehmet is a special turkish version of a Santa, hes giving us new features instread of presents.
Project feasibility handout
Make first assumption over costs and opportunities of the market
• game genre: 3rd person adventure
Get
• market size or at least representative analogical project cases
• get costs assumption
Game Access 2023 vision
Better booth than just laptop on indie table
Update dev.thedarkshift.com to show other sprints
Current integration is taking only one selected list into account for the displaying the news. The new version of the integration should display all embeded lists
More gameplay based interactions
Idea: Interactions will make it better, not just a walking sim. Now it is walking sim with interactions.
Do the polishes based on the feedback of the gameplay test
Carry over the notes. Create tasks here. Then do the small improvements based on Petr's playtest.
Next tweet for #screenshotSaturday
We are tweeting. It is never too late starting with a dying platform. We are loyal. And it is good training for us.
Interview about past of Loomis
We will talk about Loomis with Loomis, a bit of role-play, to learn what makes him so good boy. Learning will be visually captured in a diagram.
Make a new tweet by the end of the iteration.
Gogo little blue bird!
Build the ritual room - Start the game there
Ritual room is the core of the story. Creepy table with creepy stuff on it, creepy photos. After such experience you cannot be offended by the creepy character in the kitchen!
Make subsite dev.thedarkshift.com with detail progress tracking/news feed integrated with Trello
We have a website showing the weekly progress.
[EPIC] Speed up the early gameplay
First we want to make sure it takes less time to get into the game.
[EPIC] MVP social media and webpage
Social presence si necessary, especially if you are asocial killer character who scared of fire.
Build a common gdrive folder for the whole team.
Share all the pictures, videos and gifs there. Use it for Twitter & Youtube pages.
Make sure ther is enough variety, so we can use it to gain more followers.
Control accounts and access
Create control e-mail accounts for shared services on GDrive and Social media
Create the Twitter account for the project
https://twitter.com/TheDarkShiftDev
Website MVP
We have website on proper domene and populated with some relevant-looking content.
Page is responsive, easy to edit, accessible to both
https://thedarkshift.com/
First Tweet about game is released
First twerk, sorry, tweak, is out.