My entire jam notes document uploaded!!
OK we're officially working on things today## Personal challenges:
- [ ] Actually use assets from my other projects when possible. [[MyAssetsUsed]]
- [ ] Adopt standard C# naming conventions for fields & properties. In general trying to follow [C# coding conventions](https://learn.microsoft.com/en-us/dotnet/csharp/fundamentals/coding-style/coding-conventions):
**\_privateNaming**, **scopedNaming**, **PublicNaming**
- [ ] Get the core of the game loop done by day 7
- [ ] Use ActionScriptables from Death for growth to handle queues of things
## Day 1 (Sep 15, from about 6pm ~ 9pm)
- Took notes for a couple initial concepts
- Pretty sure I'm going to go with an RTS resource management survival game (Calling it Stranded Sanctuary)
- Took a good while to iron out the bare minimum mechanics descriptions and then reduced that to a HOPEFUL min viable product.
- imported my input class from Locks & Larceny, as well as my NPC movement class
- built a quick draft of box selection that I had not quite gotten working (because I was comparing `ray.origin` instead of `hit.point` on my ray casts)
## Day 2 (Sep 16, from about 3:45pm ~ 3:20am..)
- Got everything booted up and immediately fixed my remaining issue with box selection
- I spent a bit of time looking into whether or not I should go with UIToolkit, and decided I would use it for learning!
- Found how to draw a quad with their Vector API unity's documentation [here](https://docs.unity3d.com/2022.3/Documentation//Manual/UIE-generate-2d-visual-content.html#use-the-vector-api), but I only need to draw a visual element with a border so I still have to write my own code
- Actually built out my own `BoxSelectionUI` class which has show/hide methods, and configuration methods for radius, color, and position
- Took a break for food and did some extra tinkering, got a selection box drawing in UI space when click & dragging
- UI space no matter what is not the right option, didn't realize since I'm doing top-down selection that the highlight box will be weird. WELL, still made a UIToolkit selection box, maybe there will be a use for it if i have a minimap
- Swapping to worldspace selection box with sliced image
- Took another lil break and finally got a selection box showing by 9:12pm LOL what a day time to bam out a bunch of small features
- Made holding left shift cause previously highlighted objects to be kept
CHECKPOINT: probably should show some progress of what's had:

- Quickly added rotation-sensitive camera panning and rotation whilst holding middle-click or control:

- Just need to make selection rotation-sensitive real quick
- Didn't take long before I came up with an idea by drawing things out in [[Rotated Selection Thinking.excalidraw]]
- Managed to modify the square bounds calculations to use a camera-center localized version of the start/stop clicking points, allowing me to get the relative top left and bottom right points, then just do the same box calculation in the newly generated points converted back to world space

- It's like 11:19pm now and I've got the template built for giving orders to selected units, getting ready to at least test movement, just trying to decide on context-based actions. going to have a `Selectable` class which has subclasses which register their compatible actions somehow alongside the contextual requirement, and then somehow I need to determine if that context is met when right-clicking something... Going to do some thinking in [[RightClickOrders.canvas|RightClickOrders]]...
- After taking some notes and tinkering around, it's 12:07 am, and I've got a concept where I will have a class deriving from `Selectable` that allows for orders. I'll also have a separate class called `OrderReceiver` which will be a base for right-clickable objects that will be able to process named commands. In the process of implementing this right now
- OK it's 1:07am now, and I've got group ordering now possible as well as single-unit ordering for movement specifically. I need to come up with a better system for priority movement because right now i'm just counting up a static int to help the agents differentiate, but I need a way to scatter-plot destinations when ordering a group to walk

