如果不是此板讨论的方向,麻烦版主请删文,谢谢^^
本人是在假日没事自己写小游戏的程式鲁蛇,
没游戏公司上班过^^
最近在“www.你的新资.com”里的“火版”看到某三间游戏公司的文,
当然里面不少情绪性的字眼与八卦,这些不是我想讨论的范围,
里面有两句话这样写的,
“好的企划又怎样,程式一句不行、不能、不想、以前就是这样了直接打枪。
制作人一句要、不要、不然你想怎样完全没有要沟通的意思。”
就一个程式的角度来看,有点感触,
不管是不是在游戏公司上班,身为程式都会遇到这几个为难之处。
01. 好的企划又怎样,程式一句不行、不能、不想、以前就是这样了直接打枪。
也在“www.你的新资.com”里的“火版”看到,
某企划:“程式放大绝:‘这不在规划之内。’”,来打枪企划的构想。
以我的角度来看,我会觉得没有什么是程式写不出来的,
仅只在于“规画阶段”与“找对人”,
一旦到了正在CODING阶段,或者上线阶段,很难再改了。
个人常遇到的就是,需求有了,写出来了,一切如同机械表一样的完美运作,
然后就会有新的需求进来,当然,上头会希望你在“原本的架构上面新增功能”,
这时就陷入了地狱的无限循环,
新需求>改程式>新需求>改程式>…,程式不稳定,BUG一堆。
实务上“需求一直在变化”,
有些需求只要改个两行程式码就可以实现,
有些需求是要耗费长时间才有可能实现,
有些需求甚至要将架构整个重新设计才有可能实现,
更不用想说有些需求是要打掉重练才有可能实现…
身为一个程式,我知道需求会变,
我不会说“计画赶不上变化”,而是要“变化也是在计画之内”,
对于老鸟,上头的需求+基本上都会预先想出可能会改变的地方,然后再写,
对于菜鸟,上头有什么需求就写,不会预想有其他变化,直接写。
但是,再怎么老的鸟也是会有改不出来的东西…
不是老鸟能力不足,而是在“现在的架构”写不出来。
顺带一提,我也看过程式跟企划呛声过:
“这个功能就是写不出来,如果你可以你来写,我的薪水让你领。”
通常都是在系统上线了,然后又要求加某些做不出来的功能时,
才会听到这句话…
另外,说不想作的那个程式有点威猛~
02. 制作人一句要、不要、不然你想怎样完全没有要沟通的意思。
其实这也很为难,
我本身遇到的例子来讲,
上头直接说“别家有这样的功能,我们也要有。”
或者“别家没有这样的功能,我们就不要画蛇添足。”
为什么?因为客户的使用习惯,或者上头想打保守牌。
就一个很现实的层面来讲,
上头放绝:“今天没有那个功能,客户就不会买单,公司就没收入。”
如果是在规划阶段,程式一定没问题。
如果是改旧的系统,程式一定都会叫,因为有时真的很难改。
就上头的角度来看:
“我不管你怎么做,就是一定要出来,不然没收入。”
就下面的角度来看:
“在旧系统底下就改不出来,或会造成其他不可预计的错误,或不良好的使用者环境。”
不过,在实务上来讲,几乎都改的出来,只要不太夸张的需求。
有些是直接改旧系统,
或者不是改旧系统,而是写新的辅助系统,
但通常会有一些问题,如:更改所需时间过长、BUG、速度变慢、改太大使用者混淆…等。
常常上头有了突发奇想说要加某些功能,
评估后可行,但是所需时间太长,然后上头就说不要…
或者改完后,客户觉得难用,又改回之前的…
=======我是分隔线=======
有个旧文章:[请益] 游戏企划数值
题目如下:
玩家的血量都是 200,
战士攻击力 50 ,攻击距离为 1 ,攻击速度为 4。
弓箭手攻击 x ,攻击距离为 4 ,攻击速度为 1。
战士受到攻击时有50%的机率会加速,
缩短与弓箭手1/3的距离,请问弓箭手的攻击力要多少,
两个职业才会平衡?
很认真的看过之后发现不少人的答案都不同,
我的算法跟想法如下,麻烦请各位验证我的想法是否正确^^
文长,请注意。
个人题目解释:
1. 弓箭手与战士同时攻击
2. 攻击回合>移动回合>攻击回合>移动回合>…
3. 伤害per回合 = (攻击力*攻击速度)per回合
首先计算,
1. 以期望值来说:攻击X次后,战士才打得到弓箭手
每次受到攻击,50%的机率缩短与弓箭手1/3的距离
=> 以期望值来看,每次受到攻击缩短与弓箭手1/6的距离
=> 以期望值来看,每次受到攻击剩下与弓箭手5/6的距离
=> 问题:求 4*((5/6)^X)<1 ,问X最小需要多少?
=> 解答:X=8
=> 以期望值来看,攻击8次后,战士才进入到攻击距离
=> 所以第9次攻击时,战士才可以攻击到弓箭手
2. 战士要攻击Y次才可以解决掉弓箭手?
50*4*Y=200
=> Y=1
3. 综合1与2,经过9次攻击,战士才可以解决掉弓箭手,
为了平衡,在第9次攻击时,战士与弓箭手同时生命值为0,
那弓箭手的攻击力=Z?
9*Z=200
=> Z=200/9
=> 弓箭手攻击力为200/9(对一半)
4. 以下验证
第0回合:
战 __ __ __ 弓
0 1 2 3 4
======================
第1回合:攻击
战 __ __ __ 弓
0 1 2 3 4
弓箭手攻击次数:1次
战士攻击次数:0次,不在攻击距离内
弓箭手给予战士总伤害:(Z*1)*1
战士给予弓箭手总伤害:(50*4)*0
第1回合:移动
战 __ __ __ 弓
0 1 2 3 4
剩下距离距离=> 4*((5/6)^1) = 10/3 = 3又1/3 > 1
战 __ __ __ 弓
0 1 2 3 3又1/3
======================
第2回合:攻击
战 __ __ __ 弓
0 1 2 3 3又1/3
弓箭手攻击次数:2次
战士攻击次数:0次,不在攻击距离内
弓箭手给予战士总伤害:(Z*1)*2
战士给予弓箭手总伤害:(50*4)*0
第2回合:移动
战 __ __ __ 弓
0 1 2 3 3又1/3
剩下距离距离=> 4*((5/6)^2) = 25/9 = 2又7/9 > 1
战 __ __ 弓
0 1 2 2又7/9
======================
第3回合:攻击
战 __ __ 弓
0 1 2 2又7/9
弓箭手攻击次数:3次
战士攻击次数:0次,不在攻击距离内
弓箭手给予战士总伤害:(Z*1)*3
战士给予弓箭手总伤害:(50*4)*0
第3回合:移动
战 __ __ 弓
0 1 2 2又7/9
剩下距离距离=> 4*((5/6)^3) = 125/54 = 2又17/54 > 1
战 __ __ 弓
0 1 2 2又17/54
======================
第4回合:攻击
战 __ __ 弓
0 1 2 2又17/54
弓箭手攻击次数:4次
战士攻击次数:0次,不在攻击距离内
弓箭手给予战士总伤害:(Z*1)*4
战士给予弓箭手总伤害:(50*4)*0
第4回合:移动
战 __ __ 弓
0 1 2 2又17/54
剩下距离距离=> 4*((5/6)^4) = 625/324 = 1又301/324 > 1
战 __ 弓
0 1 1又301/324
======================
第5回合:攻击
战 __ 弓
0 1 1又301/324
弓箭手攻击次数:5次
战士攻击次数:0次,不在攻击距离内
弓箭手给予战士总伤害:(Z*1)*5
战士给予弓箭手总伤害:(50*4)*0
第5回合:移动
战 __ 弓
0 1 1又301/324
剩下距离距离=> 4*((5/6)^5) = 3125/1944 = 1又1181/1944 > 1
战 __ 弓
0 1 1又1181/1944
======================
第6回合:攻击
战 __ 弓
0 1 1又1181/1944
弓箭手攻击次数:6次
战士攻击次数:0次,不在攻击距离内
弓箭手给予战士总伤害:(Z*1)*6
战士给予弓箭手总伤害:(50*4)*0
第6回合:移动
战 __ 弓
0 1 1又1181/1944
剩下距离距离=> 4*((5/6)^6) = 15625/11664 = 1又3961/11664 > 1
战 __ 弓
0 1 1又3961/11664
======================
第7回合:攻击
战 __ 弓
0 1 1又3961/11664
弓箭手攻击次数:7次
战士攻击次数:0次,不在攻击距离内
弓箭手给予战士总伤害:(Z*1)*7
战士给予弓箭手总伤害:(50*4)*0
第7回合:移动
战 __ 弓
0 1 1又3961/11664
剩下距离距离=> 4*((5/6)^7) = 78125/69984 = 1又18141/69984 > 1
战 __ 弓
0 1 1又18141/69984
======================
第8回合:攻击
战 __ 弓
0 1 1又18141/69984
弓箭手攻击次数:8次
战士攻击次数:0次,不在攻击距离内
弓箭手给予战士总伤害:(Z*1)*8
战士给予弓箭手总伤害:(50*4)*0
第8回合:移动
战 __ 弓
0 1 1又18141/69984
剩下距离距离=> 4*((5/6)^8) = 390625/419904 < 1
战 弓
0 390625/419904
======================
第9回合:攻击
战 弓
0 390625/419904
弓箭手攻击次数:9次
战士攻击次数:1次
弓箭手给予战士总伤害:(Z*1)*9
战士给予弓箭手总伤害:(50*4)*1 = 200 => 弓箭手死亡
平衡:弓箭手死亡同时,战士也同时死亡
=> (Z*1)*9 = 200
=> Z = 200/9 = 22又2/9 (对一半的解答)
回头看题目
“请问弓箭手的攻击力要多少,两个职业才会平衡?”
由上面验证推导出公式:
8Z < 200 && 9Z >= 200
=> Z < 200/8 && Z >= 200/9
=> 200/9 <= Z <200/8
=> 22又2/9 <= Z <25 (解答)
如果弓箭手攻击力为整数,
解答为 23 与 24