小游戏开发初衷

博主分享了开发跳棋小游戏的历程,重点介绍了人机对战的搜索算法和三维模型的优化。人机算法通过搜索最优路径,提供挑战性玩法,而三维模型在性能和视觉效果之间做了平衡。经过优化,游戏性能提升,耗电减少,为玩家提供了更好的体验。
摘要由CSDN通过智能技术生成

最近开发了一个小游戏,正在测试和审核中。小游戏的乐趣在于点开即玩,种类丰富和在线匹配。我做的小游戏是跳棋,充满了童年回忆的游戏,现在棋盘找不到了,只能在小游戏上玩。

人机算法

激发我的开发热情是人机路径的算法,通过搜索可选路径,找到最优路径,让我有一种挑战自己的乐趣。现在我跟人机挑战了无数次,根本毫无胜算,因为人机走的都是最优路径,而且经常堵住了我的路径。就这样玩下来后,我的心态好多了,本着屡败屡战的勇气,坚持到了现在。

人机算法主要的思路是这样的,把跳棋的十个球都搜索一遍,选择走得最远的球和路径。具体到每个球,就要根据球的当前位置,搜索六个方向的路径,路径就是一个位置一个位置的搜索,类似多叉树的数据结构,要检查位置是否重复,不重复才能加入到路径中。最后选择球的最远位置,通过多叉树数据结构的特点查找位置的顺序,组成一条可用的路径。

在实际的测试和改进后,人机算法还要解决开局的路径选择,根据玩家的不同区域,选择合适的开局路径,可能会有惊喜的效果!在游戏过程中,还要考虑球的分布情况,在本区域或本营地的要优先搜索路径和选择,然后由近到远考虑公共区域或公共营地的两部分,最后是对面区域或对面营地的球。同一区域或营地内,球的数量比较少就要优先考虑,避免落单孤立无援!如果球没有路径只能移动,又要优先考虑的话,要选择有跳板球的位置,或者可以考虑是否被自己的球堵住了,先选择前面挡路的球和路径。

跳棋模型

现在的小游戏大部分使用二维的布局方式,但是很多引擎已经有三维的功能,三维作为一种未来趋势越来越明显了。正好我之前的工作涉及到三维模型的建模和三维模型的软件开发,所以跳棋的棋盘和球都使用了三维模型。使用软件提供的基本模型加以修改,再贴上合适的材质和颜色就可以了。

后来发现模型太消耗性能了,手机容易发热,耗电也比较大,还可能掉帧。所以对模型进行了简化,球看上去有点粗糙了,其它都还好。这样之后,性能就上来了,再用上引擎提供的动态合批渲染,又设置了帧率40,刚好适合球的跳动效果,这才符合小游戏的本色。现在手机运行起来完全没压力,基本不发热,耗电量少了很多,手机玩王者荣耀并且效果设置最高,玩一局有点发热,耗电量是小游戏的三倍。

未完待续……

游戏的菜单和提示都是使用二维组件,使用Cocos Creator 开发,后台和相关服务使用微信小游戏的云函数和相关API,后面会详细介绍一下……

...........................\..........\MapColRowDialog.java ...........................\..........\MapDesignPanel.java ...........................\..........\MapDesigner.java ...........................\..........\compile.bat ...........................\..........\map.txt ...........................\..........\run.bat ...........................\..........\wyf\CodeFrame.class ...........................\..........\...\MapColRowDialog.class ...........................\..........\...\MapDesignPanel.class ...........................\..........\...\MapDesigner.class ...........................\..........\img\Diamond.png ...........................\..........\...\camera.png ...........................\GL_MASE\.classpath ...........................\.......\.project ...........................\.......\AndroidManifest.xml ...........................\.......\default.properties ...........................\.......\src\wyf\wpf\Ceil.java ...........................\.......\...\...\...\Constant.java ...........................\.......\...\...\...\Floor.java ...........................\.......\...\...\...\KeyThread.java ...........................\.......\...\...\...\MazeActivity.java ...........................\.......\...\...\...\MySurfaceView.java ...........................\.......\...\...\...\Score.java ...........................\.......\...\...\...\TextureRect.java ...........................\.......\...\...\...\ThreadSetView.java ...........................\.......\...\...\...\TradPair.java ...........................\.......\...\...\...\TradPairGroup.java ...........................\.......\...\...\...\ViewMainMenu.java ...........................\.......\...\...\...\Wall.java ...........................\.......\res\values\strings.xml ...........................\.......\...\raw\gameback.mp3 ...........................\.......\...\...\gotobject.mp3 ...........................\.......\...\...\win.mid ...........................\.......\...\layout\load.xml ...........................\.......\...\......\win.xml ...........................\.......\...\drawable-mdpi\bb.png ...........................\.......\...\.............\ceil.bmp ...........................\.......\...\.............\control.png ...........................\.......\...\.............\floor.bmp ...........................\.......\...\.............\icon.png ...........................\.......\...\.............\load.png ...........................\.......\...\.............\number.png ...........................\.......\...\.............\reddot.png ...........................\.......\...\.............\robot.png ...........................\.......\...\.............\wall.bmp ...........................\.......\...\.............\win.png ...........................\.......\...\.........ldpi\icon.png ...........................\.......\...\.........hdpi\biankuang.png ...........................\.......\...\.............\icon.png ...........................\.......\...\.............\zjm.jpg ...........................\.......\gen\wyf\wpf\R.java ...........................\.......\bin\GL_MASE.apk ...........................\.......\...\classes.dex ...........................\.......\...\resources.ap_ ...........................\.......\...\wyf\wpf\Ceil.class ...........................\.......\...\...\...\Constant.class ...........................\.......\...\...\...\Floor.class ...........................\.......\...\...\...\KeyThread.class ...........................\.......\...\...\...\MazeActivity$1$1.class ...........................\.......\...\...\...\MazeActivity$1.class ...........................\.......\...\...\...\MazeActivity.class ...........................\.......\...\...\...\MySurfaceView$SceneRenderer.class ...........................\.......\...\...\...\MySurfaceView.class ...........................\.......\...\...\...\R$attr.class ...........................\.......\...\...\...\R$drawable.class ...........................\.......\...\...\...\R$id.class ...........................\.......\...\...\...\R$layout.class ...........................\.......\...\...\...\R$raw.class ...........................\.......\...\...\...\R$string.class ...........................\.......\...\...\...\R.class ...........................\.......\...\...\...\Score.class ...........................\.......\...\...\...\TextureRect.class ...........................\.......\...\...\...\ThreadSetView.class ...........................\.......\...\...\...\TradPair.class ...........................\.......\...\...\...\TradPairGroup$1.class ...........................\.......\...\...\...\TradPairGroup.class ...........................\.......\...\...\...\ViewMainMenu.class ...........................\.......\...\...\...\Wall.class ...........................\.......\src\wyf\wpf ...........................\.......\gen\wyf\wpf ...........................\.......\bin\wyf\wpf ...........................\.......\src\wyf ...........................\.......\res\values ...........................\.......\...\raw ...........................\.......\...\layout ...........................\.......\...\drawable-mdpi ...........................\.......\...\drawable-ldpi ...........................\.......\...\drawable-hdpi ...........................\.......\gen\wyf ...........................\.......\bin\wyf ...........................\地图设计器\wyf ...........................\..........\img ...........................\GL_MASE\src ...........................\.......\res ...........................\.......\gen ...........................\.......\bin ...........................\.......\assets ...........................\地图设计器
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

codehuicn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值