1. LifeDev
  2. News

LifeDev News

Devlog 22

> This is the time between time. This sprint i focused on polish while i was doing other stuff, like waiting for feedback, and other real life things that required my attention. I tried to work a bit on marketing, narrative, and design, but without much progress (though trying is as success, and i did a lot of research). I still wanted to keep progressing with the game, and programming makes me happy, so i did some polish while things settled and i was a bit more in a place to continue with the regular sprints. So the new sprint (the one after this devlog) is the start of the 3rd cycle! Yay! Super amazing. So i hope you get excited about this devlog and the upcoming progress :) As always thanks SO SO much for your help and support
# ------ Sprint log:


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

# ------ Announcement/Important


[h2]## Playtest[/h2]
Play-tests are still open. If you want to help me with your feedback, please contact me :)

[h2]## New plugin for emergent behavior[/h2]
I've created a new plugin for emergent behavior gameplay! Read more down below on its section ("Behave").

[h2]## Plugin now use the MIT license![/h2]
So, this is an important change.
I rather LGPL3, but i've decided to change to MIT.
The major reason i prefer LGPL is that it incites people to also release the modifications of the plugin back to the community (AFAIK). That's actually quite important to me. Unfortunately MIT does not enforce that.
The downside with LGPL is that i've had the misfortune to know people who did not understand much about licenses and only used MIT due to being simple to understand.
The only point that i find reasonable to not enforce LGPL though, is a clause that states that you either need to release a relinkable object file or use a dll. A clause that i do not care *at all*.
But since i know how unlikely is that someone will actually take the time to evaluate a license (with a lawyer maybe), an edited lgpl is not useful.
So in the hope that more people can use the plugins and feel at peace, i've decided to use a license that's easy to understand and permissive enough.
I'm sure the people that would like to contribute will do it regardless.

# ------ Game

[h2]## General[/h2]
NEW:
* Implemented a few modes: New game plus, Kiosk (for expos), and Demo (demo build).
* * Just a stub at the moment.

Improve:
* Some cleanups and general improves.
* Improvements to the GhostPool management.
* Improvements to handling the chapter flow, and improved handling the end of the story.
* Fixed and improved subsystems and manager initialization flow. For great stability and determinism! Fixes some issues with feature flags.
* Moved the outro stats to its own screen.
* Improved packaging flow. Changed a few things to work with the Feature flag system, so it's set automatically to the correct group (file saves, test data layer, etc.).

Known issue:
* The boxers have some weird color on a side due to a bug in ue.

[h2]## Settings[/h2]
NEW:
* Show current foxy value.
* Ability to tweak foxy value on new game plus.
* Ability to change blur amount.
* Ability to change the ui scale!
* Ability to invert Y coords on camera movement B)
* Attempt to add a debug panel.
* Added (experimental) flag to disable saving game during runtime.

Improve:
* Reworked saving
* * Added a saving icon!
* * Improved loading and saving.
* * Improved saving handling.
* * Added experimental version tag to the save game.
* * Fixed saving settings (flags and feats) when changed on the intro menu.
* * Fixed loading settings and feats on game start.
* * Ensure saving new feature flags.

[h2]## Art[/h2]
NEW:
* Light switches (1 base with 3 options).
* (Shampoo/conditioner) Bottles. Might not be on the build.

Improve:
* Generalized two ui buttons and replaced them on a bunch of places.
* Improved the MsgBox.
* Improved dialog aesthetic. Colors and such.
* * Fixed issue with pop-in animation and different line counts.
* Basin position.
* Improved the dithering effect and used it in a few more places. Now everything looks a bit more coherent and nicer.
* Reworked inventory ui. Items' Colors, number, logic.
* Reworked shaders for hint (intention) and hover.
* Improved a couple of cameras positions.

[h2]## Chapters[/h2]
All:
* Reworked how the walkman/tape/batteries interact/flow (a big work).
* Tweaked some dialogs.
* Attempt to add precomputed lights (when disabling lumen). Also, HLODS.
* Tweaked arrangement of some objects. (Fixes some issues).

CH04:
CH03:
* Improved interaction with door.
* Improved piano puzzle.
CH02:
CH01:
CH00:
* Experimented adding some messages on the flashback side.

# ------- Subsystems and plugins

[h2]## All[/h2]
* Some plugins got updated.
* Overall cleanup and improvement. Removed old stuff, tobjectptr, branch prediction, constness, crash prevention.
* I've changed license to MIT!! (see explanation above)

