뭐 거창한 것은 아니구요. 흔하게 사용할 법한 아이디어인데 혹시나 해서 글올려 봅니다.
강의로 까지 갈만한 것은 아니라서 그냥 잡담게시판에 올리네요.
보통 게임 스토리 진행 이벤트를 할 때 스위치를 많이 쓰잖아요?
예를 들면 npc에게 어느 던전에 들어가서 보석을 구해와라고 했을 때, 퀘스트를 받기 전 경우, 보석을 구했을 때의 경우 등등을 조건분기 처리 또는 출현 조건에서 셀프스위치 또는 그냥 스위치를 on또는 off하는 방식으로 진행시킬 텐데 저는 '변수'를 사용하는 방식을 씁니다.
변수 하나를 지정해서 이름을 '스토리 진행도'라고 붙이구요, 위 예시를 다시 가져오면
npc에게 퀘스트를 받기 전에는 3이었다고 칩시다. 그 다음 던전에서 보석을 구하면 4를 대입하고 npc 새 페이지 출현 조건으로 "변수 '스토리진행도'가 4이상일 때"로 합니다. 퀘스트 완료시 5를 대입하고 npc에게 또 '스토리진행도'가 5 이상일 경우로 새로운 페이지를 만드는 거죠.
설명을 잘 했는지 모르겠는데..
이 방법의 이점은 바로 스위치 절약입니다. 또한 조건분기 처리 량의 감소등이 있겠네요.
먼저 그냥 스위치를 사용하던 방법의 경우 어마어마한 스위치 수가 스토리 진행에 사용됩니다. 보통의 경우 신경쓸 요인은 아니지만, 복잡한 시스템이나 액알 등을 사용할 경우 사용 가능한 스위치 수가 많이 남을 수록 좋죠.
또한 셀프스위치를 사용하던 방법 보다 이점은 바로 조건분기 처리 량의 감소입니다. 무슨말이냐 하면.. 위 예시의 경우는 npc에게만 '보석'소지수가 1이상 일때 등등의 조건분기를 넣어 주면 되지만 보석을 얻으므로써 다른 이벤트와도 연계되는 경우 각 이벤트 마다 일일이 조건분기를 다 만들어줘야 합니다. 셀프 스위치는 단일 이벤트 각각에게만 적용되기 때문이죠. 조건 자체가 많은 경우 특히 귀찮습니다. 모든 조건을 각각의 이벤트 마다 일일이 다 적어줘야 하죠. 수를 사용하면, 딱 한번만 조건분기처리로 변수를 조작하고 나면 다른 이벤트 모두를 변수 하나만 조건분기 시키면 되는 겁니다.(이 점은 그냥 스위치과 동일합니다만 앞서 말했듯이 모든 스토리를 스위치로 진행시킨다면 어마어마한 양의 스위치가 필요하죠.)
변수는 최대 99999999까지 대입이 가능 하므로 게임 내의 모든 스토리 진행 상황을 반영시킬수 있다고 봅니다.
특정 분기에서 갈라지는 다중 엔딩의 경우도 아래와 처럼 변수 구간을 분배해서 배치할 수 있습니다.
엔딩1은 그냥 1부터 100까지 쭉 진행시킨 상황이고 엔딩2의 경우 진행도가 50일 때, 어떤 상황에 따라 바로 101로 진행도를 넘기고 쭉 150까지 진행시킵니다. 또 다른경우, 바로 151로 넘겨서 200까지 진행시켜 엔딩3을 연출할 수 있구요.
위에서 언급했듯이, 과장을 보태자면 변수 하나에는 최대 1억까지의 상황을 담을 수 있습니다.(0부터 99999999)
물론 이 경우는 정해진 스토리가 딱 하나밖에 없을 경우지만요.. 하여튼 많은 상황을 변수로 반영시킬 수 있다는 것에는 틀림 없는 사실이죠.
그냥 제가 제작하는 게임에는 이 방법이 유용해서 쓰고 있습니다.
물론 큰 메인 스토리가 아닌 작은 퀘스트, 소규모 이벤트의 경우 셀프스위치를 사용하는 것이 더 좋죠. 일일이 모든 경우를 변수에 반영시킬 만큼 사람의 기억력이 좋지도 않고 기록을 한다 해도 일일이 다시 찾기도 귀찮을 테니..
게임마다 필요한 방식이 다 다르니 그냥 이런 방법도 있다는 말을 하고 싶었습니다.ㅎㅎ