1. LifeDev
  2. News

LifeDev News

Devlog 27

# ------ Announcements
[p]
[/p][h2]## Sprint[/h2][p]
5th sprint, of the 3rd cycle. Chapter 04/Pass 02. (The last chapter).
All chapters are at the same pass, Next sprint is a new cycle!

[c]Play-tests are always welcome open. If you want to help me with your feedback, please contact me :)[/c]

**Explanation and showcase**

[/p][previewyoutube][/previewyoutube][p]
[/p]
# ------ Game
[h2]## General[/h2]

NEW
* Added app icon to windows.
* Added basic haptics (force feedback) to interactions. Can be toggled in the settings.

Improve:
* This build contains LOTS of refactor and improvements.
* * More soft object pointer usage.
* * Refactor and cleaned the book class.
* General cleanups, optimizations, small fixes, and documentation everywhere.
* * Optimized Nanite's "Pixel programmable distance".
* * Enabled GarbageCollector's actor and asset clusters.
* * PSO cache and precache.
* * More stringent cooking to reduce package size.
* Updated to Sentry 1.1.1.
* Fixed issue with shaders not compiling for low quality scalability settings.

Known issues:
* Outline effect looks odd with TAA at a shallow angle.
* Shelf has issues on proton with non-nanite mesh.
* The plate at end shows up and the fade starts later.
* Missng hint for poem on chap 02.[/p][h2]## Settings[/h2][p]
NEW:
* Added configuration for "color aberration" visuals, and a feature toggle.
* Added ability to set defaults on game settings.

Improve:
* Improved setting full screen mode, resolution, and resolution scaling.
* * Resolution scaling now shows the actual resolution %. Might not be accurate if the main resolution changed, and it has not been applied yet.
* Added (performance) trace start/stop for debug builds.

[/p][h2]## Art[/h2][p]NEW:
* Working on the new hall01, and toy.
* Adjusted the character energy particles.
* Added light importance volumes.
* Added reflection captures.
* Added and optimized cloud material.
* Added meshes for: cup. Not yet in build: cabinet-02.
* Improved UI style for: "big button", checkbox.

Improve:
* Optimized ambient occlusion. And enabled them for baked lights.
* Optimized lamp cover.
* Optimized shadows.
* Optimized drawing using Packed Level Actors.

[/p][h2]## Chapters[/h2][p]All:
* Added/Improved hints. With more complex conditions :).
* Added interactions: clothes hanger, more light switches.
* Configurable range for Card-00, and foxified it.

CH00:
CH01:
CH02:
CH03:
CH04:
* Added LogicCard 04. Not enabled yet.
* Added word puzzle, changed flow.
* Added world text.

[/p]
# ------- Subsystems and plugins
[h2]## All[/h2][p]> Public repos for the plugins are updated on a later date, according to (my) availability.

[/p][h2]## Flashbacks[/h2][p]New:
* Experimental Anim FB Fps. Adjusts the fps of the animations based on the flashback. Has a feature toggle in settings.
* Added cloud effect.
* Added sound filter (echo/panning) on flashback.

[/p][h2]## Dialogs[/h2][p]https://codeberg.org/jerobarraco/Diags

LifeDev:
* Fixed some dialogs. Added some more.
* Improved dialog prompt animation.

Plugin:

[/p][h2]## Interactions (and animations)[/h2][p]https://codeberg.org/jerobarraco/Interact

LifeDev:
* Removed `RewardFlag`. It's superseded by auto-flag.
* Foxified cards.

Puzzle:
Plugin:
* Improved `SetHiddenInGame` and `SetActive`. Removed call to `SetAutoActivate`.

[/p][h2]## Inventory / Flags / Teach[/h2][p]https://codeberg.org/jerobarraco/Inventory

LifeDev:
* Refactored inventory to show feedback when an item is consumed or acquired. Took some work.

Teach (NUX):
* Improve NUX animations and looks.

Plugin:
* Added cool down factor. Can be changed dynamically. And foxified it.

[/p][h2]## JSignificance[/h2][p]https://codeberg.org/jerobarraco/JSig

[/p][h2]## JUtils[/h2][p]https://codeberg.org/jerobarraco/JUtils

New:

Improves:
* Moved UI stuff to `JUtilsUI`.
* Optimized `QuickMesh`. Disabled "Affects navigation".

[/p][h2]## Sounds[/h2][p]https://codeberg.org/jerobarraco/Sounds

LifeDev:
* Adjusted audio volumes.
* Adjusted music order.
* SFX for: Hanger, Heater.

Plugin:

[/p][h2]## Story[/h2][p]https://codeberg.org/jerobarraco/Story

