手机MUD游戏开发基础教程

有很多网友提问,怎么开发手机MUD游戏,或者说怎么把MUD游戏移植到手机上?因为MUD游戏指令互动的特性,直接在手机上玩很要命,本来上手难度就高,还要在手机上来指令操作,能直接劝退99%的玩家。MUD游戏手游化必须做界面点击互动才能有前途,本教程讲解如何开发手机MUD游戏。

说明

手机MUD游戏开发其实就是前后端分离的程序开发,服务器端提供数据,客户端实现显示效果,我们主要要做的工作有二方面:

  1. 服务器端做数据封装
  2. 客户端做内容展示

我们先看看目前在玩的MUD游戏服务端发送的数据:

[2J
 [37m『[1;33m炎黄群侠传[0m[37m』之

                   [0m[1;31m炎  黄  武  魂[0m
                  [1;31m----------------[0m
                                               [1;37m笑[0m[31m---------[0m
      [33m####################################[0m
      [33m##                                ##[0m  [1;37m傲[0m[31m------------[0m
      [33m## [0m[1;33m天下英雄出我辈  一入江湖岁月催[0m[33m ## [0m        [1;37m江[0m[31m-----[0m
      [33m##                                ##[0m
      [33m####################################[0m     [1;37m湖[0m[31m---------[0m

[1;31m★[0m[37m 游戏主页:[1;33mhttps://bbs.mud.ren[0m
[1;31m★[0m[37m 游戏论坛:[1;33mhttps://mud.gameivy.com[0m

[1;31m★[0m[37m 游戏QQ群:[1;33m9783836[0m
[37m[44m Mud                 中文名称            国际网路位址     端口  人数 
[0m---------------------------------------------------------------------
[1;33m[41m YHMUD               炎黃群俠傳(CHINA)   118.190.104.241  5555  3    [0m
---------------------------------------------------------------------
本泥潭共有 [36m3[0m 位玩家在游戏中。(提示:[33mmudlist all[0m 查看遊戲列表)

炎黃群俠傳已运行:[1;32m二天一小时五十分三十七秒
[0m现在 游戏 时间是:[33m炎黄七千六百零八年,冬,二月二十一日,土曜日,下午一时八分[0m
现在 北京 时间是:[32m公元二千零二十一年,夏,八月七日,星期六,晚上九时三十五分[0m 
现在 农历 日期是:[36m黄帝历四千七百十八年六月二十九日丁亥 
[0m[0m再过七天是[36m七夕乞巧节[0m
目前共有 [36m1[0m 位巫师、[36m2[0m 位玩家在线上,以及 [36m1[0m 位使用者尝试连线中。

您的英文名字(新玩家可以选择一喜欢的名字):

客户端展示的效果: file

提示:你可以直接访问 http://mud.ren/websocket.html 连接游戏对比 file

电脑上MUD游戏客户端是对数据的原样输出并做ansi颜色处理,服务器发送什么客户端按顺序显示什么,而手机MUD我们需做修改,模块化显示,不同类别的数据用不同的方式处理,才能方便玩家操作,而如何区别不同类别的数据?这就是服务端要做的封装。

请注意,本教程不讲解游戏客户端的开发,这不是我们的重点,因为客户端可以使用任何可以开发的工具来实现,比如原小微信小程序,或者unity/cocos/egret等专业的游戏开发引擎。

我们先考虑手机MUD游戏和PC端游戏的差异,并针对性改造现有的MUD游戏。

手机MUD和电脑端最大的区别是操作方式的改变,不再是一条一条的输出指令,而是点击操作。另外数据提交方式也有变化,比如电脑玩MUD时玩家注册角色流程:

  1. 玩家输入角色姓名并提交
  2. 服务器判断处理,如果输入正确,保存数据并提示玩家选择性别
  3. 玩家输入性别并提交
  4. 服务器判断处理,如果输入正确,保存数据并提示玩家选择性格
  5. 玩家选择性格拼提交
  6. …………

所有操作都是一条一条的数据提交,以指令的方式互动,手机端玩家输入是不方便的,我们需要改为以下界面显示的方式一次性提交数据:

file

要实现这些交互,需要服务端做必要的修改,从接受一条数据为接受一组数据并解析处理。

另外,我们再看看以下界面: file

电脑端是所有数据收到后按顺序显示出来,没有数据分屏,而手机端界面有限,为方便体验需要不同的数据显示在不同的区域,而为了点击操作,数据显示方式也需要做改变。

那客户端如何正确的识别什么数据用什么方式显示给玩家呢?这就需要统一一个规范,服务端按规范把不同的数据做不同的封装后发给客户端,客户端解析数据后根据规范显示在不同的区域。

这个规范是前后端自己协商的,没有统一的标准,据我所知,有很多MUD是把数据前面加编号发送给客户端。比如:

^200#客店$\n
^201#这是一家价钱低廉的客栈,生意却是非常兴隆。外地游客\n
多选择这里落脚,你可以在这里打听到各地的风土人情。店小\n
二里里外外忙得团团转,接待着南腔北调的客人。客店的主人\n
从不露面,他究竟是谁,有各种各样的猜测。客店的西墙上挂\n
着一个牌子(paizi)。$\n

客户端收到后用解析成编号和内容,根据编号判断内容的处理方式并做处理。

我个人更喜欢使用json字符串的方式发送数据到客户端,类似以下效果:

{"code":201,"data":{"msg":"你连线进入炎黃群俠傳。"}}
{"code":20010,"data":{"name":"客店","msg":"这是一家价钱低廉的客栈,生意却是非常兴隆。外地游客多选择这里落脚,你可以在这里打听到各地的风土人情。店小二里里外外忙得团团转,接待着南腔北调的客人。客店的主人从不露面,他究竟是谁,有各种各样的猜测。客店的西墙上挂着一个牌子(paizi)。"}}
{"code":20011,"data":{"msg":["south:客店茶房","west:北大街","up:客店二楼"]}}
{"code":20014,"data":{"npc":[["1","北丑","男性"],["1","店小二","男性"]]}}
{"code":20020,"data":{"type":"sys","msg":"【系统报告】连线精灵:小泥巴(mudren)由[127.0.0.1]连线进入"}}
{"code":20000,"data":{"msg":"店小二用脖子上的毛巾抹了抹手,说道:这位仙子,请进请进。","class":"say"}}

file

客户端收到json字符串直接转码为对象并做处理显示即可。只是用json存在的问题是内容不能带ansi颜色转义字符,因为其中ESC\e在JSON中不支持,需要修改ansi.h处理。


开发

因为目前手机端项目也在开发中,体验和问题反馈可到这里:https://bbs.mud.ren/threads/181

本教程以cocos creator为客户端开发工具,讲解手机版MUD开发的基本思路。

教程更新中……,大家有问题可以留言,另外求专业设计帮助

京ICP备13031296号-4