创四方·大部落

 找回密码
 立即注册
搜索
查看: 516|回复: 8

[游戏开发] 计科1班——第三周任务分配

[复制链接]

3

主题

6

帖子

37

积分

学士

Rank: 1

积分
37
发表于 2018-9-11 18:13:27 | 显示全部楼层 |阅读模式
本帖最后由 zoutuoling 于 2018-9-11 23:28 编辑

第三周任务分配

服务端组:①叶德钦,③林毅,⑨周佳慧)
任务:
1.本周内必须完成所有的通信协议的制定(这是首要问题,服务端与客户端的具体开发工作,都依赖于这个协议的制定)
2.完成最基本的登录注册的接口。

客户端组:⑥熊林盛,⑦蔡俊杰,⑧郑艺惠)
任务:
1.对一些技术上的关键点进行研究,罗列出项目中具有哪些关键技术点,并且解决一部分。(可参考计科1班暗棋.txt)

UI设计组:⑤翁怀夏,②张柠)
任务:
1.创建初始界面游戏登录注册场景,实现登录与注册场景的动态切换。
2.创建游戏主菜单场景(详情参考我们提供的原型图)

测试组:⑪陈言良,⑩胡福先)
任务:
1.本周内要确定代码整体的命名格式规范。(列如,文件夹命名、JS文件命名、代码编写规范等)

本周六23:00前编写好本周的“任务周报”形式发到组长群)


初始界面.png
主菜单.png
游戏.png
游戏结束.png
回复

使用道具 举报

1

主题

3

帖子

45

积分

学士

Rank: 1

积分
45
发表于 2018-9-17 17:14:01 | 显示全部楼层
第三周服务端组(最终选取第9组周佳慧组)

通信协议

以下用以S表示Server,C表示Client
总体格式:
    {"s":状态,"d":具体数据对象}
    注意当值为数字时,无需加双引号
解释:
s: 代表state。指明返回数据的状态。
                0 失败。失败是由用户操作导致的,比如用户输入的密码不正确。
此情况下,用消息框提示失败信息后,可自行消失,或提供确定按钮,用户点击后消失。之后用户可重新操作。
1 正常。此状态下,data是由各种datatype定义。
                2错误。错误是系统因素导致的,比如数据库连接失败。
此情况下,用消息框提示错误信息后,应提供重试或取消给用户选择。
                3时间戳超过容许范围。需要重新做时间同步。
                4身份验证失败。需要重新登录。
在以上几种状态中。data的格式为 "d":" 描述错误或失败原因的字符串 "。
>4的值。用于扩展,作为各种dataType自定义的状态。此状态下,data是由各种datatype自定义。
d: 代表data。是具体返回的数据。

具体通信过程,c2s均采用post方式传递参数

0、时间同步 timeSync
    c2s:无
    s2c:
            d=s端当前的时间戳(以秒为单位)

1、密钥获取 getKey
    可利用该接口,顺带完成时间同步
    c2s:k= c端产生的随机字符串
    s端的处理过程:产生一个随机字符串与k衔接后MD5,将MD5的结果做为密钥,将随机字符串发给c
    s2c:d={"k":"s端产生的随机字符串","time":s端当前的时间戳(以秒为单位),"id":" keyID"}
    c端的处理过程:将此前的随机字符串与k衔接后MD5,将MD5的结果做为密钥
2、用户注册 regist
    c2s:name=用户名。
           password=密码。先MD5,再与密钥异或,再base64。
           time=当前时间戳。
           id=keyID。
           a=身份验证字符串。 MD5( u+t+密钥)。
    s2c:
            d={"userid": " 用户ID " ,
"name": " 用户名",
"password ": 密码,
"time":"当前时间戳",
"id":"keyID",
"a":"身份验证字符串"
}  
3、用户登录 login
c2s:name=用户名。
     password=密码。先MD5,再与密钥异或,再base64。
     time=当前时间戳。
     id=keyID。
     a=身份验证字符串。 MD5( u+t+密钥)。
    s2c:
            d={"userid": " 用户ID " ,
"name": " 用户名",
"password ": 密码,
"time":"当前时间戳",
"id":"keyID",
"a":"身份验证字符串"
}
4、房间号    room
c2s: roomid=房间号。
      time=当前时间戳。
      name=用户名。
s2c:  d={"userid": " 用户ID " ,
"name": " 用户名",
"roomid":房间号,
"time":"当前时间戳",
}
5、棋盘位置 position
  c2s:  x=横坐标位置。
         y=竖坐标位置。
s2c:  d={"x": 横坐标位置 ,
"y": 竖坐标位置,
}
6、棋子基本信息   chess
c2s: chess=兵,车,象,帅,士,马,仕,将。
      position=(x,y)。
