Ask Your Question

DK Moon's profile - activity

2018-11-01 10:21:10 +0900 answered a question undefined symbol 문제

안녕하세요. 해당 문제는 libtest.so 를 구성하는 소스파일들 (즉 게임의 프로젝트 파일) 중에 선언은 했지만 정의가 빠진 것이 있는 것처럼 보입니다.

혹시 namespace test 안에 Room::kNullPtr 이라는 것을 선언하신 것 같은데, 이에 대해서 정의도 같이 넣어주셨는지 궁금합니다. 그러니까 class 선언에 저 kNullPtr 이 들어가 있는데 대응되는 .cc 파일 등에 정의를 하시지 않은 경우 이를 포함해주시면 될 것 같습니다.

이렇게 정의가 빠져서 없는 symbol 로 나오는 경우 좀 더 알아보기 쉽게 에러메시지를 찍을 수 있으면 좋겠지만, 안타깝게 저희가 사용하는 라이브러리 다이나믹 로딩 방식에서 이를 처리할 수 있는 좋은 방식이 없는 상황입니다. 불편하시겠지만 양해부탁드리겠습니다. ㅠㅠ

2018-09-11 09:48:18 +0900 asked a question dkmoon test1

lkajskldf laksjdfkl alksdjfklasjdf

2018-09-03 09:38:02 +0900 commented answer 서버가 가끔 crash나는 현상이 발생합니다.

안녕하세요. 일단 크래쉬 난 곳 위에서 50 줄 정도를 여기다가 copy-paste 해주시면 감사하겠습니다. 만일 그 이상의 로그가 필요한 경우 저희가 별도로 말씀드리겠습니다.

2018-07-20 14:44:23 +0900 answered a question [서포터즈] Tutorial Part 3 메세지 핸들링 질문

그냥 GDB 최신 버전 설치하시면 됩니다.

sudo apt-get install gdb 라고 하시면 됩니다.

2018-01-15 09:44:32 +0900 commented answer pong server 실행 시 leaderboard 연결 실패 오류 문의

답변이 늦어져서 죄송합니다. sudo netstat -pant 로 해당 포트가 보이지 않는다면 리더보드가 떠 있지 않은 것 같습니다. ps -eaf | grep leaderboard 라고 입력했는데도 리더보드가 표시되지 않으시면 아마 리더 보드의 포트 번호를 바꾸실 때 오타가 생기지 않았나 싶습니다. 다음 명령어의 결과를 붙여 넣기 해주시면 파악에 도움이 될 것 같습니다.

tail /var/log/funapi/funapi-leaderboard/glog/funapi_leaderboard_server.default.INFO
2017-12-30 11:28:12 +0900 commented answer pong server 실행 시 leaderboard 연결 실패 오류 문의

리더보드 호스트에서 sudo netstat -pant 라고 해보시겠어요? 거기 포트 번호 2020 이 표시되는지 확인 부탁드리겠습니다.

만일 잘 표시된다면 게임 서버에서 telnet 192.168.0.42 2020 을해서 해당 리더보드 포트로 접속이 되는지 확인 부탁드립니다. 접속되면 “중지하고 싶으면 ^] 을 누르라”는 메시지가 나옵니다

2017-12-29 10:14:28 +0900 answered a question pong server 실행 시 leaderboard 연결 실패 오류 문의

안녕하세요.

게임 서버의 MANIFEST.json 에서 leaderboard 의 IP/port 번호를 바꾸셨고, 그 중에 포트 번호를 2020 으로 하셨다고 하셨는데요, 혹시 leaderboard 의 MANIFEST.json 에서도 포트 번호를 수정해주셨나요? 후자는 leaderboard 가 bind 할 포트를 지정하는 것이라서 이 설정을 바꾸시지 않으면 leaderboard 는 기본 포트인 12820로 바인딩하고 게임 서버는 2020 포트로 접근을 하려는 문제가 생길 것 같습니다.

