개인적으로 토크엔진에서 가장 중요한 문법이라고 생각한다.
제일 많이 쓰니까.
// 클라이언트에서 서버로 메세지를 보낸다
commandToServer(functionName [,arg1,...argn]);
// 서버에서 받을 때는 serverCmd 라는 prefix 와 클라이언트에서 넘긴 functionName 을 연결한 함수를 만들어준다
function serverCmdfunctionName(%client [,arg1,...argn])
{
//
// 서버측 코드 수행..
//
// 서버에서 클라이언트로 메세지를 보낸다
commandToClient(%client, functionName [,arg1,...argn]);
}
// 마찬가지로 서버에서 보낸 메세지를 클라이언트가 받을때도 clientCmd라는 prefix와 functionName을 연결한 함수를 만들어준다
function clientCmdfunctionName([,arg1,...argn])
{
//blah blah..
}
간단하다.
commandToServer 로 클라이언트에서 서버로 메세지를 보내고
서버 측은 serverCmdFuncName 에서 서버 측 코드를 수행한다.
그리고 클라이언트에게 다시 메세지를 보내야 한다면 commandToClient 로 보내면 된다.
클라이언트는 그것을 clientCmdFuncName 에서 받을 수 있다.
요런식으로..
commandToServer('Message');
function serverCmdMessage(%client)
{
%msg = "Hello :D";
commandToClient(%client, 'Message', %msg);
}
function clientCmdMessage(%msg)
{
echo(%msg);
}
이렇게 클라이언트와 서버가 메세지를 주고받는 구조는 매우 간단하면서도 논리적으로도 기브앤테이크(?) 정신을 ..ㅋ
참고로 클라이언트 측 코드는 일반적으로 scriptsAndAssets\client\scripts 에 위치해있고, 서버 측 코드는 scriptsAndAssets\server\scripts 위치 해 있다.
여기서 중요한 것은 commandToServer 나 commandToClient 를 했을 때 스크립트 실행이 같은 스레드에서 일어나지 않는다는 것. 순서적으로 commandToServer를 먼저하고 클라이언트 측 함수를 실행했을 때 서버측의 serverCmdFuncName 콜백함수와 클라이언트 측 함수가 어느것이 먼저 실행될지는 모르므로 주의해서 코딩해야 한다.