s2c:
d= [{"chess":"兵,车,象,帅,士,马,仕,将",
"chessid":"棋子id" ,
"属性": "值",
"数量":兵,车,象,帅,士,马,仕,将各个数量,
“位置”x,y),
“位移量”:棋子位移量
}]  
            //返回棋子所有基本数据(服务器端有的都给)
            //棋子基本信息属性:兵(卒):兵(卒)只能吃对方的将(帅)。
车(车):车(车)可以吃对方的卒(兵)、炮(炮)、马(马)。
马(马):马(马)可以吃对方的卒(兵)或炮(炮)。
相(象):相(象)可以吃对方的卒(兵)、炮(炮)、车(车)、马(马)。
仕(士):仕(士)可以吃对方的卒(兵)、炮(炮)、车(车)、马(马)、象(相)。
帅(将):帅(将)可以吃对方的炮(炮)、车(车)、马(马)、象(相)、士(仕)。      
//值:兵(卒):是否能吃掉另一个棋子(0/1),
      车(车):是否能吃掉另一个棋子(0/1),
      马(马):是否能吃掉另一个棋子(0/1),
相(象):是否能吃掉另一个棋子(0/1),
仕(士):是否能吃掉另一个棋子(0/1),
帅(将):是否能吃掉另一个棋子(0/1),
           //数量:5个兵,2车,2象(相),1帅(将),2士(仕),2马
7、棋子图片 chessImage
    c2s:chessid =棋子id
s2c:棋子图片数据流
8、棋盘图 checkerboard
c2s:board=随机产生的棋盘。
time=当前时间戳。
s2c: d={"boardid": " 棋盘ID " ,
"S": xy,
"board": S里的数组(x,y),随机放入棋子
"time":"当前时间戳",
}

9、游戏中数据 stages
    c2s: boardid=棋盘id。
            name=用户名。
        count down=倒计时。
time=时间戳。
roomid=房间号。

        a=身份验证字符串。 MD5( u+t+密钥)。  
  s2c:
         d=[{ boardid ": "棋盘id " ,
" name ":"用户名",
" count down ":"倒计时",
" roomid ":房间号,
"s":剩余棋子数,
}]

13、猜拳信息guessing
    c2s: suessing= 出拳类型
          userid,time,a
          stone=石头
scissors=剪刀
cloth=布
    s2c:d=赢1,输2,和3

14、游戏结束时,记录游戏结果 result
c2s:  userid,time,a
roomid= 用户房间ID
         submit=放弃   //自己认输
        pices=(0/1),//自己的棋子还有没有,0:没有 1:有
         over=(0/1),//以一子或多子连续捉对方一个棋子超过8个回合,0:超过,1:没超
s2c:result="0" 或 "1"  //赢或输

15、和棋harmony
    c2s:userid,time,a
         p=(0/1)  //通过1,没通过0
         round=(0/1)  //连续20回合无吃子,无:0,有:1
         Bnum=(0/1)  // 0:相同,1:不同
s2c:d=2  和棋

16、升级检查 updateCheck
    c2s:   v= 客户端当前版本号 。
    s2c: d={"v": " 当前最新版本号 " ,"f":["要更新的文件路径"]}

17、升级 update
    c2s:  f=要更新的文件路径
s2c: 文件数据流
18、用户的资料数据 scripts
c2s: userid、 time、 a。
      battles=总对战次数
      rate=对战胜率。
      head=头像
