skynet的运用-mmo类型

来源:互联网 发布:淘宝如何设置客户权限 编辑:程序博客网 时间:2024/06/04 23:22

这是云风的一个开源项目skynet的一个mmo运用示例,也被云风列到wiki中的use列表中,对于了解服务器框架的开发非常有用(至少对我而言),wiki请看点我


git: https://github.com/jintiao/some-mmorpg


1、下载编译openssl 
下载地址:https://www.openssl.org/source/openssl-1.0.1t.tar.gz 
# tar -xzvf ./openssl-1.0.1t.tar.gz 
移到第三方中 
# mv openssl-1.0.1t/* some-mmorpg/3rd/openssl 
配置编译(一定要enable-shared,否则报Bad value编译错误) 
# cd some-mmorpg/3rd/openssl 
# ./config –prefix=/usr/local/ssl –openssldir=/usr/local/ssl enable-shared 
# make && make install

2、下载编译skynet到 some-mmorpg/3rd/skynet中 
参照:https://github.com/cloudwu/skynet

3、编译some-mmorpg 
# cd some-mmorpg/server 
# make all 
Q1:lua_cjson.c:597:58: error: macro “lua_integer2str” requires 3 arguments, but only 2 given 
A:原因是不兼容lua5.3,参照云风维护的luacjson,将lua_cjson.c中597行 
len = lua_integer2str(strbuf_empty_ptr(json), num); 
修改为 
len = sprintf(strbuf_empty_ptr(json), LUA_INTEGER_FMT, num);

Q2:lualib-src/lua-uuid.c:4:1: error: unknown type name ‘uint32_t’ 
A:最简答的修复方式直接包含头文件 
A simple fix is to add the line 
|#include <stdint.h>

3、运行 
# cd some-mmorpg/server 
# ./run 
Q1:libcrypto.so.1.0.0: cannot open shared object file 
A:建个软连接,/usr/lib64 中的so库链接到自己编译好的so,因为有些库加载时从原生库中加载 
sudo ln -s /root/Desktop/some-mmorpg/3rd/openssl/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1

(推荐)或者把编好的opensll 的libcrypto* 拷贝到 原生库中/usr/lib64/ 
# cd some-mmorpg/3rd/openssl/ 
# find . -name “libcrypto*” 
./libcrypto.a 
./libcrypto.pc 
./libcrypto.so.1.0.0 
./libcrypto.so 
# cp libcrypto.* /usr/lib64/

Q1:NOAUTH Authentication required,Connect to 127.0.0.1:6379 failed (nil) 
A:其实是redis开了密码验证,关掉redis的密码验证即可

最后终于愉快跑起来了 
[root@localhost server]# ./run 
[:00000001] LAUNCH logger 
[:00000002] LAUNCH snlua bootstrap 
[:00000003] LAUNCH snlua launcher 
[:00000004] LAUNCH snlua cdummy 
[:00000005] LAUNCH harbor 0 4 
[:00000006] LAUNCH snlua datacenterd 
[:00000007] LAUNCH snlua service_mgr 
[:00000008] LAUNCH snlua main 
[:00000009] LAUNCH snlua debug_console 9333 
[:00000009] Start debug console at 127.0.0.1 9333 
[:0000000a] LAUNCH snlua protod 
[:0000000b] LAUNCH snlua database 
[:0000000c] LAUNCH snlua loginserver 
[:0000000d] LAUNCH snlua loginslave 
[:0000000e] LAUNCH snlua loginslave 
[:0000000f] LAUNCH snlua loginslave 
[:00000010] LAUNCH snlua loginslave 
[:00000011] LAUNCH snlua loginslave 
[:00000012] LAUNCH snlua loginslave 
[:00000013] LAUNCH snlua loginslave 
[:00000014] LAUNCH snlua loginslave 
[:0000000c] N|listen on 0.0.0.0:9777 
[:00000015] LAUNCH snlua gamed 12 
[:00000015] N|listen on 0.0.0.0:9555 
[:00000015] N|gamed opened 
[:00000016] LAUNCH snlua agent 21 
[:00000017] LAUNCH snlua sharedatad 
[:00000018] LAUNCH snlua agent 21 
[:00000019] LAUNCH snlua gdd 
[:0000001a] LAUNCH snlua world 
[:0000001b] LAUNCH snlua map 26 
[:0000001c] LAUNCH snlua map 26 
[:00000002] KILL self
0 0