LifeDev:
* Adjusted some cameras.

Plugin:
* Block loading on a background thread.
* Improve step teleport.
* Reworked inter show/hide.

[/p][h2]# ------ Links[/h2][p]
Play on Steam [dynamiclink][/dynamiclink]

Forums https://forums.unrealengine.com/t/solodev-lifedev-my-game-about-overcoming-cptsd/1172122

Twitter: [dynamiclink][/dynamiclink]

Mastodon: https://mastodon.gamedev.place/@jerobarraco

Support on patreon ("one time" also available) https://www.patreon.com/c/jerobarraco

Support on liberapay https://liberapay.com/nande

Support on Ko-fi https://ko-fi.com/jerobarraco
[/p]

Devlog 26

# ------ Announcements

[h2]## Sprint[/h2]
4rd sprint, of the 3rd cycle. Chapter 03/Pass 02.
Less challenging than previous sprint, still quite difficult.

Play-tests are always welcome open. If you want to help me with your feedback, please contact me :)

**Explanation and showcase**
[previewyoutube][/previewyoutube]

# ------ Game

[h2]## General[/h2]

This build contains HUGE amounts of refactoring.

NEW

Improve:
* General cleanups, optimizations, small fixes, and documentation everywhere.
* * Added `AdaptiveAddToWorld`. Also "Skip generate overlaps" on stream. Reduces hitches on load.
* * Shadows on floors.
* Moved a ton of things from hard ref to soft references.

Known issues:
* Screen might flash when loading the next chapter. It's a UE thing.

[h2]## Settings[/h2]
NEW:
* Added option to set the default RHI. Experimental. Requires a restart. If it breaks, delete your config files (but not your savefiles).

Improve:
* Moved a ton of code to cpp.

[h2]## Art[/h2]
NEW:
* Added outro animation!
* Started using style assets for ui elements. Most noticeable on the settings.
* * Unified and improved the style of some elements.

Improve:
* Moved everything possible to "Packed Actors Level Instances". Improves performance a bit. (A ton of work involved).
* Improved "ppl" materials.
* Optimized some material's permutation count.
* Still working on the hall01.

