ARPG游戏 记录

登录业务系统
    登录注册
    角色创建

账号密码正确 才到角色创建这一步 
1   注册完之后---->角色创建
2   账号密码输入之后  如果角色没有创建--->创建角色
3   角色名字在client 随机or输入 初步校验合法性  server校验

网络库 PESocket

玩家属性
level       #等级
exp         #经验
power       #体力
coin        #金币
diamond     #钻石
crystal     #水晶


角色属性
hp            #生命
ad            #防御
ap          #战力
addef       #防御
apdef       #ap差值
dodge       #闪避概率
pierce      #穿透比率
critical    #必杀技(暴击概率)
guideid     #引导

地图
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <item ID="10000">
        <mapName>圣光主城</mapName>
        <sceneName>SceneMainCity</sceneName>
        <mainCamPos>17.4,7,50</mainCamPos>
        <mainCamRote>45,135,0</mainCamRote>
        <playerBornPos>22,-1.1,45</playerBornPos>
        <playerBornRote>0,0,0</playerBornRote>
    </item>
</root>

任务剧情
id:1000
npcid:0智者(1将军,2工匠,3商人)
dialog:[xxxxxx,xxxxxx,xxxxxxx,xxxxxx]
actID:剧情结束之后,要干的事情(0与智者聊天,1进入副本,2强化界面,3体力购买,4金币铸造,5世界聊天)
reward:coin 100 exp 100


经验值升级
def calExp(player,addExp):
    curlv = player.level
    curexp = player.exp
    while True:
        diff = getexpupbylevel(curlv) - curexp
        if(addExp >= diff):
            curlv += 1
            curexp = 0
            addExp = addExp - diff
        else:
            player.level = curlv
            player.exp = curexp + addExp
            break

强化升级
头部、身体 腰部 手臂 腿部  脚部
每个部位都有星级  生命、伤害、防御  花费金币强化各个部位

强化条件:最小level,消耗xxxx 结果:生命+x 伤害+x 防御+x 战力+xxx 


聊天系统
世界、工会、好友

资源交易系统
花费钻石购买体力、金币

在线玩家 体力每隔xx秒定时恢复xxx点  体力也有上限
离线玩家 根据离线时长=now - 玩家下线时间 折算add体力  
PowerAddSpace = 5 分钟
PowerAddCount = 2 体力值
addpower = diffsecond / (60 * PowerAddSpace) * PowerAddCount

powermax = 根据当前玩家等级 查表获取
if player.power >= powermax:
    continue
else:
    player.power += addpower
    if player.power >= powermax:
        player.power = powermax

任务系统

 

战斗系统

一般的战斗模式如下

客户端先要自己校验体力够不够。。。。。

a请求服务器开始战斗,校验合法则开始加载战斗资源

b玩家操控角色释放技能     本质是控制角色播放动作   对应时间点播放技能特效与音效

c 计算攻击范围与伤害

d 保留相应运算结果,战斗数据发往服务器校验

e 结果合法则发送关卡奖励

ARPG游戏不涉及战斗部分的网络同步

服务器伪代码

fbid = packet.unpacket("H",pkt)

costpower = getConfig(fbid).power

player.power -= costpower

然后告诉client 最新的power 以及 fbid

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值