ftp网站建立,做网站怎么添加关键词,app软件开发制作公司有哪些,网站数据库丢失游戏平衡很重要#xff0c;然而#xff0c;却往往得不到开发者的重视。或者#xff0c;没有花时间仔细去做调整。
做过游戏开发的#xff0c;都听说过一个词叫“数值爆炸”#xff0c;实际上就是平衡没做好。
怎么样才能算是平衡呢#xff1f;
玩家投入游戏的有两个然而却往往得不到开发者的重视。或者没有花时间仔细去做调整。
做过游戏开发的都听说过一个词叫“数值爆炸”实际上就是平衡没做好。
怎么样才能算是平衡呢
玩家投入游戏的有两个要么投入时间提高熟练度要么氪金提高强度。
让用户的投入能通过某种方式体现出来就是个好的平衡。
而作为开发者应该对玩家投入的时间特别是首次、单次游戏的时间有所计划。
以前娱乐较少的时候游戏首次、单词投入的时间能达到30分钟而现在有个5分钟就不错。哪怕是3A大作如果不能让玩家5分钟内上手往后就难了。
现代游戏开发有个指标策划让新玩家内测他会希望 N% 的用户能够玩到 N 分钟。
比如2048游戏希望80%的用户能合成到128
比如Flepybird 游戏希望80%的用户能飞10米。
比如羊了个羊 游戏希望0.0001%的用户能通过第二关。
你必须要有类似这个目标才能去调游戏数值。
这个题目很大展开了都能开专题了。所以这里只是一个引子希望大家重视。
回归本游戏游戏平衡怎么做
既然这是个非氪金游戏那么就要让用户熟练度在游戏中有所体现。我们希望80%用户能玩到5分钟就很难再继续前进了。
首先第一个平衡是玩家火力和敌人的平衡。
敌人的总血量要考量几个因素
-》单敌人单位的血量
-》敌人出现间隔
而玩家火力包括常规攻击方式和道具伤害。或者你可以理解为持续伤害和爆发伤害。
我们应该让他处于一种状态玩家熟练度高时可以干掉所有敌机熟练度不足时就要放过一部分敌机。简单做个乘除法就可以得到。
另一个平衡是玩家血量和敌机火力的平衡。
敌机火力于几个因素
-》敌机生成密度
-》敌机开火密度
-》敌机子弹伤害
以上所有的这些东西我们前面都是有数值控制的。
现在我们要做的是
1、把这些数值都抽出来放在统一的地方以方便修改
。。。
#define PlayerMaxLife 12000
#define EnamyMaxLife 1000
#define EnemyBulletDam 400
#define EnemyRocketDam 2000
#define PlayerBulletDam 400
。。。
2、调整这些数值看看每个数值对游戏影响特别是确定每个数值的合理范围。这很重要也很花时间。
3、用变量来代替这些数值随着时间的进行自动修改参数提高难度。 我们期望的效果是在5分钟里我们让玩家
1、前两分钟轻松打怪积攒道具
2、中间两分钟有点扛不住必须依靠道具才能继续
3、道具补充的速度赶不上消耗的速度试图通过躲闪节省道具使用通过这个阶段驱动玩家提高熟练度
4、道具用完了迅速崩溃
最终我决定采用每分钟出现一次BOSS出现BOSS时缩小其他敌机出现的频率。
uint8_t EnemyManager::tick(uint32_t t) {if (createTimer.tick(t)) {EnemyBase *enemy createEnemyObject();enemy-init();ListPushBack(enemyList, (LTDataType) enemy);}if (createBossTimer.tick(t)) {createTimer.defaultSpan - 200;EnemyBase *enemy new EnemyT3();enemy-init();ListPushBack(enemyList, (LTDataType) enemy);}for (ListNode *cur enemyList-next; cur ! enemyList; cur cur-next) {EnemyBase *enemy ((EnemyBase*) (cur-data));enemy-tick(t);}return 0;
}这样每过一分钟敌机出现间隔少200ms。难度也随之增加了。 STM32学习笔记二十一WS2812制作像素游戏屏-飞行射击游戏11探索游戏脚本