[h2]## Flashbacks[/h2]
* Fixed issue with FB values not changing at the correct speed between chapters.

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

New:
* Major rework to the dialogs. More data driven. Easier to add tons of them without the need to code. (Inspired by the GDC talk for Firewatch and Steam's L4D/Portal/Etc.)
* * This inspired the additional features for 'dialog conditions'.
* * To support this i've also added a bunch of automatic (generic) dialog events, as well as flag tracking.
* * Still experimental, i'm confident i broke something, and i haven't added many dialogs just yet. Still some technical features missing.
* * https://www.youtube.com/watch?v=wj-2vbiyHnI
* * https://www.youtube.com/watch?v=tAbBID3N64A

LifeDev:
* "AutoDialogs": Item.Look, Item.Fail (not usable, not ready, bad target, no target), Item.Use, Inter.Trigger, Inter.Look, Inter.Unlock, Inter.UseItem, Inter.State, Inter.Activate.
* * Most of these are also automatic flags. So now i can (and super easily) have logic on the dialog, puzzles, and interaction; to check for any of the above things. Via the shiny Eval subsystem and conditions (or directly via flags).
* Finally removed all \n from items and dialogs. In favor of multiline text fields. Small performance gain.

Plugin:
* Renamed sequences to groups.
* Added a `Condition` field to dialogs and groups. To be evaluated by the new and shiny Eval subsystem.
* Ditched changing the behavior depending on row names' postfixes.
* Added group types. Sequence, Random, Match (pick first matching condition), Pick Loop (pick one using a condition, loop around), Pick Clamp (like PickLoop but clamp instead).
* Added `Comment` field to both dialogs and groups.
* Some other fixes and improves.
* Cleanup. Removed unused stuff.

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

LifeDev:
* Added `FlagsFinish`. Which allows to finish on certain flags.
* Reworked some old steps to take advantage of new features, and also work better.
* Generalized screen shakes for any step.
* Other improves.

Plugin:
* Protected against a really unlikely crash.

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

LifeDev:
* Added a bunch of "Auto flags". For stuff happening in the game.
* * Many are the same from "Auto Dialogs", but also: "Story.Step.Start.xxx".

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

LifeDev:
* Fixed issues with Puzzle finishing timings.
* Added text for the current letter on word cube puzzle to help during flashbacks.
* Added a new puzzle with books (not in the build yet).
* Added a new puzzle with the shampoo bottle (not in the build yet).
* Added `RewardIntersTrigger`, which points to other interacts to trigger as a result of the current interact trigger (yes, it makes sense to have it :))
* Improved `IsOneShot` and `DisableWhileAnim`.
* Added Interact `ULockCondition`. Unlocks the Interact using the new Eval subsystem. (Soon to be ported to the Interact Plugin).
* Added overrideable method for `Unlock`. (To be ported as well).
* Spot:
* * Added `UseOrder` to require items to be used in order.
* * Added `UseStateInc` to increment state on each usage.
* Added light switches. This is mostly a test. only added to a couple of rooms.

Plugin:
* Improved fading material handling.
* Interact:
* * Fixes on `Interact::DisableWhileAnim` and `!UseAnim`.
* * Added `HintCondition`. Enables hint using the new Eval subsystem.
* * Added `UseStateLoop` to loop states when triggering past the last state.
* * Added `SetActive` to control whether it's enabled to be interacted with.
* * Added `SetState` to control the current state. Also fixed an issue with the state count.
* * Moved `Texts` from Anim to base Interact.
* * Added `OnHint`.
* A big rework on Puzzles to be Interacts.
* * removed `DisableOnInter`.
* * Added a Type `Condition`, that uses the new Eval subsystem to unlock/complete a puzzle.
* * Fixed sequence always locking.


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

LifeDev:
* Added a new song, that plays on the main menu when new game plus is available.
* Fixed issue of music initialization on the main menu.
* Fixed outro music.
* Re-enable optimization (Auto manage attachment).
* Fixed music playing twice.
* Fixed music volume levels on intro/outro screens.

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

