专利名称:一种在网络游戏中实现高可扩展性ai的方法
技术领域:
本发明涉及一种在网络游戏中实现高可扩展性AI (Artificial Intelligence,即 人工智能)的方法,特别涉及一种用C#(C#是微软公司发布的一种面向对象的、运行于.NET Framework之上的高级程序设计语言。它包括了诸如单一继承、接口、与Java几乎同样的语 法和编译成中间代码再运行的过程,是微软公司.NET windows网络框架的主角。)技术实 现的在网络游戏中实现高可扩展性AI的方法。
背景技术:
在网络游戏中,经常会有用户因为各种原因掉线或者在牌型很简单的情况下主动 托管给计算机自动处理,另外还有可能在游戏人数不够时,为了使游戏能正常进行,也需要 补充一些AI来与真人进行游戏。而一般在这些不同的状况下,应该为用户提供不同智商的 AI代替用户操作。
发明内容
本发明所要解决的技术问题是提供一种在网络游戏中实现高可扩展性AI的方 法,它可以进行灵活配置以使得在不同情况下,能够为用户提供不同的AI服务。本发明所述的一种在网络游戏中实现高可扩展性AI的方法,该方法至少包括如 下的步骤步骤1 写一个AI接口,所有类型的AI必须实现此接口 ;步骤2 使用房间配置工具在每个游戏房间中配置Al,对每一种客户端“不能出牌 的状态”配置AI实现类的全名和此类此AI实现类所在的程序集名称,并将这些配置信息将 写入数据库或者配置文件;步骤3 当房间启动的时候,初始化一个AI配置缓存器,它把房间的AI配置信息 读入内存,进行缓存;步骤4:当有用户的状态因为网络断掉等异常情况变成“不能出牌的状态”的时 候,房间服务器根据用户状态,从AI配置缓存器中获取AI的类全名;步骤5 房间服务器以AI类的全名为传入参数,从AI工厂中获取一个AI实例;步骤6 房间服务器调用此AI实例的方法,完成AI操作;本发明所述的一种在网络游戏中实现高可扩展性AI的方法,房间服务器以AI类 的全名为传入参数,从AI工厂中获取一个AI实例,其步骤为步骤51 :AI工厂类从缓存的AI字典列表中,以AI类的全名为键,查找是否有缓存 过的AI对象;步骤52 如果已经有缓存的对象,直接返回给调用者;步骤53 如果没有缓存的对象,从房间的AI缓存配置中读取此类全名所在的程序 集,根据这些信息,用反射的方式生成一个AI对象;步骤54 把生成的AI对象缓存在AI工厂的AI字典列表中,并把此对象返回给调用者;本发明涉及的一种在网络游戏中实现高可扩展性AI的方法,使得AI的实现完全 是可配置的,并且这种可配置的AI可以以插件的方式附加到游戏服务器中,修改一个已有 的AI或者增加一个新的都不会对其他逻辑构成任何影响。
具体实施例方式本发明的主要步骤如下步骤1 写一个AI接口,所有类型的AI必须实现此接口 ;步骤2 使用房间配置工具在每个游戏房间中配置Al,对每一种客户端“不能出牌 的状态”配置AI实现类的全名和此类此AI实现类所在的程序集名称,并将这些配置信息将 写入数据库或者配置文件;步骤3 当房间启动的时候,初始化一个AI配置缓存器,它把房间的AI配置信息 读入内存,进行缓存;步骤4:当有用户的状态因为网络断掉等异常情况变成“不能出牌的状态”的时 候,房间服务器根据用户状态,从AI配置缓存器中获取AI的类全名;步骤5 房间服务器以AI类的全名为传入参数,从AI工厂中获取一个AI实例;步骤6 房间服务器调用此AI实例的方法,完成AI操作;上述步骤5,房间服务器以AI类的全名为传入参数,从AI工厂中获取一个AI实例 的具体步骤如下步骤51 =AI工厂类从缓存的AI字典列表中,以AI类的全名为键,查找是否有缓存 过的AI对象;步骤52 如果已经有缓存的对象,直接返回给调用者;步骤53 如果没有缓存的对象,从房间的AI配置缓存中读取此类全名所在的程序 集,根据这些信息,用反射的方式生成一个AI对象;步骤54 把生成的AI对象缓存在AI工厂的AI字典列表中,并把此对象返回给调 用者;上述的技术方案实施时,游戏房间服务器的开发人员可以很方便灵活的为不同房 间的不同用户状态指定Al,这种可配置的AI可以以插件的方式附加到游戏服务器中,修改 一个已有的AI或者增加一个新的都不会对其他逻辑构成任何影响,日后扩展游戏AI功能
将变得非常容易。最后所应说明的是,以上实施例仅用以说明而并非限制本发明所描述的技术方 案;因此,尽管本说明书参照上述的实施例对本发明已进行了详细的说明,但是,本领域的 普通技术人员应当理解,仍然可以对本发明进行修改或者等同地替换;而一切不脱离本发 明的精神和范围的技术方案及其改进,其均应涵盖在本发明的权利要求范围当中。
权利要求
一种在网络游戏中实现高可扩展性AI的方法,其特征在于该方法至少包括如下的步骤步骤1写一个AI接口,所有类型的AI必须实现此接口。步骤2使用房间配置工具在每个游戏房间中配置AI,对每一种客户端“不能出牌的状态”配置AI实现类的全名和此类此AI实现类所在的程序集名称,并将这些配置信息将写入数据库或者配置文件。步骤3当房间启动的时候,初始化一个AI配置缓存器,它把房间的AI配置信息读入内存,进行缓存。步骤4当有用户的状态因为网络断掉等异常情况变成“不能出牌的状态”的时候,房间服务器根据用户状态,从AI配置缓存器中获取AI的类全名。步骤5房间服务器以AI类的全名为传入参数,从AI工厂中获取一个AI实例。步骤6房间服务器调用此AI实例的方法,完成AI操作。
2.根据权利要求1所述的一种在网络游戏中实现高可扩展性AI的方法,其特征在于 房间服务器以AI类的全名为传入参数,从AI工厂中获取一个AI实例,其步骤为步骤51 =AI工厂类从缓存的AI字典列表中,以AI类的全名为键,查找是否有缓存过的 AI对象。步骤52 如果已经有缓存的对象,直接返回给调用者。步骤53 如果没有缓存的对象,从房间的AI缓存配置中读取此类全名所在的程序集, 根据这些信息,用反射的方式生成一个AI对象。步骤54:把生成的AI对象缓存在AI工厂的AI字典列表中,并把此对象返回给调用者。
全文摘要
一种在网络游戏中实现高可扩展性AI的方法,首先写一个AI接口,所有类型的AI必须实现此接口;使用房间配置工具在每个游戏房间中配置AI,对每一种客户端“不能出牌的状态”配置AI实现类的全名和此类此AI实现类所在的程序集名称,并将这些配置信息将写入数据库或者配置文件;然后当房间启动的时候,初始化一个AI配置缓存器,它把房间的AI配置信息读入内存,进行缓存;房间服务器以AI类的全名为传入参数,从AI工厂中获取一个AI实例;最后房间服务器调用此AI实例的方法,完成AI操作。本发明使得AI的实现完全是可配置的,并且这种可配置的AI可以以插件的方式附加到游戏服务器中,修改一个已有的AI或者增加一个新的都不会对其他逻辑构成任何影响。
文档编号G06F19/00GK101887480SQ200910084079
公开日2010年11月17日 申请日期2009年5月14日 优先权日2009年5月14日
发明者刘立军, 张守文, 王磊, 陶勇胜 申请人:灰熊(北京)科技有限公司