[h2]## Chapters[/h2]
All:
* Implemented more card effects. (I think "what works" doesn't have anything to work with, but the logic is there).
* * Redesigned and reorganized their effects a bit.
* Improved the hints all around. Added more hints, and tweaked how and when they get enabled.
* Improved doors quite a bit. Optimized windows too.

CH00:
CH01:
CH02:
CH03:
CH04:

# ------- Subsystems and plugins

[h2]## All[/h2]
> Public repos for the plugins are updated on a later date, according to (my) availability.

[h2]## Flashbacks[/h2]
New:
* New clouds effect.
* FX on the effects.

[h2]## Dialogs[/h2]
https://codeberg.org/jerobarraco/Diags

LifeDev:

Plugin:

[h2]## Interactions (and animations)[/h2]
https://codeberg.org/jerobarraco/Interact

LifeDev:
* A lot of rework with `SetHiddenInGame` and `Fade`.
* * It works well during construction. It helps a lot with Puzzles too. And allowed to move `ActorsShow/Hide` to the Story Plugin.

Puzzle:
* Rework how hints work, using the new `SetUseHint` virtual.
* Improved properties initialization. Now more reliable.

Plugin:
* A ton of work relative to `SetHiddenInGame`.
* * Some rework to use `SetAutoActivate` on constructors.
* Removed the spot. Moved functionality to regular `Interacts`. This required extra work in the game itself.
* Rework item use.
* `UseHint` is now a function `SetUseHint`, and virtual.
* Improved collisions and auto-activate.
* Refactor `CInteractor` so that the collision profile is local to the component (as opposed to the same for all interactors).
* * Allows for having multiple `CInteractors` doing different work.
* Added `CAnimatorSFX`. Animates submixes effects.
* Added field for comments on interactions.

[h2]## Inventory / Flags / Teach[/h2]
https://codeberg.org/jerobarraco/Inventory

LifeDev:
* Animations on the inventory!
* * Took a ton of work, since i had to rework the whole implementation.

Teach (NUX):
* Rework the style a bit.

Plugin:

[h2]## JSignificance[/h2]
https://codeberg.org/jerobarraco/JSig

[h2]## JUtils[/h2]
https://codeberg.org/jerobarraco/JUtils

New:
* Added a couple of helpers to use style assets on ui elements.
* Added experimental ability to get/set the preferred RHI.
* Added ability to get hardware info.
* Added ability to get number of remaining precompiles. (For PSOs)
* Added `AddOutlinerSection`.
* * Added sections for `Story`, `Interact`, and maybe others.
* Added `IsInConstructor` and `NeedsInit`.

Improves:
* Added `ShouldCreate` to `LoadScr`.
* Reworked how some UI elements expose some initial properties.

[h2]## Sounds[/h2]
https://codeberg.org/jerobarraco/Sounds

LifeDev:
* Reworked the menu fx on music.
* Added phone ring, hanger squeaks.

Plugin:

[h2]## Story[/h2]
https://codeberg.org/jerobarraco/Story

LifeDev:
* Reworked the code for managing the end of the game.
* * Updated StepEnd to unload all data layers.
* Moved to the StoryManager, the code to manage chapters loading, starting, next, etc.
* Removed `RewardIntersTriggerClass`, `RewardIntesActiveClass`.
* Created a new class for the books. Starting porting some objects to it. WIP.
* Ported a ton of dialogs to "auto dialogs". So that i can remove some declarative dialogs (old system).
* * Was a considerable amount of work.
* * Removed `LockedDlg`, `TriggerDlg`, `DlgId` from step.
* Added "auto flags" for step's start/stop.
* Removed `InterFadeIn/Out` in favor for new `ActorsShow/Hide`.

Plugin:
* Added field for comments on steps.
* Removed unused `TeleportCharAfter`. Reworked `TeleportChar`.
* Removed unnecessary `FinishPostWait`.
* Added/improved blocking load of assets, during step change, when it's set to block on load.
* * Including pso generation.
* * Added garbage collection during step fade.
* Rework showing and hiding actors.
* * Moved `ActorsShow/Hide` to the base plugin. Now they work better.
* * New `SetHiddenInGame` refactor ensures that interacts fade in/out. And that puzzles also work well.
* * Removed hiding actors on `Begin Play`.
* `Story` now depends on `JUtils`. It was something i was delaying, but it actually cleans the code.

# ------ Links


Play on Steam https://store.steampowered.com/app/2450230/LifeDev/

Forums https://forums.unrealengine.com/t/solodev-lifedev-my-game-about-overcoming-cptsd/1172122

Twitter: https://twitter.com/jerobarraco

Mastodon: https://mastodon.gamedev.place/@jerobarraco

Support on patreon ("one time" also available) https://www.patreon.com/c/jerobarraco

Support on liberapay https://liberapay.com/nande

Support on Ko-fi https://ko-fi.com/jerobarraco

Devlog 25

# ------ Announcements

[h2]## Sprint[/h2]
3rd sprint, of the 3rd cycle. Chapter 02/Pass 02.
This sprint was even more challenging. My aim was to do more on narrative, and i did manage to do some.
I also made a ton of refactors, which were difficult, but also important. I haven't detailed the refactors and fixes so i've done more than what's shown here.

Play-tests are always welcome open. If you want to help me with your feedback, please contact me :)

[h3]**Explanation and showcase**[/h3]
[dynamiclink][/dynamiclink]

# ------ Game

[h2]## General[/h2]

This build contains big amounts of refactor.

NEW
* Moved to unreal engine 5.6.0.

Improve:
* Game save time is now on UTC (warning).
* Patched Sentry being called in a background thread.
* Regular optimizations, cleanups, and so on.
* A good amount of refactoring and moving stuff.
* * Moved chapter loading to `LStoryMan` (not in the build, but scheduled for the next one).
* * Moved menu to `LFeatsMan`.
* * And more listed in their own category.

Known issues:
* Screen might flash when loading the next chapter. It's a UE thing, not my code.

[h2]## Settings[/h2]
NEW:

Improve:
* Reworked buttons for key binding. Now using button styles. Styles are planned to be used more in the game.
* Fixed the message box for re-loading the current save-state.

## Art
NEW:
* Added new plant, cup, 2 types of towels (one unused), coat hanger (unused), toy (unused).
* Attempt at adding an app icon.

Improve:
* Improve item use colors.
* Modified flashback material! (again). Removed gooch and changed it a bit.
* Improve the intro UI.
* * Improved warning screen.
* * Reworked savegame screen.
* Improve a few of the settings screen. Included key binding.
* Fixed issue with roundedness of the dialog box and blurred background.
* Adjusted rounded corners for `Teach` and `Prompt` ui.
* Changed font for `Teach`.
* Disabled some material's "set automatic usage". To reduce the required shader permutations. This is also an optimization. It's a work in progress.
* Refactored the dialog animation to use a "retainer" box.
* Fixed outro text style.

[h2]## Chapters[/h2]
All:

CH00:
CH01:
* Fixed phone text.