leaderboard 의 MANIFEST.json 은 /usr/share/funapi-leaderboard/default/manifests/MANIFEST.json 에 위치해있고, "arguments" 라는 섹션에서 "server_tcp_port" 라는 부분의 숫자를 바꿔주시면 됩니다.

문대경 드림

2017-12-28 17:35:20 +0900 answered a question pong server 실행 시 leaderboard 연결 실패 오류 문의

안녕하세요.

혹시 funapi leaderboard 가 별도의 서버 (가상 서버 포함) 에 설치되어있나요?

pong_server 의 src/MANIFEST.json 을 열어보시면 (혹은 flavor 를 쓰신다면 flavor 에 따라 MANIFEST.lobby.json MANIFEST.game.json MANIFEST.matchmaker.json 파일)

"Leaderboard" 라는 섹션 아래 "leaderboard_agents" 라는 항목이 있습니다. 거기에 leaderboard 서버의 IP 와 포트 번호를 기재해주셔야 되는데요, 기본값이 127.0.0.1:12820 으로 되어있습니다. 이 부분을 leaderboard 서버가 떠 있는 IP:Port 번호로 수정해주시면 될 것 같습니다.

2017-12-28 16:08:15 +0900 commented answer pong server 실행오류 문의

이 글의 댓글이 아닌 새로운 포스트로 해당 로그를 올려주실 수 있을까요? 주제별로 글을 구분하기 위해서 새 포스트로 올려주시면 대단히 감사하겠습니다.

2017-12-28 15:31:00 +0900 commented answer pong server 실행오류 문의

안녕하세요. src/MANIFEST.json 안에 "RpcService" 라는 섹션이 있을텐데 그 아래 "rpc_nic_name" 이라고 되어있는 것의 값을 "enp3s0" 로 고쳐보시겠어요?

해당 설정은 RPC 통신을 위해서 사용할 네트워크 카드 이름을 지정하는 것입니다. 보통 외부망과 내부망을 분리한 경우 RPC 통신을 위해서 내부 네트워크를 사용하는 경우를 위해서 해당 내용이 존재합니다.

2017-12-18 16:47:03 +0900 commented answer Visual Studio 프로젝트 생성 시 오류문의

잘 해결되셨다니 다행입니다~

2017-12-13 11:23:40 +0900 answered a question ORM 오브젝트를 Protobuf 형식으로 전송하는 법이 어떻게 되나요?

안녕하세요. 아이펀팩토리 문대경이라고 합니다.

잘 아시겠지만, ORM 은 게임 서버가 데이터를 관리하기 편하도록 지원되는 기능입니다. 그리고 Protobuf 나 JSON 은 게임 서버와 클라이언트가 데이터를 공유하기 위한 프로토콜입니다.

게임 서버와 클라이언트가 데이터를 공유할 때는 게임 서버가 알고 있는 모든 데이터를 전송하지는 않습니다. 이는 패킷사이즈도 커질 뿐더러 게임 클라이언트가 알아서는 안되는 데이터까지 포함될 수 있기 때문입니다. 그때문에 게임 서버가 데이터를 관리하는 아이펀 엔진 ORM 은 클라이언트와의 프로토콜인 protobuf 로 1:1 로 맵핑해서 serialize 하지는 않습니다.

그 대신 serialize 를 담당하는 함수를 정의하시고 그 안에서 클라이언트에 전송이 필요한 ORM 필드 값들들 선택적으로 protobuf 필드 값으로 assign 하셔야 됩니다. 예를 들어 이런 식입니다.

my_protobuf->set_myfield(my_orm->GetMyField());
2017-12-12 16:39:11 +0900 commented answer 탭구분자 파일로 구분된 기획 데이터 로드 실패

요깟따.. ^^;;

2017-12-12 13:26:43 +0900 answered a question 탭구분자 파일로 구분된 기획 데이터 로드 실패

안녕하세요. 불편을 드려 죄송합니다. 해당 문제는 수정 중에 있으나 새 빌드가 배포될 때까지 시간이 걸릴 수 있기 때문에 다음처럼 우회하시는 것을 안내드립니다.

