美文网首页LPC-tutorial
从零开始 LPMUD 游戏开发的准备工作

从零开始 LPMUD 游戏开发的准备工作

作者: 秋林拾叶 | 来源:发表于2019-04-25 18:47 被阅读0次

    本文节选自本人写作的《 LPC 语言基础教程:从零学习游戏开发》第一章第三节。

    第三节 从零开始 LPMUD 游戏开发的准备工作

    我们学C语言时已经熟悉C语言程序的编译运行流程,如下面的代码:

    #include <stdio.h>
    int main()
    {
        puts("www.mud.ren");
        return 0;
    }
    

    我们需要先编译生成可执行程序,然后运行这个程序,程序自动从int main(void)函数开始执行。

    前面也介绍了LPMUD通过MUD游戏引擎驱动,但我们写的代码怎么运行呢?因为是入门教程,这里不做过多分析,只是先简单的描述游戏启动顺序:游戏引擎运行后,首先载入运行时配置文件中指定的 simul_efun 文件,然后载入运行时配置文件中指定的 master 文件完成启动并等待玩家连线。如果有玩家连线,驱动自动调用 master 文件中的 object connect(int port) 方法处理连接,此方法会返回连线对象,并自动调用对象中的 object logon(void) 方法处理登录。注意,在 lpmud 中所有对象都会自动包含一个头文件 globals.h (运行时配置文件中指定位置和文件名)。和C语言不同的是,lpc 程序没有结束,只要启动后不销毁会一直在内存中保持运行,而且也没有 int main() 入口函数,不过有一个类似的 void create(void) 方法,在游戏文件加载时自动调用此方法。

    在LPC语言中,没有编译并生成可执行程序的过程,所有 .c 源程序都可以随时加载并生效。

    服务端配置

    关于启动流程的问题,这里不理解也没有关系,我们先从基础语法开始学习,为了方便学习LPC语言,这里提供一个基础的 mudlib,可以正常的使用游戏引擎驱动,下载页面为:https://github.com/oiuv/lpc-test/releases/tag/v1.0.0 。同时下载上一节中介绍的fluffos v2019 @CYGWIN-64

    先配置好驱动保证可以启动此 mudlib,从下一章开始,我们就在此 mudlib 中学习LPC语言。
    先把下载的 mudlib 解压到D盘根目录(其它盘也可以),把目录改名为 lpc-test,同时把游戏驱动也解压到D盘根目录,把驱动目录改名为 lpmud-driver,在 lpc-test 目录中新建 driver.cmd 文件,使用记事本打开,输入以下内容并保存:

    :start
    D:\lpmud-driver\driver.exe config.ini
    goto start
    

    双击 driver.cmd,MUD服务器启动。

    客户端连接

    服务启动后,使用MUD游戏客户端连接 127.0.0.1:5555 可以成功连接游戏。不过 mud 只支持 shutdown、update 和 test 三个指令。对应的文件在 lpc-testcmds 目录中。我们打开 test.c,可以看到以下代码:

    int main(object me, string arg)
    {
        // 请在此实现你的代码
    
        return 1;
    }
    

    从下章开始,我们一直保持游戏驱动运行,并使用客户端连接。学习过程中我们在 test.c 中测试我们的代码,注意这里的 int main(object me, string arg) 是我们自定义的函数,作为指令执行的入口,和C语言中的 int main(void) 函数没有任何关系,而且返回值是 1 ,而不是C语言中的 0,这里先不解释,通过后续章节的学习你会理解为什么是这样。

    另外,在开发测试中,我们推荐使用 yTin 客户端,极其小巧方便,下载地址:https://oiuv.oss-cn-beijing.aliyuncs.com/mud/yTin.zip

    开发工具的准备

    在开发工具上,只推荐一个:Visual Studio Code,简称VS code,官方网站:https://code.visualstudio.com/

    为了方便 LPC 开发,需要在项目的 .vscode\c_cpp_properties.json 配置中指定 include 位置并自动包含 globals.h。

    {
        "configurations": [
            {
                "name": "Win32",
                "includePath": [
                    "${workspaceFolder}/include/"
                ],
                "forcedInclude":[
                    "${workspaceFolder}/include/globals.h"
                ]
            }
        ],
    }
    

    相关文章

      网友评论

        本文标题:从零开始 LPMUD 游戏开发的准备工作

        本文链接:https://www.haomeiwen.com/subject/biqtnqtx.html