CH02:
* Reworked the flow considerably. (Quite some work).
* Modified which rooms it uses. With this, finally, each chapter uses different rooms.
* Improved data-layer usage. For chapter 02. Still remaining are 03 and 04.
* Added `LogicCard02` and `LogicCard03`. Stub, not used.
* Reworked hints. Added a bunch.
* Improved the character dialog animation.
* Added some world-texts.

CH03:
CH04:

# ------- Subsystems and plugins

[h2]## All[/h2]
> Public repos for the plugins are updated on a later date, according to (my) availability.

[h2]## Flashbacks[/h2]

[h2]## Dialogs[/h2]
https://codeberg.org/jerobarraco/Diags

LifeDev:
* Ported a bunch of dialogs to the new Auto-dialogs. This is a work in progress (quite large).
* Some fixes, some adds, some improves.

Plugin:

[h2]## Interactions (and animations)[/h2]
https://codeberg.org/jerobarraco/Interact

LifeDev:
* Removed code for old item-use.
* Consume used item.
* Deprecated the `Spot` class in favor of the improved `LInteract`.
* * Moved two spots to an interact. This is a work in progress.
* Improved unlocking with items.
* Renamed auto-dialog for trigger locked.
* Removed `LockedItemDlg`, `ULockItemReq`, `ULockItem`.
* Added item `OnLook` delegate.

Plugin:
* `SetUseHint` is virtual.
* Improved the collision profiles. Added some docs.
* Some rename and refactor on `finishFlags`, `finishItems`, `itemsRem`, `itemEnsure`, etc.
* Improved unlocking.
* Deprecated the spot.
* Added editor-only field `Comment`.
* Fixed ability to trigger multiple times on a self-destroy item.
* Conditions and comments are searchable in the Asset Registry.

Puzzle:
* Improved/fixed hinting.
* Implemented fade.

[h2]## Inventory / Flags[/h2]
https://codeberg.org/jerobarraco/Inventory

LifeDev:

Teach (NUX):
* Added vr as a type.
* Fixed dismissing the message for "look at item".

Plugin:
* Removed Item's `selfUsable` flag.

[h2]## JSignificance[/h2]
https://codeberg.org/jerobarraco/JSig

[h2]## JUtils[/h2]
https://codeberg.org/jerobarraco/JUtils

New:
* Added a `LoadScr` subsystem. It's a useful asynchronous loading screen.
* * Unfortunately it's not enough for me, so i'm not using it. But it's available for those who might use it.

Improves:
* Potentially fix the camera fade.

[h2]## Sounds[/h2]
https://codeberg.org/jerobarraco/Sounds

LifeDev:
* Fixed some sound location on the cabinet doors.
* Ported the last `SFXTrigger` to the new `SFXs`. `SFXTrigger` got removed.
* Re-imported some audios with an improved sample rate.
* Adjusted some levels.
* Sounds for: screwdriver, scissor, toilet flush, chair.

Plugin:
* Moved some meta-sounds to the plugin. E.g. `SoundSheet`, `RampAndSwitch`.

[h2]## Story[/h2]
https://codeberg.org/jerobarraco/Story

LifeDev:
* Removed `WaitTime` from step.
* Modified `ActorsShow` to not hide automatically, and added `ActorsHide`.
* Modified a bunch of the character dialog animations to use teleport after blend.
* * It feels more natural, and helps with the flow, as well as fixing some quirks.

Plugin:
* Improved data layer loading. To allow to (optionally) block during load.
* * The next step doesn't start until loading is done. You need to specify the streaming to `Blocking` on the data-layer.
* * Improves reliability and determinism a bunch.
* Implement teleport after camera blend.

# ------ Links


Play on Steam [dynamiclink][/dynamiclink]

Forums https://forums.unrealengine.com/t/solodev-lifedev-my-game-about-overcoming-cptsd/1172122

Twitter: [dynamiclink][/dynamiclink]

Mastodon: https://mastodon.gamedev.place/@jerobarraco

Support on patreon ("one time" also available) https://www.patreon.com/c/jerobarraco

Support on liberapay https://liberapay.com/nande

Support on Ko-fi https://ko-fi.com/jerobarraco

Devlog 24

# ------ Announcements

[h2]## Sprint[/h2]
2nd sprint, of the 3rd cycle. Chapter 01/Pass 02.
This sprint was challenging too. My aim was to do more on narrative, and i did manage to do some.
I also made a ton of refactors, which were difficult, but also important.

