作者StupidGaGa (笨嘎嘎)
看板GameDesign
标题[鲁蛇] 企划提出的构想常常被程式打枪?
时间Mon Mar 10 13:24:30 2014
如果不是此板讨论的方向,麻烦版主请删文,谢谢^^
本人是在假日没事自己写小游戏的程式鲁蛇,
没游戏公司上班过^^
最近在「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
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 60.249.117.38
※ 编辑: StupidGaGa 来自: 60.249.117.38 (03/10 13:32)
※ 编辑: StupidGaGa 来自: 60.249.117.38 (03/10 13:34)
※ 编辑: StupidGaGa 来自: 60.249.117.38 (03/10 13:41)
1F:推 gino0717:www.22k.com 03/10 14:32
2F:→ StupidGaGa:不是www.22K.com,是我写的太隐含了吗? 03/10 14:45
3F:→ Killercat:其实很常见的是 还没有prototype以前这理论听起来完美 03/10 17:23
4F:→ Killercat:有了prototype以後发现这理论根本东落西落 03/10 17:23
5F:→ Killercat:这时候倒霉的通常是程式 :D 03/10 17:23
6F:→ StupidGaGa:其实想转游戏业,虽然程式走到哪都会遇到一样鸟事 03/10 18:25
7F:→ StupidGaGa:但是看到薪资後,恩~现在的公司根本天堂>///< 03/10 18:26
8F:→ StupidGaGa:企划还是要会点基础程式,不然某些需求会让程式很无奈 03/10 18:28
9F:推 GoalBased:没有什麽是程式写不出来的 <<完全不认同 03/10 20:19
10F:→ y3k:楼上+1 而且程式有强者 也有鲁蛇如我 价钱不同这样XD 03/10 20:58
11F:推 cooper6334:那可以写一个能绕过密码解压缩档的程式吗 03/10 21:18
12F:推 LayerZ:我是程式,企划要功能我会开时间给他,要不要做他会决定(死 03/10 21:23
13F:推 asleisureto:理论上所有东西程式都做得到(包括破解密码) 只是时间 03/11 00:16
14F:→ asleisureto:和薪水问题XD 03/11 00:16
15F:→ azureblaze:包括理论上不可行的东西吗XD 03/11 00:33
16F:推 LayerZ:推真的不是什麽都做得出来..可能最近很少没听到太夸张的需 03/11 01:03
17F:→ LayerZ:求0.0 我家企划都好棒 03/11 01:04
18F:推 chargo:经验上太夸张的需求通常不是来自企画 而是来自运营/老板/外 03/11 01:08
19F:→ chargo:部各方不知名大大的意见之类的 03/11 01:08
20F:→ chargo:或者: 企划被洗掉一批人 新来的想说应该要做成这样 03/11 01:09
21F:→ chargo:殊不知如果要这样做的话 要把已经盖好的三层楼拆了之类的 03/11 01:09
22F:推 chengchieh:你遇过要压你时间又不讲道理只开需求的企划吗? 03/11 08:30
23F:→ chengchieh:我相信好的企划一定是可以接纳程式的建言的 03/11 08:31
24F:→ chengchieh:但是有些企划/业务..他们会用他们认知的方法去写程式 03/11 08:31
25F:→ chengchieh:"阿这个东西不是拉一拉就好了..." 03/11 08:31
26F:→ chengchieh:"这个计算法有很难吗..你就拿什麽什麽去算嘛" 03/11 08:32
27F:→ chengchieh:'这个做不出来'.."老板说要"..'没办法'.."老板说要" 03/11 08:33
28F:→ chengchieh:没有构想不出来的需求...只有不足的时间跟理论~~ 03/11 08:33
※ 编辑: StupidGaGa 来自: 36.233.102.232 (03/11 08:52)
29F:→ StupidGaGa:通常我们家企划开了需求出来,程式都会估时间给他 03/11 08:53
30F:→ StupidGaGa:太夸张或做不出来的也会跟契话讲说为什麽会做不出来 03/11 08:54
31F:→ StupidGaGa:不过通常关系到公司生存的需求都是要硬着头皮去做~ 03/11 08:57
32F:→ StupidGaGa:基本上我们家企划与程式人都很好^^ 03/11 09:02
33F:→ StupidGaGa:多沟通的话其实可以少掉很多心结跟不愉快之类的 03/11 09:03
34F:推 LayerZ:他们开需求,我开时间,他们要压...那就请他们多拜拜保佑 03/11 10:08
35F:→ LayerZ:真的生的出来~_~ 03/11 10:08
36F:推 jimmycool:没有什麽是程式写不出来的 <- halting problem表示: 03/11 10:45
37F:→ dreamnook:如果沟通就能解决问题 那这世上哪会发生战争 03/11 11:19
38F:→ swijo:所以有沟通技巧课啊 03/11 11:28
39F:→ dreamnook:好啦 上个其实是我讲重话 03/11 11:40
40F:→ dreamnook:我个人认为起冲突的原因有60-70%是互不尊重专业 03/11 11:40
41F:→ rofellosx:这计算是企划要做的吧...企划将参数告诉程式去做 03/11 11:41
42F:→ dreamnook:无论是企划觉得程式不这样就好 反之亦然 03/11 11:42
43F:→ dreamnook:特别在台湾 03/11 11:46
44F:→ dreamnook:真的很容易碰到认为写故事想主意就没事的企划XDD 03/11 11:46
45F:→ dreamnook:会给程式一种: 03/11 11:52
46F:→ dreamnook:事情是我想. 东西是我做. 03/11 11:52
47F:→ dreamnook:问题是我扛. 功劳是你拿? 03/11 11:52
48F:→ dreamnook:最後就变成恶性循环XD 03/11 11:53
49F:推 SEGAPSO:身为程式,原则是尽力去搭建企划所构筑的舞台 03/11 12:55
50F:→ SEGAPSO:但是在考量现阶段时程,人力,技术力可完成的情况下 03/11 12:56
51F:→ SEGAPSO:真的不妙,会提醒企划,您的舞台有机会变成断头台... 03/11 12:57
52F:→ LayerZ:dream那种得就捅给他暴 出不来的东西你硬挤出来 对谁都没好 03/11 13:50
53F:→ LayerZ:处,我认真的.. 03/11 13:50
54F:→ LayerZ:我好像误会什麽了XDD 我是指时间不够作 上面硬要上 03/11 13:56
55F:→ chenglap:谁打谁的枪是看谁的实力强, 就是这样. 03/11 14:06
56F:→ LayerZ:只是我有在想 究竟完成了多少"不可能的任务"才会这样题不可 03/11 14:15
57F:→ LayerZ:能的需求..不过再来就扯到职场问题了XDD 03/11 14:16
58F:推 Kenny1206:是目前写不出来还有在某段时间内写不出来...XDDDDD 03/11 16:53
59F:→ y3k:企划写得很夸张其实还好 重点在不要射後不理刚愎自用 03/11 18:01
60F:→ y3k:写得很夸张代表他想像力强 只是缺乏经验 但是射後不理刚愎自用 03/11 18:02
61F:→ y3k:真的就是没救 连带拖垮整个团队 03/11 18:02
62F:→ dreamnook:@chenglap 还有一种实力不是专业是手段...XD 03/12 10:16
63F:推 youtien:有一些相对於实力的力,可概称为虚力。 03/12 15:14
64F:→ StupidGaGa:还有一种力,叫做原力!? 03/12 17:04
65F:→ StupidGaGa:愿原力与你同在。(May the force be with you.) 03/12 17:05
66F:→ StupidGaGa:另外,我下面的算法到底有没有错误?还是有其他想法? 03/12 17:06
67F:→ dreamnook:抱歉我没看... 03/12 19:06
68F:推 GoalBased:没看+1 03/12 21:17
69F:推 Killercat:其实还没丢到老板桌上以前,都是可以谈的。企划丢什麽 03/12 23:40
70F:→ Killercat:天马行空的东西,跟程式聊聊其实多少会知道哪些对哪些错 03/12 23:41
71F:→ Killercat:就怕那种先丢到老板桌上以後再来跟程式谈的..... 03/12 23:41
72F:→ Killercat:其实我说句不客气的老实话,会做游戏的程式只有两种 03/12 23:41
73F:→ Killercat:要不就是想洗经验,要不就是真的超有爱。 03/12 23:42
74F:→ Killercat:这两种,都是应该要好好谈的,而不是去让老板压RD 03/12 23:43
75F:→ Killercat:(游戏程式只有两种这句话指的是台湾游戏界) 03/12 23:43
76F:→ dreamnook:2种都是疯子 想压疯子要有必死的决心!(重点错 03/13 17:26
77F:推 f1234518456:一天到晚提意见要改 你去叫盖房子的盖好说要重盖看看 03/15 01:03
78F:推 f1234518456:台湾要人改都想要今天提明天马上要 谁鸟你啊... 03/15 01:06
79F:推 kenandannie:学数学的路过,你算的不对 03/15 06:10
80F:→ kenandannie:你用期望值的时候,固定了每次的移动为1/3单位 03/15 06:11
81F:→ kenandannie:跟原本的两者间1/3的距离有出入 03/15 06:11
82F:→ kenandannie:就算是固定为1/3单位好了 03/15 06:12
83F:→ kenandannie:平衡应该是两者获胜的机率相同 03/15 06:12
84F:→ kenandannie:应该要算累积机率,而不是期望值 03/15 06:13
85F:→ kenandannie:BTW,我用了固定为1/3单位下去计算,结果漂亮的有点恐怖 03/15 06:14
86F:→ kenandannie:阿我笨了,结果是二项式定理,漂亮是必然的 03/15 06:16
87F:推 kenandannie:去爬了原文,如果原PO对平衡的理解也是前人那套 03/15 06:27
88F:→ kenandannie:那就又是另一个故事了 03/15 06:28
89F:→ kenandannie:但是一来我不认同,二来我想睡觉,所以先这样吧 03/15 06:28
91F:→ kenandannie:然後睡觉之前最後一瞥发现我忘了攻速问题 03/15 06:34
92F:→ kenandannie:所以会修正成200/18=11.111111111 03/15 06:35
93F:→ kenandannie:至於前面因为都是弓箭手单方面射所以没差 03/15 06:36
94F:→ kenandannie:最後会影响的就剩攻击模式还有回合的问题了 03/15 06:37
结果一推人的算法都不一样,哈哈哈
到底有没有正解阿~"~
95F:→ rofellosx:弓手可以往後跑不给战士杀. 03/15 09:09
96F:推 Ebergies:弓手可以射到最後一格再往後跑, 等战士不追了回头射死他 03/15 09:34
97F:→ y3k:如果考虑到弓手往後移的情况 那战士"突击"之类的中距离技能是 03/16 06:23
98F:→ y3k:否也该考虑进来 这样整个影响的点究竟会是这些技能还是数值?XD 03/16 06:23
※ 编辑: StupidGaGa 来自: 60.249.117.38 (03/19 14:11)