nickname=昵称
s2c: d=[{"userid":"用户id","battles": 总对战次数 ,"rate":对战胜率,"head":"头像","nickname":"昵称","view":"是否查看自己的对战信息",……]

回复

使用道具 举报

3

主题

6

帖子

37

积分

学士

Rank: 1

积分
37
 楼主| 发表于 2018-9-17 21:10:43 | 显示全部楼层
本帖最后由 zoutuoling 于 2018-9-17 21:13 编辑

第三周客户端组(最终选取第7组蔡俊杰组)

登录/注册(成功)
        向服务端传输登录/注册的数据
主菜单界面
游戏介绍(以链接形式跳转到游戏介绍页面)
个人资料
游戏模式
游戏设置(音效开关,反馈)
玩家(匹配玩家状态是否在线,访问服务端,需要匹配接口)
游戏界面
匹配成功,进入游戏界面,获取游戏状态(游戏规则),将游戏状态数据传送给服务端,等待服务端操作。
(玩家的各个操作需传数据给doOperate接口,通过它判断各个棋子的移动格数和大小,从而实现暗棋规则,实现游戏的进程;根据玩家操作的数据进行判断,判断结果数据送给getGameState接口,服务端返回游戏状态)
两用户的唯一ID和唯一的房间ID被占用,且只能一个ID去一个房间。并在房间内设置两个数组,分别存放两用户的走棋路线,并将用户的走棋规则调用。
游戏结束
1、返回游戏界面,重新匹配;
2、退出游戏,返回主菜单;
3、访问服务端,传输“再一次游戏”的命令,获取again的接口,服务端返回命令

技术难点:
1、如何进行玩家的对战匹配,匹配的依据是什么?
   解决方式:向服务器发送请求,服务器对玩家进行分类,再采用积分,或者胜负局数为依据,进行匹配。
2、每次开局时,棋子摆放位置如何安排?
  解决方法:利用随机数,随机摆放棋子。再利用数组记录。
3、游戏刚开始时棋子需反面朝上,棋子的正反面判断从而实现棋子被翻开
4、游戏开始的双方谁先下第一步成为这个游戏开始时最关键的问题
解决方案:通过石头剪刀布决定先手和后手,先手先翻棋,第一个人翻的第一个棋子的颜色,那便是第一个玩家棋子的颜色,另一个反之。自己回合可翻一个棋子,或选择让一个棋子行动一格。
5、如何存储棋子的位置信息。
  解决方式: 利用二维数组 4*8 来存储棋子,再利用另一个二维数组来判断是红子(0)还是黑子(1)
6、如何判断棋子的大小?
  解决方式:利用数字表示棋子,通过数字判断棋子的大小
7、游戏算法如何利用代码实现?
(1)鼠标点在哪个坐标上需要有相对应的操作:
相对应的棋子移动规则,如:只能竖线和横线走一格;
相对应的吃子规则,如:炮吃子时必须隔着一颗棋子;
8、判断每一步棋走完是否有一方获胜,如果有,本局终止。
获胜条件:某一方的棋子被全部吃光
和局条件:双方在任何时候,如连续20回合无吃子,即判和局。或者在双方走棋出现循环反复达三次,双方又不愿变招时,以谁的大子多判定胜负(兵、卒;帅、将不视为大子),如果相同,即为和局。
9、游戏时间问题
解决方案:如A玩家先手,需要在界面上显示一个读秒倒计时,提示他的回合时间,如10秒。
A玩家可能在第5秒就决定了要操控哪枚棋子,并作出了移动操作,此时关闭倒计时;如果A玩家10秒之后还未有动作操作,将执行托管操作。




回复

使用道具 举报

3

主题

6

帖子

37

积分

学士

Rank: 1

积分
37
 楼主| 发表于 2018-9-17 21:54:48 | 显示全部楼层

第三周UI设计组(最终选取第5组翁怀夏组)
注册界面.png
登录界面.png
主菜单界面.png
回复

使用道具 举报

3

主题

6

帖子

37

积分

学士

Rank: 1

积分
37
 楼主| 发表于 2018-9-17 22:55:57 | 显示全部楼层
第三周测试组(最终选取第11组陈言良组)

测试组.rar

97.6 KB, 下载次数: 14

回复

使用道具 举报

40

主题

87

帖子

1799

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1799
发表于 2018-9-19 23:44:16 | 显示全部楼层
wuwuhang 发表于 2018-9-17 17:14
第三周服务端组(最终选取第9组周佳慧组)

通信协议

我设计的协议有密钥交换有身份认证,你们打算实现吗?若真打算实现,我很高兴。若没打算实现,那就是深搬硬套我的设计,没有结合自身项目的思考来进行设计

这个项目最主要需要哪些服务端接口,课上,我已经画了图,但所给出的设计,该有的没有,不该有的却有,总体条理混乱。而且一些数据居然用中文!。请重写。
回复

使用道具 举报

40

主题

87

帖子

1799

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1799
发表于 2018-9-19 23:46:30 | 显示全部楼层
zoutuoling 发表于 2018-9-17 21:10
第三周客户端组(最终选取第7组蔡俊杰组)

登录/注册(成功)

没看到你们的实际成果,除了这回帖里的文字,你们还做了什么?  
所谓技术难点是与业务无关的,纯技术问题。例如:如何动态加载图片,如何只显示图片的一部分,等等
回复

使用道具 举报

40

主题

87

帖子

1799

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1799
发表于 2018-9-19 23:48:55 | 显示全部楼层
zoutuoling 发表于 2018-9-17 21:54
第三周UI设计组(最终选取第5组翁怀夏组)

工作量太少,一组人一周时间就这么三张图?
且设计上缺少对用户体验的考虑
例如:注册界面怎么跳转到登录界面?
就这么一张背景图,用在 了三个界面上,从艺术的角度来说,也很没用功
回复

使用道具 举报

40

主题

87

帖子

1799

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1799
发表于 2018-9-19 23:50:59 | 显示全部楼层
zoutuoling 发表于 2018-9-17 22:55
第三周测试组(最终选取第11组陈言良组)

就发个压缩包,没做任何解释,沟通表达上,太不注意了!一定要方便大家阅读!给出的文档,高达8页,却都是很基础的语法层面的规范,没有项目的规范!且客户端与服务端是不同语言,一个规范?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

创四方·大部落 ( 闽ICP备17018841号 )

GMT+8, 2018-11-17 16:27

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表