최근 팀 프로젝트를 진행하면서 GitHub 저장소의 Git LFS 대역폭 초과로 인해 심각한 문제가 발생했다.이 문제는 개발 흐름을 중단시킬 만큼 치명적이었고, 자체 Git 서버(Gitea) 구축으로 문제를 해결했다..이 글에서는 장애가 어떻게 발생했고, 어떤 대처를 했으며, 향후 어떻게 컨트롤할지를 기록해둔다.문제 설명한달이라는 짧은 기간의 프로젝트 진행 중 2주차…즉, 절반을 지나가던 시점 새벽에 문제가 발생했다. 내가 작업한 브랜치를 병합한 뒤 Main 브랜치에 체크아웃하여 결과를 확인하고 후속 작업을 하기 위해 Main 브렌치를 Pull 받는 과정에서 LFS로 관리되는 애셋들이 올바르게 표시되지 않는 문제가 발생하면서 발견했다. 이를 뒤늦게 파악한 우리는 병합한 내용을 확인하기 위해 Main 브랜..
몬스터가 플레이어를 추적하는 기능을 구현하는 중 Nav Agent가 회전이 너무 굼뜬 문제가 있었다.몬스터가 이동 중에 회전해야하는 경우라면 그럭저럭 봐줄만한 수준이지만, 플레이어가 바짝 붙어 있는 경우에는 회전이 너무 굼떠서 문제가 된다. 그렇다고 뒤로 칼을 휘두를 수도 없다. 그러니 몬스터 입장에선 플레이어가 엉덩이에 바짝 붙어서 뒤만 잡으면 아무런 피해도 입지 않고 손쉽게 전투가 진행될 수 있다.따라서 플레이어와 거리에 따라 회전 속도를 제어해야한다.해결책 1. Nav Agent의 회전 속도를 동적으로 제어해본다.기존에는 이동 속도만 제어하고 있었는데 여기에 Agent.angularSpeed를 제어하는 코드를 추가하면 된다.이상적인 수치는 아직 모르기 때문에 적당히 아무 숫자를 넣어서 처리했다.fl..
Minimax 알고리즘이 뭐에요?Minimax는 두 플레이어가 번갈아 가며 수를 두는 게임에서 많이 사용되는 알고리즘이다.AI는 최대한 좋은 선택을 하려하고 (Maximizer)상대방은 AI에게 최대한 불리한 선택을 하려고 한다 (Minimizer)이 때 가능한 모든 경우의 수를 탐색해서 최적의 수를 결정하는 방식이다.모든 경우의 수를 내다 보고 가장 높은 점수가 나온 수를 고르는 방식으로 복잡한 게임일수록 계산하는데 오래걸릴 수 있음!Tic-Tac-Toe로 알아보는 Minimax 알고리즘깊이 우선 탐색을 수행하며 끝까지 탐색한 뒤 결과에 따라 점수를 부여한다.즉, 발생할 수 있는 모든 경우의 수를 탐색한 뒤 결과에 점수를 부여해서 가장 높은 점수를 획득하는 수를 두는 방식이다. 모든 경우의 수를 탐색하..
Unity 프로젝트에서 메인 화면에서 게임 모드를 선택해 씬을 전환할 때, 이전 게임 상태가 유지되어 예상치 못한 동작이 발생하는 문제가 있었습니다.이번 포스팅에서는 그 원인과 해결 방법을 공유합니다.🚨 문제 상황메인 화면에서 싱글 플레이를 선택 후 게임을 진행한다.게임을 끝내거나 중간에 종료해 다시 메인 화면으로 이동한다.2인 플레이(Co-Op)를 선택하면 AI가 수를 두는 문제가 발생한다.👀 즉, 게임 모드를 변경했음에도 이전 상태가 유지되는 문제!✍ 기존 코드// ... public enum GameType { SinglePlayer, CoOpPlayer } private GameType currentGameTypeState; public void ChangeToGameScene(GameT..