cocos2d-x 学习规划之试写贪吃蛇

最近接到一个移动客户端小网络游戏外包。为了速度的把跨各种移动平台的代码写出来,经调研,初步选择使用 cocos2d-x 来开发。之后花了一两个小时,拟定了一个开发需求满足计划,不出意外的话,我将以每阶段版本为题,开源所有代码,完成一个系列文章以供大家学习&找喷,大概到第5个版本时会挂起开始做外包(得挣钱),等适当的时机再继续写后面的文章。正文如下:

贪吃蛇之 c2dx 版

约定:
以 ipad3 的 2048x1536 为基础分辨率准备材质,xy 比例为 4:3
满屏显示 32 x 24 个大格,每格图片像素为 64x64。
即:设计尺寸为 2048x1536

实现步骤:

第一版:
试用 c2dx 的基础输入输出
蛇的移动是格子跳跃式的,图块按照 32 x 24 的大格子来放置,不做平滑移动效果,无状态管理

开发步骤:
1. 做墙壁( 以 32x24 满屏方式绘制 )
2. 做简单食物( 随机放置十个左右, 先就不判断是否重复了. 将来再上洗牌, 分区算法 )
3. 画出蛇( 初始总长为 7, 头1身5尾1, 从最下面往上的方向 )
4. 做触控操作( 蛇头按 点击方向 前进 即按点击的坐标换算与头的xy差值较大的方向移动 )
5. 同时做碰撞检测( 碰墙壁或自己后停下, 改变方向可继续前进 )
5.1 进入死角,游戏重置( 死角即无法改变方向,先不做相关UI )
5.2 吃食( 食再生, 蛇变长 )

该版只创建3个类:
1. 墙壁( 内置所有砖块集合, 含绘制, 指定坐标是否有墙检测函数 )
2. 食物( 内置所有食物集合, 含绘制, 指定坐标是否有食物检测函数, 吃掉指定坐标的食物同时食物随机再生函数 )
3. 蛇( 内置头,尾,所有身体细节 )

每循环工作流程:
1. 用一段时间( 比如 0.3 秒 )来检查用户输入, 得出当前应该行进的方向
2. 各种碰撞检测和移动限定检测,食物再生
3. 渲染:墙, 食物,蛇

第二版:
试用 c2dx 的 sprite 帧状态动画功能( 考虑自己控制显示内容 )
基于第一版,在碰撞判定上,使用第一版的格子坐标系,但蛇的格间移动和转向,加入平滑的帧动画

改进步骤:
1. 引入 关键帧 和 补间帧 的概念
2. 引入 状态 的概念
3. 引入 行为指令预置 的概念

具体的:
1 以 60 fps 和每 0.5 秒动一格为例,每两个关键帧之间,有29个补间帧
2 关键帧即第一版中,每 0.x 秒的一次坐标属性变化和判定操作
3 补间帧即根据先前关键帧得出的下一个关键帧的行为目标, 通过时间点和状态值来求得当前应该播放哪帧动画并绘制到什么坐标
4 在播放补间帧期间,将检测玩家最后一个有效的行为输入,作为即将到达的关键帧的行为指示


第三版:
试用 c2dx 的 字体, UI 部分
基于第二版,调整大格显示范围为 24 x 24, 留出屏幕的一侧显示 UI 控件

改进步骤:
1. 引入 暂停, 运行中, 游戏结束 的状态, 累加游戏时间
2. 做 开始游戏,暂停,结束游戏的按钮菜单,可选难度( 移动速度快慢,初始食物数量 )
3. 显示当前积分, 总的游戏时间
4. 显示历史记分板


第四版:
UI 进一步增强, 引用网络部分
1. 令玩家可以注册或登录
2. 允许玩家将成绩上传到服务器
3. 显示从服务器中下载的玩家成绩榜单
4. 上传 & 下载的网络异常处理


第五版:
网络部分进一步增强,提供联机对战
1. 制作游戏服务器端,业务逻辑与上面几版无异
2. 补充 蛇-蛇 相关判定函数
3. 游戏节奏放缓;将指令不断的发到服务器端,关键帧到来时仅保留最后一个有效指令。
4. 理论上讲,该设计限制网络延迟不可以大于移动速度
5. 客户端补帧显示服务器发来的关键帧行为结果和下一关键帧的行为指示
6. 断线重连, 超时等待相关


第六版:
进一步使用 c2dx 的各种特效,粒子,音效等
1. 根据游戏进程,蛇的颜色可以变化。
2. 食物被吃掉和长出来的时候,考虑用粒子效果来表现


第七版:
基于分时系统的 AI, 寻路相关引入
1. 引入 coroutine 的概念. 当前 C++ 下使用达夫设备方式切换上下文实现
2. 赋予食物的多样性,可跑可跳,带有智能
3. 玩家可选择电脑对战. 实现电脑自动吃食 AI


第八版:
设计,算法改良
1. 引入虚拟地图的概念,理论上讲可以将实际游戏地图无限放大,而不是局限在 24 x 24
2. 引入洗牌,4叉树分区等索引优化算法
3. 引入镜头概念,焦点通常集中在蛇头部分,屏幕主要显示 玩家当前关心的部分
4. 多人游戏进一步扩大范围,不再局限于2个玩家,甚至不局限于只有玩家( 电脑玩家乱入 )


第九版:
改进游戏性
1. 多样化食物种类,提供各种特效
2. 多样化物体种类 增加天敌之类
3. 多样化场景种类 增加陷阱,奖励之类
4. 引入道具概念( 相当于让玩家能手工作弊 )
5. 引入成就,任务系统,道具箱
6. 围绕上面的改进,制作各种工具,设计器


第十版:
商业相关
1. 进一步挖坑
2. 内购,商城,各种

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值