New:
* Added `JUtilsMath`. Moved two functions there. Added a few more.
* Added `MathEval`. A function that evaluates simple math expressions. Super useful.
* Added `ToggleDataLayers`.
* Important: Added `Eval` a subsystem for advanced math evaluations.
* * With many operators of my own.
* * Allows to use user defined variables.
* * Helps decouple the system and plugins.
* * Uses pure UE c++ code. No external dependency. Uses optimized UE classes. I can extend it in the future quite easily.
* * I've started experimenting with this to add conditions to the dialogs, interactions, and other things :)

Improves:
* Improvement to the MsgBox class.
* * Buttons creations. Hide on done.
* Pool
* * Fixed issue with reducing pool on ItemMax < Current.
* * Ensure pool empty on destroy.

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

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

NEW:
* New plugin for emergent behavior. It's pretty nice. Aims to allow mechanics like the Sims, or Slime rancher, (Or FEAR/TombRaider/Others).
* I've made this after watching the Slime rancher and sims talk. So it's a bit inspired by it (thanks so much GDC for the talks). But the design is my own idea. Later on, i've found about GOAP and StateTrees and i've included some of it. It can behave as any of those.
* This plugin is on a beta stage (experimental).
* The architecture/design is pretty stub/prototype. And has not undergone much optimization.
* I'm still testing whether it's going to be useful for this project or not. It's quite possible i won't add it, since it detracts a bit from the current scope, i don't really feel the emergent behavior mechanic fits with the feeling/idea i want to transmit, and could add a ton of extra work for no real value (real value would be a mechanic that reinforces the narrative and tells the story). In any case i'm pretty sure i'll add some sort of emergent narrative in some way. The work with the Dialog/Flags/Eval systems already provides a great deal of power for emergent narrative.
* I haven't published it just yet. But i plan to do so sometime soon (when i get some free time, energy, and motivation). Even though it's beta and the code quite not up to my standards, i will publish it anyway in case someone wants to try it out, or help with, or have fun, or learn.

> In any case i think i might just move to use StateTrees by UE. (which i discovered *after* doing this plugin). I think it's much more mature, and also a good skill to learn for my professional career. Though i'm certain that being able to create my own GOAP/StateTree improves my skills more (and require more skills) than knowing how to use a StateTree. So i think of this was a great exercise and learning experience for me. Though maybe i use it in another project just for fun, specially if i discover it's more flexible or performant than state trees. One cool thing about this plugin is that it's compatible with the Significance subsystem, planning happens on a background thread, And the tree is totally dynamic at runtime.

Slime rancher emergent storytelling.
https://www.youtube.com/watch?v=GbVFa89kUhw

See this one. It's loosely based on the first person's talk. And the comment about Layered GOAP.
https://www.youtube.com/watch?v=gm7K68663rA#


Also look at state tree. it can do very similar stuff. and it's much cooler.
https://www.youtube.com/watch?v=YEmq4kcblj4

https://www.youtube.com/watch?v=zovPQnq7ndE

good video in bt, with good ideas for decorators
https://m.youtube.com/watch?v=Qq_xX1JCreI

non combat ai
https://m.youtube.com/watch?v=uyYdOBYt6g4


# Links

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

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

Support on patreon https://www.patreon.com/c/jerobarraco

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

Interact on the forums https://forums.unrealengine.com/t/solodev-lifedev-my-dream-game-about-overcoming-cptsd/1172122


https://youtu.be/dVbbgPG6n1M

https://jerobarraco.itch.io/lifedev/devlog/906478/devlog-22-045-playtest-and-updates-2

Devlog 21

> This is the time between time. This sprint was done while i was preparing other things.
I've been organizing a couple of playtests, and gathering feedback.
I'm also preparing to tackle the next cycle of the game (a whole horizontal slice that could last another year and a half). So i'd like to have a good idea of where to go.

# ------ Sprint log:


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

# ------ Announcement/Important


[h2]## Playtest[/h2]
I'm looking for people who would like to playtest the game and give me feedback.
This is truly important for me at this point, and your feedback will shape what the game will become. Please contact me if you're willing and able.

[h2]## PLUGINS![/h2]
I've decided to publish my plugins already.
They are free and open source.
The links are below, under the title of each one.

I haven't put time on the documentation (since i had other things to do), but the code it's well documented and easy to understand.
I plan on improving the documentation, as well as cleaning them up as i go.
Then i want to publish them on Fab, though that proved to require more time than what i have available at the moment.

My wish is that someone finds them useful.

# ------ Game

