人一生这一辈子,能记住多少事?还是写下来的好。 注册 | 登陆
浏览模式: 标准 | 列表分类:Webgame

wapgame之聊天系统研究

一直对wapgame的聊天不知道怎么制作

于是今天专门研究了下《仙游记》的聊天系统。发现他们的聊天系统很好地解决了心里的问题。

他们的聊天系统采用了非即时的方式(这也没办法,WAP就是不及时嘛)。他们使用了一个队列方式保存了当前聊天信息,猜想应该是一个有限队列,一人一个。当你进入系统时,会按先进先出的规则输出之前的聊天信息,直到输出完成为止(一次刷新输出一页)。

这样就相对较为即时了吧。

我的设计思路:

系统存在一个环型队列,每句聊天信息都有一个唯一ID,每个用户有一个字段专门用于存储最后一次读取的唯一ID(指针),以便于记录用户读取了哪些聊天信息。

Tags: wapgame

webgame之RPG战斗系统研究

webgame的RPG战斗系统主要采用回放制进行,所以,我们所有的运算均是在服务端进行的。

一般来说,战斗主要包括了攻击、防御、效果等等要素,我们这里只讨论对用效果要素的问题。

效果按时间分为当时生效型、持久生效型。

对于当时生效型,也即是说,使用了该技能后,该技能的附加效果只作用于当时,之后不会再有效果。

而对于持久生效型的技能,则会一直持续作用下去,直到效果消失。

为了记录这个效果,我们设计了以下的用于记录效果的数据结构:

类型、优先级、效果数值、效果结束的时间数值

我们来讨论下设置的原因:

类型:用于表述当前是哪种效果,比如,是否是攻击加强,是否是定身,是否是防御加强等等。

优先级:用于表述当前效果的优先顺序,后发的同类型效果,如果优先级不如之前的效果,则不会生效;如果大于或等于之前的效果的优先级,则会覆盖之前的效果。

效果数值:用于表述效果所产生的最大的该效果的数值,如增加多少攻击,增加多少防御等等。

效果结束时间数值:当时间数值大于该值后,该效果失效。并删除此条效果记录。

 

======================================

在这里。我们说说时间数值,为什么这里我们称为时间数值,因为它既可以用于表示回合数,也可以用于表示时间(如0.1秒),这样可以很容易地把一套战斗系统用于多种方式。

======================================

 

关于技能的CD时间的数据结构:

技能类型、CD时间(下一次技能发动时间)

 

说明:

之所以加上技能类型,这样是为了方便地进行一组同类型的技能共用一个CD时间。CD时间其实就是我们时间数值,只有当当前时间数值大于等于该值后,该类型的技能才能被再次发动。

也就是说,我们在设计技能系统时,就需要给每一个技能分配一个技能类型,以用于查询该技能是否可以发动。