내일배움캠프 TIL

내일배움캠프 60일차 TIL "데이터 로드시 버그 수정"

Jooglorystar 2024. 12. 11. 20:55

 

 

타일 데이터 세이브와 로드를 하며, 간헐적으로 나타나는 증상이 있었다.

 

게임을 종료하고, 다시 플레이를 할 때, 데이터가 제대로 불러와진 경우, 전날 물을 줬어도 땅이 다시 마른 상태가 됐어야 했지만, 가끔씩 물을 준 상태가 제대로 초기화되지 않는 현상이 있었다.

어떤 경우에는 제대로 로드되고, 어떤 경우는 제대로 로드되지 않아, 원인을 찾기 힘든 버그였다.

 

정확한 원인을 찾은건 아니지만, 가장 확률이 높았던 원인으로는, 씬의 타일 데이터를 저장하던 문제였다.

 

private void SaveCurrentSceneData()
{
    GameManager.Instance.TilemapM?.SaveTileData();
}

private void RestoreSceneData()
{
    GameManager.Instance.TilemapM?.LoadTileData();
}

 

씬에서 이동할 때, 해당 씬의 타일 데이터를 저장하고, 로드하는 로직이 있었다.

 

 

 

게임에서는 게임 플레이시 사라지지 않아야 할 것을 InGame Scene에서 관리하고, 농장, 마을, 등등의 장소들은 별개의 씬으로 관리를 했다. 즉 게임을 처음 실행할 때, 두 개의 씬이 로드된다.

 

문제점은 실행시 타일 데이터를 생성하는 것은 Farm Scene이 아닌 InGame Scene의 타일 데이터가 생성되었다.

그리고 씬을 이동하면서, 다른씬에서 Farm Scene으로 복귀를 하고, 다시 다른 Scene으로 이동하면 그때 Farm Scene의 타일 데이터가 생성되었다.

따로 데이터가 로드될 때, 타일이 다시 그려지는 것과, 이 데이터의 저장, 로드 과정에서 뭔가 혼선이 있어 버그가 나타나는 것이라고 판단했다.

 

씬 이동시 각 씬의 타일 정보를 저장하던 이유는 그때는 TilemapManager가 각 Scene에 있었기에 다시 저장하고 로드하는 기능이 필요했지만, TilemapManager가 InGame Scene으로 이동한 이상, 해당 기능은 현재로서는 불필요하다고 판단되었다.

 

실제로 해당 기능을 하는 코드를 주석처리한 결과, 타일 데이터의 저장, 로드도 따로 문제가 없었으며, 처음 발견 했던 버그 현상도 나타나지 않았다.