[h2]## General[/h2]
NEW:
* Started working on a hint system. That works with the card 00.
* * Done a lot of work. It's working, but barely used.
* Added on-screen icon while autosaving (top-right).

Improve:
* Improved and tweaked some dialogs.
* Enabled PSO precache and other PSO optimizations (less chance to get a stutter).
* Lots of cleanup. Removed lots of unused stuff.
* Improved savegame stuff, including startup flow.

Known issue:
* Timer might reset when reloading from a savestate.

* no パラメーター adjustments.

[h2]## Settings[/h2]
NEW:
* Added confirmation before going back to menu and quitting.
* Added feature flags for:
* * Dialog text, Hint (Card Intention),
* Added work in progress story "Backlog". Temporarily hosted in the settings window.

Improve:
* Disabled the "speed" post shader by default.
* Improved the feature flag for using savegame.

[h2]## Art[/h2]
NEW:
* Redo the toilet.
* Cleaned up some materials.

FIX:
* Hover post process after DOF. Changes how it looks. I like it more and works better with the other post processes.
* Re-exported more assets.
* A bunch of missing dynamic shadows.
* Drawer meshes.
* Windows' opacity.

[h2]## Chapters[/h2]
All:
* Improved dialogs.

CH04:
* Matches flow rework.

CH01:
* Rejig some drawers.

# ------- Subsystems and plugins

[h2]## All[/h2]
* PUBLISHED FIRST VERSION!!!!!!!
* Added lgpl-3 license (work in progress).
* Overall cleanup and improvement. Removed old stuff, tobjectptr, branch prediction, constness, crash prevention.

[h2]## Flashbacks[/h2]
* Reworked flashback post process.
* Added/improved some flashback material functions.

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

Plugin:
* Added `OnAdd` delegate.

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

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

LifeDev:
* Fix on inventory item change.

Plugin:
* Added field for sound on item's usage. Also implemented in the game but haven't added any sound :D
* `Item.Description` is now an array.
* * Allow the game to show multiple dialogs for very long descriptions.

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

LifeDev:
* Puzzles: set the cubes to read the current letter on the hover.
* Piano: show rotating error message on failure.
* Fix stove's hitbox.
* Added a few basic features to support hints easily.

Plugin:
* Wait for puzzle anims to finish before finishing the puzzle and trigger actions.
* Fix `ItemLogic` world creation and `BeginPlay`.
* Expose AInteract::HintTime to settings.
* Big rework on `Anim` subsystem.
* * Now handles dynamic materials (float, vectors), custom primitive data (float, vector), material parameter collections (float, vectors), actor/component transform, and sound parameters (float) (e.g. metasound).
* * improved the code a lot.
* * improved delegates.
* Added several features to support hints. (In a custom way).
* Default config file.
* Added `UseSweep` to `AnimatorTrans`.

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

LifeDev:
* Moved FB stuff out of generic `AMusicMan` into the game music man.

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

* Lots of work on material functions. Add and improves.

NEW:
* Added TWO new dither methods. DitherBayer and DitherHalfTone.
* Added simple column sprite-sheet (flip book).
* Added EqualsStencil.

Improves:
* Improve material functions: Quantizer, QuantizeUV, ShiftRange, Fade, BoundsFade, DitherBayer, DitherHalfTone, Voxel*, others.
* Cleaned up old voxel materials. Finally deleted old materials.
* * Not using color correction by default.

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

* Avoid printing warning during cook.
* Other minor improves.

# Links

Play it on itch.io https://jerobarraco.itch.io/lifedev
Wishlist on steam https://store.steampowered.com/app/2450230/LifeDev/
Support on patreon https://www.patreon.com/c/jerobarraco
Support on liberapay https://liberapay.com/nande
Interact on the forums https://forums.unrealengine.com/t/solodev-lifedev-my-dream-game-about-overcoming-cptsd/1172122

Devlog 20

> This is the 2nd pass of the chapter 04. This is a HUGE milestone. Now all chapters contains 2 passes. This can be considered a release point. The Alpha version.
It contains some new content, and also quite a few improvements all around, and a TON of fixes.
This sprint was still very challenging, but i've managed to keep progressing. I'm actually quite happy with the amount of work that i've managed to achieve.
Thanks so much for everyone following the project and supporting me in one way or another!
My humble appreciation for you :)
So i really hope you enjoy this !
If you want to help me test it, please contact me.

# ------ Sprint log:


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

# ------ Game


