一个俄罗斯的抽象原则和流程。 我们把游戏中的空间定义为S; S中的时间坐标定义为T S中的总质量为M 游戏开始的初始质量为M0 S中的物质增量为`M 质量增加的规则定义为 I(T); 玩家对物质M的控制方法为P(M)。 对手对物质M的控制方法为O(M)(关卡,CPU,第二玩家,多人玩家) S中物质运动规则为S(M)(游戏中的第三方,可以理解为宇宙意志或自然法则) S中的物质消去规则为B,B是一个策略集B={b1,b2,b3.....} S中的物质合理性检测为C,同样C也是一个策略集C={c1,c2,c3....} S中的死亡判定为D,同样D也是一个策略集D={d1,d2,d3... S世界的渲染方法为R(S) 游戏目的: 随着T的推进,M不断变化,玩家的任务是通过手中的方法P(M),利用B(M)和I(T)的规则对M进行调节,保证死亡检测D(P)为假,并想办法实现D(O)为真,击败对手。 游戏流程如下
初始化() LOOP D(P) ;判断玩家是否死亡 P(M) ;玩家操作 C(M) ;合理性检测(否->撤消非法运动) O(M) ;对手操作 C(M) ;合理性检测(否->撤消非法运动) S(M) ;物体运动 C(M) ;合理性检测(否->撤消非法运动) R(S) ;呈现游戏 LOOP B(M) ;物质消除 S(M) ;消除后的物体运动 C(M) ; 合理性检测(否->撤消非法运动) R(S) ;呈现游戏 END LOOP D(O) ;判断对手是否死亡(是->寻找新对手->没有找到新对手->END LOOP) I(T) ;增加新物质 R(S) ;呈现游戏 END LOOP 玩家死亡,还继续吗?是->回到初始化 否 游戏结束 以标准俄罗斯方块为例来做说明
S为一个(10X25)的方块矩形空间 T仅在游戏暂停,关卡切换,玩家死亡时停止,此外为线性的自然时间 M为落下的方块+正在落下的方块`M 游戏开始时的M0为0或者一个不确定的方块数量 I(T)当没有正在落下的方块的时候,取出之前已经准备好的一个4方块单位的组合方块,并准备下一个组合方块 P(M)玩家操作的实际是一个物质增量`M P本身是一个可选择的集合 p1 = 左移一格 p2 = 右移一格 p3 = 下移一格 p4 = 左旋转 p5 = 右旋转 p6 = 快速下降或直接摆放 O(M)对手操作 单机游戏中的对手只有关卡,而关卡本身没有任何操作,只有关卡描述(注意,关卡描述并不是O(M)的内容) 其中有: speed 物体下落的速度 Mo 关卡本身需要增加的方块或清除M后重新初始化的Mo target 需要消掉的层数或达到的积分 result 当前玩家已经达到的成果 S(M)物体运动也是一个集合 s1 正在下落的物体`M会按照关卡给出的速度值来进行下落,直到触底,则停止下落 s2 除此之外,当出现消层时,每一层都下落的层数=该层下方消失的层数。 C(M) 合理性检测,就是碰撞检测,这是整个游戏中最复杂的部分:( c1 检查`M移动后是否超出左,右,下的边框范围,是否和已经落下的M出现重叠,如果超出则让`M回到操作之前的位置 c2 检查`M旋转后是否超出左,右,下的边框范围,是否和已经落下的M出现重叠,如果出现重叠,执行以下步骤 1.规定从左到右的方向为正方向,如果水平方向上超出n个单位,则让`M平移-n个单位,再进行判断,如果在水平方向上仍超出,则表明水平空间不允许方块旋转,方块回复到旋转前的状态 2.规定从上到下的方向为正方向,如果垂直方向上超出n个单位,则让`M平移-n个单位,再进行判断,如果在垂直方向上仍超出,则表明垂直空间不允许方块旋转,方块回复到旋转前的状态 B(M) 物质消除 检查`M是否为活动状态,如果不活动,将`M并入M,并对S进行检查,当一行上的所有位置都有方块,或一行上的方块数量为10的时候,消去此层。 D 死亡规则 D(P),如果`M已经超出边框的顶部,则判定为死亡 D(O),检查结果是否已经达到关卡目标,达到则判定为死亡 R(S)呈现游戏 画出边框,边框内的所有方块,下一个方块,关卡名,层数,积分,播放音效,音乐,消层,旋转的动画效果等等。。 将这个改编成类似心跳对战方块的游戏 S不变x2 T可以不变,也可以设定为随时间推移不断加快,增加对战刺激程度 M不变x2 I(T)当没有正在落下的方块的时候,取出之前已经准备好的一个2方块单位的组合方块,并准备下一个组合方块 P(M)玩家操作 在原来基础上再加一样东西 攻击模式,在消层时,给对手造成打击,下落方块或增加方块。对于不同的消层组合,给与不同的打击,可以设定为 p7 = 攻击模式1, p8 = 攻击模式2, p9 = 攻击模式3, …… …… O(M)玩家的对手,设定和P(M)一模一样,攻击模式有所不同 S(M) 修改规则s2 当出现消层时,每一个方块下落的层数=该块下方消失的方块数。 C(M) 不变 B(M) 物质消除 修改规则:检测相同颜色的方块,在任意的方向上相连超过3个以上则消去这些方块 D 死亡规则 不变 R(S)呈现游戏 和以前一样,不过每样多了一份 改编成射击游戏
内容,在边框的顶部和底部各出现两部坦克(2x3矩阵大小),两部坦克只能平移并发送1x1大小的子弹,玩家需要操作底部的坦克击毁顶部的坦克 S玩家空间 可以定得细一点的二维空间(三维也行)比如(100 x 75),这样子弹有足够的发射距离 T不变 M不变 初始M0,中间可以设计一些障碍物,或者其他运动车辆 I(T)可以随机的增加一些运送道具的车辆从边框外移动到边框内 P(M)玩家操作的是坦克MPT 重新定义P的列表 p1 = 左移一格 p2 = 右移一格 p3 = 开火 p4 = 使用道具 O(M)对手操作 同P(M) S(M)物体运动 s1 子弹根据自身属性做轨迹运动 s2 运动车辆(包括对手坦克)根据自身定义的模式做水平方向上的运动,当运动车辆移出边框后,可以在边框另一边重新出现,但坦克不行。 s3 中间的车辆发生碰撞时,做1D碰撞运算,重新设定车辆速度 s4 子弹击中物体时,不做碰撞运算,根据子弹本身的属性,决定子弹是否穿透,被击中物体是否降速等。 C(M) 合理性检测 c1 坦克不能移动出左右边界外 c2 中间车辆发生重叠时,做s3处理 B(M) 物质消除 b1 子弹飞出边界后消失 b2 子弹击中目标后,计算伤害值,伤害值,目标生命值小于伤害值则消失,如果子弹不穿透,子弹消失。 b3 子弹击中道具后,道具消失,子弹发射者的道具列表中增加该道具 D 死亡规则 生命值<=0 R(S)呈现游戏 游戏背景图,坦克,车,障碍物,飞行的子弹,关卡名,积分,播放音效,音乐,动画效果等等。。 |