作者SmallBeeWayn (喵喵叫的蜜蜂猫)
看板higurashi
标题[海猫] 新.汝は人狼なりや?规格式样书
时间Thu Feb 5 04:55:53 2009
0.规格书的规格书
1.Notion
2.资料结构
3.网页结构
4.工作分工
5.系统延伸
0.规格书的规格书==========================================================
要讨论请到
higurashi版回应或推文, 主要规格书修改会一直编辑该版文章
第一章-Notion
各种於设计期间/开发期间/晚上睡觉梦到的点子
未必要实际应用於程式中....但任何点子都可能成为重要的依据
这是在初期开发期间最重要的
也是最需要集思广益的
第二章-资料结构
当然也可以说是资料库结构,但事实上只要是阵列变数都属於此章的范围
不过初期设计当然还是从资料库结构开始....
然後是阵列结构,最後才是定义所有的变数名称
第三章-网页结构
所有网页的名称, 负责的工作
相互之间传递的引数内容,从属关系
要等第二章弄差不多才要开始处理
第四章-工作分工
作为一个(希望)中型开发计画
只要2,3章决定了,就可以开始进行工作分工了
第五章-系统延伸
超长时间场(以真实时间计算时间...)
特多人数, 30人up
多占卜/猎人/灵能/etc...超复杂化
背德,恋人,狼占,狸猫,etc...等新职业加入
1.Notion==================================================================
系统=======================================================
将帐户申请与村民登录各自独立
玩家退出村庄(而不是被KICK)/更改名称头像的功能
帐号名称应该为单纯英数,村民名称也应该有所限制
对话的回应功能?悄悄话?
纪录档汇出&删除而不是留在资料库中(xml+xsl or htm+css
or mht/chm or php+css+csv/zip)
测试专用场,身代必为村人,人人有职位
加强的回合状态显示(防止漏投)
投票纪录於哪个TABLE?(讨论於2章TABLE ji_player)
内部全部使用UTC Time
Time纪录应该唯一, 但是同时发生的事件应该随机排序time+1
扮演模式?(玩家头像&昵称全部用系统内部设定)
联合Server表(要有版本,标头资讯等)
对话制防止对话灌水
简易新手指南
对话使用ajax与压缩技术
程式样板化(文字/版面分离)
依据玩家的银幕宽度,使用不同的版面
发言的文字颜色分离
替身名字的多样化, 为特定acc_id而非uname或其他
玩家的预存发言,自订死亡讯息等(取代"残破的身体被发现")
允许ICON/MIG储存於另一个网页空间(使用FTP或多重途径连线)
网页复制文字/COPY画面....统统不可以 (用照相机我服你...)
专家模式(有效参与场次,KICK次数有限玩家限制)
防止只开专家模式
音效: 开始游戏/重新投票/日夜切换/未投警告
玩家纪录
参加场数,完成场数,全参与场数(有留在幽灵间到结束或活到最後)
参加密度,扮演角色次数/获胜次数
(玩家个人纪录的公开程度, 应该让玩家可以自己设定)
不良玩家纪录
被KICK率(因为会有自行离场, 所以可以计算被KICK率)
在没有重新投票的状况下自杀
洗版,多重参赛,重投没投,作弊嫌疑(一场一次,由玩家於结束後投票)
各种数量限制
同时玩家数目,募集中场次限制,新开募集最小时间差,游戏中场次限制
所有场次总限制(含刚结束?),玩家重场限制,发言密度限制
专家场比例限制
室长功能?
强制KICK?,开场後修改规则?,废场?
系统纪录
每一场的开始跟结束时间,活动密度
游戏PLAY FRAME配置(预想):
即时|广告
状态|对话输入/登入
----+
村投|活人对话
人票|
状选|- - - - - -
态单|死人/路人对话
规则与选项=================================================
开场GAME START投票Timeout
1A.不Timeout 1B.一段时间自动Timeout 1C.不讲话一段时间自动Timeout
2A.可玩家自行取消 2B不可玩家自行取消
预设1C,2A, 不可设定
有玩家被KICK/自行离场 之後?
A.全部重投 B.不重投使用Timeout机制
夜间占卜不占的处理:
A.占卜死,游戏继续 B.系统随便选 C.不占卜,游戏继续
夜间猎人不保护的处理:
A.猎人死,游戏继续 B.系统随便选 C.不保护,游戏继续
夜间狼部份不投:
A.死狼,重投 B.死狼,不重头 C.不死狼,不重投
日间玩家不投票的处理
A.死人,重投 B.死人,不重投(除非同票) C.不死人,不重投(当废票,除非同票)
D.如果不投不影响结果则不死人不重投,若有影响则...?
同一晚占卜占狐&狼咬占卜之处理
A.两个都死 B.死占卜不死狐狸
时间制/对话制/混合制
时间制:指定日间长度跟夜间长度(分钟), 时间到投票时间倒数开始
对话制:限制一个日间或是一个夜间可以说几句话, 归零投票开始
混合制:上述两种同时存在
投票时间可指定?
替身的职业例外?或是游戏直接从早上开始?
职业希望制,替身君制度,公开票数
16人决定者,16人权利者,20人埋毒者
幽灵观看角色禁止
更高/低的最大人数限制, 开场最少人数限制
2.资料结构================================================================
陆续补充中...
DB TABLE ji_account========================================
帐号资料,纪录玩家帐号密码状态跟被KICK纪录等
acc_id UNSIGNED MEDIUMINT AUTO_INCREMENT=1 NOTNULL
流水编号,从1开始
acc_name VARCHAR NOTNULL
帐号名称(不是村民名称)
acc_password
MD5编码後的密码
acc_authority
使用者权限
...
PRIMARY acc_id
UNIQUE acc_name
DB TABLE ji_room===========================================
村庄资料以及可选择的规则
room_no UNSIGNED SMALLINT AUTO_INCREMENT=1 NOTNULL
村庄编号,从1开始
room_name VARCHAR NOTNULL
村庄名称
room_comment TINYTEXT NULL
村庄说明
room_option BYTE() NOTNULL DEF=0
Bit指定选项,或者拆开来每一项用ENUM?
room_timeday UNSIGNED TINYINT NOTNULL DEF=0
启用日间时间制,单位分钟
room_timenight UNSIGNED TINYINT NOTNULL DEF=0
启用夜间时间制,单位分钟
room_talkday UNSIGNED SMALLINT NOTNULL DEF=0
启用日间对话制,单位句数
room_talknight UNSIGNED SMALLINT NOTNULL DEF=0
启用夜间对话制,单位句数
四项可混用,但注意不可time & talk两项都是0
room_silienttime UNSIGNED TINYINT NOTNULL DEF=0
启用若多久没人说话就进入投票,单位秒
room_maxplayer UNSIGNED TINYINT NOTNULL DEF=1
最高开场人数限制
room_minplayer UNSIGNED TINYINT NOTNULL DEF=1
最低开场人数限制
room_timevote UNSIGNED TINYINT NOTNULL DEF=0
投票时间,单位10秒
即若room_timevote=12 => 120秒
room_day TINYINT NOTNULL DEF=0
= -2 已输出纪录,不可再进场
= -1 该场已结束,可以进去场後闲聊
= 0 招募中
= 2n-1 夜间 n 日目
= 2n 日间 n 日目
n为正整数(1,2,3,....,127)
room_timeleft UNSIGNED INT NOTNULL
制限时间(日间/夜间/投票), 当time()>timeleft及超过时限
room_talkleft UNSIGNED SMALLINT NOTNULL
剩余的对话句数
room_voteround UNSIGNED TINYINT NOTNULL
目前投票的回数
村庄状态 day timeleft/talkleft voteround 胜负
招募中 0 忽略 忽略
夜间讨论 2n-1 至少其一不为0 0
夜间投票 2n-1 至少其一不为0 >0
日间讨论 2n 至少其一不为0 0
日间投票 2n 至少其一不为0 >0
完结讨论 -1 忽略 同day=-2
结束 -2 忽略 0 开场前废村
1 进行中废村
2 投票平手
3 村民胜利
4 狼胜利
5 狐胜利(人侧)
6 狐胜利(狼侧)
room_lastupdated UNSIGNED INT NOTNULL
该村庄最後一次事件时间
PRIMARY room_no
INDEX room_day
基本上...room表有点大....虽然一村只会用到一项....
可能考虑拆成ji_roomlog(村庄纪录)
跟ji_roomrun(进行中村庄)两表(ENGINE=MEMORY)
DB TABLE ji_player=========================================
属於该村庄的村民资料
room_no = ji_room.room_no
其余规划中
vote_toid
==0 !=0
招募中 未投票 GAMESTART
已开始 未投票 目标acc_id
ji_message也会纪录投票,但仅供作为log输出用
vote判定则使用ji_player(游戏开始投票也用这张表)
或者考虑因为长vote,独立成ji_vote用ENGINE=MEMORY
(注:後来发现ji_vote表很好用, 明天把他弄出去...)
DB TABLE ji_icon===========================================
头像
DB TABLE ji_message========================================
属於该村庄的系统事件
room_no = ji_room.room_no
room_day = ji_room.room_day
msg_time UNSIGNED TIME NOTNULL
UTC Time
msg_type UNSIGNED TINYINT NOTNULL
msg_text TINYTEXT NOTNULL
msg_id_from = ji_account.acc_id
msg_id_to = ji_account.acc_id
表格规划中, 已知原来有用到
FOX_DEAD FOX_EAT GUARD_DO GUARD_SUCCESS LAST_WORDS MAGE_DO
MAGE_RESULT NECROMANCER_RESULT OBJECTION RE_VOTE
POISON_DEAD_day POISON_DEAD_night
VOTE_KILL VOTE_KILLED VOTE_TIMES WOLF_EAT WOLF_KILLED
其实如果没有狼占这种可以一次投两种票的角色
甚至可以舍弃ji_message表,所有东西都可以从其他表查到
不管白天的吊人,晚上吃人/占卜/保护都统一到vote去
其余可以直接输出到talk不再收回
DB TABLE ji_talk===========================================
属於该村庄的对话纪录
room_no = ji_room.room_no
room_day = ji_room.room_day
talk_id
=0 = 系统事件
>0 = ji_account.acc_id
talk_type
when talk_id=0 =>
玩家加入
开始
日夜切换
游戏结束
KICK VOTE
KICKED
KILL VOTE
KILLED
EAT VOTE
EATED
EAT FAUL
VOTE START
REVOTE
突然死亡
etc...
when talk_id>0 =>
=0 一般对话
=1 大声对话
=2 小声对话
talk_time
UTC Time
talk_sentence
内容
原来还用到一个spend_time, 用途不明?
这张表还很有讨论空间....事关log输出效率
--
渡良濑 准
连连看: 北条ㄇㄥˊ 男
瑞穗 女
貂蝉
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.116.180.163
1F:推 crasser:我想建议做出密语的模式 大家知道谁对谁讲 不过不知说什麽 02/05 06:27
2F:→ crasser:只有共生可以不让大家知道来讲话 02/05 06:28
3F:→ crasser:阿对了 我是指在白天的时候 02/05 06:29
4F:→ crasser:另外猎人应该要可以知道是否有挡到狼 而不是不知道有挡没 02/05 06:31
本来就可以不是吗? 吗?
5F:推 GALINE:...闭门造车果然不好,我已经写了个10~20%下去了[汗] 02/05 09:17
拿出来分享吧...有不少人都写一半了XD
6F:→ GALINE:之前只开过一次22人场就有17xMB的流量,吓到我 02/05 09:22
所以对话存取一定要用ajax之类的更新机制
7F:→ Inkylain:密语机制有点可怕,万一真神占被当作弊? 02/05 11:16
8F:推 F23ko:不会,真占会用pm跟人传递查过得名单.... 不过,如果传到狂 02/05 11:17
9F:→ F23ko:人的话,那就完蛋了..... 02/05 11:17
10F:→ F23ko:以及,狼跟狂人也会用pm传名单,扰乱真占建立起那个「安全 02/05 11:18
11F:→ F23ko:网」 02/05 11:18
12F:→ F23ko:不用想的太可怕,facebook的黑手就有开放pm,游戏方式会改变 02/05 11:19
13F:→ F23ko:,但不管怎麽改,玩家还是会玩出一套模式的.... 02/05 11:19
14F:推 F23ko:不过我个人不太希望全有pm功能.... 那样玩起来会很混乱.... 02/05 11:23
pm功能可以弄在长时间场, 保证一团混乱XD
15F:推 F23ko:~"~ 02/05 11:31
16F:推 F23ko:我觉得我要开始练打字速度了...... 02/05 11:44
17F:推 srwfe:密码加一点调味料吧 sha1(strtolower($acc).$passwd)之类的 02/05 12:47
没有意义....
18F:推 GALINE:我是好孩子,我有做 ._./ 02/05 12:50
19F:推 Kenqr:游戏开始前 希望可以有自行离开(踢自己)的功能 02/05 12:59
20F:→ Kenqr:让第一名进场的玩家有直接踢人(不用集5人)的功能也不错 02/05 12:59
21F:→ Kenqr:否则常常踢人就踢半天 囧 02/05 13:00
22F:推 ice2240580:恋人︰村人方职业,晚上可互通讯息,其中一位死亡另一 02/05 14:07
23F:→ ice2240580:位将会殉情 02/05 14:07
24F:→ ice2240580:村人方优势︰可指证对方清白 狼方优势︰可双杀 02/05 14:07
25F:→ ice2240580:仅限村人是恋人考虑到狼晚上也要说话 02/05 14:07
26F:→ ice2240580:不然狼能当恋人应该更有趣 02/05 14:07
27F:推 ice2240580:狼占是建议不要 02/05 14:14
28F:→ ice2240580:真占+狼咬+狼占 一天被检验三次会玩死妖狐XD 02/05 14:15
29F:推 F23ko:Kenqr説应是「室长」之类的功能吧? 02/05 16:20
30F:推 lightwee:不建议做密语耶,这样子就不够公平了,除非大家都看得见 02/05 16:33
31F:→ SmallBeeWayn:我也看过狼跟村民有禁断之恋的XD 02/05 16:36
32F:推 lightwee:禁、禁断之恋XDDDDDDDDDD 02/05 16:38
33F:推 ice2240580:要怎麽禁断之恋啊 白天大家都看得到啊XD 02/05 17:54
34F:→ GALINE:原来有些狼喜欢白天来 //memo 02/05 17:56
35F:推 ice2240580:楼上好糟糕 02/05 18:02
36F:→ F23ko:光菱,你多心了,用密语骗人只会骗更大..... = = 02/05 18:12
37F:推 F23ko:ice,那改成狼占占到狐,狼会暴毙如何? XDDDDD 02/05 18:23
38F:推 ice2240580:这样狼狐各有损 村人得利 02/05 18:25
39F:→ ice2240580:背德和狸猫是谁提的啊 怎麽都没设定出来(敲碗) 02/05 18:27
40F:推 F23ko:有没有人要先把新游戏规则订出来? 我来当主持人。 02/05 18:29
41F:→ F23ko:先来进行几场纸上游戏,就能知道哪以该调整了 02/05 18:30
42F:推 F23ko:以及,在除错阶段我可以帮忙,我还蛮喜欢挖BUG的..... 02/05 19:03
43F:推 GALINE:其实说真的,这东西规模不大,一两个人就可以写一支。增加 02/05 19:46
44F:→ GALINE:人力不见得能做的比较快/比较好。所谓人月神话是也。 02/05 19:46
45F:→ GALINE:我建议定住游戏规则(或规定哪些规则可调整),然後好几组 02/05 19:47
46F:→ GALINE:人马同时开发,竞争有时能更有效促进开发效率…XD 02/05 19:48
只会导致多头马车, 光是只有我跟企鹅两个版本就乱七八糟了...
47F:推 crasser:其实仔细想想 中毒死和被咬死怎样都不会一样不是 02/05 20:27
48F:→ crasser:为什麽没办法区分两种屍体 只是能知道就对狼不利就是 02/05 20:28
49F:→ ice2240580:有时候可以掩护到妖狐 让人家以为妖狐已死 02/05 20:30
50F:→ crasser:至於猎人那个是因为猎人常常没有以守到结果推理 或留讯息 02/05 20:30
51F:→ crasser:常常让妖狐还活着最後变妖狐胜XD 让我以为猎人不知道 02/05 20:31
52F:推 zaq1xsw2121:狼狐禁断之恋....好萌啊 XDDDD 02/05 21:33
53F:推 ice2240580:然後狼为了朋友不投票自爆 悲壮的禁断恋情结局 02/05 21:41
54F:推 ice2240580:幼驯染狼要阻止已是不及 只能怀想前几晚的情话而惆怅XD 02/05 21:45
※ 编辑: SmallBeeWayn 来自: 122.116.180.163 (02/06 01:24)
※ 编辑: SmallBeeWayn 来自: 122.116.180.163 (02/06 03:27)
※ 编辑: SmallBeeWayn 来自: 122.116.180.163 (02/06 03:34)
55F:推 crasser:关於F23对於狼给假占名单的问题 如果大家能知道交谈对象 02/06 10:54
56F:推 crasser:也可以抓出一狼和可能是狼的嫌疑者 未必太不利 02/06 10:59
57F:→ crasser:因为密语使用者本身就会引起怀疑 算是有点鸡肋的功能 02/06 11:01
58F:→ crasser:只是让狂人 狐和灵能影响变大 增加游戏职业的玩法 02/06 11:04
59F:→ crasser:还有一个问题就是没时间点人密语和是否可多人密语吧 02/06 11:06
※ 编辑: SmallBeeWayn 来自: 122.116.180.163 (02/06 17:03)
60F:推 F23ko:希望能改成不用投票,不少人被村民吊,火气会很大..... 02/07 13:21
61F:→ F23ko:为那些没水准的人想想吧...... 02/07 13:21
62F:→ SmallBeeWayn:什麽东西不用投票? 02/07 15:29
※ 编辑: SmallBeeWayn 来自: 122.116.180.163 (02/08 03:15)
※ 编辑: SmallBeeWayn 来自: 122.116.180.163 (02/08 04:15)
※ 编辑: SmallBeeWayn 来自: 122.116.180.163 (02/08 04:18)
※ 编辑: SmallBeeWayn 来自: 122.116.180.163 (02/08 19:38)
63F:推 F23ko:吊人.... 02/08 21:00
64F:→ SmallBeeWayn:吊人不投票怎麽吊人@_@ 02/09 01:53
66F:→ F23ko:可以参考 02/10 16:58
67F:推 attacksoil:恋人: 对方角色存活到最後即胜利 < 这样?XD 02/11 22:04
69F:→ R6:但是我没仔细看 只有看Q11 恋人一人一狼 比起爱情,食慾优先XD 02/12 03:15
70F:→ R6:只是这样的情况下狼恋人不会自杀XD 02/12 03:16
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 122.116.180.163
※ 编辑: SmallBeeWayn 来自: 122.116.180.163 (02/12 22:18)
71F:推 evan1093:狼也不止一只啊~四狼分别有四个恋人吗? 02/12 22:57
72F:→ evan1093:还是说,只有一个恋人,那其他三狼要吃怎办 02/12 22:57
73F:推 kunoka:先吃狼~XDDDDD 02/12 22:59
※ 编辑: SmallBeeWayn 来自: 122.116.180.163 (02/12 23:46)
74F:→ rofellosx:占不能不占 狼不能不杀 这两个可是核心阿 02/13 13:58
75F:→ rofellosx:不占跟不杀是没办法继续游戏 我只认同猎人可以不保护 02/13 14:00
76F:推 ice2240580:那就是腊人了 02/13 14:00
77F:→ rofellosx:决定者似乎是没用的职位.. 02/13 14:00
78F:→ ice2240580:同票决定者优先 那和多一票有什麽不同 而且看不出来XD 02/13 14:02
79F:推 BlueNEO:有权力者容易看出来 决定者不容易看出来 02/13 14:07
80F:→ BlueNEO:除非有出现同票状况 而决定者有投 否则无法缩小范围 02/13 14:08
81F:→ BlueNEO:人少而权力者常早死的情况下 容易造成翻盘 02/13 14:08
82F:→ ice2240580:权力者反而比较没用 早早吊死.. 02/13 14:09
83F:推 BlueNEO:法拉之前有场是2村+权力狼 投到和局(摊手) 02/13 14:20
84F:推 ice2240580:村民太NICE了 02/13 14:22
85F:推 wingchord:需要图片我可以继续制作 开发其实我也行 但是好麻烦算了 02/13 22:53