Devlog 22 - 0.4.5 - Playtest and Updates 2


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 <3.

—— Sprint log:

Explanation and demo

—— Announcement/Important

Playtest

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

New plugin for emergent behavior

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

Plugin now use the MIT license!

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

General

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.

Settings

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.

Art

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.

Chapters

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

All

  • 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)

Flashbacks

  • Fixed issue with FB values not changing at the correct speed between chapters.

Dialogs

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.

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.

Story

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.

Inventory / Flags

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.

Sounds

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.

Utils

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.

Significance

https://codeberg.org/jerobarraco/JSig

Behave

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

Files

0.4.5.4 Linux 465 MB
14 days ago
0.4.5.4 Windows 434 MB
14 days ago

Get LifeDev

Buy Now$4.00 USD or more

Leave a comment

Log in with itch.io to leave a comment.