[自制MUD]记录下开发进度
想给自己写一个MUD玩,但是又想脱离中文MUD几十年不变的老框架,于是换个框架开始。
经过一番搜索后,选择使用的框架为Evennia,一个纯Python编写的现代MUD服务端框架。虽然之前没有Python经验,但是根据教程,我花10天完全掌握了Python(不是)。
目前写了第一张初始地图,自制了第一个武功。
根据教程写的战斗系统也初步完成了(上图),是菜单选项的回合制,我不喜欢传统MUD的心跳制。
接下来研究任务系统和物品系统。
下午做了查看行囊的指令和拿起武器的指令…… 虽然可能有些晚了,但不太建议基于python的。
python本身就慢,gil更是让人头痛。
不太适合mud的情况。 jarlyyn 发表于 2024-7-8 03:37 PM
虽然可能有些晚了,但不太建议基于python的。
python本身就慢,gil更是让人头痛。
可是python好写啊!
规模上,我又不会有北侠这个数量级的用户,房间,或者物品
纯自己写的慢不到哪里去吧。 sulryn 发表于 2024-7-8 04:19 PM
可是python好写啊!
规模上,我又不会有北侠这个数量级的用户,房间,或者物品
纯自己写的慢不到哪里去吧 ...
实际上python在这个场合并不那么好用,甚至不如lua。
主要是由于语法基于空格,匿名函数不好用。
多用了就知道了…… jarlyyn 发表于 2024-7-8 04:24 PM
实际上python在这个场合并不那么好用,甚至不如lua。
主要是由于语法基于空格,匿名函数不好用。
匿名函数是啥 现有MUD的最大问题是不能并发,这个Evennia框架, 虽然是异步驱动, 但本质上还是不能多线程并发... sulryn 发表于 2024-7-8 04:26 PM
匿名函数是啥
以lua为例
<div>function myfunc()</div><div> npc=currentEmeny().first()</div><div> if (npc.hp) > 100 then</div><div> pushToTick(function ()</div><div> npc.DoAttack()</div><div> end</div><div> end</div><div>end</div>里面的pushToTick的第一个参数。
jarlyyn 发表于 2024-7-8 04:52 PM
以lua为例
里面的pushToTick的第一个参数。
我倒是不常用这个特性呢。我是觉得python这种空格语法写着还行,看得清楚
今天做了开门的命令(open 方向)
用的是框架里的lock功能,可以通过加额外的权限指定什么人才能开