> Important note:
If the game has problems, make sure to delete old config files.

[h2]### General[/h2]
NEW:
* Moved to 5.5!!!!!
* Added FBUtility editor widget to speed up tests..
* Added MegaLights support.

Tweaks:
* Improved the docs all over the place.
* Constness, TObjectPtr, Branch prediction hints (Un/Likely). And other cleanups docs and fixes.
* Improved build pipeline for windows.

Fixes:
* Fixed settings menu on the intro not working well.
* Fixed crash on hot-reload (yes, hot-reload).
* Ghost pool flag is saved.

* no パラメーター adjustments.

[h2]### Settings[/h2]
NEW:
* Added new features.
* * MegaLights are working now ;)
* * Dialog auto skip, with configurable time.
* * Configurable default flashback duration.
* * Configurable Interact drag.
* * Experimental: Batch ticks & Concurrent tick. (see engine docs).
* Added Dynamic resolution, FPS cap, AntiAlias mode.
* Added version number.
* Added Main Menu button.
* Revamped ui. Works better.

FIX:
* Issue with menu interfering with music and flashback on intro level.
* Fixed issue with speed min/max + foxification.

[h2]### Art[/h2]
NEW:
* Re-exported and adjusted a bunch of assets for improved performance/space and visuals. (bra, clout03, shirt01, clout01, bed, card, fake window, tv00, door00, walkman00, shirt01, ghost03, kitchen, rice box interact size, door collision).
* * Finally deleted a few more deprecated materials.
* Added more stub assets to the level.

FIX:
* Fixed a bunch of assets (bed).
* Removed a bunch of unused assets (char18, char22, test char, snake).
* Fix TV button's outline.
* Improved Flashback post process (a lot, medium rework).
* Improved Ghosts.
* Fixed a couple Vertex Interpolators broken from 5.4.
* Fixed some DataLayer assignment on some assets.
* itsraresight changed name to Ovlune.

[h2]### Chapters[/h2]
CH04:
* Added card and modified the flow.
* Added matchbox, knife, fork, pictures.
* Fixed poem03 look at description. Added patch to allow multi-dialog item description.
* Added matches and reworked pot interaction, also with stove.
* Added and improved dialogs.

CH02:
* Fixed card reward soft-lock.

# ------- Subsystems and plugins


[h2]### Flashbacks[/h2]
LifeDev:
* Fixed flashback post process with outline.
* Fix animation duration on multiple triggers.
* Fix flashback auto increment on dialogs working better with current value.
* Improved the GhostPool actor and ghost items.
* * Made some stuff on ghost item configurable through Ini files.
* Experimented with objects only on flashback side.
* * Created a new material and functions.
* * Added FB_Depth, FB_Offset functions.

[h2]### Dialogs[/h2]
LifeDev:
Plugin:
* Removed (unused) dialog type and emotion.

[h2]### Story[/h2]
LifeDev:
* Fix step stopping RandFB at end.
* Disabled input during camera blends.
* Disable pointer text on blend.

Plugin:
* Improved handling wait time (in tandem with camera blends).

[h2]### Inventory / Flags[/h2]
Plugin:

[h2]### Interactions[/h2]
LifeDev:
* Improved how interactions can interact with other interactions. (And reworked some instances).
* * Added Interacts to fade out.
* * Added ability to select instances at runtime based on the class.
* Fixed checking for rewards.
* Fixed fade and active on failed item reward.

Plugin:
* Added HoverStencilID property. Configurable by default via Ini file, and also per instance.
* Updated default config ini.
* Fixed crash with StateNum==0.
* Removed network code.
* Changed some pointers to WeakPointers.
* Added instigator.

[h2]### Sound[/h2]
LifeDev:
* Added TV noise. Removed unreal engine's sound.
* Updated musics' MetaSound version.
* Adjusted some sound levels.
* Fixed certain sound effects not working on windows.

[h2]### Utils[/h2]
NEW:
* Added CamFade function. (fade according to distance to the camera).
* Added FakeWorldUV function. (something with screen coords to uv).
* Added Float3ToUV function.
* Added Equals function (to quickly test for equality).
* Added CQuickMesh::SetUseCustomDepth.
* Added GetPIEWorld and IsPIE.
* Added Hidden material.
* Removed some old materials. Now voxel material defaults to non-color correction.

[h2]### Significance[/h2]
NEW:
* Added ability to calculate distance based on the origin component.

