之前的『好玩的小游戏推荐』,只是罗列了一下图,感觉没啥意思,所以改成简单的游戏解析了。
首先有个观点要了解一下:
有部分非程序员的同学认为,在程序员眼里,大部分电脑里显示的东西都是代码。
那是不可能的。
就算网页程序员,第一眼看网页,看的也是内容,可能关注点会不太一样,但是绝不可能第一时间在脑海里转成代码。
可以自己试一下,当你不说话,只是在思考时,你大脑里默认语言是最常用的普通话还是方言或英语?
解析是带有目的性的,用工具去看。
就好像电竞比赛的时候,如果不涉及到自己队伍相关利益的时候,教练作为观众也是在享受比赛的。而分析之类的,是赛后的复盘和解析。
当然,因为全面解析太麻烦了,本来也是为了方便周更而开的,所以简单解析就不用工具了,直接读取画面信息吧。
pktball是个网球游戏。
操作很简单,按住拖动移动角色。松开手指角色挥拍。如果拖动的距离较远,角色还会进行大力挥拍。
本质上是最早的电子游戏『pong』的变种。
当然,这种强行比较很不好。将两个不一样的东西拿来对比,很容易引起反感。
比如对着谷歌说,你们就是那家美国版的百度吧?
总之开始解析游戏吧。
游戏流程
游戏开始菜单
游戏开始界面有3个主要区域,左上角设置,左下角选角色,右下角开始。而右上角是『消费系统』的信息。
(要从这种层面开始解析么?)
……
(算了,跳过吧)
进入游戏
右下角是游戏开始的提示操作,主界面是游戏信息。
这种方式有点特别,因为一般游戏不会把游戏画面和分数结算直接融合在一起……
游戏主体
这个游戏里是有碰撞框的概念。其中里面有4类框体。
第一个是角色的框,角色框体似乎很小,因为这个框体的作用仅仅是用来限制角色的移动范围,而不会与其他框体进行碰撞。
第二个图中的红色框体,则是挥拍时产生的作用框体,这个框体只有在手指松开后会出现在画面内一段时间,然后消失。这个框体可与球的框体进行碰撞判定。
第三个是图中蓝色框体,蓝色框体可与挥拍的红框碰撞,也会与边界的淡蓝色框碰撞。不同碰撞调用不同的反馈,与挥拍碰撞,改变球的图像,然后调整飞行方向,与边界框碰撞,如果该边界框不属于界外,则改变飞行方向。
第四个框体则是边界的淡蓝色框,淡蓝色里写入的反馈,主要是如果是处于边界的框体与球相撞,则判定胜负,其他的框不做任何反馈。
当这些框体完成后,剩下就是碰撞判定的计算了。
因为没有用工具去解析,所以只能大致给个方案,碰撞判定最大的计算量在与挥拍与球的碰撞,而球新的方向计算应该是两个碰撞框的中心连接线的方向。之后让球沿着新的方向加上特定的速度(比如划屏时,玩家挥拍的力度判定加大,则加大球速),球就会正确的飞向对方。
最后,这是没有借助工具的简单解析,只是提供一个思路,pktball是否真的这么做的,完全不知道。
那么根据这个思路做,就一定能做出pktball吗?
……
不,就算思路对了,后续真正动手做的时候,会发现有一大堆奇怪的逻辑陷阱与bug,这个解析顶多只是提供一个开始动手的理由。
这个依然是个看情况更新的系列~