이 란의 모~~~든 내용은 지.극.히. 주.관.적. 이며 전혀 객관적인 자료가 없음을 밝힙니다.
따라서 전체 기각 이여도 전혀 지장이 없습니다.^^
필체는 서적 번역투??ㅎㅎ
세균 키우기..... 이른바 '실시간 멀티 온라인 게임' 이다. 이걸 만들기로 결정하는 순간 우리는 커다란 문제에 직면하였다! ;;ㅁ;;
첫째 '실시간'이다. 실시간으로 돌아가는 프로그램은 커다란 제약을 가지게 된다. 무엇보다 '슈퍼 울트라 복잡한 연산을 해서는 안된다.'는 것이다. 맵이 너무나도 큰 나머지, 또는 맵을 검색하는 알고리즘이 너무 자세한 나머지 "왼쪽 끝에서 오른쪽 끝까지 이동하도록 명령하니 1분동안 길을 찾느라 멈추었어요." 라는 소리를 들어서는 안된다. 물런 이런 과장된 일은 없겠지만, 실시간으로 진행되는 만큼 끊김없이 느껴질 수 있는 부드러운 연산이 가능해야 한다는 것이다. 더욱이 멀티플레이인 만큼 이 문제는 더욱더 중요해 진다. 플레이어 1이 복잡한 연산을 수행시켜버렸다고 해서 플레이어2까지도 버벅되서는 조금 곤란해 진다. 이러한 문제를 감안해서 어떻게든 연산을 빠르게 만들어야 한다.
또한 실시간이라는 점은 사용자가 접속하지 않아도 돌아가는 것을 의미한다. 사용자가 하루, 이틀 쉬었다가 접속하였을때 플레이어의 바이러스들이 전부 죽어있는 광경을 연출해서는 안된다. 그렇기 때문에 바이러스들은 플레이어가 없어도 꿋꿋하게 살아나갈 수 있는 인공지능을 가지고 있어야 한다.
둘째 '온라인 멀티'플레이이다. 한명의 사용자가 접속해서 사용하는 것이 아니기 때문에 여러명이 접속해서 사용하게 된다. 그러한 만큼 여러 플레이어가 행동을 한다는 것을 염두에 두어야 한다. 한명 한명에게는 적절한 난이도이지만, 협동을 하니 난이도가 대폭 하락해서 금새 이길 수 있었다 라던가 하는 이야기가 나와서는 안된다.
이 문제는 위의 '실시간'이라는 점과도 연계가 된다. 다른 플레이어들이 잠자러 간사이... 올빼미족의 한 플레이어가 나타나서 전 플레이어의 바이러스를 사살해 버리고 도망가 버린다거나, 타 플레이어의 바이러스를 포위해 버려서 더이상 증식이 불가능하게 만드는 난처한 상황이 발생해서도 안된다. 물런 '상대방의 바이러스를 사살할 수 있다.' 와 같은 규칙은 정해진 바 없지만, 다른 플레이어가 자리를 비웠을때 한 플레이어가 다른플레이어의 캐릭터에게 영향을 미칠 수 있다는 점도 고려를 해야한다.
셋째 '게임' 이다. 게임은 무엇보다도 재미가 있어야 한다. 이것이 어떻게 보면 가장 큰 난제라고도 할 수 있다. 이게 쉽다면 그 많은 게임들이 도데체 왜 사장되었겠는가... 우리
의 게임도 이런 길을 걷지 않도록 노력은 해보아야 할것이다. 실시간이라고 해서 강한 인공지능을 부여했더니 몇년동안 자리를 비워도 꿋꿋하게 성장해서도 안된다. 또 규칙이 단순해서 오늘은 '성장' 내일은 '정지' 이런식으로 반복하면 수학적으로 최적화된 성장 알고리즘이 나온다. 와 같이 되면 재미가 없어질 것이다.
- 빠르고 단순한 연산이어야 한다. 그러면서도
B. 높은 AI를 가지고 있어야 한다. 또
C. 너무 AI가 좋아서 플레이어가 할게 없어서도 안된다.
D. 난이도가 쉬워서도 안된다. 그렇다고
E. 너무 어려워서도 안된다.
F. 어느정도 돌발적인 상황이 있어야 한다.
G. 너무 돌발적이어서 플레이어가 적응하지 못해서도 안된다.
H. 다른 플레이어와 연계가 있어서 즐겁게 진행할 수 있어야 한다. 하지만
- 연계가 너무 심해서 타인의 플레이를 쉽게 방해할 수 있어서도 안된다.
대충.. 이정도인 것이다. 뭐 충분히 더 있을수도 있겠지만.. 이정도만 보아도 쉽게 만들 수 없다는것은 눈에 보인다. ....OTL..
이런 험난한 상황을 해결할 비책이.... 아쉽게도 나에게는 없다.
그렇지만 몇가지 아이디어는 내어 볼 수 있다. 그래서 요 며칠간 짬짬이 생각한 아이디어를 서술해 보겠다. 많이 부실해도 예쁘게 봐주고 보충해 주면 좋겠다.
위의 조건들과
J. 생물학적인 사람들이 플레이를 즐겨 해야하며, 그렇다고 너무 심오해서
K. 일반인이 플레이를 못할 정도가 아니어야 한다는 점을 대강 고려해서 만든 규칙은..
- 자신의 모든 바이러스는 AI를 가지고 있다. (B)
- 이 바이러스들은 자신의 염기서열(이하 DNA)을 바탕으로 AI를 구성하여 움직이고, 분열하고, 다른 세포에 침투한다. (J)
- 바이러스를 잡는 면역체계AI(이하 백혈구)가 존재한다. (D)
- 백혈구는 각 인간의 고유한 DNA의 일부를 통해서 적, 아 를 구분한다. (J)
- 백혈구의 일부는 유전자 알고리즘을 통해 바이러스를 잘 잡도록 진화한다. (D)
(이는 플레이에 잘 대응하기 위해서이기도 하지만, 이렇게 진화 한다면 오래 플레이해서 세력이 큰 플레이어는 고생하고, 막 시작한 플레이어는 비교적 덜 고생할 것이다.)
- 백혈구는 진화할때 일부의 성능이 떨어지는 DNA를 그대로 복제한다 (E)
- 백혈구는 더듬이 알고리즘과 유사한 간단한 알고리즘을 통해 길을 찾고 바이러스를 찾는다. (A)
- 백혈구는 플로킹과 같은 간단한 알고리즘(A)을 통해 뭔가 있어 보이게끔 움직여야 한다. (F)
( 꿈틀거리는 백혈구들이 무언가(?)있어 보이는 편대를 이루어 움직이는 듯한 모습을 플레이어가 본다면, 실제로는 무언가(?)가있는 편대는 없어도 플레이어는 그렇게 느낄 것이다.)
- 백혈구는 기습, 매복과 같은 간단한(G) 전술을(F) 가끔(G, A) 구사할 수 있다.
- 백혈구의 떨어지는 DNA는 아군 세포를 구분하지 못하여 공격할 수 있다. (F, E)
- 플레이어는 선택한 바이러스에게 상점에서 구입하듯이 간단하게(K) DNA를 주입, 변경, 삭제할 수 있다.(J)
(이는 다양한 DNA를 통해서 여러 종류의 유닛을 생산하는 것과 같은 효과를 낼 수 있다. 수비용 바이러스.. 공격용 바이러스.. 생산용...)
- 바이러스는 세포에서 얻은 영양소를 바탕으로 분열하며(D), 많은 DNA는 많은 영양소를 필요로 하게 된다.(D)
- 바이러스의 일부도 가끔 예측 불가능한 돌연변이를 일으킨다. (D, E, F)
- 바이러스도 서로의 DNA를 바탕으로 서로를 알아보기때문에 이를 수정해서 타 플레이어와 동맹을 취하거나 숙주의 세포로 위장할 수 있다. (H)
(동맹을 취하기 위해 같은 일부 DNA를 같게 만든다면 이익을 볼 수도 있지만, DNA가 같아서 다형성이 떨어지기 때문에 백혈구로 부터 다같이 죽을 수도 있다.)
- 플레이어가 플레이를 하는 동안에 한해서, 플레이어는 단 한마리의(I) 바이러스를 자유롭게 조작할 수 있다. (E)
- 바이러스가 분열하여 세포를 탈출하면, 해당 세포는 죽어버린다. (D)
- 만일 바이러스가 DNA에 의해 분열할 때가 되었음에도 불구하고, 해당 세포의 영양소가 부족하다면 바이러스는 부족한 DNA만을 가지고 분열한다. (D)
( 이를 막기위해 플레이어는 DNA에 분열할 조건을 추가할 수 있지만 이는 추가적인 영양소의 소모를 의미한다.)
- 전체의 세포는 일정 시간마다 분열을 한다. (E) (단 바이러스에 감염된 세포는 바이러스의 DNA구조에 따라 바이러스를 같이 분열시킬 수 있다.)(E)
- 각각의 세포는 종류 및 만들어진 시간, 공급받은 영양분에 따라 서로 다른 영양소를 가지고 있다. (D)
- 특정 기관을 구성하고 있는 숙주의 세포가 각 기관의 최소 필요양 이하로 줄어들게 되면 숙주는 점차 죽어간다. 숙주가 죽으면 해당 숙주의 바이러스는 전부 소멸한다.(D)
- 만일 숙주가 사망하기 이전에 다른 숙주로 옮겨간 바이러스가 잘 살고 있다면 플레이어는 해당 숙주를 선택해서 플레이 할 수 있다. (E)
( 이는 특정 플레이어가 같이 죽자는 식의 플레이를 해도 다른 플레이어가 충분히 대비 할 수 있게 하기 위해서이다.)
- 다른 숙주로 DNA특성에 따라 이동할 수 있지만 (E) 이는 아주 낮은 확률이며, 다른 숙주의 바이러스는 현재 플레이중인 숙주가 죽을 때 까지 플레이, 볼 수 없다. (D)
( 숙주가 너무 많아질 경우 서버가 감당하기 힘들 수 있기 때문이다. )
- 게임은 플레이어의 재미와 편리를 위해서 멋진 그래픽과 편리한 인터페이스를 제공해야 한다. (이를 위해 미소녀가 등장해도 뭐라하지는 않겠....퍽!)
- 화려하고 박진감 넘치는 게임을 제작하는 것이 불가능 하다면, 반대로 가볍고 명령을 내리는 간격이 길어서 다른걸 하면서 할 수 있는 게임을 만든다.
전체적으로 플레이어가 고생하는 요소가 많지만.. 이는 플레이어가 너무 똑똑하고 돌발적이기 때문이다..ㅠ.ㅜ 플레이어를 저지하기 위해 AI들이 살포시 치트를 한다고 해도 뭐라하진 않겠다.^^ (단, 티내지 말것! 플레이어가 백혈구에게 들키지 않기 위해 구석에서 가슴을 조리며 은둔 생활을 하는것도 묘미!)
게임의 요소는 뽀대(?)와 흥미 이기때문에 뭔가 AI가 있어 보이고 플레이어가 고생을 하지만, 그래도 뭔가 보람있는 플레이를 하도록 노력을 했습니다.^^
그리고 한마리의 바이러스는 자유조작을 함으로써 게임을 오래 플레이 하도록 하는 센스도..(휘익~ 거기 A양 바이러스~ 알고리즘이 멋진데 어디가서 DNA교환이라도*^^*)
플레이어는 DNA를 사용해서 자신의 바이러스의 알고리즘을 만들고.. 백혈구는 자신의 DNA를 DNA알고리즘으로 진화시키고.. DNADNA...GATACA인가;;ㅁ;;
여기까지가 본인의 의견입니다.^^ 이래저래 부실한 요소가 많지만.. 머리속 가상 시뮬레이션으로는 이정도 밖에 생각나지 않아서.. 잘못된점 지적해 주세욧!!