The "Deep" aspect of the Malevolent Planet methodology emerges on Day 2. Instead of hard-coding dialogue or planet events into C# if/else statements, the architecture shifts toward Data-Driven Design.
To maintain state between scene loads (e.g., moving from a Menu to the Planet Surface), the tutorial utilizes the Singleton pattern. Code Analysis:
public class GameManager : MonoBehaviour public static GameManager Instance;void Awake() if (Instance != null && Instance != this) Destroy(this.gameObject); else Instance = this; DontDestroyOnLoad(this.gameObject);
Critique: While this violates strict SOLID principles (specifically Dependency Inversion), it is the industry standard for rapid prototyping in Unity. It allows "Day 1" scripts to access global variables (like PlayerHealth or CurrentDay) without complex dependency injection.
A. Player takes damage immediately
B. Resources not spawning
// Example correct spawn for Day 1
if (day == 1 && !resourceSpawned)
Instantiate(woodPrefab, spawnPoint.position, Quaternion.identity);
resourceSpawned = true;
C. Day counter resetting to Day 1
Check your game for these typical issues across days 1–3:
| Bug | Public fix applied in builds |
|-----|-------------------------------|
| Invalid day transition at midnight | Use System.DateTime or a float timer, not frame‑count based |
| Resources disappear overnight | Save resource list in List<GameObject> and repopulate on day change |
| Player double‑jumps on Day 2 | Reset jump count in OnLand() and check ground layer mask |
| Enemy health bars show Day 1 values | Update UI in OnEnable() of health script | malevolent planet unity2d day1 to day3 public fixed
Originally, The Lithovore spawned directly on the player’s position, leading to instant death. Now, it emerges from a designated fissure 20 units away, giving you 8 seconds to prepare.
Lithovore Stats (Unity 2D Inspector Values):