라그같은 RPG 서버를 만든다고 하면 수 많은 npc들의 대화 내용이나
질문에 대한 결과같은 것은 따로 텍스트 파일에 저장을 해 둬야 하겠지요?
그렇다면 npc가 1000명 있다고 하면 이들에 대한 모든 대화 내용을 메모리에 올려 두고,
사용자가 npc에 대화를 요청했을 때 메모리에 npc 대화를 검색해서
클라이언트에 보내줘야 하는건가요?
서버 메모리나 검색 속도도 무척 고민이 되지만..
텍스트 파일을 어떻게 만들어야 할지도 해깔립니다.
그냥 이런 식으로 만들면 되는건지..
// 클라이언트는 5000번 아이디의 대화를 요청한다.
[마을1 X:500 Y:500 ID:5000 대장장이]
어서오시게.. 이 칼을 사겠나?
[YES]
5000원입니다. 정말 구입하겠습니까?
[YES]
감사합니다.
[NO]
윽..
[NO]
쳇.. 귀찮게스리..
저런 조건이 있는 경우 조건 안에 또 조건이 있을 수 있지 않습니까?
c에서 중첩 if문 처럼요.
그렇다면. 지금 사용자가 어디 질문을 받을 차례인지는 어떻게 결정하는지요?
첫번째 질문 받고 그냥 갈 수도 있고. 두번째 질문 받고 갈 수도 있고.
가고 나서 다시 오면 최초의 대화를 받아야 하잖아요.
도와주세요~ ..;;
아래는 위에 적어주신 구성을 바탕으로 가상으로 적어보았습니다.
선언 정수형 변수 State '유저와의 대화 진척도
선언 문자열 배열 '대화내용'
{
[0] 어서오시게.. 이 칼을 사겠나?
[1] 5000원입니다. 정말 구입하겠습니까?
[2] 감사합니다.
[3] 윽..
[4] 쳇.. 귀찮게스리..
}
메시지가 들어왔을 경우의 처리 함수 ( 문자열 메세지 )
'만약' 해당 사용자에 대한 state 가 '없다면' state 생성; state=1; 출력[0]; 함수 종료;
조건분기문 ( 언어별로 swich 문이나 select 문이겠죠. )
.state = 1: '만약' 메시지 = Yes '이면' 대화[1] 출력; state=2; '아니면' 대화[4] 출력; state 해제;
.state = 2: '만약' 메시지 = Yes '이면' 대화[2] 출력; 거래 처리; state 해제; '아니면' 대화[3] 출력; state 해제;
귀차니즘에 매직 넘버( 특정 의미를 부여받는 숫자 ) 를 사용했습니다. -_-;;;;