2. 프로젝트 생성하고 빌드하기

이 장에서는 hello world 프로젝트를 만들고, 이를 빌드해보도록 하겠습니다.

주석

여기서는 터미널에서 command line tool 을 기준으로 설명하겠습니다. CLionVisual Studio 를 빌드 환경은 각각 CLion 이용하는 법Visual Studio 이용하는 법 를 참고해주세요.

2.1. 프로젝트 생성하기

$ funapi_initiator hello_world

위 명령을 실행해보면 현재 디렉토리에 hello_world-source 라는 디렉토리가 생성됩니다. 이 디렉토리가 프로젝트 소스 디렉토리입니다. 만일 GIT 이나 SVN 과 같은 version 관리 프로그램을 사용하실거라면 이 디렉토리를 저장소에 넣으시면 됩니다.

2.2. 빌드 환경 준비하기

만일 여러명이 공동 작업을 한다면, 개발자들은 소스 디렉토리를 SVN 이나 GIT 으로 공유하되 각각 자신의 빌드디렉토리를 만들게 됩니다. 이 때 Linux shell 환경이나, CLion, Visual Studio 를 개인의 취향에 따라 선택할 수 있습니다.

앞서 언급한 것처럼 이 예제는 Linux shell 환경을 가정합니다. 다음 명령을 실행합니다.

$ hello_world-source/setup_build_environment --type=makefile

그러면 현재 디렉토리에 hello_world-build 라는 디렉토리가 만들어집니다. 그리고 이 안에 debugrelease 라는 하위 디렉토리가 생성됩니다. 각각 debug 버전의 빌드와 release 버전 용입니다.

주석

Release 빌드는 -DNDEBUG preprocessing 옵션이 켜지고, 컴파일로 성능 최적화 옵션이 -O3 로 세팅되어 빌드됩니다. 컴파일 옵션을 제외한 그 밖의 내용은 동일합니다.

중요

빌드 디렉토리를 SVN 이나 GIT 에 넣지 마세요. 빌드 결과물은 매번 달라지기 때문에, 같이 작업하는 다른 사람들에게 민폐가 될 수 있습니다.

2.3. 게임 서버 빌드하기

디버그 버전을 빌드 해보겠습니다. hello_world-build/debug 디렉토리로 이동해 make 명령을 입력합니다.

$ cd hell_world-build/debug
$ make

다음처럼 메시지가 나왔다면 빌드가 성공한 것입니다.

...
[100%] Building CXX object src/CMakeFiles/hello_world.dir/hello_world_server.cc.o
Linking CXX shared module libhello_world.so
[100%] Built target hello_world

2.4. 게임 서버 실행하기

이제 실제 실행을 해보겠습니다. iFun Enigne 은 빌드 후에 -local 로 끝나는 스크립트와 -launcher 로 끝나는 스크립트를 생성해줍니다. 전자는 개발 중에 서버를 실행할 때 사용하고 후자는 게임 서버가 패키징되어 데몬으로 실행행될 때 사용됩니다. (예를 들어 upstartsystemd 로 실행할 때를 말합니다)

패키징되어 실행될 때는 파일의 경로도 달라지고, 로그 생성 위치도 달라지기 때문에 별도로 스크립트를 이용합니다. 패키징에 대한 자세한 내용은 게임 서버 패키징하기 에서 다시 설명하겠습니다. 저희는 개발 중이니 hello_world-local 을 실행해야겠죠?

$ ./hello_world-local

실행이 되었나요? 축하드립니다. 짝짝짝. 이제 다음 섹션에서 네트워킹 부분을 설명하고 직접 클라이언트-서버 패킷 타입을 추가해보겠습니다.