본문 바로가기
게임/스타크래프트2

스타크래프트 2 협동전 맵 천상의 쟁탈전 게임 끝날 때 버그

by minchel1128 2022. 1. 6.

스타크래프트 2의 협동전 맵 중 천상의 쟁탈전 클리어할 때 광역기 시전 시 동맹 유닛이 죽는 버그가 있습니다.

게임하면서 이벤트 성으로 게임 클리어할 때 안 쓴 패널 스킬을 시전 하는 경우가 있는데 광역기를 시전 하는 경우 같이 있던 아군 유닛이 언젠가부터 죽는 현상이 있어 맵을 뜯어보고 알게 되었는데 해당 버그의 원인은 다음과 같습니다.

해당 부분은 게임 클리어 때 실행되는 트리거입니다.

여기서 빨간 상자로 쳐진 부분이 중요한데 지역변수 PlayerIterOuter와 PlayerIterInner는 각각 플레이어 1과 플레이어 2를 의미하게 됩니다. 다만 해당 변수들에 플레이어 1과 플레이어 2로 설정하는 부분은 따로 없지만 박스 안에 있는 해당 레이블에 대한 설명으로 '정수 값을 사용하여 For 반복문을 실행합니다. 지정된 플레이어 그룹 내 모든 플레이어에게 "For 문 (플레이어 그룹의 각 플레이어)" 행동에 포함된 행동 모음을 실행합니다.'라는 설명이 있어 여기서 모든 플레이어들을 지역변수에 할당하며 지역변수 2개에 각각 플레이어들을 할당하고 따라서 모든 플레이어는 서로를 중립상태로 다루게 됩니다. 이에 따라 플레이어인 플레이어 1과 플레이어 2, 아몬의 병력인 플레이어 3과 플레이어 4가 모두 서로 중립 상태에 들어가 공격을 하지 않는 상태로 들어가게 됩니다.

그리고 협동전의 스킬들은 대부분 공격 피해가 들어가는 대상으로 중립, 적인 경우로 제한하는 태그를 가지고 있어 해당 스킬을 시전 하는 유닛의 중립상태 또는 적 상태의 플레이어 유닛 또는 건물에 공격이 들어가게 설정되어 있으며 패널 스킬 또한 같은 방식으로 동작합니다.

따라서 게임 클리어 시 아군이 동맹 상태에서 중립상태로 바뀌게 되고 중립상태는 공격 피해가 들어가므로 공격 스킬 사용 시 아군 유닛이 죽는 버그가 발생하게 됩니다.

참고로 해당 맵의 원본 맵인 공허의 유산 승천의 사원 맵에서는 해당 코드가 없는 것을 알 수 있습니다.

게임 승리 트리거 앞에 시작하는 게임 시네마틱 영상 직전 수행되는 트리거로서 게임에서 모든 플레이어의 각 유닛을 제거하기로 서로 중립으로 되거나 하는 트리거가 없음을 알 수 있습니다.

따라서 원본 맵을 수정 하여 협동전 맵을 만들 때 알 수 없는 이유로 모든 플레이어를 서로 중립으로 설정하는 코드가 들어갔고 이에 따라 아군이 광역기에 죽는 버그가 발생했다는 것을 알 수 있습니다.

728x90
반응형