게임 버그와 예외 규칙
게임은 컴퓨터 프로그램으로서,
어쩔 수 없이 버그를 가지거나
버그가 있을 가능성을 내포하고
있다.
게임에 발생하는 버그는 개발자가
코딩을 할 때 논리의 허점이 있거나,
기획자가 만든 규칙에 논리의
허점이 있을 때 발생한다.
기획자가 야기한 게임 버그에
대한 부분은
규칙의 논리를 바로 잡는 것으로
고칠 수 있으며,
이 작업은 5장 앞부분, '규칙의
검토 및 개선'에서 설명한 내용으로
처리할 수 있다.
그렇다면 개발자가 만든 버그는
개발자의 영역인가?
안타깝게도 그렇다.
개발자의 작업물인 소스 코드에
심어지는 버그의 원인을
기획자가 어떻게 할 수 있는
방법은 없다.
하지만 기획자가 버그의 원인을
발견하고 처리하지는 못할지라도,
버그의 결과를 완화시킬 수는
있다.
즉, 어떤 원인인지는 몰라도
그로 인해 버그가 발생하였을 때,
그 결과 발생한 문제의 심각성을
줄이는 것이다.
이 방법은 정상적인 시스템
동작원리를 '예외' 상황으로
처리하는 것이다.
MMORPG에서 레벨(맵) 시스템을
기획할 때를 가정해보자.
레벨의 크기를 무한하게 잡을
수 없기 때문에,
캐릭터가 통과할 수 없는 맵
오브젝트들을 배치하는 등의
작업을 통해
캐릭터가 갈 수 있는 지역을
만들게 된다.
그렇다면 캐릭터가 갈 수 있는
지역이 아닌 곳으로 가면 어떻게
해야 하는가?
시스템이 100% 완벽하다면
이런 상황을 고려할 필요가 없다.
하지만 게임에서 100% 완벽함을
보장하기란 어려우며,
레벨 시스템에서 저런 상황은
이따금 나오곤 한다.
맵 오브젝트를 구현한 소스 코드에
버그가 있을 수도 있고,
맵 오브젝트를 뚫고 지나간
캐릭터를 구현한 소스 코드에
버그가 있을 수도 있다.
기획자가 이 버그의 원인을
알아내고 수정하는 것은
불가능하다.
하지만 어떤 원인이 작용했든,
그 결과인 '있어서 안 되는 위치에
캐릭터가 존재하는 상황'에 대한
규칙을 만들 수는 있다.
즉, 일반적인 경우가 아닌 버그가
발생했을 때의 상황을 위한 예외
규칙을 만들 수 있다.
예외 규칙 작성에 대해 계속
말하자면,
이제 해야 할 일은 '버그'라는
예외 상황을 원인으로 두고
상황이 발생했을 때의 문제를
해결하기 위한 규칙을 작성하는
것이다.
앞의 예시 상황을 해결하는
방법으로 일단 떠오르는 것으로,
'해당 캐릭터를 가장 가까운
유효한 지점'으로 보내는 것을
들 수 있겠다.
이 해결책을 가지고 예외 규칙을
만들어 보겠다.
- 만약 비정상적인 상황이 발생해서 캐릭터가 유효하지 않은 위치에 있을 경우,
그 캐릭터로부터 가장 가까운 유효한 위치로 순간이동 시킨다.
이 예외 규칙이 있으면,
버그로 인해 캐릭터가 유효하지
않은 곳으로 가게 되더라도 바로
잡을 수 있다.
물론 버그를 수정하기 전까지는
계속 이 상황이 발생하겠지만,
버그를 수정하는 것은 기획자의 영역이 아니다.
적어도 유저가 게임을 다시
진행할 수는 있게 될 것이다.
자, 이제 치명적인 문제는
어느정도 피해간 것일까?
안타깝게도 아니다.
비정상적인 상황인 것을 알
수만 있으면
저 규칙을 가지고도 충분하다.
하지만 비정상적인 상황이
발생했는지 '언제' 알 수
있을지를 모른다.
즉 정상적인 상황으로 돌릴
방법을 알고 있더라도
비정상적인 상황인지 모르는
상태다.
따라서 비정상적인 상황인지를
검사하는 내용이 추가 되야 한다.
항상 모든 캐릭터의 위치를
검사할 수도 있고,
아니면 유저가 신고를 했을
때를 기준으로 검사를 할
수도 있다.
이제 비정상적인 상황인 것을
검사하는 시점에 대한 내용을
추가해보겠다.
- 만약 비정상적인 상황이 발생해서 캐릭터가 유효하지 않은 위치에 있을 경우,
그 캐릭터로부터 가장 가까운 유효한 위치로 순간이동시킨다. - 모든 캐릭터는 독립적으로 2분에 한 번씩 위치 유효성을 검사한다.
- PC의 경우에는 접속 시 자신의 유효성을 검사한다.
기존의 레벨 시스템에 위의
예외 규칙을 더해서 구현된다면,
아까 우려했던 상황이
발생했을 때
자동적으로 문제를 완화할
수 있다.
이런 식으로 시스템 안정과
문제 해결을 위해
예외 규칙을 작성할 수 있음을
알아두자.
마지막으로 첨언하자면,
시스템의 동작 원리나 규칙을
작성할 때는
항상 비정상적인 상황에 대한
가정과
그에 대한 해결책을 생각해
보는 것이 좋다.
그런 예외 규칙이 미리 잘
작성되어 있을수록 시스템의
완성도가 올라가며,
각종 버그로 인한 상황을
처리하는데 도움을 주기에
게임의 안정성에 큰 도움을
준다.
참고 및 출처
|