LPC编程
FluffOS
FluffOS is the next generation of MudOS. It starts as an collection of patches on top of last release of MudOS, comes with many new features and bug fixes.
In 2019, there will be 2 release track maintained:
- v2017: no build system upgrade, no new features, critical bugfix only.
- v2019: cmake build system, JS interop support and rolling updates.
特色Features:
- Mostly backward-compatible to MudOS. (Upgrade should be easy!)
- Lots of bug fixes. (including full CHECK_MEMORY enabled testsuite pass).
- Compile on modern linux distros, 32bit & 64bit, CYGWIN support.
- 64 bit LPC runtime, LPC int is always 64bit int, LPC float is C double.
- MXP, GMCP, ZLIB.
- IPv6 support (optional)
- ICONV support, code in UTF-8, dynamic translation on output (optional)
- POSIX timer for better time precision. (optional)
- More strict type checking (optional)
- libevent integration, epoll backend.
Docker镜像
为了方便大家编译FluffOS,我参考lostsnow的镜像,做了这个docker镜像。熟悉docker的同学欢迎fork或clone使用。
0. Intro
Docker 镜像 : FluffOS v2019 的 Ubuntu 编译环境。 此项目参考了 https://github.com/lostsnow/docker-fluffos ,更新为可以编译 FluffOs v2019 。
1. Build compile image
建立为编译 FluffOS 源码的 docker 镜像,确定已经安装了docker 1.12+和git。
以下的命令可能需要su root或者sudo,假设我们在/XXXX/目录下操作。真正操作时,记得将下面代码中/XXXX/替换为相应的目录,即上面代码中你建立docker目录位置的绝对目录。
cd /XXXX/ mkdir docker cd docker git clone https://github.com/zero9k/docker_fluffos.git cd docker_fluffos docker build -t zero9k/fluffos_build ./build
成功后,输入docker images指令可以看到REPOSITORY下增加了ubuntu和zero9k/fluffos_build两个 image,类似下面这样:
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE zero9k/fluffos_build latest 3b3444136461 3 hours ago 521MB ubuntu latest 47b19964fb50 4 weeks ago 88.1MB $
2. Compile driver
下载 fluffos 源码。
cd /XXXX/docker/ git clone https://github.com/fluffos/fluffos.git
利用镜像fluffos_build编译 fluffos 源码,生成驱动, 最终产生包括 driver 的 2 个二进制文件。
docker run --rm -v /XXXX/docker:/opt/docker zero9k/fluffos_build
成功后,输入ls -la docker_fluffos/bin/指令可以看到driver和portbind两个二进制文件,注意日期,看是否新生成的。
(因为此项目已经包括编译好的二进制文件,当然你也可以直接使用,忽略以上步骤。)
3. Build driver image
生成 fluffos 驱动镜像,实际就是把 2 个二进制文件 copy 进 docker image ,同时安装其运行需要的依赖库。
cd /XXXX/docker/docker_fluffos docker build -t zero9k/fluffos .
成功后,输入docker images指令可以看到REPOSITORY下增加了zero9k/fluffos,类似下面这样:
$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE zero9k/fluffos latest cf1eda359956 2 hours ago 143MB zero9k/fluffos_build latest 3b3444136461 3 hours ago 521MB ubuntu latest 47b19964fb50 4 weeks ago 88.1MB $
4. run mudlib
运行 MUD ,即用 fluffos 驱动 mudlib ,比如 fy/xkx/xyj 等(我的GitHub 有一些mudlib)。以下的代码以 fy4 为参考,可能需要修改源码 (那涉及到如何让 fluffos 可以跑 mudos v22 的老lib,不在本文讨论范围内,请自行学习)。
准备好修改好的 config 文件 (fluffos 源码中有样例,根据需求修改),假设位置为/home/cfg/config.fy,假设修改后端口为 6666。
cd docker mkdir mudlib cd mudlib git clone https://github.com/huangleon/fy4.git cp /home/cfg/config.fy fy4/config.fy docker run -d --name fy4 \ -p 6666:6666 \ -v XXXX/docker/mudlib/fy4:/opt/docker \ zero9k/fluffos /opt/docker/config.fy
成功后,输入docker ps指令可以看到0.0.0.0:6666→6666/tcp,失败可以输入docker logs -f fy4指令查看 log,也可以进一步查看 mudlib 的 debug.log (比如tail -f /XXXX/docker/mudlib/fy4/log/debug.log)。