# Links

Play it on itch.io https://jerobarraco.itch.io/lifedev
Wishlist on steam https://store.steampowered.com/app/2450230/LifeDev/
Support on patreon https://www.patreon.com/c/jerobarraco

Devlog 19

> This is the 2nd pass of the chapter 03. It does not contain a lot of new content, but it does contain a good amount. Also, it contains a lot of improvement all around, including stability and performance. This was the 1st sprint after my forced pause, it was very challenging, but i've managed to keep progressing. So, here it is. Enjoy!

# ------ Sprint log:


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

# ------ Game


> Important note:
If the game has problems, make sure to delete old config files.

[h2]### General[/h2]
New:
Tweaks:
* Improved the docs all over the place.
* Constness, TObjectPtr, Branch prediction hints (Un/Likely), cleanups.
* Improved initialization and load flow.
* Tweaked the interaction distance.
Fixes:
* Fixed the music not loading correctly.
* Fixed Ghost pool being active during intro.
* Fixed a few collisions (cabinet, wardrobe, shelf).
* Fixed some foxification initialization.

* no パラメーター adjustments.

[h2]### Settings[/h2]
NEW:
* Added new default features (Nanite, ghostpool, speed, megalights (not yet working ;))
* Added new speed post process.

* Enable LifeDev.ini to be overrideable by the player.
* Fixed loading the settings during the intro stage.
* * Fixes move sensitivity start at 0 on a rare case.

[h2]### Art[/h2]
NEW:
* Pictures. Not yet in the level: matchbox, knife and fork.

* Re-exported a bunch of assets for improved performance/space and visuals. (wardrobe, fluorescent, wordcubes, clouts, piano, key, tap)
* * Finally deleted a few deprecated materials.

[h2]### Chapter 0, 1, 2, 3, and 4[/h2]
CH04:
* Tweaks to some interacts.
* Fixed the matchbox. Added sounds.

CH03:
* New: New music!
* Added interacts (picture puzzle, picture, heater, socks, books...)
* Improved dialogs.

# ------- Subsystems and plugins


[h2]### Flashbacks[/h2]

[h2]### Dialogs[/h2]
LifeDev:
* Improved UI working. Moved some stuff to cpp.

[h2]### Story[/h2]
LifeDev:
* Added functionality to activate and deactivate (separately) interactions on each step.
* Fix step destroying asset during fadeout.
* Added ability to query the current chapter.
Plugin:
* Fixed logs for dialogs not found.

[h2]### Inventory / Flags[/h2]
Plugin:
* Fixed "hot" items not changing on the ui.

[h2]### Interactions[/h2]
LifeDev:
* Improved collision settings.
* Interact managing Hidden on fade.
* Fix fade hidden when not using fade.
Plugin:
* Improved default auto activation flow. Added some logs to detect incorrect setup.
* Puzzle: Improved auto activation.
* Simplified code.
* Better support for 0 seconds duration animation.

[h2]### Sound[/h2]
LifeDev:
* NEW: Added a bunch of new sounds.
* Adjusted a bunch of (loudness) volumes.
* Fixed an issue with ambience sound volumes.
* Fixed issue where environ would not fade-in after disabling the music feat., when the fb is >0.
* Fixed attenuation on the environment.
* Improved attenuation occlusion.


[h2]### Utils[/h2]
NEW:
* Added ability to use lambdas on DelegateWrapper.
* Added array shuffle.
* Added static array length.
* Added Plot4 material function.
* JUtilsSys, JUtilsNet.

* Improved ease of usage for CodeCurve.
* Added new default to CQuickMesh to improve performance.

[h2]### Significance[/h2]
* Improved header usage.
* OnChange also notifies the old value.

Play it on itch.io https://jerobarraco.itch.io/lifedev
Wishlist on steam https://store.steampowered.com/app/2450230/LifeDev/
Support on patreon https://www.patreon.com/c/jerobarraco

Devlog 18

> This is some work after 0.4.0 . Life got busy and stuff happened. And it made sense to publish a new DevLog with the bits and pieces i've collected. Before starting the new sprint.
There were tons of things going on outside this project. Which made it really hard to make progress (if any progress at all).
Anyway, i tried my best, and decided to at least push to keep momentum. That proved to be hard and even impossible at times.
But i've managed to do a bunch of .... stuff, which led to a lot of interesting improvements and additions.
So, i'm making this devlog to start the build with from a more stable point.
And also because a lot of time has passed and i feel it'd be nice if i give an update.
The build published won't have any new content, but it will have all these improvements.