[h2]## Moving to Steam[/h2]
Huge news.
Time and effort are extremely critical aspect for me (not by choice).
In order to optimize my time, and make the most of it: I've decided to move fully to steam.
For that i've just *released my game on steam*. So:
* You can now buy it on steam (please don't buy it on itch.io unless this is the only place you can get it).
* I'm not going to update itch.io anymore (though i truly love it).
* Also, i've opened the community on steam, and closed the one on itch.io.

The game is not finished yet, it's on early access.
I've made a mistake setting up the game, and now steam won't allow me to set it as EA. I know that will be confusing, but i can't change it now.

I will keep improving the game, and the price will keep increasing, just like on itch.io.

Play-tests are always welcome open. If you want to help me with your feedback, please contact me :)

**Explanation and demo**
[previewyoutube][/previewyoutube]

# ------ Game

[h2]## General[/h2]

This build contains massive amounts of refactorization:
* I've decided to change the mechanic for using items with interactions. This impacted the flow considerably.
* Refactored data-layers to have layers per room, and per chapter.
* * Helps to manage assets much more flexibly. Improving load.
* Refactored to use `SoftObjectPointers` on several classes.
* * I did not need it before. But now it helps me to set up some references by code, as well as improving memory and load a bit.
* * It was a considerable amount of work.
* Dialogs support multiple data tables now.
* 731 commits vs 637 on previous sprint. Not the type of metric i care about, but still a ton of work.

NEW
* I've also added a new system for small prompts (hints) on how to use the game. "Teach" (See Inventory).
* * It's called "Teach" instead of "Hint", since the hint system is another thing.
* I've also integrated Sentry. This is a service that reports crashes and bugs to me.
* * Sentry and the new "Teach" was fairly quick, but took a considerable amount of work.
* Added support for SM5 shader model on linux. As well as SM6.
* The feedback form is show upon closing the game. Feedback is welcome :)
* Added `Thanks` file :)
* New feature flags, mostly for debug.

Improve:
* Lots of optimizations and bugfixes. A more than usual.
* * One of them is the `Garbage Collector` async performance.
* * Improved build sizes.
* * Implemented some new micro-optimization technique.
* Improved spawn/init cycle.

Known issues:

[h2]## Settings[/h2]
NEW:
* Added toggle for `Auto Exposure`. Off by default.
* Added toggle for `Status` screen message. Off by default.
* * Useful for debug and speedruns.
* Added a feedback box right on the settings!

Improve:
* Reworked how the settings ui is activated.
* Show play time on save slot.

[h2]## Art[/h2]
NEW:
* Have been working on a room. Not yet in the usable.
* New assets: Phone, Clock, Scissors, Notebook, Screwer. Not yet in usable.
* Switch spark particles.
* Started working on a new entity, with nice shaders.
* * I've put a lot of work in this. (Not yet visible, though :P)

Improve:
* Improved the shoes of one of the characters.
* Optimized reflection method.
* Removed camera aspect ratio change.
* Improved material memory usage a bit.
* Improved the necessary permutations a bit. (Space, load time, memory usage, build times).
* Improved PSO cache settings.
* Reworked all light values. So that it works better with baked lights, and Lumen.
* Improved the ghost post-process.

[h2]## Chapters[/h2]
All:
* Implemented the effect for the Card 0 (intention). When i say "hint", i refer to this.
* Added new mechanic/effect for Card 1 (What works). Took quite some work. Though it's not noticeable yet.
* I've done a ton of rework on the flow to:
* * Accommodate for the new item usage flow.
* * The cards are not used as items anymore. You can still use them by themselves.
* Implemented camera animation for *some* of the chapters. This is a work in progress.
* Fixed a lot of text that was not localized. So that from now on everything can be localized if it needs to.
* Added some decorative assets (pencil, screwer, pictures, books, etc.).
* Added interactions: Notebook, screwer. Not yet usable.
* Added phone puzzle and interactions.
* Improved a bunch of collisions, and audio sources.
* Text on walls. Improved the visuals too.
* Have added and improved a bunch of dialogs.

CH00:
CH01:
* Added a bunch of `Hints` (Card 0).

CH02:
CH03:
CH04:

# ------- Subsystems and plugins

[h2]## All[/h2]
> Public repos for the plugins are updated on a later date, when i have the time to.

[h2]## Flashbacks[/h2]

[h2]## Dialogs[/h2]
https://codeberg.org/jerobarraco/Diags

LifeDev:
* Did a TON of refactor of dialog variables.
* * And, I've moved many of the dialogs to the new "auto-dialog" system.
* Improved some item descriptions and other text like that.

Plugin:
* Added ability to have multiple data-tables at the same time.
* * For both, groups and dialogs.
* * This allows to have data-tables per chapter, and also more general ones.
* Improved flag for printing warnings on missing dialogs.
* Improved flow for adding dialogs and groups.

[h2]## Interactions (and animations)[/h2]
https://codeberg.org/jerobarraco/Interact

I've done a TON of work and refactor with interacts.

