Cyberpunk survival strategy game Build the system. Watch it run. Survive the night.
LAST KERNEL is a hybrid system-driven game combining:
- Card-based colony simulation (day phase)
- Auto-battler defense (night phase)
You don't control units directly. You design a system that either holds — or collapses.
Start Run
↓
Day Phase (pauseable)
↓
Gather → Combine → Build → Assign
↓
Prepare defenses
↓
Night Phase (auto combat)
↓
Resolve outcome
↓
Repeat (increasing difficulty)
Everything is a card:
- Resources (scrap, energy, food)
- Units (workers, defenders)
- Structures (generators, labs, defenses)
Cards interact through stacking:
- Worker + Resource → production
- Resource + Structure → crafting
- Unit + Equipment → upgrades
You are building a self-sustaining system, not just placing objects.
At night, the system runs on its own:
- Units auto-fight
- Defenses trigger
- Buffs and modifiers apply
Combat is real-time, deterministic, and hands-off. Your preparation determines the outcome.
Assets/
├── _Project/
│ ├── Scripts/
│ │ ├── Runtime/ ← assembly: _Project.Runtime
│ │ │ ├── Core/ (GameDirector, RunStateManager, SaveSystem, DayCycleManager, Board)
│ │ │ ├── Cards/ (CardInstance, CardManager, CardView, CardStack, Definitions)
│ │ │ ├── Combat/ (CombatManager, CombatRules, Encounter)
│ │ │ ├── Crafting/ (recipe matching, output resolution)
│ │ │ ├── Defense/ (defense placement, trigger logic)
│ │ │ ├── Input/ (New Input System wrappers)
│ │ │ ├── Localization/ (key-based runtime switching, EN/CN)
│ │ │ ├── Night/ (night phase orchestration)
│ │ │ ├── Packs/ (PackDefinition, PackSlot, PackInstance)
│ │ │ ├── Quests/ (Quest, QuestInstance, QuestManager)
│ │ │ ├── Trading/ (market / trading logic)
│ │ │ ├── Audio/ (AudioManager, SFX, music)
│ │ │ └── UI/ (HUD, panels, menus, UIEventBus)
│ │ └── Editor/ ← assembly: _Project.Editor
│ │ (validators, custom inspectors, dev tools)
│ ├── Art/
│ ├── Audio/
│ ├── Data/ (ScriptableObject assets)
│ ├── Docs/
│ └── Scenes/
│ ├── Boot.unity
│ ├── MainMenu.unity
│ ├── Game.unity
│ └── Island.unity
└── ThirdParty/
All gameplay entities are cards defined as CardDefinition ScriptableObjects.
CardDefinition
├── ID (string)
├── Type (Resource / Unit / Structure / …)
├── Tags
├── Stats
└── Localization Key
Runtime state lives in CardInstance. Visual presentation is handled by CardView.
Cards are distributed through packs (PackDefinition).
Each pack has weighted PackEntry slots that resolve to card draws at runtime.
Input Cards → Match RecipeDefinition → Output Cards
Matching is tag and type aware. Output is resolved by the crafting service, not by UI.
RunStateManager tracks the live run state:
- Resources and stockpiles
- Population and morale
- Day count and difficulty scaling
- Progression flags
CombatManager runs a tick-based, deterministic simulation:
- Independent from UI
- Encounter definitions drive enemy waves
HitResultcarries per-tick outcome data
QuestManager owns active QuestInstance objects.
Quests are defined as Quest ScriptableObjects and evaluated against run-state conditions.
Key-based, runtime-switchable. Supports English and Simplified Chinese. All UI text goes through localization keys — no hardcoded strings.
Managed through AudioManager. SFX and music are separate concerns.
DOTween is used for all audio fades and transitions.
Event-driven via UIEventBus / UIEventBusBridge.
Screens: DayHUD, NightHUD, PauseMenu, VictoryPanel, DefeatPanel, InfoPanel, ModalWindow.
Safe-area aware (SafeAreaAnchor) for mobile.
| Layer | Responsibility |
|---|---|
ScriptableObject |
Data only — no logic |
| Service / plain C# | Game logic |
MonoBehaviour |
View, input, presentation |
| Editor scripts | Validation, automation, dev tools |
- DOTween is the only tween system. Always
.SetLink(gameObject). - No singleton coupling between systems where avoidable.
- Namespace:
Markyu.LastKernel
| Tool | Purpose |
|---|---|
| Unity 6000.4.3f1 | Engine (URP 2D) |
| C# | All game logic |
| Unity Localization | EN / CN text |
| Addressables | Asset loading |
| New Input System | Mouse + touch input |
| DOTween | All animations and tweens |
| Odin Inspector | Editor UI and validation |
Requirements: Unity 6000.4.x, Git
git clone https://github.com/zhenxiao-yu/LAST_KERNEL.gitOpen in Unity Hub → Add Project → Select folder.
Open Assets/_Project/Scenes/Boot.unity and press Play.
The boot scene auto-loads into MainMenu → Game.
After structural changes, run:
Tools → LAST KERNEL → Validate Project
This checks for missing references, duplicate IDs, and invalid data.
- More cards and synergies
- Enemy scaling and difficulty curves
- Events system
- Meta progression (unlocks, runs)
- Mobile polish (touch, safe area, performance)
- Full UI pass
Zhenxiao (Mark) Yu