- 2AM now, got a little movement indicator in there too, probably gonna wind down for the night
[img 5 won't upload]
- 3AM definitely stopping, but managed to get ordering units into a shelter going!
- It's probably worth note that I'm using a particle system for order indication, and the colors/scale, etc. are all decided in a switch of which order is enacted. (movement = small yellow, sheltering = purple at the scale of the structure)

- Having some small issues with clicking too close to the center not allowing pathing, but that will be easily fixable in the morrow.
> As far as progress goes, definitely killed a bunch of time trying to learn the UIToolkit stuff only to not use it, but i've made good progress in the evening so hopefully I can start working on resources and gathering tomorrow so I can make this start to actually be a survival man vs nature scenario
## Day 3 (Sep 17, from about 8:23pm ~12:08pm)
- Got started late today, but that's alright! Cracked right into working on the survival systems, starting with a generic `INumericController<T>` interface and two separate classes, an IntegerController and a FloatController. These, by default, have methods meant to control a value whilst also driving events when changing it.
- Created an EntityStats class which contains IntegerControllers for Health, Hunger, Hydration, and Energy, verified serialization of the events is functional as well so my plans for building UI on the engine-side will be easy
- Added an EntityStatsManager class and gave it some static methods for registering EntityStats instances to.
- Added implicit conversion for my integer controller as a learning experiment! Was super easy, found the docs [here](https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/operators/user-defined-conversion-operators)
- Added checks for EntityStats to allow for measuring time elapsed against the current value to determine states like starvation, exhaustion, and dehydration.
- 10:29pm now, added decrementing or incrementing of health to the EntityStatsManager on a tick-based check for those stats. Will elaborate through this system to control other potential value changes over time to keep it centralized.
- Added shortcut methods to the `INumericController<T>` interface to allow for easier addition/removal of listeners to the OnValueChanged event
- Started working on a value display bar right after which can target an IntegerController OR a FloatController and will dynamically register a listener to it and change scales accordingly. Going with a two-bar setup where the value is displayed in one color and changes are displayed in another.
- In the midst of working on the value display bar, realized I would need interpolation helpers so I brought over my helper methods from Locks&Larceny, also added another extension for coroutines to be easier to cancel from the host, and a static shortcut method on the host for cancellation
- Also had to modify my value containers to pass themselves as part of the event listen (since they're convertible to their value type anyways it's a no brainer for the extra information available to things like the display bar)
- Wrapping the night up at 12:18pm after taking notes below, got some really nice value modification being displayed on the integer controllers for entity stats, and verified that the event setup workflow is functional.

>In summary, I've got the base data and over-arching system for survival mechanics, and displaying of that data on selected entities. This display is replicable elsewhere too thanks to the event-driven nature of how the display bars update.
>
>Tomorrow I really need to focus up and get through the following core mechanics:
- [x] Settlement Resources Bank (Food, Water, Medicine, Tools, Weapons)
- [x] Display for resources bank and population
- [x] Gathering patrol mechanic (leverage behavior graph & custom behaviors)
- [x] enter or stand next to gatherable for set duration (GoToGatherable step)
- [x] add 1 harvest to buffer, remove 1 from gatherable (HarvestGatherable step)
- [x] path back to main tent to deposit the resource (DepositGatherable step)
- [x] Add behavior graph actions for consuming a resource to restore a stat
- [x] GoToDeposit step
- [x] ConsumeFromDeposit step
- [ ] Self Preservation when not busy with a task
- [ ] auto-acquiring of food and water from pantry when satiation or hydration is below 25%
- [ ] auto-pathing to nearest rest area when energy is below 25%
> Really need to figure out a mechanic or set of mechanics that can lean into the educational factor as well. I'm thinking maybe I structure the way the village works off of early human cultures, so I could have the player select roles for villagers based off that framework?
> Or maybe it could be about the natural environment somehow? It could be about a hyper-invasive plant reaching an ecosystem and maybe the effects of that on the whole system if not regulated? The map could be a pre-set with shuffling, and if the player fails to mitigate the invasion of the species they temporarily lose access to regions of the map from being overgrown, and have to burn energy to cut it back.
> In that capacity, the educational aspect could be about invasive plant species, and early human cultures. Just fun facts about how humans survived, and mechanics involving plants rapidly taking over, and maybe killing off more fragile resources if allowed to overtake. Could just have a steps-based trigger system for ecosystem shifts so it's naturally accurate but not simulative necessarily.
## Day 4 (Sep 18, from about 11:19am ~end of streamish)
- added resource bank and set it up with a component in the game scene
- added text display class for value controllers
- added template icons for the resources
- added resource display top bar
- Added behavior graph logic and graphs themselves for targeting resources, gathering them, and bringing them to the home zone. Also programmed in interruption of that process with other orders.
- Added behavior graph logic and graph for self preservation and activate this graph on low health or other stats (stop current action, go rest in shelter, and resume action when done) - but this was still a bit broken
## Day 5 (Sep 19, from about 11:20am)
TODOs:
- [x] Fix the logic for entities going and taking shelter, and then exiting shelter when restored fully
- [x] Investigate a small teleport issue that I found when toggling between order and shelter behavior
- [x] Add a death system
- [x] Change entity stats to degrading based upon their current actions, or at the very least based off a recovery system of Energy -- all the time, Satiation -- to recover energy, and Hydration -- when...??
Thinking a bit about how entities would drain stats
- [x] Gathering actions cost resources to perform
- [x] Entities will automatically go to rest if they do not have required resources for gathering a target
- [x] Walking for a certain duration without other actions in between would also count, or maybe reset on a daily basis `(think, While(walking)walktime++, if(changedAction) walktime=0)`
- [x] Gather locations could have added costs for receiving supplies, lacking that supply would cause the entity to pre-emptively go rest to restore that stat, but only after reaching the location
- [x] Energy could be restored by means of 4:1:1 of Energy:Food:Hydration (in other words, it would subtract 1 from satiation and hydration to give 5 energy or something like that)
- [x] Add Day/Night cycle
- [x] Add Growing Obstructions
Paused this session around 4:00pm
Resumed at 8:36pm!
- [x] Add single-unit raycast click
- [x] Add selected unit UI
- created and fleshed out a `SelectableInfoDisplay` class
- has methods that call for an update then seek out the current selected collection..
- displays the main selected object, along with its stats on value display bars, its name, a description, and an icon
- instantiates sub-icons as clickable buttons that can re-assign the current displayed main selection to a sub-selected item
- Added quick check on Selector to check if the player is clicking on UI so it doesn't start a selection call un-necessarily
- Added image fill amount interpolator shortcut method to my `InterpolatorExtensions` classes
- added UI space version of the value display bar
- modified the value display text to allow /max appending
- building the display bar stuff into the buttons was actually a bit scary and required some careful management of event listeners so I don't break everything
- fixed a huge blunder in my interpolation code and it should now be more consistent and hopefully not freeze up
- modified the scroll input to be deactivated when hovering over the multiple-unit selector display
- modified right-click actions to only allow one unit to be ordered to destroy an area
- by the end of the night (1:37am) got things fully wired up to display stats on bars and display the names and icons of selected units, the buttons in the multiselect allow you to swap your selected target and re-draw the selected units, and overall the functionality is there for selection
## Day 6 (Sep 20, Starting around 3:40pm ish till about 6:00pm)
>Terrible brainfoggy bad feeling day, only managed to get myself to start around 3:40pm
- Added time dial graphic and locked it to the rotation of the sun using a rotation constraint so the player has a visual element usable for time telling
- Also added a time text element and modified the sun controller to also update that text element, took a lil bit to get it to display the time correctly but got it working
- Added a Days counter as well
- Added a time scale display as well as a time scale controller that allows you to press \`, 1, 2, or 3 to change time speeds
- modified my InputSource class to continue polling for inputs directly if the game's timescale is 0, and got camera navigation working timescale independently
> Just coming down with whatever I'm coming down with, really absolutely destroyed productivity today, hopefully better tomorrow because this needs to be a gameplay loop by end of day
## Day 7 (Sep 21, Starting at 10:53am until ~2am with some breaks...)
>Today's the day, establish a gameplay loop or fuckin' cut it down till it works!!
#### Quick assessment found [[QuickAssessment|here]]
- [ ] Fix gather orders allowing instant gathering sometimes (probably has to do with queueing of what to do on walk-completion)
- [ ] Add unit reproduction!
- [ ] Add a "house" that cannot be ordered to, but the NPCs will use together
- [ ] NPCs will
Finally officially started working at like 12:30pm
- Added hearts explosion particle (and made the graphic rq in affinity)
- Added EntitySpawnManager
- immediately realized I needed something interesting to give the player a reason to ORDER units specifically to mix genes and create offspring, so i added a rudimentary "genetics system" which I've described [[GeneticsSystem|here]] in terms of what it does and what it interacts with. Time to get to implementing some things.
- [x] Create the data structures for genetics as well as mixing and reproduction methods
- [x] Create data structures for family tracking to prevent in-breeding
- [x] Storing a gene profile easily accessible to other classes hosted from each entity's stats
- [ ] increasing and decreasing polarity based off certain actions
- modified entity stat manager to also control ID generation on entity registering, and added IDs to entity stats instances
- added a FindByID method to EntityStatsManager
- WHY DO I DO THIS, it took me a couple hours but i've got a nice genetic inheritance system set up. added a `FamilyInfo` class and a `FamilyManager` class and hooked that into an `EntityGenetics` class containing multiple `EntityGene` classes categorized by type with helper methods for accessing individual genes, mixing, and creating offspring
- Also added important methods to the family manager to allow for proper heritage tracking and new family creation
>Took a good long break for dinner after pretty much having the genetics and family lines stuff all coded up
>Getting back to it, starting with adding a couple more initializations for all entities genetics and through an editor function setting everyone up at once
- Added some extra initialization logic for family data including genetics bootup for the first six entities (there has to be six or there's not enough families)
- added surname generation based upon top-two stats of an entity, as well as name mixing when new families are formed.
- Came up with a list of 3 primary and 3 secondary name segments for each stat, and built a randomizer to put them together into surnames with a uniqueness check
- added a selection changed event to `Selector`
- Added a `ReproductionOrderer` class which displays/hides a button when 2 units are selected and they are reproduction-compatible
- Implemented the logic for said button, which brings together 2 NPCs using a coroutine and then once they reach each other they instantiate a new NPC with mixed genetics from both of them, all my inheritance and family checks are working with minimal corrections needed!
- Implemented a hover-over displaying of reproduction compatible npcs and have fully tested multiple generations of the reproduction system and genetics mixing! seems to be working well and here's a GIF:
[can't upload this image either because it's way too big]
I know it's not 100% gameplay loop yet, but I consider this close enough to not ditch.
## Day 8 (Sep 22, Starting at 8:40pm ~ 1:11am ..)
OK we're officially working on things today. hopped straight in from notes and immediately added a living entity tracking system with events for when an entity is gained and lost.
Also added in a component to tag living entities with, which simply detects their start and destroyed events making it hands-free and it'll just detect on its own when the entities die and flag the event to the living entity manager.
Then kind of realized it would be nice to have some naming distinctions between units so I decided to spend just a little bit of time pulling animal names from a list on the internet [here](https://animalvivid.com/animals/)
- Got that set up and added a quick static class `NameGenerator` which keeps track of used names and puts them back in the pool if a used name is freed up on unit death
- ! also discovered a bug where I can select two units, swap the selection via the buttons, and then voila things are broken when i try to select other units.
- Started struggling with a stupid bug in my camera rotation and imported TimedAction and swapped the look action to off after a .015 wait, which stops the camera from rotating immediately on launch
- modified left clicking units holding shift to allow proper deselection of active targets
- fixed some misc bugs with left clicking units
- ran into a bug with gathering, fixing before continuing on gameplay loop stuff
More brainfog hit, lost a good chunk of time, but then regained focus
- added a system for keeping a list of living entity components in the scene, which auto-register on start and only unregister on destroy, allowing for clean death detection
- also added OnBorn and OnDied events to it
- Added a quick placeholder fail/death overlay screen with retry buttons wired up with a quick `SceneSwapper` class I threw together with a couple shortcut methods that can be accessed by UnityEvents
- verified things are working in a build. It's technically a gameplay loop now that you can lose everyone and restart!
### Day 9 (Sep 23, Starting at 2:41pm)
> Massive brainfog again today, couldn't start until much later than I wanted to.
> Decided if my brain won't focus enough to do code, I'd work on some art for things.
I need the following models:
- Humanoid (3 configurations: A B and C)
- Couple clothing sets that can be shuffled around
- Animations:
- Walk,
- Interact,
- Attack,
- Death,
- Idle (*will require 4 substates: Normal, Damaged, Exhausted, Starving, Dehydrated*)
- [ ] Messy looking overgrown vines with a decent few variants that take up a 1x1 square area and tile well
- [ ] Wolf
- [ ] Bear
- Basic terrain model
- A few different tree models
- [x] Pine
- [x] Variant 1
- [x] Variant 2
- [x] Leafless
![[PineTrees.gif]]
- [x] Birch
- [x] Variant 1
- [x] Variant 2
- [x] Leafless
![[Birch Trees.gif]]
- Some Structures:
- [x] Lean-To
![[LeanTo 1.gif]]
- [x] Dome-Tent (with smokestack center)
![[DomeTent.gif]]
- [x] Small Triangle Tent
![[TriangleTent.gif]]
- [x] Bonfire (became camp fire)
![[Campfire 1.gif]]
> As a note, each took me a bit to get into, but overall once I got the tents modeled I went with a simplistic sort of color layering scribble over each layer to kind of make it look like layers of thatch or twigs or whatever without getting hyper-detailed. (by this point it's 4:39 and the Lean-To and Dome-Tent were fun to make and done now)
- (9pm) Decent amount of the day gone through, but I've completed a ton of the bare minimum art! Making a bear right now and it's actually going ok even though I've never modeled a bear before. Here's hoping it turns out good
(Ended session at like 11pm after making a couple renders of the bear and posting to bluesky, post actually got the most organic interaction I've ever gotten LOL)
< - this probably isn't displaying correctly, should be a gif
Remaining aspects to get gameplay LOOP itself in:
- [x] Add all-dead lose condition
- [x] Add genetic death condition (IE no genetically compatible entities alive)
## Day 10 (Started at like 6:30pm)
- added the bonfire mesh and texture, set up some particles for it
- Started working on idle and walking animations for the bear
- again just absolutely failed to really use my brain for anything, so i'm calling it early at nearly 10pm. gonna wake early and force myself to work all morning to catch up
## Day 11 (Started at 11am, ended at 3pm)
- [x] Add roaming deadly entities (for added death threat alongside resource expenditure)
- [x] Add a win condition from destroying ALL tiles of the invasive plant
- [x] Make an actual test map, where I manually set the timings of plants, placements and amounts of resources, etc. Get things in and actually make it a game
## Day 12 (Started at 9:45am, ended at )
- re-did the UV mapping for the terrain and repainted it
- imported the humanoid model from locks & larceny
- created a model for tangled vines, wired it up to a prefab
- experimented with spreading a bunch of vines around in one area of the map, and set them up to regrow over multiple days (proving my early concept will work of just placing vines on the map with a large regrow time to start with)
- added right-click ordering for attacking a target along with a behavior graph to support the action from pawns
- modified the bear's current attack pattern to be the same as the right-click attack pattern
- added a model for a well and hooked it up as a water source, had to fix a few bugs as well
- fixed bug with instant-gathering of resources due to improper checking of distance!
- modified death system to allow for non-destructive dead-model swapping, wired the bear up to die and drop a "corpse" instead of a grave
- modified selection to allow OrderReceiver to be caught in the raycasts/box casts.
- added selectable component to the roaming bear, and to the main tent in the base
I've kinda stopped taking notes on the individual days at this point because I've just reached a super disorganized state of things, but still moving forward
## Day 13 (Started at 11am, ended at 4:40pm)
- [x] When selecting the main tent, show all units inside it as entries in the multiple-selected units buttons display
- [x] Add buttons that only display when selecting the main tent:
- [x] Evacuate units
- [x] Increase Population (which opens a UI showing all units in your colony)
- [x] when you select the first unit, only units that are compatible remain
- [x] Selecting a second unit allows you to see a "finalize" and "reset" button
- [x] when given the "finalize" order, both units will enter the main tent and create a new unit
- [x] also modify the current reproduce action to make both units enter the main tent **(REMOVED)**
## Day 14 (Started at like 10:30ish for notes, )
- [x] Make every object of interest selectable with available information
- [x] Add a hover description UI, and make it activate when the player hovers over images of selectables, showing their Description property
- [x] Add an info/notification log stack in the form of a pseudo-chatbox, with events simply timestamped and thrown in.
- [x] Add notification events for units getting low on their stats, or their target gathering source running out of resources (5 or less)
- [x] Add an on-select function caller which shows a special icon next to the cursor, deactivates the click-and-drag select, and waits for a left mouse button click event to fire off a pre-defined event. just make it a component and have the component activatable by a button, and self-deactivating through any click on a non-target, or a right click. Then add three functions:
- [x] Create Hunter (allows selection of a ***standard*** unit, which after spending a weapon, converts that unit to a class which cannot gather any resources other than food, but can now do 2x damage and has 2x health)
- [x] Create Gatherer (allows selection of a ***standard*** unit, which after spending a tool, converts them into a class which cannot fight, but gathers double the resource amount for the same energy cost)
- [x] Create Worker (allows selection of a ***standard*** unit, which after spending food, water, and medicine, converts them into a class which still can fight, and still can gather food and water, but also can gather from special flint deposits)
- [x] Make all wild animals move 2x speed at night, and have 2x vision range
- [x] Make animals intermittently spawn at edges of the map
- [x] Make animals spawn more over time (uncapped?)
- added some interpolation of zoom utility methods for Cinemachine
- added a reset camera function (hooked up to spacebar) which interpolates the camera back to the camp location
- modified the position interpolation to not activate if the camera is within 5 units of the destination (to prevent weird interaction when spammed)
- changed shelter tent to take 20 total occupants
- added fog to the day/night cycle
- fully wired up genetics gaining more or less max stats
- wired up a system for increasing/decreasing genetic polarity based upon stat checks at end of day (If a unit has full HP at end of day, it will become healthier. if it loses health too frequently, it will lose max HP)
- wired up text notifications for the gene improvements/declines as well as an added segment for when genes are flipped into a dominant or non-dominant state
- added a scrollbar interpolation method to my collection of lerps
- modified the text information display to also scroll to the bottom
- fixed some misc instance finding issues by replacing awake initiation with lazy loading
- fixed a few errors from exiting play mode, doubt they'd cause issues in game but still worth doing
- removed several un-needed debug logs
- added timestamps to the text output in the text log and also fixed the scaling/spacing
- finished wiring up the exclusive gathering of tools and weapons from workers only
#### FINAL STRETCH!! THIS IS THE POINT OF NO RETURN
> I have less than 2 days left and now the most important decisions must be made.
What do I have presently?
- RTS style system of selection and right click ordering, as well as an on-left-click ordering system
- survival mechanics on pawns with a simple satiation/hydration balancing act with energy and health
- all traits can be recovered on a character by using resources in the shelter while resting
- all entities have a genetic system which effects the regaining of stats while resting, as well as the max values of each stat type
- genetics can be improved by performing tasks repeatedly during a character's life, and then that improvement can be inherited into offspring.
- a lot of ui and basic data displaying
- unit conversion into different types that can perform specific actions (hunters, gatherers, workers)
- hunt-able wild animals that can also hunt your pawns
- day/night cycle which has effects on entity spawning, move speed, and energy expenditure
- population tracking which will cause a lose-condition if not enough villagers exist or no remaining reproducing pairs exist
- wild plants that slowly overgrow and take over terrain resulting in resources being blocked off if not managed
- win condition of all plants being destroyed
- added rain and gradual build-up and fall-off of said rain along with fog increase/decrease from rain (weather changes during time transitions) - 20% chance to start, 50% chance to stop
## Final 24 Hours (started at about 6pm on the 29th)
- added model for wolf
- added model for deer
- added spear, headband, bottom clothing, top clothing, and updated the humanoid model to fix its geometry and texture
- as a note I also successfully uv unwrapped my new meshes and they textured up way better as a result
- added rain sound effect
- recorded and added one guitar looping song (still need to do more)
- wired up walking animations to the villagers
- randomized skin color
- hooked up clothing drawing system to body type checks
- wired up headband drawing logic when changing classes
- added all necessary animations for humanoid (attack, death, harvest)
- fixed bug with selector leaving units hanging
- fixed bug with reproduction menu not initializing buttons correctly
- finished implementing selected reproduction target highlighting facet of button
- added all animations for bear, wolf, and deer (thankfully able to copy over animations from the bear over to the other two and just do an attack animation for the wolf)
- modified reproduction to blend skin colors of parents on offspring randomly (will randomize on a lerp between both parents skin colors)
- modified death system to reach out to animators and play a death animation, THEN run death protocol 1 sec later (then realized i didn't need any of this and simply hooked up the death animation on the prefab for the bear corpse)
- added blood emission to bear corpse
- updated prefab for bear to include all animation references necessary
- created a variant of bear to be used by wolf and hooked up its animator
- added resource text to the bear corpse
- added a new LookAtCamera component which simply tells the LookAtConstraint to target the main camera transform
- wired up the deer corpse and wolf corpse prefabs to also have selectables and have a description hinting they have meat, and generally making sure the prefabs are game ready
- wired up attack animations in the behavior graph
- wired up all animations for the humanoid characters
- updated null checking condition for graph to be more specific
- modified resource carrier to call an animation trigger when successfully gathering
- modified attack and gather behavior graphs to leverage look-at, and wait an extra moment for animations to complete
- also modified depositing behavior to play the "gather" animation and added a delay after it
- properly set up predatory animals for playing their attack animations
- also fixed damage dealing in predatory animals (wasn't using the same protocol)
- swapped orderable units over to the predatory style chase and attack system as it works better
- modified the chase attack system to not try to reset to another behavior graph if null
- modified the hunter to automatically attack using the same vision system roaming animals use (in other words they'll attack on sight)
- also modified hunters to gain buffs at night like wild animals do
- utilized the return-to-previous-state behavior in the chasing pattern to make NPC's start the gathering behavior, which returns them home if they didn't have a gather target previously. (this way pawns don't get lost roaming or standing still after chasing something and killing it)
- totally fixed up a bunch of targeting stuff and made sure wild animals don't target each other
- added notification for when one of your pawns is under attack
- fixed several issues with right click orders not properly cancelling attacks
- wired hunters up to swap stat changers properly
- fixed issue with input source not having a way to cancel listening without disabling the input action
- fixed left click order system by converting it to leveraging OnSelectionChanged and surprisingly an *ASYNC* method to wait for 10ms before applying the action.
- added a modifier input action reference to the left click order detector
- wired up left click orders for unit conversion to allow multiple units to be converted in sequence by holding shift
- had to juggle more left click order conversion stuff to get it to work with multi-performing
- also wired up left click orders with cost system
- added text notification for when an order for a unit upgrade is not affordable
- also added detection of when a unit is already upgraded and provide a text notification that it cannot be upgraded again
-
What does this game absolutely need that it DOESNT HAVE mechanically to make sense of it all?
- [ ] Clear declaration of mission: the player needs to know the plants are destroying their environment and they have to act.
- [ ] Chance of twins when reproducing (for added luck/fun factor)
- [ ] Construction of wells in specific water-viable regions (just box bounds that you can build in that i hand place)
- [ ] Construction of farm plots within the village radius
- [ ] Unit schedules based off hourly time blocks
- [ ] Existing unit list at top of screen like rimworld?
I have less than 2 days to turn this into a game that is actually interesting. core tasks remain:
### Sound Effects
- Gather events (emitted on gather from the resource source):
- [x] Food
- [x] Water
- [x] Tools
- [x] Weapons
- [x] Medicine
- [ ] depositing items (emitted on the tent on deposit)
- Units Attacking
- [x] Bear attack
- [x] Wolf attack
- [x] Human attack
- Damage received
- [x] Bear damaged
- [x] Wolf damaged
- [x] Deer damaged
- [x] Plant damaged
- [ ] Human damaged
- Notification sounds
- [x] Plant regrowing
- [ ] Win condition sound
- [ ] Lose condition sound
- [x] Daytime beginning
- [x] Nighttime beginning
- [x] Deposit low
- [x] Deposit empty
- [ ] Unit under attack
- [ ] Unit died
- [ ] Unit born
- Unit stat low
- [ ] Low HP
- [ ] Low Energy
- [ ] Low Hydration
- [ ] Low Food
- [ ] Unit can reproduce again
- Villager Conversion
- [x] Hunter
- [x] Gatherer
- [x] Worker
- Ambience
- [x] Wind sounds (random emit in general)
- [x] Rustling of leaves (random emit near trees)
- [x] Bird chirping? (near trees)
- [x] Rain sounds
### Music:
- Morning loop songs
- [x] A
- [ ] B
- [ ] C
- Night loop songs
- [ ] A
- [ ] B
- [ ] C
## Art:
- UI Icons
- [ ] Create Hunter
- [ ] Create Gatherer
- [ ] Create Worker
- [ ] Reproduce
- [ ] Food
- [ ] Water
- [ ] Medicine
- [ ] Tools
- [ ] Weapons
- [ ] Bear
- [ ] Wolf
- [ ] Deer
- [ ] BerryBush
- [ ] Well
- [ ] Villager
- [ ] Worker
- [ ] Gatherer
- [ ] Hunter
- [ ] Some text logo for the game itself
- [ ] Scale-able backgrounds for UI panels
- [ ] Scale-able backgrounds for Buttons
- Human models
- [x] Body format A (top off)
- [x] Body format B (top always on)
- [x] Body format C (random roll of top being on)
- [x] Walk animation
- [x] Attack animation
- [x] Gather animation
- [x] Death animation
- Wolf
- [x] walk animation
- [x] attack animation
- [x] death animation
- Bear
- [x] walk animation
- [x] attack animation
- [x] death animation
- Deer
- [x] walk animation
- [x] death animation
OK so we've basically got a game now, and I can sort of skip a lot of the other UI stuff on premise that I circle back if i can get some extracurriculars done in the actual world design, etc.
- [x] Replace all tooltips with my nice tooltip flagging system from L&L
- [x] Add a quick statistic summary on win/lose condition:
- how many survivors you had, and lost.
- how many plants you destroyed, and are still remaining on the map (if any)
- how many wolves, deer, and bears you killed, and how many are remaining
- how many days you survived
- how many of each upgraded unit you constructed
- Totals for all gathered, spent, and remaining resources in your bank
-
- [x] Set the time scale so that a full 24 hour sequence lasts about 6 minutes. this way at 2x speed it lasts 3 mins, and at 3x it will last 2 mins
- [x] Add a really quick function for wells and berry bushes replenishing/regrowing, so that the game can technically still continue, because otherwise there's no way I'm getting a reliable construction system in.
- [x] Modify regrowing obstacles to give them the ability to prevent a replenishing resource source from regrowing supplies
- [ ] Take one last look at right-click orders not actually reaching the target (specifically the vines)
- [ ] Make sure right clicking any target cancels all behavior graphs on the selected pawn that is given a new order
- [ ] Fix the order rings, a lot of them don't show right now and that's just not acceptable
- [ ] Give the player a couple prompt windows in the start just to let them know the controls and give them a chance to set volume settings BEFORE any audio comes through (IE, an intro menu scene that just has settings, the game title, and then the controls/brief on how to play)
- [ ] Flesh out the map. get some trees and shit all over the place. Make sure the plants will take over
Welcome to Invaded Sanctuary!
This is a conceptual attempt at combining a bit of RTS, a bit of colony sim, and a bit of game jam all put together.
Your goal is simple grow your colony's population by carefully selecting partners within your initial group, fight off the invasive plants as they threaten to take over the whole world, and stock up as many supplies as possible just in case you become surrounded by wildlife, plants, or both!
Your win condition is simple: Destroy every invasive plant on the entire map. it is the only way to defeat the invasive species that has overgrown much of the landscape already.
Things are a bit opaque right now, so here's a mechanical rundown:
- W/A/S/D moves your camera around the scene. Hold shift to 2x the speed.
- Spacebar will return you to focusing on your town center.
- ~ (tilde) toggles pausing. The alpha keys 1, 2, and 3 control time's speed, as shown at the top of the screen.
-
From there, just a few embellishments:
- [ ] FOG. OF. WAR. Just make a simple depth buffer shader for some fog or something, and have all the player's units draw on the depth buffer with a super super slow decrement that speeds up at night
- (SCRAPPED) Wire up the genetics having influence over expenditure
- [x] Wire up actions influencing genetic polarity (as mentioned in [[QuickAssessment]])
- [ ] Wire up genetic influence of speed
- [ ] Wire up genetic influence of Efficiency (which increases gather amount by 1 per trip if value above 0, and doubles cost )
- (SCRAPPED) Elaborate on overgrowing, turn it into a grid system where only tiles adjacent to a fully grown tile may grow (which will cause exponential growth)
Files
Get Invaded Sanctuary (Jern Jam 2025 Entry)
Invaded Sanctuary (Jern Jam 2025 Entry)
An RTS/Colony Sim Thing submitted to the Jern Jam 2025!
More posts
- First Post-Jam Update!30 days ago
- Jam Postmortem Thoughts!37 days ago
Leave a comment
Log in with itch.io to leave a comment.