------ Sprint log:


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


------ Game


> Important note:
:)

[h2]### General[/h2]
* New:
* * PORTED TO 5.4!! :party:
* * * This was less work than expected. But still required an effort.
* * Intro logo.
* Tweaks:
* * Rework character collider size.
* * A lot of rework and refactors.
* * Improved the docs all over the place.
* * Constness, TObjectPtr, likely.
* Fixes:
* * Settings confirmation dialog.
* * Various fixes on stuff that wasn't working.
* パラメーター adjustments.

[h2]### Settings[/h2]
* Reworked the whole settings ui:
* * Ton of work.
* * Ported a bunch of things to cpp.
* * Created base widgets for features and feature groups.
* Improved graphics settings.
* Added AntiAlias, Dynamic Resolution, Frame rate, something else?
* Added confirmation dialog on game load, and slot erase.
* Audio audio volume preview.
* Audio filter on pause.
* Bunch of new feature toggles. (Ghost pool, flashback post process, speed post process, fov).
* Fixed scroll on qualities.
* Fixed control sensitivity to only apply on apply.
* Improved screen resolution scale.
* Fixed/improved loading and applying.

[h2]### Art[/h2]
* New: Match box.
* Optimized a couple of assets. Re-exported a bunch.
* Fixed some outside meshes.
* Removed unnecessary collisions.
* Updated text colors.
* More houses on the outside. Light blockers. And spaced lights.
* Added speed post process.
* Animation for the text.

[h2]### Chapter 0, 1, 2, 3, and 4[/h2]
* CH04:
* * Fix char particles
* * Fixed pencil material
* CH03: Fix lights
* * Added tape03, and batteries. Changed level flow.
* * Improved datalayer.


# ------- Subsystems and plugins


[h2]### Flashbacks[/h2]
* LifeDev:
* * Animate camera FOV with Flashback.
* * Fixed lights state after fb.
* * Added ghost pool. And feature flag.
* Added OnTo and OnEnd delegates.
* LerpStable.

[h2]### Dialogs[/h2]
* LifeDev:
* * Made text color white.
* * Added new dialog material.
* * * With performance switch based on quality settings.
* * Fixed animation.

[h2]### Story[/h2]
* LifeDev:

[h2]### Inventory / Flags[/h2]
* LifeDev:
* * Dialog shown count at end of game.
* * Time count at game end.
* * Added foxy flag.
* * Actually removing post processes on features.
* * Improvements on handling feature flags.

[h2]### Interactions[/h2]
* LifeDev:
* * Fixed double enabling.
* * Improvements on fade.
* * Fixed lights starting "off".
* * Added item use result. Added Error.
* Made Interactions replicated. !!!!!!
* CAnimator:
* * Animation and subsystems using lerpStable.
* * Added CAnimatorData to animate primitive data. with HSV.
* * Added CAnimatorMPC. with HSV.
* * Added ::Flip ::Mirror ::PlayMirror ::UseLog.
* * AnimMat: Fixed removing duplicated animations. Added removing for data anims.
* CAnimatorPID:
* * Improved workflow. Added OnGetVal. Improved docs.
* Randomizer: Added ::AnimValue ::AnimRandReverse ::AnimMirror.
* Not grabbable by default.

[h2]### Sound[/h2]
* LifeFev:
* * Base widget for sound slider.

[h2]### Utils[/h2]
* Added JNetUtils.
* Materials:
* * OKLab Palette Material function
* * Palette with HSV
* * Added: Checker, Alternate, DitherQuant.
* * Added Kawase functions.
* Pool:
* * Fixed unlikely crash using console commands
* UI:
* * MsgBox:
* * * Fixed MsgBox multiple accept.
* * * Reworked style.
* OctTree:
* * NEW: Oct tree class that handles lots of actors. Works in tandem with the pool.
* * ::Rebuild, ::Update, ::Add, ::Iterate, ::HasLoops, ::Contains, ::Overlaps and many more!
* QuickMesh: Disable worldpositionoffsetwritesvelocity by default.
### Significance

[h2]### JSceneView[/h2]
* added stub plugin for sceneview.

Build at : https://jerobarraco.itch.io/lifedev/devlog/817605/devlog-18-0410-life-happens