LifeDev:
* Added `UseActiveOnce`. Manages an item to be activated only once. Regardless of chapter. Using the savegame. Useful for items in multiple chapters.
* Refactor: Moved the functionality from the "Spot" to the LInteract. Fixed some bugs. Still work in progress.
* Refactor to consume items on unlock. For the new item usage flow. Work in progress.
* Fix hide interact prompt on reward.
* Improved puzzles so that:
* * They can be `Hinted`.
* * They can manage the puzzle pieces `SetActive`.
* Removed `RewardStep`, as it was redundant with the step.

Plugin:
* Added ability to set particles to use for each state.
* Added `CInteractor::OnTrigger`.
* Added `Interact::TriggerForced`, so force trigger even if locked.
* Improved sound playing. For looping sounds.
* Refactored the activation and auto-activation flow.
* * This was a big piece of work. It improved much more how interacts are initialized and set-up.
* * Added a flag `UseAutoActivate` that can be set on the editor.
* Fix interactor triggering `OnHover` on a destroyed actor. (Took some effort).
* Fixed/Improved hiding, deactivating, fade, etc. And their flow.
* Improved flow for unlocking. Now using condition.
* Hints
* * Refactored the collision settings, to allow objects to be hint-able but not active.
* * * Work in progress that i might refactor in a different way, on the next sprint.
* * Fix ensure to hide stencils on deactivate.

CAnimator:
* Added `UseDilation` option. To ignore/compensate time dilation.
* Added a `CAnimatorTime` to animate global time dilation.

Anim subsystem:
* Added `TimeFade`, global time dilation animation (here too).

[h2]## Inventory / Flags[/h2]
https://codeberg.org/jerobarraco/Inventory

LifeDev:
* Fixed inventory refresh on item usage.

Plugin:
* Fixed `Mod` and `Use` with `Consumable`.
* Added `OnlyConsume` on `Mod`.

Teach:
* Added a system, to prompt the user with hints. Called "Teach".
* * It's the typical "you can use an item with the mouse". (Also known as New User Experience (NUX)).
* Has plenty of work on it. Interacts with the `Flag` subsystem.

[h2]## JSignificance[/h2]
https://codeberg.org/jerobarraco/JSig

[h2]## JUtils[/h2]
https://codeberg.org/jerobarraco/JUtils

New:
* Added `SoundSheet` to audio. (To be moved to the Sounds plugin)
* Added `FakeLight` material function. A material based quick and cheap dynamic light.
* Added `KawaseBlur` for post-process.
* Added `SphereNormal` and some materials to work with pseudo water.
* Added `FastMod`. A micro-optimized modulo function.
* Eval:
* * Added a list expression. With "random pick" and indexing.
* * Added round function.

Improves:
* Improved `QuickMesh` collisions.
* Fixed `ReadTable`, `LoadCSVTable` and `LoadJsonTable`.
* Improved material functions for water, and `Choose`.

[h2]## Sounds[/h2]
https://codeberg.org/jerobarraco/Sounds

LifeDev:
* Upgraded some meta-sounds' versions.
* Added a bunch of sounds.
* Refactored sounds to use the interact plugin's sfx-state functionality.
* Fixed location of some sounds.
* Adjusted audio volumes.

Plugin:
* Have a way to specify the sound of each state of the Interact.

[h2]## Story[/h2]
https://codeberg.org/jerobarraco/Story

LifeDev:
* Fixed step `FBDlgAuto` with manual dialogs.
* Added/Improved finish a step with flags and or items. Made them a list.
* Fix possible crash due to flags.

Plugin:
* Implemented ability to tween camera positions in sync with flashback and dialogs.
* Improved camera tween on steps.
* Fixed loading on steps. Made step transition to wait for data-layers and other async load.
* Improved avoid unload and load the same datalayer.
* Improved advancing step on interact trigger, and flags.

[h2]# ------ Links[/h2]

Play on Steam https://store.steampowered.com/app/2450230/LifeDev/

Forums https://forums.unrealengine.com/t/solodev-lifedev-my-game-about-overcoming-cptsd/1172122

Twitter: https://twitter.com/jerobarraco

Mastodon: https://mastodon.gamedev.place/@jerobarraco

Support on patreon ("one time" also available) https://www.patreon.com/c/jerobarraco

Support on liberapay https://liberapay.com/nande

Support on Ko-fi https://ko-fi.com/jerobarraco




Devlog 23

# ------ Announcements


This sprint i've focused again on a chapter. Like usual.
This is the 1st sprint after the first alpha.
The previous cycle was composed of 2 passes on each chapter.
So it could be considered 2 horizontal slices (and 2 cycles in one).
That was a super important milestone, because it meant the game was playable on all chapters in its minimum expression.

