mudos开发简介

首先我们应该知道mudos提供哪些服务
我们可以从许多lib中找到我们需要什么
假设我们的lib还是拥有很多现在mud的特性 比如战斗 人物和世界
我们需要一些最基本的东西
比如 master.c user.c login.c <include>
你完全可以使用不一样的文件名 甚至修改出自己的mudos
你也可以完全使用一个成熟的lib来修改 不过这里要讨论的不是这些。
我们需要一个指令目录 一个系统配置文件的目录 一个数据保存的目录 一个帮助文档的目录 一个安全系统 一个角色系统 一个战斗系统(如果你是战斗类的 根本不需要这个)
一个网络服务提供系统(这个一定需要吗?可以不需要) 一个核心守护 一个时间系统(如果你的mud只有简单的时间概念 也根本不需要这个) 一个处理文字的系统
我们可以找出很多lib都有的通性 这些文件可以这样描述:
// Daemons
// maintains information on legitimate character creation
#define CHAR_D                  "/secure/daemons/chard"
// support to chinese character
#define CHINESE_D               "/secure/daemons/chinesed"
// handles fighting events
#define COMBAT_D                "/secure/daemons/combatd"
// handling core daemon state
#define CORE_D "/secure/daemons/cored"
// handles the loading and rehashing of verbs
#define COMMAND_D               "/secure/daemons/cmd_d"
// handles domain state and build rooms
#define DOMAINS_D "/secure/daemons/domains_d"
// emote daemon
#define EMOTE_D                 "/secure/daemons/emoted"
// the management daemon a user connects to before determining their real body
#define LOGIN_D                 "/secure/daemons/logind"
// handles mud's Quests
#define QUEST_D            "/secure/daemons/questd"
// handles security of Lpmud
#define SECURITY_D              "/secure/daemons/securityd"
// handles intermud services
#define SERVICES_D              "/secure/daemons/servicesd"
// management daemon of time/disasters/scenario
#define TIME_D            "/secure/daemons/timed"
// handles update events
#define UPDATE_D                "/secure/daemons/updated"
// virtual daemon
#define VIRTUAL_D               "/secure/daemons/virtuald"
// handling vote security
#define VOTE_D            "/secure/daemons/voted"
构架lib 最先要考虑的不是针对一个游戏 而是一个游戏支持所必需的内容 连接 服务 和表现 而我觉得 可扩展性 在经历这么多年以后 对于Mud而言 已经日益重要

1.指令   
       是玩家接触mud world的直接界面 没有好的指令 就算这个角色不是blind 也会感到看不到东西的感觉 所以最基本的指令 是look say quit who 等等 注意say代表的是交流的意思 而不是现在mud的含义-"说"


2.数据保存
       正式开启mud world的时候必须考虑的问题 你可以使用传统的文件保存方式 也可以采用msql/mysql数据库方式 要注意的是 不要以为传统的方式是一个无效的或者无能的方式
