🧙♂️ Dev Diary Entry — August 22, 2025
Title: The Button That Refused to Behave & The Birth of the Roster
🔧 Scene Routing Rituals
Rewired the New Game button to route through TitleButtonHandler, now correctly summoning PlayerSelectScene instead of defaulting to MainScene.
Identified and purged legacy bindings causing scene bleed and phantom loads.
Confirmed SceneTransitionManager singleton behavior—duplicate instance was being destroyed, causing confusion in scene flow.
Created a fallback-free, direct loader script: PlayerSelectionSceneLoader for future modular routing.
“Scene routing simplified. One-line fix applied. New Game button now summons PlayerSelectScene. Ritual clarity restored.”
🎨 Portrait Summoning
Generated 8 player archetype portraits using Gemini—clean, expressive, and mythically aligned.
Each portrait anchors its archetype in visual lore, ready for UI integration and future unlock conditions.
“Gemini conjured 8 faces of fate. Archetypes now wear their legacy.”
🧱 Player Selection Screen Constructed
Built the PlayerSelectUI system with runtime archetype cycling, name input, and stat display.
Added support for portrait, bio, and stat rendering via modular UI fields.
Validated gear logic and slot claims remain intact post-selection.
Confirmed runtime visibility and scrollable layout in simulation mode.
“Roster summoned. UI scrolls. Archetypes cycle. Selection ritual complete.”
🧟♂️ Bonus Lore: The Glitched Scene
Renamed the old MainScene to GlitchedScene for archival purposes.
Discovered Unity’s scene desync behavior—previous scene contents bleeding into current view.
Restarted Unity to purge cached ghosts and restore editor clarity.
“GlitchedScene sealed. Scene bleed purged. Editor clarity restored.”
I do not usually share any code here , or in github since i made it private , but wanted t o add a very small part here ,that is now one of the +115 scripts I created from scratch ( Co pilot created , i just gave instructions, ). All working in unity , the engine , and in cohesion , no errors , no warnings, just a nice flowing code base.
🧬 Merged PlayerStats Class
(Survival + Identity + Gear + Medical)
csharp
using UnityEngine;
using System.Collections.Generic;
namespace Game.Player
{
public class PlayerStats : MonoBehaviour
{
public static PlayerStats Instance;
// 🔹 Survival Stats
[Header("Survival Stats")]
public float Hydration = 100f;
public float Hunger = 100f;
public float Health = 100f;
public float Stamina = 100f;
[Header("Stat Limits")]
public float maxHydration = 100f;
public float maxHunger = 100f;
public float maxHealth = 100f;
public float maxStamina = 100f;
public float minStatValue = 0f;
// 🔹 Core RPG Stats
[Header("Core RPG Stats")]
public int currentHP;
public int maxHP;
public int stamina;
// 🔹 Identity
[Header("Identity")]
public string playerName;
public string gender;
public int age;
// 🔹 Medical
[Header("Medical")]
public string bloodType;
public List<string> conditions = new List<string>();
// 🔹 Inventory & Gear
[Header("Inventory & Gear")]
public List<ItemData> equippedGear = new List<ItemData>();
public List<ItemData> inventoryItems = new List<ItemData>();
private void Awake()
{
if (Instance == null) Instance = this;
else Destroy(gameObject);
}
// 🔻 Survival Reduction Methods
public void ReduceHydration(float amount) =>
Hydration = Mathf.Clamp(Hydration - amount, minStatValue, maxHydration);
public void ReduceHunger(float amount) =>
Hunger = Mathf.Clamp(Hunger - amount, minStatValue, maxHunger);
public void ReduceHealth(float amount) =>
Health = Mathf.Clamp(Health - amount, minStatValue, maxHealth);
public void ReduceStamina(float amount) =>
Stamina = Mathf.Clamp(Stamina - amount, minStatValue, maxStamina);
// 🔼 Survival Restoration Methods
public void RestoreHydration(float amount) =>
Hydration = Mathf.Clamp(Hydration + amount, minStatValue, maxHydration);
public void RestoreHunger(float amount) =>
Hunger = Mathf.Clamp(Hunger + amount, minStatValue, maxHunger);
public void RestoreHealth(float amount) =>
Health = Mathf.Clamp(Health + amount, minStatValue, maxHealth);
public void RestoreStamina(float amount) =>
Stamina = Mathf.Clamp(Stamina + amount, minStatValue, maxStamina);
// 🔧 RPG Stat Setup
public void SetStats(int hp, int staminaValue)
{
maxHP = hp;
currentHP = hp;
stamina = staminaValue;
Debug.Log($"Stats set: HP={hp}, Stamina={staminaValue}");
}
// 🧑 Identity Setup
public void SetIdentity(string name, string genderValue, int ageValue)
{
playerName = name;
gender = genderValue;
age = ageValue;
Debug.Log($"Identity set: {name}, {genderValue}, Age {ageValue}");
}
// 🩸 Medical Setup
public void SetMedical(string blood, List<string> startingConditions)
{
bloodType = blood;
conditions = new List<string>(startingConditions);
Debug.Log($"Medical set: Blood={blood}, Conditions={string.Join(", ", conditions)}");
}
// 🛡️ Gear Equip
public void EquipGear(List<ItemData> gear)
{
equippedGear = new List<ItemData>(gear);
foreach (var item in gear)
{
Debug.Log($"Equipped: {item.displayName} ({item.itemID})");
}
}
// 🎒 Inventory Load
public void LoadInventory(List<ItemData> items)
{
inventoryItems = new List<ItemData>(items);
foreach (var item in items)
{
Debug.Log($"Inventory item added: {item.displayName} ({item.itemID})");
}
}
// 🧪 Gear Slot Validation
public void ValidateGearSlots(List<ItemData> gear)
{
foreach (var item in gear)
{
Debug.Log($"Validating slot: {item.equipSlot} for {item.itemID}");
}
}
}
}
🧼 Cleanup Checklist
✅ Delete or rename the old duplicate PlayerStats.cs files
✅ Update references to use Game.Player.PlayerStats if needed
✅ Consider splitting survival logic into a separate SurvivalStats component later if modularity demands it
“Nothing is finalised, and already there are some minor name conflicts and discrepancies.” These will be looked at and fixed very shortly for more full backend completion.
📜 Dev Entry — August 23, 2025
The Alignment Ritual – Sevenfold Completion Phase: Schema Consolidation & CSV Preparation
Mood: Triumphant, precise, and quietly proud
🔧 Summary
After weeks of slot drift, legacy naming, and fractured gear logic across multiple factions, the schema ritual has reached its seventh seal. All seven gear archives—Military, Medieval, Police, Civilian, Tactical, Underwater, Forensics—have now been fully aligned to the strict EquipSlot taxonomy:
plaintext
Head, Eyewear, Face, Neck, Torso_Inner, Torso_Outer, Vest, Legs, Belt, Wrist, Feet_Outer, Feet_Inner, Backpack, Gloves
Each JSON block has been:
✅ Slot-normalized (no legacy names like “Chest_Outer” or “Waist” remain)
✅ Deduplicated and modularized
✅ Wrapped in { "SlotName": [ ... ] } format
✅ Prepped for CSV conversion with clean field discipline
📁 Archives Aligned
Archive Blocks Status
Military 14 ✅ Complete
Medieval 14 ✅ Complete
Police 14 ✅ Complete
Civilian 14 ✅ Complete
Hunting & Fishing 14 ✅ Complete
Medical 14 ✅ Complete
Firefighter 14 ✅ Complete
“The JSONs no longer whisper chaos. They speak in slots.”
📊 CSV Conversion Prep
Field headers unified across archives:
plaintext
ItemID, DisplayName, EquipSlot, ThermalValue, ArmorValue, Weight, Durability, ConditionState, IsWaterproof, SlotSize, InventorySlotsProvided, MaterialType, Tags, CompatibleAttachments, LoreTag, RarityWeight
Multi-slot items (e.g. wetsuits, suits, rebreathers) split into valid slot blocks to preserve modularity and avoid schema corruption.
🧠 Progress Reflections
Legacy slot names fully purged across all gear types.
Multi-slot logic respects EquipSlot taxonomy without inference.
Every item is CSV-ready, lore-tagged, and modular.
“Backend clarity achieved. Emotional continuity preserved.” “This isn’t just data cleanup. It’s backend myth-making.”
Glitched scene fixed and removed so it no longer spawns itself upon deletion, 2 Characters created for runtime , with complete scene setup , next step to add another 4 or so characters to choose from, maybe add some hidden/unlockable character along with unlock requirements or hints .
CSV files created and working in spreadsheet, saved in game file documents for easier viewing and comparison.
The game is no longer just a empty title screen , still no gameplay , nothing more than the title scene , dev test scene , bootstrap loader scene, a credits panel , a character select scene and a empty main scene, but the progress is happening, slowly but surely. Code all working , json all working , waiting for the huge onslaught of errors that will surely appear any second now and kick me in the digital ballz.
Top comments (0)