This is the 1st sprint of the 3rd cycle. The third horizontal slice.
My plan for this and the next sprints in this cycle is to focus on improving the quality of the content,
without adding much more content, and avoiding moving more features, while also improving the narrative and dialogs.

So, ideally, it will be more focused on narrative design, than technical features.

Still i tend to work on new features and technical stuff, because i love it.

Play-tests are still open. If you want to help me with your feedback, please contact me :)

**Explanation and demo**
[previewyoutube][/previewyoutube]

# ------ Game

[h2]## General[/h2]
NEW:
* Added a feedback form, that opens when the game is closed. To make much clearer the intention of the build, as well as making it much easier for play testers.
* Added ability to load datatables from external jsons. In the future it will allow to load fan-translations during runtime. (As well as adding/removing dialogs.)
* * If you're interested in helping translate (without chatgpt or other AIs), please contact me.
* Added ability to change the language. But since i only have english at the moment, it's not showing.
* Make the demo have 2 chapters. Demo is now available at Steam.
* Added some features for captures (e.g. trailers). Show/hide pointer, text, etc.

Improve:
* Fixed light count stats.
* Added a DataLayers for each room. This allows me to organize/load assets based on location. Previously i did it only based on the chapter.
* * Chapter DataLayers do still exists, and they work together.
* * This is a work in progress. I've only organized the chapter 00. The rest will be done later.
* Some improvements to the GhostPool.
* Limited camera pitch movement to avoid gimbal lock.

Known issue:

[h2]## Settings[/h2]
NEW:
* Now showing: Time (for speed running?), Build version, Engine version.
* Ability to change the foxify value on new game plus.

Improve:
* Reworked pausing the game. Now a bit more animated (time dilation), and better timings.
* Fixed `FeatsGroup` scrolling.
* Added a button to delete the current game config (in case something went wrong on an update).
* * Reworked where the config is stored.

## Art
NEW:
* Dustpan, Broom, Screw driver ...
* Started working on a new room. (Not finished/added yet.)
* New spark particles.

Improve:
* Reworked the `Flashback` material (again).
* Improved Ghost materials. For the particle ones and the GhostPool.
* * Now with fading on distance to camera and other objects.
* * And proper particle color and alpha fades.
* Fixed some shadows.
* Reworked the `Range` scan effect for the "Hints" (Card0).
* Done quite some work exploring dynamic lights. But removed them for now.
* Reworked the intro menu. Improved the logo animation, and other stuff.
* "Fixed" stereo z-fight on windows.


[h2]## Chapters[/h2]
All:
* Fixed a bunch of texts that weren't localized (into being localized).
* Reimported and optimized a bit a couple of rooms (Hall).
* Optimized room 01 and 03 walls loading.
* Fixed issues with the radio.

CH00:
* Added some dialogs, and hints (card 0 (intention)).
* Added some new interactions. Specially books, a toilet, a shelf, some light switches.
* Added a couple puzzles (phone, bottles).
* Started working on a book-based puzzle, but could not finish it. So it's not added.

CH01:
* Fixed small issue with a tape that was not properly occluded.
* Fixed wait on C1S5

CH02:
* Fixed poem's dialog being truncated.

CH03:
CH04:

# ------- Subsystems and plugins

[h2]## All[/h2]
> Note that usually i update the repo for the plugins a few days after the devlog (if i have extra time).

[h2]## Flashbacks[/h2]
* Added some texts on the walls.

[h2]## Dialogs[/h2]
https://codeberg.org/jerobarraco/Diags

New:

LifeDev:
* Moved one of the old dialogs to the new auto dialogs (Unlock Dialogs).
* * This was a low-hanging fruit, the next ones are going to be much harder.
* Improved a lot of dialogs. Including card pickup.
* Added some dialogs.

Plugin:

[h2]## Story[/h2]
https://codeberg.org/jerobarraco/Story

LifeDev:
* Fixed step activating interactions on Start. `IntersActive`.
* Added ability to animate the camera's transform dynamically with the FlashBack. `UseFBAnim`.
* * Works in tandem with the Dialogs automatic flashback change. Used on Chapter 0's end.
* Added ability to end a step when one or more flags are set. `FlagsFinish`.

Plugin:

[h2]## Inventory / Flags[/h2]
https://codeberg.org/jerobarraco/Inventory

LifeDev:
* Added item usage animation.
* * Did some extra work on item usage on code.
* Improved how items look. Colors, icon for item cooling down, etc.

[h2]## Interactions (and animations)[/h2]
https://codeberg.org/jerobarraco/Interact

