public static void Sandbox() { var entity = new Entity(); entity.AddComponent(new CharacterAttributes()); entity.GetComponent <CharacterAttributes>().Strength = 15; Console.WriteLine($"Old entity Strength: {entity.GetComponent<CharacterAttributes>().Strength}"); var options = new JsonSerializerOptions { WriteIndented = true }; IFile file = new File("new_serialization.json"); string json = JsonSerializer.Serialize(entity.GetObjectState(), options); file.WriteString(json); var state = JsonSerializer.Deserialize <SerializationState>(file.ReadString(), options) !; var newEntity = state.Instantiate <Entity>(); Console.WriteLine($"New entity Strength: {newEntity.GetComponent<CharacterAttributes>().Strength}"); var movementResult = MovementSystem.ExecuteMovement(entity, 10, 25); Console.WriteLine($"Succeeded in movement?: {movementResult}"); }