不过利用高效的mysql方式 还是比较好的 这里的数据 不要单纯的认为是玩家本体的数据 一个mud不单单只有这些数据 更多的数据可能出现 比如地图(rooms) 动作(emotes) 物件((objects) 技能(skills)


3.安全系统
       传统的es安全模式借助于uid系统,这是快10年的系统了。而每个LPC Library都可能会有自己的系统。注意一个mud往往有三部分构成 分的比较明白的就是mudos 还有两部分是  LPMud 和 LPC Library 的说法。比如常说的 ES TIM-II NIGHTMARE 都是LPC LIbrary
而ES3 就是  ES LPMud,比如fy3这个LPmud 使用的ES lib library。安全的做法很多 而且没有一种是绝对安全的 毕竟这个mud系统先基于unxi更基于internet。但是目的只有两个:安全和使用性。安全是指能保证原创者的利益,使用性是指能发挥使用这个LPC lib的人的自主性,不要单单认为是设计者或者是大家说的巫师(wizard)。


4.角色系统
        如果你的lpmud不需要角色,那么这个可能对于你是无足轻重的。如果你要求体现完美的人物特性,那么复杂而不冗余的系统是需要的。一般角色所要表现的东西都应该考虑一下。传统需要的是 表现 生命 动作和交流。


5. 战斗系统
        首先 确定你的lpmud是否需要战斗 这里的战斗是指比较复杂的战斗 包括西方的魔法和东方的战斗 都是战斗。战斗系统的表现方式有很多种 需要提醒的是 心跳并不是唯一处理战斗的方式。就好像现在很多游戏都使用既时系统 但是还有很多的游戏在采用回合或者半回合的方式。ES的lib比较东方化 但是带有明显的西方mud的特性 就是心跳来处理普通技 而传统武侠是没有skill perform的区分的。记住,没有心跳一样可以战斗。战斗要处理的事情就是 怎么决定出手(心跳是AI处理的一种途径) 怎么决定结果(伤害 回避等等) 怎么决定仇杀等等 表现方式(描述)


6 网络服务系统
         更多的服务被包含到intermud3中,mudos显得更像是一个server服务提供者,最多可以达到4-5个端口,可以用来提供包括http/mail/ftp/finger/telnet/等等服务 其实我们可能根本不需要这么多 一个最基本的telnet或者ftp用来处理一些文件服务 一个简单的UDP交流可以用来保持相关mud之间简单交流。另外 文件自动更新功能 数据统一风格 分站区域互连和漫游也在考虑的范围之内

 

7.时间系统
        一个时间系统,用来保持整个Mud的发展,天气/灾难/故事的发生都可以归纳到这一类。良好的时间系统可以用来纪录mud world的历史,这方面参考国外的mud可以收益良多。好的系统已经出现了时间 天气 季节 区域 灾难等等的结合。东方太阳西方雨。

 

一些基本的设置用来维持一个LPC lib,而作一个LPMud,还需要更多的变化和环境。不仅仅是一个LPC lib。就好像一个linux系统 单单只有内核是不行的。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/417856.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java hanoi塔问题_java 解决汉诺塔问题

//汉诺塔问题//HanYang 2016/10/15import java.util.Scanner;//输出public class Hanuota {public static void Show(String a,String b){System.out.print(" " a "->" b " " );}//从a移到cpublic static void Fun(int n, String a,Strin…

心跳防护程序

心跳防护程序的作用心跳防护程序用于实现无人值守的程序的自维护功能&#xff0c;使得被防护程序由于某种异常而导致崩溃时可以自动重新启动&#xff0c;满足无人值守的环境要求。心跳防护程序适用于那些需要无人值守&#xff0c;长期运行&#xff0c;但程序由于不确定性因素有…

[水煮 ASP.NET Web API2 方法论](1-1)在MVC 应用程序中添加 ASP.NET Web API

问题 怎么样将 Asp.Net Web Api 加入到现有的 Asp.Net MVC 项目中 解决方案 在 Visual Studio 2012 中就已经把 Asp.Net Web Api 自动地整合到了 MVC 项目模板中。自 Visual Studio 2013 以后&#xff0c;创建 ASP.Net Web应用程序使用的是一种新的"One ASP.NET"项目…

java io流文件损坏_java使用io流下载.docx. xlsx文件,出现文件损坏提示

介绍在使用io流下载服务器上的资源文件时&#xff0c;出现以下提示&#xff1a;但是选择“是”后文件可以正常打开参考 代码如下&#xff1a;[codesyntax lang"java"]RequestMapping(value "downLoadInstruction")public void downLoadInstruction(HttpSe…

java des对称加密_JAVA加密解密DES对称加密算法

1 下面用DES对称加密算法(设定一个密钥&#xff0c;然后对所有的数据进行加密)来简单举个例子。23 首先&#xff0c;生成一个密钥KEY。4 我把它保存到key.txt中。这个文件就象是一把钥匙。谁拥有它&#xff0c;谁就能解开我们的类文件。代码参考如下&#xff1a;5 packagecom.n…

计算机的存储单位

位 bit (比特)(Binary Digits)&#xff1a;存放一位二进制数&#xff0c;即 0 或 1&#xff0c;最小的存储单位。字节 byte&#xff1a;8个二进制位为一个字节(B)&#xff0c;最常用的单位。计算机存储单位一般用B&#xff0c;KB&#xff0c;MB&#xff0c;GB&#xff0c;TB&am…

C内存管理详解

【规则1】用malloc或new申请内存之后&#xff0c;应该立即检查指针值是否为NULL。防止使用指针值为NULL的内存。 【规则2】不要忘记为数组和动态内存赋初值。防止将未被初始化的内存作为右值使用。 【规则3】避免数组或指针的下标越界&#xff0c;特别要当心发生“多1”或者“…

Dubbo xml配置 和注解配置 写法

<?xml version"1.0" encoding"UTF-8"?><!-- - Copyright 1999-2011 Alibaba Group. - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the Licen…

java solr_通过Java访问Solr服务实例及相关配置

一、通过Java访问Solr服务(手动创建索引库)1、创建项目&#xff0c;配置环境(导包及相关文件)1、SolrJ核心包 /solr-4.10.3/dist/solr-solrj-4.10.3.jar2、SolrJ依赖包 /solr-4.10.3/dist/solrj-lib下的所有包3、日志依赖包 /solr-4.10.3/example/lib/ext目录下的所有jar包4、J…

WCF RIA优缺点

优点&#xff1a;WCF RIA提供方便的数据访问形式&#xff0c;服务端代码写在.cs文件中继承DomainService&#xff0c;类前要声明[EnableClientAccess()]生成后sliverlight项目中/Generated_Code下会有对应的.g.cs文件&#xff0c;该文件会包含WCF RIA服务中各方法的访问方法。缺…

SpringMVC+MyBatis 返回时间格式转换的解决方案

Spring MVC 4.X ResponseBody 日期类型Json 处理 摘自http://tramp-zzy.iteye.com/blog/2090330 2014-07-10方法一&#xff1a;全局处理 <mvc:annotation-driven> <!-- 处理responseBody 里面日期类型 --> <mvc:message-converters> …

SqlServer Split功能函数

CREATE FUNCTION [dbo].[StrSplit](str nvarchar(max), --源字符串split varchar(32) --分隔符)RETURNS t TABLE(col nvarchar(max))AS BEGINWHILE(charindex(split,str)<>0) BEGININSERT t(col) VALUES(substring(str,1,charindex(split,str)-1))SET str stuff(s…

java 内存堆和栈_java堆内存和栈内存的处理

前段时间学习二叉树在处理删除操作的时候遇到一个头疼的问题&#xff1a;删除节点的时候明明已经置null了可树上该节点依旧存在&#xff0c;还必须执行node.father.left null;才可以删除node节点&#xff0c;寻找了一下原因发现还是因为对java内存管理理解不够深入。代码如下&…

maven编译项目时提示:cached in the local repository

1.今天使用命令mvn compile编译maven项目时提示错误信息&#xff0c;部分错误信息如下&#xff1a; Failure to transfer wsdl4j:wsdl4j:jar:1.6.3 from http://xx.xx.xx.xx:8081/nexus/content/groups/public was cached in the local repository, resolution will not be re…

MS SQLSERVER中如何快速获取表的记录总数

&#xff08;转自&#xff1a;http://www.cnblogs.com/pingkeke/archive/2006/05/29/411995.html&#xff09;在数据库应用的设计中&#xff0c;我们往往会需要获取某些表的记录总数&#xff0c;用于判断表的记录总数是否过大&#xff0c;是否需要备份数据等。我们通常的做法是…

java 压缩指定文件_Java将指定文件/文件夹压缩成zip、rar压缩文件

import org.apache.tools.zip.ZipEntry;import org.apache.tools.zip.ZipOutputStream;import java.io.*;import java.util.zip.CheckedOutputStream;import java.util.zip.CRC32;/*** author chenssy** 将指定文件/文件夹压缩成zip、rar压缩文件*/public class ZipCompressor …

python基础(十三)

项目实战&#xff1a;运维堡垒机开发 前景介绍 到目前为止&#xff0c;很多公司对堡垒机依然不太感冒&#xff0c;其实是没有充分认识到堡垒机的IT管理中的重要作用的&#xff0c;很多人觉得&#xff0c;堡垒机就是跳板机&#xff0c;其实这个认识是不全面的&#xff0c;跳板功…

使用 TABLESAMPLE 限制结果集

TABLESAMPLE 子句将从 FROM 子句中的表返回的行数限制到样本数或行数的某一百分比。例如&#xff1a; 复制代码 TABLESAMPLE (10 PERCENT) /*Return a sample 10 percent of the rows of the result set. */TABLESAMPLE (15 ROWS) /* Return a sample of 15 rows from the resu…

Catalan数(数论)

Catalan数 【参考网址】http://www.cnblogs.com/gongxijun/p/3232682.html 记得当时我们队写过一个&#xff0c;差点超时&#xff0c;现在找到了公式&#xff0c;感觉还是挺简单的。 还要注意&#xff0c;就算开long long 也只能表示到第33个&#xff0c;之后就会溢出。 &…

C#参考资料

C#参考资料 C# 读写XML文件 xmlDocumentC#时间函数c#读写XML文件在C#中使用异步Socket编程实现TCP网络服务的CS的通...C# socket传文件c#调用API要点