LifeDev:
* Added ability to activate an interact only if it has not been triggered before. This is persisted to SaveState. `UseActiveOnce`.
* TV now follows `Flashing lights` feature flag.
* Fixed puzzle to clear on reset with `IsOnShot`.
* Fixed (auto) label generation on init and runtime. (Used for auto dialogs and auto flags).
* Added light switches.

Plugin:
* Added `Label`. Used for auto-dialogs and other features.
* * Updates automatically from the actual label in the outliner. Can be used, and changed, at runtime.
* Added ability to start/stop particles for each state on an Interact. `Particles`.
* Added ability to start sounds for each state on an Interact. `SFXs`.
* Rework how the interacts initialize their Active state.
* * Added a function for setting the state on constructor. This was quite some work. `SetStateNow`.
* * Fixes some issues behind the scene with initialization and triggering events on object begin play (on spawn and chapter load). So now it's much cleaner, and deterministic.
* * Added a flag for `UseAutoActivate`. Which can be toggled on the Outliner.
* * * So that i can easily set up instances without having to create new classes.
* * Rework how the `CAnimatorTransform` initializes its transforms. Added `CopyTStart`.
* Added ability to remove hint on Trigger (`UseTriggerDeHint`).
* Fixed issue with `Unlock`.
* * Reworked the unlock flow, and unlock overrideable.
* * Added `ShouldUnlock` overrideable.
* * Added `UnlockCondition`.

Puzzles:
* Fixed `CPuzzle` `OnDone` delegate for Sequences, to only trigger at the end.
* Fixed bug on `OnUpdate` delegate.
* Added `GetCurrents`.
* Added `OnUpdate` auto-dialog.

CAnimator:
* Made `CAnimator` default to 60fps. (Affects all types/children of `CAnimators`.)
* * This improves a lot the fluidity of animations. 30fps can lead to the impression of the game being less performant.
* * While this requires technically more processing power than the previous 30 fps. I've decided that 30 is just too little for transformations.
* * They also CAP at 60, (means they don't go over that). And most of them are also hooked to the `Significance` subsystem, so they adjust their fps dynamically.
* * Some animators have been optimized to run at 30. Like the one for Sounds and some used for Lights.
* Added ability to selectively not be affected by the World Time Dilation. `UseTimeDilation`.
* Added `CAnimatorTime` to animate time dilation (super fun to use).
* Reimplemented bounce functionality without modifying the `IsBouncing` flag. More re-trigger-able.
* `Update` is public. Since that's super useful.

Anim subsystem:
* Added loop, bounce, and reversed.
* Reworked fades' parameters to use a structure.
* Added faders for a Generic fader. Has a curve, loop, bounce, reverse, duration, etc. But you can use your own code.

[h2]## Sounds[/h2]
https://codeberg.org/jerobarraco/Sounds

LifeDev:
* Sounds for toilet, switches, radio.

[h2]## Utils[/h2]
https://codeberg.org/jerobarraco/JUtils

New:
* Added `LoadJSONTable` and `LoadCSVTable`. To load a data table from a json/csv file at runtime.
* Added `SetLocale`, `SetCulture`, `GetCulture`, `GetAllCultures`.
* Added `GetUsername`.

Improves:
* Removed game pause from `ShowUI` and indirectly from `BaseUI`.
* Fixed `ArrayShuffle`.

[h2]## Significance[/h2]
https://codeberg.org/jerobarraco/JSig

* Avoid register on editor non-play. That is, avoid triggering a distracting, but harmless, warning.

[h2]## Behave[/h2]
https://codeberg.org/jerobarraco/Behave

* Added priorities to tasks.
* Added `TaskGet` and `TaskRem`.
* Added task `Wait`, `Pick`, `Random`, and maybe others.
* Added `PlanSpread`, and cost fuzzing.
* Added looping.
* Fixed plan triggering multiple times.
* Improved cost calculation.
* * Recalculate plan on running task.
* Implemented parallel (multithreaded) plan on pick.
* Some optimizations.
* Reworked the flow a bit.
* Reworking loading, creating, adding, and removing actions.
* * Removing actions is new.
* * Now more data driven.

# ------ Links

Play it on itch.io https://jerobarraco.itch.io/lifedev

Wishlist on steam https://store.steampowered.com/app/2450230/LifeDev/

Forums https://forums.unrealengine.com/t/solodev-lifedev-my-game-about-overcoming-cptsd/

Twitter: https://twitter.com/jerobarraco

Mastodon: https://mastodon.gamedev.place/@jerobarraco

Support on patreon (one time available) https://www.patreon.com/c/jerobarraco

Support on liberapay https://liberapay.com/nande

Support on Ko-fi https://ko-fi.com/jerobarraco