Step1) source 디렉토리의 최상단 CMakeLists.txt 안에 보시면 다음처럼 된 부분을 찾으실 수 있을 겁니다.

set(RESOURCE_DIRS game_data client_data src/json_protocols)

여기에 다음처럼 새로 game_data_tab 이라는 디렉토리 이름을 추가해주세요.

set(RESOURCE_DIRS game_data game_data_tab client_data src/json_protocols)

Step2) source 디렉토리에서 game_data_tab 이라는 디렉토리를 만들어주세요 (mkdir game_data_tab) 그리고 거기에 위의 tab 구분자 파일을 이동해주세요. (복사가 아니라 이동해주셔야 됩니다.)

Step3) 새로 빌드를 해주세요

Step4) 게임 서버를 실행시킬 때 다음처럼 추가로 인자를 주고 script 를 띄워주세요

$ ./hello-local --game_tab_separated_data_dir=game_data_tab

실행 인자를 추가하는 것이 번거로우시면 아래처럼 MANIFEST.json 안에서 ResourceManager 섹션 안에 "game_tab_separated_data_dir" 항목을 추가하셔도 됩니다.

158           "ResourceManager": {                                                  
159             "game_tab_separated_data_dir": "game_data_tab",                     
                   ...

해당 내용은 조속히 수정하여 배포하도록 하겠습니다. 감사합니다.

2017-12-12 12:12:21 +0900 answered a question 탭구분자 파일로 구분된 기획 데이터 로드 실패

헐... 당신은!!

2017-04-28 10:57:11 +0900 answered a question flavor 별로 orm 지정을 분리해 줄 수 있나요?

안녕하세요. 질문 올려주셔서 감사합니다.

Flavor 는 "코드를 공유하되 서버를 분리해서 관리" 하는데 용이하게끔 지원되는 기능입니다. 그 취지로 볼 때 ORM 역시 "같은 코드" 에 해당되어, flavor 별로 ORM 을 구분하는 기능은 제공하지 않고 있습니다. 특히 ORM 이 다른 두 서버가 동시에 같은 DB 를 접근하는 것은 상당히 위험하기 때문에, 설령 flavor 로 구분하지 않고 서버별로 별도 소스 트리로 구분하시더라도 같은 DB 접근에 다른 ORM 을 쓰는건 권장드리지 않는 방법입니다.

2017-04-19 09:15:00 +0900 received badge  Enthusiast
2017-04-12 16:46:43 +0900 received badge  Editor (source)
2017-04-11 22:05:14 +0900 answered a question ORM을 이용하는 경우 Audo Increment 속성을 부여할 방법이 있는지요.

안녕하세요.

아이펀 엔진에 관심 가져 주셔서 감사합니다.

말씀하신 대로 Autoincrement 는 대개 고유 번호 부여를 위해 사용합니다. 아이펀 엔진은 autoincrement 대신 오브젝트를 생성할 때 자동으로 고유 UUID 를 부여합니다. autoincrement 는 DB 를 합칠 때 고유성을 보장해주기 어렵지만, UUID 는 이보다 더 강력하게 고유성을 보장해주기 때문입니다.

아래 문서 링크에서 설명을 참고해주세요.

https://www.ifunfactory.com/engine/do...

해당되는 설명:

"모든 오브젝트는 고유한 ID 값을 갖습니다. 이 ID 값은 UUID 포맷이며, 다음과 같이 얻어낼 수 있습니다."

2017-03-20 16:15:24 +0900 commented answer 게임 서버 배포 문의.

안타깝지만, 두 환경은 호환이 되지 않습니다. 각각 깔려 있는 라이브러리들도 다르고 Ubuntu 14.04 는 Upstart 는 방식으로 서비스를 관리하지만, 16.04 는 Systemd 라는 방식으로 관리하기 때문이기도 합니다. 번거로우시겠지만, 작업 환경과 실제 서버 환경을 맞추시는 작업이 필요합니다.