silksong-coop-mod 0.4.52 → 0.4.54
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/INSTALL.txt +1006 -988
- package/README.md +2 -2
- package/SSMP/SSMP.dll +0 -0
- package/package.json +1 -1
package/INSTALL.txt
CHANGED
|
@@ -1,988 +1,1006 @@
|
|
|
1
|
-
丝之歌联机模组(SSMP 自制版)——一键安装
|
|
2
|
-
==========================================
|
|
3
|
-
|
|
4
|
-
这是 SSMP 联机模组的一个自制版本,比公开版多了「双人存档」:
|
|
5
|
-
两个人共用一条流程,任务、世界变化、剧情道具会互相同步。
|
|
6
|
-
|
|
7
|
-
重要:两个人必须装【同一份】这个压缩包,不能一个人用公开版。
|
|
8
|
-
|
|
9
|
-
【从这一版开始,版本不一致会被直接拦住。】
|
|
10
|
-
加入房间时会比对双方的版本,不一样就不让连,并且明确告诉你
|
|
11
|
-
「你们装的版本不同」,而不是连上之后表现出一堆对不上的怪事。
|
|
12
|
-
|
|
13
|
-
※ 代价是:这一版【不认识任何旧版本】。
|
|
14
|
-
所以【两个人必须一起换成这一版】,只有一个人装的话,
|
|
15
|
-
你们会连不上——这是正常的,不是坏了。
|
|
16
|
-
这笔账只付一次,以后就不会再有「一个人更了一个人没更」还不知情的情况。
|
|
17
|
-
|
|
18
|
-
(顺带更正我之前在这里写错的话:我原先说「版本不一致配对时会提示」,
|
|
19
|
-
那时候是【不对的】,当时根本没有任何东西在比对版本。现在才是真的。)
|
|
20
|
-
|
|
21
|
-
【这个包是完全离线的】模组加载器已经放在包里,
|
|
22
|
-
安装过程不需要联网,不用梯子,也不受任何网站能不能打开的影响。
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
一、怎么装(双击一下就行)
|
|
26
|
-
--------------------------
|
|
27
|
-
|
|
28
|
-
1. 把这个压缩包【完整解压】到任意位置(比如桌面)。
|
|
29
|
-
不要只解压出单个文件,INSTALL.bat、SSMP 文件夹和
|
|
30
|
-
BepInEx_win_x64_5.4.23.4.zip 必须在一起。
|
|
31
|
-
|
|
32
|
-
2. 双击 INSTALL.bat。
|
|
33
|
-
|
|
34
|
-
3. 等它跑完,看到绿色的 Done 就好了。
|
|
35
|
-
|
|
36
|
-
它会自己做这几件事:
|
|
37
|
-
- 找到你的 Silksong 安装位置(找不到会让你把路径粘进去)
|
|
38
|
-
- 先把你的存档备份成 zip,放在这个文件夹里的 save-backups\ 下
|
|
39
|
-
(只留最近 3 份,更旧的会自动删掉;它不会碰别的文件)
|
|
40
|
-
- 用包里自带的加载器装好(不联网)
|
|
41
|
-
- 把联机插件放进去
|
|
42
|
-
- 最后检查一遍有没有装成功
|
|
43
|
-
|
|
44
|
-
窗口里的提示是英文的,因为 Windows 自带的 PowerShell 显示中文
|
|
45
|
-
经常是乱码,英文反而不会出错。
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
二、这个脚本安全吗
|
|
49
|
-
------------------
|
|
50
|
-
|
|
51
|
-
- 它只往【游戏目录】写东西,外加一个存档备份。
|
|
52
|
-
不改注册表、不改系统设置、不装任何后台程序、不联网。
|
|
53
|
-
- 不需要管理员权限(除非你的游戏装在 C:\Program Files 里)。
|
|
54
|
-
- 想卸载:把游戏目录里的 BepInEx 文件夹、winhttp.dll、
|
|
55
|
-
doorstop_config.ini、.doorstop_version、changelog.txt
|
|
56
|
-
删掉就完全干净了。
|
|
57
|
-
|
|
58
|
-
包里那个 BepInEx_win_x64_5.4.23.4.zip 是 BepInEx 官方在 GitHub
|
|
59
|
-
上发布的原版文件,没有改动过,大小 638,940 字节。
|
|
60
|
-
|
|
61
|
-
有一点要提前说:BepInEx 这类模组加载器的工作方式,是在游戏
|
|
62
|
-
exe 旁边放一个 dll,让游戏启动时连带加载它。这是所有同类
|
|
63
|
-
加载器的通用做法,但这个手法和某些恶意软件相同,所以
|
|
64
|
-
【杀毒软件有时会报毒】。看到告警是这个原因,不是脚本在干别的。
|
|
65
|
-
|
|
66
|
-
真正的风险不在系统,在存档:模组有可能弄坏存档,
|
|
67
|
-
所以脚本会先备份。
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
三、怎么一起玩
|
|
71
|
-
--------------
|
|
72
|
-
|
|
73
|
-
1. 【从 Steam 启动游戏】,不要直接双击 exe。
|
|
74
|
-
|
|
75
|
-
2. 一个人开房:选 "Steam" 那一页,点 Create Lobby。
|
|
76
|
-
开完房不会直接进游戏,而是停在一个【等待室】里。
|
|
77
|
-
|
|
78
|
-
3. 房主在等待室里点 INVITE FRIEND,会直接弹出 Steam 的邀请框,
|
|
79
|
-
不用自己去找 Steam 覆盖层。对方接受邀请就会进到同一个等待室。
|
|
80
|
-
|
|
81
|
-
4. 两个人各自点一次 I'M READY。
|
|
82
|
-
名单上能看到对方是 READY 还是 NOT READY。
|
|
83
|
-
【两个人都 READY 之后】,两边才会同时打开各自的选存档界面。
|
|
84
|
-
反悔就再点一次取消。
|
|
85
|
-
|
|
86
|
-
5. 进游戏后,屏幕上方会出现一行字,
|
|
87
|
-
写着「按 L 和 XXX 组成双人存档」。
|
|
88
|
-
两个人都按一下 L 就配对好了。
|
|
89
|
-
不想配对就别理它,它会自己消失。
|
|
90
|
-
|
|
91
|
-
【用手柄的话把左摇杆按进去(L3)】,和 L 是同一件事。
|
|
92
|
-
是像按按钮一样把摇杆往手柄里按,会「咔哒」一声;往下推是方向,不算。
|
|
93
|
-
插着手柄时,屏幕上那行字会把键盘键和手柄键都写出来。
|
|
94
|
-
|
|
95
|
-
(配对键原来是 J,这一版改成了 L。因为 J 是游戏自己
|
|
96
|
-
「打开背包并翻到笔记页」的默认键,按一下会同时干两件事。
|
|
97
|
-
L 在游戏的默认键位里没人用。)
|
|
98
|
-
|
|
99
|
-
6. 之后这两个存档必须两个人都在线才能打开。
|
|
100
|
-
如果对方不来、或者两边一直停在「Waiting for XXX」不动,
|
|
101
|
-
你会被定住不能移动,屏幕上会写着在等谁。
|
|
102
|
-
【这时按 K】就能退出双人存档、自己单独玩。
|
|
103
|
-
注意:这只解开你这边,对方要自己也按一次 K。
|
|
104
|
-
|
|
105
|
-
※ 不要去聊天框打 /coopsave off。被定住的时候聊天框打不开;
|
|
106
|
-
而且只要对方还在线,那条指令也只是【请求对方同意】,
|
|
107
|
-
并不会放你走。K 才是真正的出路。
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
四、第一次玩的建议
|
|
111
|
-
------------------
|
|
112
|
-
|
|
113
|
-
* 两个人都【开新档】。
|
|
114
|
-
配对会检查双方已击败的 Boss 是否一致,老档大概率对不上。
|
|
115
|
-
|
|
116
|
-
* 连接和等待室都已经实测跑通过(中国 ↔ 马来西亚,走 Steam 中继)。
|
|
117
|
-
|
|
118
|
-
* 【之前卡在「Waiting for XXX」的原因已经找到并修掉了】
|
|
119
|
-
服务器把所有玩家的网络数据放在同一个拼包缓冲区里,而且是先拼字节、
|
|
120
|
-
后判断这包是谁发的。双人存档要同步的世界进度是全游戏唯一一个
|
|
121
|
-
大到需要拆包发送的数据,一拆包,两个人的数据就会被粘在一起,
|
|
122
|
-
连接的分帧从此错乱、五秒后超时重连,于是校验永远走不完。
|
|
123
|
-
|
|
124
|
-
这也解释了为什么配对、聊天、看到对方走路一直都正常——
|
|
125
|
-
那些包都很小,从来不需要拆。
|
|
126
|
-
|
|
127
|
-
现在每条连接各用各的缓冲区。
|
|
128
|
-
【这个修复已经实机验证通过】,两个人已经正常连上并一起玩过了。
|
|
129
|
-
万一还卡:按 K 脱身,然后把两边的日志都发回来。
|
|
130
|
-
|
|
131
|
-
备份脚本会自动做,位置见上面第一节。
|
|
132
|
-
|
|
133
|
-
* 【从这一版开始,敌人和 Boss 才是真正同步的】
|
|
134
|
-
在这之前,控制这件事的开关默认是关的,而且没有任何界面能打开它,
|
|
135
|
-
所以你们其实是各打各的:同一只怪在你这边死了、在她那边还站着,
|
|
136
|
-
打完的记录也只记在动手的那个人身上。
|
|
137
|
-
现在这个开关被固定为常开,配置文件里存着的旧设置不再起作用。
|
|
138
|
-
【两个人都必须重装这一版】,只有一个人装是没用的。
|
|
139
|
-
|
|
140
|
-
顺带说一句:Boss 的击败记录本来就是各记各的,不会互相抄,
|
|
141
|
-
这是当初定好的规则(剧情进度共享,战绩和拾取各归各的)。
|
|
142
|
-
所以如果一个人已经打过、另一个人没打过,
|
|
143
|
-
那只怪在没打过的那个人的世界里还在,两个人可以一起再打一遍,
|
|
144
|
-
这次两边都会拿到记录。
|
|
145
|
-
|
|
146
|
-
* 【茧:平时各看各的;但你死了之后,队友可以把你拉起来】
|
|
147
|
-
平时的规则没变:你只看得见【自己】的茧,对方也碰不到你的。
|
|
148
|
-
|
|
149
|
-
新加的是救人。你死掉之后【不会立刻回长椅】,会先在原地等一会儿,
|
|
150
|
-
最多 45 秒。这段时间里,你的茧会出现在【队友】那边,
|
|
151
|
-
她打【5 下】就能把你拉起来:
|
|
152
|
-
在你倒下的地方站起来,血量是你上限的【一半】(向下取整),
|
|
153
|
-
茧里的钱和丝也一起还给你,等于这一次没白死。
|
|
154
|
-
|
|
155
|
-
等的时候屏幕上有一行字,写着在等谁、对方已经打了几下。
|
|
156
|
-
不想等了就【按 K】,立刻回长椅、按原来的规则结算,
|
|
157
|
-
你的茧同时从队友那边消失。等满 45 秒没人来,也一样自动回长椅。
|
|
158
|
-
(注意:这里的 K 只是「不等了」,不会解除你们的双人存档。)
|
|
159
|
-
|
|
160
|
-
【两个人都死了,就都直接回长椅】,不会互相干等,
|
|
161
|
-
也不会出现谁站在那儿等一个同样躺着的人。
|
|
162
|
-
|
|
163
|
-
这一条是刚写的,【还没有实机验证过】。
|
|
164
|
-
真卡住不动了(按理说等满 45 秒一定会自己回长椅),
|
|
165
|
-
Alt+F4 强退就行,存档还停在上一次保存的地方。
|
|
166
|
-
|
|
167
|
-
这里原本藏着一个很隐蔽的问题,已经修掉:
|
|
168
|
-
两个人的茧在各自游戏里【名字完全一样】,而模组会把「打碎世界物件」
|
|
169
|
-
这类命中按名字转发给对方重放。于是她打她自己的茧,
|
|
170
|
-
你这边被打碎的是【你的】茧——而且和你们死在哪儿没关系,
|
|
171
|
-
隔着半个房间照样会中。茧里的钱是记在存档里的,
|
|
172
|
-
被这样打掉会直接结算掉、还会抹掉你那个茧的记录。
|
|
173
|
-
现在茧被排除在转发之外,对方攻击的副本也碰不到它。
|
|
174
|
-
你自己打自己的茧,一切照旧。
|
|
175
|
-
|
|
176
|
-
* 【修掉了「后进房间的人,满屋子怪全定住」】
|
|
177
|
-
只要你走进一个对方已经清过的房间,那些怪在你这边会全部卡死不动。
|
|
178
|
-
原因是服务器只记得「这怪没血了」,却不记得「它死过」,
|
|
179
|
-
于是你这边的怪变成了一具零血的活尸:它每一帧都想死,
|
|
180
|
-
每一帧都被模组挡回去,一个房间能刷出七千多次,整屋子就此卡住。
|
|
181
|
-
现在补状态时会把这类怪真正结算掉一次,进门看到的是尸体而不是活尸。
|
|
182
|
-
|
|
183
|
-
* 【昵称会记住了】
|
|
184
|
-
以前只有「直连 IP」和「直连开房」两条路会保存昵称,而你们用的是 Steam
|
|
185
|
-
开房 / 加入 / 房间列表,这几条一条都不保存 —— 所以不是你忘了填,
|
|
186
|
-
是它在你的用法下从来没存过。现在填一次就记住,下次自动带出来。
|
|
187
|
-
|
|
188
|
-
* 【进游戏之后不用再碰键盘了】
|
|
189
|
-
配对(L)和放弃等待(K)这两个动作,手柄都可以【把左摇杆按进去】来完成
|
|
190
|
-
(L3:摇杆当按钮往里按,不是往下推)。
|
|
191
|
-
选左摇杆是因为它是游戏唯一没占用的按钮 —— 扳机、肩键、四个面键、
|
|
192
|
-
右摇杆按下、旁边那两个键,游戏全都用掉了。
|
|
193
|
-
这两个动作不会同时出现(没配对时才问你要不要配对,配对了才谈得上放弃),
|
|
194
|
-
所以共用一个键不会冲突。
|
|
195
|
-
聊天键故意没给手柄绑:手柄本来就打不了字,绑了也只是开一个填不进去的框。
|
|
196
|
-
|
|
197
|
-
※ 联机大厅(连接、房间列表、等待室)目前仍然要用鼠标键盘,这是你定的。
|
|
198
|
-
|
|
199
|
-
* 【手柄在选存档界面按不进去:真正的原因找到了】
|
|
200
|
-
这里一共有两道闸,前几版只拆了第一道。
|
|
201
|
-
|
|
202
|
-
第一道:模组自己建了一套界面输入系统,在菜单里抢着管事。
|
|
203
|
-
它能认键盘的确认,不认手柄的,所以当时是「只有键盘能进存档」。
|
|
204
|
-
这一道之前已经关掉了,菜单交回给游戏自己的输入。
|
|
205
|
-
|
|
206
|
-
第二道:模组打开选存档界面时,先调用了游戏的「隐藏当前菜单」。
|
|
207
|
-
这个功能只认主菜单下面的子菜单(设置、音频这些),
|
|
208
|
-
碰到主菜单时会先挂上「菜单正在切换」的牌子,然后直接退出,再也不摘。
|
|
209
|
-
游戏的菜单挂着这块牌子时,会丢掉所有「确认」和「返回」,
|
|
210
|
-
唯独「左右移动」不查它 —— 所以手柄能左右切换存档,却怎么都按不进去。
|
|
211
|
-
游戏自己打开选存档界面时,在主菜单本来就不会调用它;现在模组也不调了。
|
|
212
|
-
从联机菜单按 Esc 回主菜单也会挂上同一块牌子,一起去掉了。
|
|
213
|
-
|
|
214
|
-
顺带:在这个界面按 B(或 Esc)现在会回到联机菜单,
|
|
215
|
-
和左下角的「返回」一样,不会掉回游戏主菜单把联机流程卡住。
|
|
216
|
-
|
|
217
|
-
※ 这一条【没有实机验证过】。
|
|
218
|
-
|
|
219
|
-
* 【修掉了「血还没空,却一直反复播死亡动画」】
|
|
220
|
-
那不是死亡动画,是被抓住时的受伤姿势,所以血没到 0 也会出现。
|
|
221
|
-
只发生在【不是房间主机】的那个人身上,和网络卡不卡没有关系。
|
|
222
|
-
|
|
223
|
-
有的 Boss 反击时会打开一个「抓人判定框」,只开那一招那么长,
|
|
224
|
-
这一招结束时游戏会自动把它关上。
|
|
225
|
-
模组只把「打开」传给了另一边,「自动关上」从来没传过,
|
|
226
|
-
所以在房间客机那边,这个框在第一次反击之后就再也不关了。
|
|
227
|
-
碰到它就被抓:扣 1 血,定住摆受伤姿势最多 4 秒,
|
|
228
|
-
放开后的下一帧又被抓住,一直循环到血真的扣光。
|
|
229
|
-
现在那一招结束时,这边也会把框关上。
|
|
230
|
-
凡是「只在某一招里打开」的判定框都是同一个问题,一起修了。
|
|
231
|
-
|
|
232
|
-
在房间客机那边,要是正好在那一招里被抓到:扣 1 血,
|
|
233
|
-
这一招一结束就放开(最多 0.65 秒,再加一点网络延迟),
|
|
234
|
-
和游戏里 Boss 抓人途中被打出硬直时放人的方式一样。
|
|
235
|
-
没有最后那一刀,因为那一刀只有房间主机那边的 Boss 放得出来。
|
|
236
|
-
|
|
237
|
-
* 【修掉了「怪物在它出生的地方一闪一闪」】
|
|
238
|
-
用身体撞人的怪(比如沿着台阶一圈爬的那种),只要它的伤害数值一变,
|
|
239
|
-
模组就会把你这边「睡着的那一只原版怪」叫醒一下,
|
|
240
|
-
于是它在出生点露脸一帧又消失。现在不会去叫醒它了。
|
|
241
|
-
|
|
242
|
-
* 【两个人都被打倒时,Boss 会做胜利动作了】
|
|
243
|
-
本来的设计是:一个人倒下时先不告诉 Boss(免得它对着还在打的人庆祝),
|
|
244
|
-
两个人都倒下才告诉它。但第二个人倒下时这条消息也被压住了,
|
|
245
|
-
所以 Boss 从来没做过胜利动作。现在第二个人倒下时会告诉它;
|
|
246
|
-
先倒下的是房间主机时,等另一个人也倒下,房间主机这边会补上这条消息。
|
|
247
|
-
|
|
248
|
-
* 【修掉了「交接房间主机时,怪消失、隐身、或者跳回原处」】
|
|
249
|
-
一个人离开房间、房间交给留下的人时,留下的人会把房间里的怪接过来自己跑。
|
|
250
|
-
接的时候,模组会把每只怪「第一步」里的动作补做一遍,本意是补上
|
|
251
|
-
这只怪在你这边从来没做过的准备工作(比如找到自己身上的零件)。
|
|
252
|
-
可是很多怪的第一步里还有「先藏起来」:出场前关掉自己的画面和碰撞、
|
|
253
|
-
定在原地不动,有的还会挪到房间外面、或者挪回它的起点等着。
|
|
254
|
-
交接时把这一步重做一遍,正在打架的怪就又被藏了起来,
|
|
255
|
-
而且「看不见」这个状态还会同步给对方,结果两个人都看不见它,它却照样在打人。
|
|
256
|
-
那只看不见、却一直朝你扔东西的会飞的怪就是这么来的;
|
|
257
|
-
交接之后会飞的怪突然不见、像回到了出生点,主要也是这个原因。
|
|
258
|
-
游戏里有 29 种怪会这样藏自己,其中包括好几个 Boss。
|
|
259
|
-
第一步里别的动作也会闹出小一号的同类问题:有的怪交接后被扭成朝同一个方向,
|
|
260
|
-
有的变得打不到。
|
|
261
|
-
|
|
262
|
-
现在交接时只补准备工作。怪站在哪、多大、朝哪边、看不看得见、能不能打到,
|
|
263
|
-
都按对方那边当时的样子接过来,第一步不会再把它们改掉。
|
|
264
|
-
只有当时那只怪本来就还藏着没出来,才会把「藏起来」这一步照做。
|
|
265
|
-
|
|
266
|
-
(上一版修的「怪被重新启用时从头来过」也是真的问题,那个修复还留着。
|
|
267
|
-
但我当时说那就是怪消失的原因,说错了,主要原因是上面这个。)
|
|
268
|
-
|
|
269
|
-
* 【修掉了「怪身上的一部分东西,房间客机看不到」】
|
|
270
|
-
最早发现的是沿台阶爬的那种怪:它出招时先挑「用哪一个喷射」,
|
|
271
|
-
把结果记在一个变量里,再把那个喷射打开。挑的那一步只在房间主机那边跑,
|
|
272
|
-
所以房间客机这边这个变量一直是空的,「打开喷射」找不到对象:
|
|
273
|
-
你当主机时看得到,不当主机时就看不到。
|
|
274
|
-
这不是个例。「先把要用的零件记进变量、再对它做事」这种写法,
|
|
275
|
-
游戏里有 3792 处,分布在 106 种怪上:喷射、粒子、声音、
|
|
276
|
-
发给自己零件的信号、零件的判定框开关、把一个零件挂到另一个零件下面……
|
|
277
|
-
以前这些在房间客机那边全都落空了。挂零件那种还更糟:
|
|
278
|
-
变量是空的,零件就被直接甩到了房间里,不再跟着怪走。
|
|
279
|
-
现在房间主机每做一次这类动作,都会告诉对方用的是怪身上的哪个零件。
|
|
280
|
-
|
|
281
|
-
* 【「只在一招里出现的东西」在房间客机那边会一直留着:一起修了】
|
|
282
|
-
上面那个抓人判定框只是其中一种。怪出招时打开、这一招一结束游戏就自动关掉的东西,
|
|
283
|
-
游戏里一共有六千五百多处:零件、判定框、特效、粒子,还有跟着这一招走的位移。
|
|
284
|
-
以前房间客机那边只收到过「打开」,从没收到过「关上」,
|
|
285
|
-
所以这些东西第一次出现之后就一直留在那里:特效不消失,碰到就挨打的判定框也不收。
|
|
286
|
-
现在这一招结束时,这边也会一起关掉。
|
|
287
|
-
|
|
288
|
-
* 【修掉了「怪抓住房间主机,房间客机也跟着中招」】
|
|
289
|
-
有些怪的动作是直接作用在「玩家」身上的:抓住、定住、藏起来、转身、甩出去、
|
|
290
|
-
摆受伤姿势、打断玩家正在做的事(回血、冲刺、技能)等等。
|
|
291
|
-
这些动作在对方那边说的是【对方的】角色,传到你这边重放时,
|
|
292
|
-
「玩家」指的却变成了【你自己】,所以不管你站在哪,都会跟着中招。
|
|
293
|
-
比如 Boss 抓住房间主机时,房间客机也会在原地摆出受伤姿势;
|
|
294
|
-
抓人结束时那一下「打断一切」,会把房间客机正在回的血、正在放的技能一起打断。
|
|
295
|
-
游戏里这类动作大约有一千处,分布在四十种左右的怪上。
|
|
296
|
-
现在这些动作在你这边一律不对你的角色做。能碰到你的,只有你这边的怪本身。
|
|
297
|
-
副作用:Boss 出场时让玩家摆的那些动作,房间客机这边也不会再跟着摆了。
|
|
298
|
-
|
|
299
|
-
* 【只有两个人都倒下,世界才会「过一段时间」】
|
|
300
|
-
单机里每死一次(或者退出游戏),游戏都会让时间往前走一截:
|
|
301
|
-
有的角色换了地方、有的这次不在、只维持几个房间的状态结束。
|
|
302
|
-
联机里现在是这样:
|
|
303
|
-
- 被队友救起来:不算(本来就不算)。
|
|
304
|
-
- 两个人都倒下:算,和以前一样。
|
|
305
|
-
- 一个人倒下、没人救(自己放弃或者等到超时)回长椅:以前算,现在不算了,
|
|
306
|
-
因为另一个人还站着。
|
|
307
|
-
退出游戏照常算。
|
|
308
|
-
|
|
309
|
-
顺带修了一个问题:两个人几乎同时倒下时(都还没收到对方倒下的消息),
|
|
310
|
-
以前两边都会躺着等对方来救,要干等 45 秒才回长椅;
|
|
311
|
-
现在一收到对方也倒下了,两个人就直接一起回长椅。
|
|
312
|
-
|
|
313
|
-
* 【暗房间里「开灯」两边一起变】
|
|
314
|
-
有些房间很暗,只看得到自己身边一小圈。
|
|
315
|
-
- 有两场 Boss 战,是 Boss 自己在开打时(或者打到一半)调亮度。
|
|
316
|
-
以前只有房主(先进房间的人)那边会变,另一个人整场都在暗处打;
|
|
317
|
-
现在两边一起变。
|
|
318
|
-
- 有一场遭遇战要「调查」某个东西才开打,开打时会顺带开灯。
|
|
319
|
-
以前只有调查的人那边亮,现在战斗在搭档那边开始时,搭档那边也一起亮。
|
|
320
|
-
|
|
321
|
-
* 【赛跑:两个人一起跑,一个人赢了就算两个人都赢】
|
|
322
|
-
开始比赛现在和接愿望一样:两个人都要各自去跟对手说话、都选「是」才会开始。
|
|
323
|
-
先选的人会停在选项上等对方,最多 20 秒;选「否」就可以收回。
|
|
324
|
-
开跑前,先到起跑线的人会在黑屏里等另一个人到,然后两边一起倒数
|
|
325
|
-
(最多等一分钟,等不到就自己先跑)。
|
|
326
|
-
跑的时候各跑各的赛道。只要有一个人赢了对手,两个人都算赢,各拿各的奖励。
|
|
327
|
-
先输了(或者犯规)的人不会马上被判输:你还能动,但要等队友跑完——
|
|
328
|
-
队友赢了,你这边直接算赢;队友也输了,两个人一起算输,然后一起问要不要再来。
|
|
329
|
-
中途用 needolin 放弃比赛,算你自己退出:之后队友赢了,也不算你赢。
|
|
330
|
-
|
|
331
|
-
* 【有的 Boss 格挡时,队友那边会莫名冒出一串受伤特效:修了】
|
|
332
|
-
Boss 挡住你的攻击时,你这边看到的是格挡的火花和「叮」的一声,
|
|
333
|
-
但传给队友的却是「打中了」的特效,所以队友看它每挡一下就冒一次伤害特效。
|
|
334
|
-
现在挡住的攻击传过去就是格挡:火花出在攻击打来的那一侧,也有「叮」的声音。
|
|
335
|
-
|
|
336
|
-
* 【后进房间的人也有 Boss 战音乐了】
|
|
337
|
-
Boss 开打时的战斗音乐、配套的混音(比如周围一下安静下来),
|
|
338
|
-
还有屏幕上出现的 Boss 名字,以前只在先进房间的人那边出现,
|
|
339
|
-
后进来的人整场都没有 BGM。现在两边都有。
|
|
340
|
-
|
|
341
|
-
* 【自己的角色不会再被队友的角色挡住】
|
|
342
|
-
以前两个人叠在一起时,队友的角色总是画在你自己的角色上面。
|
|
343
|
-
现在自己的角色永远在前面(对方那边也一样,是对方自己的角色在前面)。
|
|
344
|
-
|
|
345
|
-
* 【队友身上的特效补上了,嘲讽也有声音了】
|
|
346
|
-
以前队友那边只看得到你角色本身的动作,动作附带的特效全都看不到。
|
|
347
|
-
现在补上了 62 个,比如:嘲讽时的丝线(身上有丝时才会出,会用掉 1 丝)、冲刺的爆发、
|
|
348
|
-
蹬墙和后空翻的烟、下劈的爆发、蓄力时的光、可以回血时的提示光、
|
|
349
|
-
各种移动技能和工具的特效。
|
|
350
|
-
嘲讽时说的那句话现在队友也听得到。只加了这一句,
|
|
351
|
-
别的声音还是各听各的,免得两个人的声音叠在一起太吵。
|
|
352
|
-
这些特效里会让画面抖动、手柄震动的部分,在队友那边是关掉的。
|
|
353
|
-
还没做的两类:临时生成的特效(比如落地、起跳时的灰尘),
|
|
354
|
-
和跟着状态一直冒的粒子(比如贴着墙往下滑时的灰),它们是另一套机制。
|
|
355
|
-
|
|
356
|
-
* 【0.4.39 里下劈踩怪不反弹、打茧打不中:修了】
|
|
357
|
-
上一版加的「队友身上的特效」有个错:游戏刚生成你的角色、角色还没准备好时,
|
|
358
|
-
它就去读角色身上的东西,报了错。这个错正好打断了一个下劈的准备工作
|
|
359
|
-
(就是你们俩用的那个护符的下劈),于是下劈打中怪不会弹起来,
|
|
360
|
-
也没有弹起时那一下短暂的无敌,人直接落到怪身上挨打;打茧则根本打不中,次数不涨。
|
|
361
|
-
打在 Boss 的刀上还能弹,是因为那走的是另一条路。
|
|
362
|
-
同一个错还让上一版新加的「队友身上的特效」和嘲讽的声音一次都没生效,
|
|
363
|
-
并且挤掉了原来就有的几样:两种护符回血时的特殊动作、回血被打断、坐长椅,
|
|
364
|
-
这些在 0.4.39 里队友那边都看不到。现在全部恢复。
|
|
365
|
-
|
|
366
|
-
* 【有的闸门,队友打开了你这边却不开:修了】
|
|
367
|
-
有些闸门打一下就会打开,穿过去就是另一个房间(比如深坞那个)。
|
|
368
|
-
游戏只会为你自己的角色把它打开、撑住,所以以前:
|
|
369
|
-
队友从隔壁房间把它打开,你这边这一头还关着;队友从关着的闸门里钻出来;
|
|
370
|
-
队友站在闸门里时,闸门会在队友身上关上。
|
|
371
|
-
现在两边会互相告诉对方:自己这边的人打开了哪个闸门、正站在哪个闸门里,
|
|
372
|
-
对方那边就一直把它开着,等那个人走了,再按游戏原本的方式关上。
|
|
373
|
-
|
|
374
|
-
* 【队友的道具看得到了:蛰刺碎片,还有其他十几种攻击道具】
|
|
375
|
-
以前队友扔出去、射出去、放在地上的道具,你这边几乎都看不到,
|
|
376
|
-
只看得到打中敌人时冒出来的伤害(打 Lace 时她身上莫名冒出一串伤害特效,就是这个)。
|
|
377
|
-
现在这些东西在你这边都会出现:飞、弹、插在墙上、爆开,都和队友那边一样。
|
|
378
|
-
- 只有扔的那一方才知道的事(碰到了哪个敌人、有没有被攻击打中、随机往哪边弹),
|
|
379
|
-
都由那一方告诉你这边,所以两边看到的是同一个结果。
|
|
380
|
-
- 你这边的只是给你看的:伤害只在扔的那一方算一次;
|
|
381
|
-
它不会让你的屏幕震动、不会发出引怪的声音、不会用掉你的道具,
|
|
382
|
-
也不会掉出你能捡的东西。
|
|
383
|
-
- 和游戏里一样,道具只有扔它的人的攻击才碰得动:
|
|
384
|
-
你的攻击碰不到队友的道具,队友的攻击也碰不到你的。
|
|
385
|
-
- 跟着角色走的效果,在你这边跟着队友的角色走。
|
|
386
|
-
你进房间之前队友就已经扔出去的东西,你这边看不到。
|
|
387
|
-
|
|
388
|
-
* 【用道具时的样子,队友那边也看得到了】
|
|
389
|
-
有的道具用的时候,角色会换成一个专门的姿势。以前队友那边只看得到你的普通动作,
|
|
390
|
-
所以用这些道具的整个过程里,你在队友眼里是定住不动的。
|
|
391
|
-
现在这个姿势、姿势上附带的东西、身上冒出的粒子都会同步。
|
|
392
|
-
有的道具用的时候角色会整个闪一下,有的用完之后一段时间里武器带上效果、
|
|
393
|
-
角色一直闪光、挥砍的样子也跟着变——这些现在队友那边也看得到。
|
|
394
|
-
持续期间那段循环的声音没有同步,免得两个人的声音叠在一起太吵。
|
|
395
|
-
|
|
396
|
-
* 【蛰刺碎片打中敌人时,两边伤害特效喷的方向不一样:修了】
|
|
397
|
-
有些攻击的伤害特效是从攻击的来源朝敌人喷的。以前你这边拿自己这边的敌人位置去算方向,
|
|
398
|
-
可两边的敌人从来不会站在完全同一个点上,来源又几乎贴在敌人身上,
|
|
399
|
-
结果一边是从头顶往上喷,另一边是往旁边喷。现在两边按同一个方向喷。
|
|
400
|
-
|
|
401
|
-
* 【贴着墙扔出的道具,在队友那边往墙里飞:修了】
|
|
402
|
-
有的道具贴着墙扔时,是往离开墙的方向飞的。
|
|
403
|
-
传给队友时「是不是贴着墙」这一项读错了位置,所以在队友那边它往墙里飞。
|
|
404
|
-
|
|
405
|
-
* 【远野有的房间第一次进去没有怪,第二次进去才有:修了】
|
|
406
|
-
这和地图姐没有关系。走进下一个房间时,游戏会先在旁边把下一个房间加载好再切过去,
|
|
407
|
-
而不少相邻房间在游戏内部的名字只差末尾一个字母。
|
|
408
|
-
模组以前靠「名字开头一样」来认「这是当前房间的一部分」,
|
|
409
|
-
于是把还没走进去的下一个房间里的怪,提前登记成了当前房间的;
|
|
410
|
-
你在当前房间是房间客机时,登记的同时会先把这些怪关掉,等房间主机的消息。
|
|
411
|
-
等你真正走进那个房间、又比队友先到(成了那个房间的房间主机),
|
|
412
|
-
模组把这些「已经被关掉」的怪当成了它们本来的样子,于是两边都看不到它们。
|
|
413
|
-
从别的方向再进来就正常了,所以是「第二次才有」。
|
|
414
|
-
现在正在走进去的那个房间,不会再被当成当前房间的一部分。
|
|
415
|
-
|
|
416
|
-
* 【被 Boss 抓住以后,镜头一直抖到换房间:修了】
|
|
417
|
-
有的 Boss 抓住玩家后会让镜头一直抖,等这一招收尾时,游戏再把抖动停掉。
|
|
418
|
-
你是房间客机时,「抓住你、开始抖」是你这边的 Boss 身上的部件做的,
|
|
419
|
-
可「停下来」这一步只在房间主机那边的 Boss 身上跑,传不到你这边,
|
|
420
|
-
所以镜头会一直抖,直到换房间时游戏把所有抖动一起清掉(所以「换图就好了」)。
|
|
421
|
-
现在这一招收尾、Boss 把抓人的部件收起来时,你这边的抖动也一起停。
|
|
422
|
-
之前两次我以为是「死亡时的抖动没关」,改的是别的地方;
|
|
423
|
-
这次的日志证明那里根本没被触发过,真正的原因是这个。
|
|
424
|
-
|
|
425
|
-
* 【队友挨打时的受击效果,不再出现在你这边】
|
|
426
|
-
低血量时挨打,游戏会在挨打的人周围闪一大片暗色,原本只给挨打的人自己看。
|
|
427
|
-
以前这个效果,还有冰冻受伤时的碎晶粒子,会跟着「队友身上的特效」一起同步过来,
|
|
428
|
-
所以你这边会莫名其妙地闪一下。现在受击效果一律不同步。
|
|
429
|
-
|
|
430
|
-
* 【狩猎祈愿那两个房间,后进去的人看不到怪、也看不到队友:修了】
|
|
431
|
-
有的怪会射出东西,而射出来的东西在游戏内部的名字里带着这只怪自己的名字。
|
|
432
|
-
模组是靠名字认怪的,于是把射出来的每一样都当成了一只新怪,
|
|
433
|
-
并要求另一边也照样生成一只——另一边根本做不到,当场报错。
|
|
434
|
-
更糟的是:你后进一个房间时,模组要先把「房间里已经有什么」整份告诉你,
|
|
435
|
-
里面只要夹着一只这种「怪」,整份信息就断在那里。房间里的怪、队友、场景的变化,
|
|
436
|
-
你这边就全都收不到了,一直到你离开这个房间(日志里每次后进那两个房间都是这样)。
|
|
437
|
-
「场景不同步了,比如岩浆爆炸物」应该也是这个原因:那时候后进来的人那边,整个房间都没在同步。
|
|
438
|
-
而且之后如果由你接手这个房间,那些怪在你这边还是关着的,结果连队友那边也跟着看不到了。
|
|
439
|
-
现在怪射出来的东西不再当成怪,而是和别的投射物一样,在你这边照着队友那边的样子射一遍,
|
|
440
|
-
你也看得到,方向也对。
|
|
441
|
-
|
|
442
|
-
* 【深坞里沿着台阶爬的怪,换人接手房间后绕着空气转圈:修了】
|
|
443
|
-
这种怪是贴着表面爬的,碰到拐角就绕过去。先进房间的人离开、由另一个人接手这个房间的怪时,
|
|
444
|
-
以前有两个错:
|
|
445
|
-
- 位置换算漏了它所在那块东西的缩放,把它放到了离原来的台阶将近半格远的地方;
|
|
446
|
-
- 把它的身体一律改成了「会被物理推开」的类型,而它本来只按自己的爬行方式移动、不会被推挤。
|
|
447
|
-
离开表面以后,它每走一小段就以为到了拐角、转个弯,于是就在空中绕着一个小方块一直转。
|
|
448
|
-
这个错不只影响这一种怪:挂在带缩放的物件下面的怪,接手时位置都会偏;
|
|
449
|
-
本来不受物理推挤的怪,接手后都会变成能被推开的。
|
|
450
|
-
现在接手时按真实位置放,身体是什么类型,由原来跑它的那一边告诉你,不再一律改掉。
|
|
451
|
-
|
|
452
|
-
* 【怪叫出来的小怪,现在两边都看得到】
|
|
453
|
-
有些怪打着打着会叫出别的小怪。以前这些小怪只出现在房间主机那边,
|
|
454
|
-
房间客机那边什么都没有,等于在跟看不见的东西打。
|
|
455
|
-
原因是模组以前只会在另一边造「草球」这一种东西,别的都造不出来,干脆就不告诉另一边。
|
|
456
|
-
现在房间主机那边叫出一只小怪时,另一边会照着自己这边同一种怪身上的召唤动作,造出同一只小怪;
|
|
457
|
-
之后它怎么动、掉多少血、什么时候死,都跟着房间主机那边走,和房间里本来就有的怪一样。
|
|
458
|
-
只有确定另一边造得出「同一只」时才这么做;造不出来的,仍然只留在房间主机那边(和以前一样),
|
|
459
|
-
也不会再报错。
|
|
460
|
-
另外有两种会被叫出来的小怪,模组的怪物登记表里一直漏了它们的类型,
|
|
461
|
-
以前是两边各生一只、各打各的。现在补上了,也按上面的方式同步。
|
|
462
|
-
从怪的尸体里跑出来的小怪不在此列:尸体本来就是两边各自播放的,所以仍然是两边各一只。
|
|
463
|
-
|
|
464
|
-
* 【房间里的东西放出来的小怪,现在两边也都看得到】
|
|
465
|
-
还有一些小怪不是怪叫出来的,而是房间里的东西放出来的:
|
|
466
|
-
比如一个会挨打、会往外放飞虫的巢,或者一进去就在房间各处放出几只怪的房间。
|
|
467
|
-
放它们的东西本身不是怪,模组以前不管,于是两边的游戏各放各的:
|
|
468
|
-
你打的是你这边的,队友打的是队友那边的,谁也看不到对方的。
|
|
469
|
-
现在只有房间主机那边会放,放出来的就和别的怪一样同步给另一边,另一边自己不再放。
|
|
470
|
-
刚进房间、还没确定谁是房间主机的那一小会儿,房间放出来的怪先关着不出现(房间里别的怪这时也是停着的);
|
|
471
|
-
确定之后,房间主机那边的才出来,另一边自己放的直接收掉。
|
|
472
|
-
巢本身和以前一样,两边各有一个(两个人打它,两边的巢都会掉血)。
|
|
473
|
-
|
|
474
|
-
* 【被队友从茧里拉起来,不会再直接掉进岩浆了】
|
|
475
|
-
之前以为修过「被岩浆、尖刺弄死的,就换到安全点站起来」,其实那一版从来没生效:
|
|
476
|
-
游戏只在「被烫了一下、还剩血、被送回安全点」时才记「是场景弄的」,
|
|
477
|
-
最后一下直接烫死的时候不记,所以模组一直当成是怪打死的,照样在倒下的地方把人拉起来。
|
|
478
|
-
跳过岩浆的半空中被怪打死也一样,倒下的地方下面就是岩浆。
|
|
479
|
-
两种都是站起来就掉进去:岩浆扣 2 格血,而拉起来只给上限的一半(上限 5 格就是 2 格),等于刚起来又死一遍。
|
|
480
|
-
现在站起来之前先看位置:人陷在岩浆、尖刺这类东西里,或者正下方最先碰到的是它们而不是地面,
|
|
481
|
-
就改在游戏自己记的安全点站起来(和你自己掉进岩浆后被放回去的是同一个地方)。
|
|
482
|
-
|
|
483
|
-
* 【岩浆往上涨、要一直往上跑的那种追逐:改成「双人成行」的玩法】
|
|
484
|
-
以前岩浆是各有各的:每个人游戏里一条,只追自己,两个人其实是各跑各的。
|
|
485
|
-
你会看到落在后面的队友像泡在你的岩浆里,被烫死以后也几乎没法救。
|
|
486
|
-
现在:
|
|
487
|
-
- 岩浆只有一条,两边一样高,追的是落在后面的那个人,一直往上涨,不会因为谁出事停下来或退回去;
|
|
488
|
-
- 被烫到但还剩血:不回自己的安全点,直接回到队友刚才站稳的地方,该扣的血照扣;
|
|
489
|
-
- 被烫死或被怪打死:不出茧、不用打 5 下,大约 3 秒后在队友身边站起来,
|
|
490
|
-
血量是上限的一半,钱和丝都还你;不想等可以按 K 直接回长椅;
|
|
491
|
-
队友那时候要是在半空、或者正被烫着,就等他落地站稳了再起来;
|
|
492
|
-
队友先离开了这个房间,就马上在他最后站稳的地方站起来;
|
|
493
|
-
- 两个人都倒下(一个倒着还没站起来,另一个也倒了)就都回长椅。
|
|
494
|
-
「站起来」由活着的那一边决定:它自己一倒下就不会再把人拉起来,
|
|
495
|
-
所以不会出现一个站起来、另一个被送回长椅;
|
|
496
|
-
- 队友正倒着、不在这个房间、或者他身边已经没有岩浆够不着的地方时,
|
|
497
|
-
你被烫到就按单人的规则回自己的安全点,岩浆退到你脚下(两边一起退)。
|
|
498
|
-
- 后进房间的人,如果岩浆已经涨过了入口,要先穿过岩浆面(会被烫一次)才能回到队友身边。
|
|
499
|
-
这些只在岩浆正在涨的时候生效,其他时候还是原来拉人的规则。
|
|
500
|
-
|
|
501
|
-
* 【一坐就塌的假椅子:两边一起塌】
|
|
502
|
-
以前一个人坐上去、连人带椅子掉下去以后,队友那边这把椅子还好好地立着,要重新进房间才会消失。
|
|
503
|
-
现在队友那边会同时看到地板碎掉、椅子掉下去(站在那块地板上的人也会一起掉下去)。
|
|
504
|
-
掉下去、被赶下长椅、镜头跟着走这些只发生在坐上去的那个人身上,不会拉着队友。
|
|
505
|
-
|
|
506
|
-
* 【会把人关起来的笼子:要两个人都在才会触发】
|
|
507
|
-
一个人去碰笼子底下的那个东西,什么都不会发生:蹲一下、站起来,东西还在原地。
|
|
508
|
-
两个人都紧挨着那个东西站的时候,谁去碰都行,两边会同时触发,把两个人一起关进去、一起带走。
|
|
509
|
-
另一个人不用做任何动作。先下去的那一边触发之后,没跟上的人这时候再去碰,一个人也会触发。
|
|
510
|
-
|
|
511
|
-
* 【被抓进监狱:两个人一起】
|
|
512
|
-
以前只有一个人会被抓走(抓人的东西只看得见它自己那边的角色),另一个人留在外面。
|
|
513
|
-
现在一个人被抓,另一个人也会被一起关进去:被拿走的东西一样,从同一个地方醒来。
|
|
514
|
-
另一个人那时候要是坐在长椅上、正在进出房间、倒下了、或者正被游戏控制着(比如在对话),
|
|
515
|
-
就等他能动了再带走。已经在监狱里的人不会被再抓一次。
|
|
516
|
-
|
|
517
|
-
* 【拿回衣服:两个人都伸手了才会抢】
|
|
518
|
-
两个人都没衣服的时候,先去拿的人会蹲在那里等另一个人,聊天框会告诉两个人。
|
|
519
|
-
另一个人也去拿了,两边才一起抢。队友那边会看到你这边的整段动作
|
|
520
|
-
(以前只看得到你蹲下、然后停在半空)。
|
|
521
|
-
等的时候按跳跃键就不等了,人站起来,想拿随时可以再去拿。
|
|
522
|
-
队友已经拿回衣服了,就不用等,直接抢。
|
|
523
|
-
|
|
524
|
-
* 【棘刺怪:刺卡在半空、打着打着打不到了:修了】
|
|
525
|
-
- 刺卡在半空、只有一根朝下(只出现在房间客机那边):
|
|
526
|
-
棘刺怪长出来的几根刺,在游戏里名字都一样。房间主机那边每长出一根,就把它转到自己的方向;
|
|
527
|
-
房间客机照着做的时候是按名字找刺的,每次找到的都是第一根,
|
|
528
|
-
结果第一根被转了好几遍,其余几根一直朝下,叠在同一个位置。
|
|
529
|
-
刺和刺之间是会互相撞的,射出去的一瞬间就撞在一起停住了,看起来就是半空里卡着一根朝下的刺。
|
|
530
|
-
(上一版说「方向也对」,其实没对。)
|
|
531
|
-
现在房间客机转的就是自己刚照着长出来的那一根,几根刺的方向、射出去的样子都和房间主机那边一样。
|
|
532
|
-
- 打着打着打不到了(最后一下是房间客机打的时候):
|
|
533
|
-
棘刺怪的血打光以后,会先把身体关掉(从这时起就打不到了),再从「挨了一下」之后进入的状态里自爆。
|
|
534
|
-
房间客机打出的最后一下,传到房间主机那边只是「血没了」,怪并不知道自己挨了打;
|
|
535
|
-
它那时要是还在闲逛、没发现人,就会一直浮在那里:不炸,也打不到,两边看到的都一样。
|
|
536
|
-
现在房间客机打出最后一下时,房间主机那边的怪会先收到「挨了一下」,和被房间主机打死时一样,照常自爆。
|
|
537
|
-
这一点对所有怪都一样:被房间客机打死的怪,房间主机那边在它死之前也会先收到「挨了一下」。
|
|
538
|
-
- 墙上插着的、能打碎的那种刺,以前被模组当成了棘刺怪本身,房间客机打它没反应。现在两边都能打碎。
|
|
539
|
-
|
|
540
|
-
* 【房间客机那边的怪:离得很远很糊、身体不动、场景没反应、有时打不到:修了】
|
|
541
|
-
这几个问题是在一场 boss 战里一起发现的,但都是模组整体的毛病,很多怪都受影响,这次一起修了。
|
|
542
|
-
- 离得很远、很模糊(但能打到):
|
|
543
|
-
怪往背景里退、或者从背景里冲出来,只是在「前后」这个方向上动。
|
|
544
|
-
模组以前只同步上下左右,前后用的是房间客机自己那份,而那份常常停在半路:
|
|
545
|
-
比如 boss 从背景里升起来的时候,客机那边的 boss 就一直停在远处的背景里打完整场。
|
|
546
|
-
现在前后也跟着房间主机走。会飞进背景、从背景里出来的怪有很多种,这次都一起修了。
|
|
547
|
-
- 身体不动(看不到横扫、砸地这些动作):
|
|
548
|
-
有几种怪(其中有几个 boss)的身体动作是用另一套动画系统播的,模组以前完全不同步这一套,
|
|
549
|
-
房间客机那边只看得到它摆着一个姿势不动。现在同步了。
|
|
550
|
-
- 场景没反应(地板不碎、天上不掉石头):
|
|
551
|
-
boss 打碎地板、让石头从天上掉下来,都是它去指挥房间里的东西。
|
|
552
|
-
房间客机那边的怪找不到这些东西,所以什么都不会发生。
|
|
553
|
-
现在告诉客机「是哪个场景里的哪一个东西」,客机那边也会碎、会掉,伤害也一样会打到人。
|
|
554
|
-
- 怪对整个房间「喊一声」,房间里的机关跟着动:
|
|
555
|
-
很多怪会向整个房间广播一个消息,比如镜头换个取景、boss 被打晕时碎掉的地板马上长回来、
|
|
556
|
-
空中的石头炸掉、灯亮起来、音乐和人群跟着变。以前只有房间主机那边的房间听得到,客机那边这些都不会发生。
|
|
557
|
-
现在客机那边的房间也会跟着动。和角色本人有关的那几种(被打中、被抓住、弹反之类)不传,
|
|
558
|
-
因为那是房间主机自己的角色身上发生的事,传过去会变成客机的角色也「被打中」「被抓住」。
|
|
559
|
-
- 有时打不到:
|
|
560
|
-
很多怪藏起来、钻地、无敌的时候,会换到一个「打不到」的碰撞层,出来再换回来。
|
|
561
|
-
模组以前不同步这个,房间客机那边的怪一直停在它一开始的层上:出来了也打不到,藏着反而打得到。
|
|
562
|
-
现在同步了,后进房间的人也会拿到当前的状态。之前一些「这只怪怎么都打不到」,可能也是这个原因。
|
|
563
|
-
这一版改了同步的数据格式,两个人都要装同一个版本(版本不一样会进不了房间,模组会提示)。
|
|
564
|
-
|
|
565
|
-
* 【房间客机那边的怪:看不到变色和闪光、听不到叫声、镜头不跟着震:修了】
|
|
566
|
-
这些以前只在房间主机那边发生,房间客机那边的怪是「哑的」:
|
|
567
|
-
- 声音:怪的叫声、喊声,还有很多从一组声音里随机挑一个来放的音效(攻击、落地、蓄力之类),
|
|
568
|
-
以及声音的淡入淡出、循环、停止。
|
|
569
|
-
- 变色和闪光:怪蓄力时变亮、变红,淡出、淡入,身上一闪一闪,怪身上的光变化。
|
|
570
|
-
- 镜头:怪砸地、咆哮、大招时的镜头震动和白闪,包括一直震到被叫停的那种。
|
|
571
|
-
现在这些房间客机那边也都有了,和房间主机同时发生。网络卡了、补发旧数据时,早该停的震动和变色也不会卡着不停。
|
|
572
|
-
例外:怪抓住、刺中、打伤房间主机的角色时(连同紧接着的那一整套动作)的震动、白闪,以及在那个角色身上放的声音,
|
|
573
|
-
只留在房间主机那边——那是打在房间主机角色身上的效果,客机的角色并没有被抓住。咆哮的震动和声音两边都有。
|
|
574
|
-
另外,整个画面变黑、变模糊那种「全屏过场」不传:那是房间主机那边自己的过场,
|
|
575
|
-
传过来会把客机的画面也盖住。
|
|
576
|
-
|
|
577
|
-
* 【场景里被打会有反应的东西(会炸的石头、灵丝轴、墙、宝箱、铃、拉杆、藤蔓之类):两边一定一起变】
|
|
578
|
-
以前只有一部分东西(可破坏物、拉杆、草、装钱的袋子等)是「打的人把这一下发给对方,对方原样重放」,
|
|
579
|
-
其余的全靠「你屏幕上队友那一刀的复制品」刚好砍到才算。复制品画在你的游戏认为队友所在的位置,
|
|
580
|
-
和队友实际的位置差一点点,擦边的一刀就会落空;有的东西还只在「这台游戏自己的角色」站在旁边时才认这一下,
|
|
581
|
-
所以会出现「队友那边炸了,你这边没炸」。这不是丢包。
|
|
582
|
-
现在场景里所有被打会有反应的东西都改成:打的人把这一下发过去,对方原样重放。
|
|
583
|
-
刀、扔出去的工具、技能放在场景里的攻击都算。
|
|
584
|
-
「当时站没站在旁边、站在墙的哪一边」这类判断,大多数也按打的人那边算;
|
|
585
|
-
少数东西直接看「这台游戏自己的角色」站在哪,这种在你这边重放时还是看你的角色,偶尔可能对不上。
|
|
586
|
-
很多东西(单向墙、宝箱、铃、拉杆、藤蔓等)不是靠「挨打」、而是靠「刀碰到」来反应的,这些也一样:
|
|
587
|
-
打的人那边刀碰到、东西真的有了反应,才发过去让对方重放;东西没认这一下(比如站得太远、打错了边),就不发。
|
|
588
|
-
队友那一刀的复制品只负责画出动作,不再碰任何场景物件。
|
|
589
|
-
- 给东西的规则不变:直接给的丝和钱只给打的人(以前队友打灵丝轴,你也会白拿丝,这次一起修了);
|
|
590
|
-
掉在地上的东西两边各掉一份,各捡各的。
|
|
591
|
-
- 把人弹起来的泡泡和蘑菇荚、回血的脓包和飞虫、打墙时的弹刀、砍尖刺冒的火花,只和打的人自己有关,
|
|
592
|
-
不同步,各玩各的。
|
|
593
|
-
- 重放永远不会作用到你自己的角色:不会把你弹起、推开、弄伤,也不会给你东西。
|
|
594
|
-
- 怪物不在这次改动里:同步的怪本来就是把打的结果发过去。
|
|
595
|
-
|
|
596
|
-
* 【新增:两边状态自动对比,只写日志,不改游戏】
|
|
597
|
-
两个人在同一个房间时,两边的游戏每隔几秒互相核对一次这个房间的状态:
|
|
598
|
-
场景物件(墙、石头、拉杆、宝箱、灵丝轴、草……)现在是什么样、存档里记下的世界变化、
|
|
599
|
-
怪物在不在、剩多少血、共享的剧情标记。
|
|
600
|
-
某样东西两边不一样,而且两边都已经保持了好几秒(说明不是消息还在路上),
|
|
601
|
-
日志里就会写一段 [State check]:两边各是什么、各保持了多久、谁是房间主机、两个人站在哪,
|
|
602
|
-
以及最近两分钟里这个东西上两边来回过哪些攻击、重放了没有、有没有反应。
|
|
603
|
-
以后遇到「你那边变了我这边没变」,不用再靠你们回忆和描述,日志里直接有。
|
|
604
|
-
- 有些东西本来就会不一样(只认自己角色站位的区域、正在说话的角色、随机乱动的小东西),
|
|
605
|
-
这些不单独报,只在离开房间时汇总列一下。
|
|
606
|
-
- 队友的攻击在你这边没法重放时(找不到那个东西、那个东西在你这边是关着的等),
|
|
607
|
-
日志里也会写 [Hits] 说明原因。以前这种情况是悄悄跳过的。
|
|
608
|
-
- 流量很小:平时每 4 秒一条几百字节的摘要,只有对不上的时候才多发一点。
|
|
609
|
-
|
|
610
|
-
* 【队友的「残影」:修了】
|
|
611
|
-
你刚离开一个房间、队友又恰好在这时进了那个房间,服务器还以为你在那里,
|
|
612
|
-
会告诉你「队友进来了」——可你已经到了下一个房间。
|
|
613
|
-
结果下一个房间里会多出一个一动不动的队友,而且所有「等两个人都到」的地方都当队友在场,
|
|
614
|
-
会一直等一个其实不在的人,直到你再换一次房间。
|
|
615
|
-
两个人的日志里确实出现过(701 次换房间里有 3 次)。
|
|
616
|
-
现在「谁进了房间」的消息带上了房间名,和你所在的房间对不上就直接丢掉。
|
|
617
|
-
这一条改了同步的数据格式,两个人都要装这一版。
|
|
618
|
-
|
|
619
|
-
* 【boss 开打前,两个人可能互相干等:修了】
|
|
620
|
-
有的 boss 要等两个人都走完开场才开打。boss 只在房间主机的游戏里真正运行,
|
|
621
|
-
它开场说的话会发给另一个人,另一个人按自己的节奏看,boss 不会停下来等。
|
|
622
|
-
房间走到开打那一刻时,还没看完这些台词的一方先不算「看完了」,这是对的;
|
|
623
|
-
但以前看完之后,没有任何地方再补上这一句,两边就一直互相等,直到有人离开房间。
|
|
624
|
-
(这和「两个人都进了 boss 范围」是两回事,那个是另一条消息,没有问题。)
|
|
625
|
-
现在台词一看完就会告诉对方。等人的时候每 30 秒提示一次,和其他等人的地方一样。
|
|
626
|
-
|
|
627
|
-
* 【两个人都要选「是」的地方(接愿望、开始赛跑):队友收回之后,你这边还记着队友的「是」:修了】
|
|
628
|
-
队友先选了「是」在等你,后来又收回了(选了「否」、对话结束、等超时、或者离开了房间),
|
|
629
|
-
你这边以前不知道,还当队友在等。你这时再选「是」,就会直接成立,
|
|
630
|
-
但队友那边已经不算了,变成只有你一个人接了愿望、或者只有你开跑。
|
|
631
|
-
现在队友一收回,你这边马上知道,聊天框会说「X 的「是」已经不算数了」。
|
|
632
|
-
|
|
633
|
-
* 【赛跑:两个人都开跑以后,两边会不停地互相发「我准备好了」:修了】
|
|
634
|
-
不影响玩,只是白占网络、刷日志。现在回一次就停。
|
|
635
|
-
|
|
636
|
-
* 【拿回衣服:你蹲着等的时候离开了房间,队友那边还当你在等:修了】
|
|
637
|
-
以前队友这时去拿,会以为两个人都伸手了,结果只有队友那边抢了。
|
|
638
|
-
现在你一离开,队友那边就知道你不等了。
|
|
639
|
-
|
|
640
|
-
* 【跳蚤小游戏:都赢过之后,结尾可能一直等不到队友:修了】
|
|
641
|
-
结尾要两个人都赢过所有项目才会继续,每一边只在「全赢了」变化时告诉对方一次。
|
|
642
|
-
有两种情况会漏掉:一方断线重连之后,对方不会再说第二遍;
|
|
643
|
-
或者进游戏时一边加载得比另一边慢,先准备好的一边说了,另一边还没准备好,就把它扔了。
|
|
644
|
-
漏掉以后结尾就一直等着。现在两种情况都会补上。
|
|
645
|
-
|
|
646
|
-
* 【boss 的吼叫:以前只吼得住房间主机,现在两个人都会被吼住】
|
|
647
|
-
boss 吼叫时会把玩家定住(摆出迎敌的姿势),还会放出一圈吼叫的波纹。
|
|
648
|
-
这个动作只在房间主机的游戏里执行,所以以前只有房间主机会被吼住,
|
|
649
|
-
另一个人照样能动,也看不到波纹。
|
|
650
|
-
现在另一个人的游戏里也会吼一次,吼住的是那边自己的角色,吼叫结束时两边一起松开。
|
|
651
|
-
吼叫结束后才进房间的人不会被补吼。
|
|
652
|
-
吼到一半房间主机离开、由另一个人接管 boss 时,也会照常松开,不会一直被定住。
|
|
653
|
-
|
|
654
|
-
* 【有的 boss 的头在房间客机那边一直抖:修了】
|
|
655
|
-
有的 boss 身体和头是分开的两部分(头是挨打的那部分)。
|
|
656
|
-
以前房间客机那边把头单独复制了一份,放在身体外面,只按网络传来的位置走:
|
|
657
|
-
位置每秒来几次,中间靠猜;而身体是本地动画一帧一帧带着动的,
|
|
658
|
-
所以头一直在抖,和身体也对不齐。
|
|
659
|
-
现在头就是身体复制品里原本那颗头,跟着身体的动画一起动,不再单独同步位置。
|
|
660
|
-
|
|
661
|
-
* 【掉进岩浆后,两边的地块对不上:修了】
|
|
662
|
-
有的 boss 房间里,玩家掉进岩浆、复活的那一刻,碎掉的地块会全部立刻升回来,好让人有地方落脚。
|
|
663
|
-
以前这只发生在掉下去那个人的游戏里,另一个人那边的地块还碎着,
|
|
664
|
-
会看到队友站在「还没升上来」的地方,两边的地块也就一直对不上。
|
|
665
|
-
现在谁掉岩浆复活了,队友那边的地块也一起升回来。
|
|
666
|
-
岩浆会上涨的房间不算在内,那里有自己的双人规则。
|
|
667
|
-
这一条改了同步的数据格式,两个人都要装这一版。
|
|
668
|
-
|
|
669
|
-
* 【队友的名字盖住自己的名字:修了】
|
|
670
|
-
两个人站在一起时,队友头上的名字以前总是画在你自己的名字上面。
|
|
671
|
-
之前已经把队友的人物挪到了你自己人物的稍后面一点,名字当时漏了,现在名字也挪到同一个深度。
|
|
672
|
-
|
|
673
|
-
* 【队友的人物颜色比自己的浅:修了】
|
|
674
|
-
有的房间在某些区域会给角色统一染上一层色调(比如偏暗)。
|
|
675
|
-
游戏靠角色走进这些区域来发现要染谁,而队友的人物为了不触发机关,放在区域发现不了的层上,
|
|
676
|
-
所以一直是原色,看起来比你自己的人物浅。
|
|
677
|
-
现在你自己的人物染色变化时,队友的人物跟着一起变(渐变也一样),站在一起时颜色相同。
|
|
678
|
-
两个人在同一房间的不同区域时,队友的人物用的是你所在区域的色调。
|
|
679
|
-
|
|
680
|
-
* 【有一场 boss 战的落石两边对不上:先修这一处】
|
|
681
|
-
boss 下令落石以后,落哪块石头、落在哪、隔多久、下落多快,以前是两边游戏各掷各的骰子,
|
|
682
|
-
所以两个人看到的落石不一样:你这边砸空的石头,队友那边可能正砸在身上。
|
|
683
|
-
现在落石的随机部分只在房间主机的游戏里掷:落哪块、落在哪、什么角度、多快、转多快,
|
|
684
|
-
这些都在石头出发的那一刻定下。出发那一刻的结果传给另一个人,之后两边各自让石头往下落,
|
|
685
|
-
下落本身没有任何随机,所以两边落的一样;网络卡住时石头也照样往下落,不会停在半空。
|
|
686
|
-
下落途中主机也不再每帧发石头的位置:一块石头只发「出发」和「停下」两条小消息,网络更轻。
|
|
687
|
-
另一个人看到的落石和 boss 本身一样,有一点网络延迟。
|
|
688
|
-
石头砸中另一个人时,那一边先扣血、石头当场炸开,再告诉房间主机,主机那边的石头也炸开消失。
|
|
689
|
-
同类的东西也改成了一样的做法:随机数归房间主机,飞行归各自的游戏按原本的规则去跑。
|
|
690
|
-
包括另外两种直线落下的机关、越落越快的滚石、落地会弹起来的钟铃。
|
|
691
|
-
它们的加速和重力在两边每个物理步都一模一样地算,所以落点一致;落地、弹起这种「转折」仍由主机决定:
|
|
692
|
-
每碰到一次东西,主机补发一条小消息,告诉另一边碰完之后怎么走。
|
|
693
|
-
其他房间里类似的随机机关还没有改,之后一类一类地改。
|
|
694
|
-
这一条改了同步的名单和数据格式,两个人都要装这一版。
|
|
695
|
-
|
|
696
|
-
* 【有一场 boss 战的飞针两边对不上:修了】
|
|
697
|
-
以前这些飞针从哪里、以什么角度、按什么先后射出,都是两边游戏各掷各的骰子,
|
|
698
|
-
而且各自只瞄准自己游戏里的人物,所以两个人看到的飞针完全不一样。
|
|
699
|
-
现在和落石一样:随机的部分只在房间主机的游戏里掷,针一出发就把位置、角度和速度传给另一个人,
|
|
700
|
-
之后两边各自让针飞,飞行途中不发位置。
|
|
701
|
-
瞄准的是 boss 当时正盯着的那个人(以前房间主机那边永远瞄准房间主机自己)。
|
|
702
|
-
跟这些飞针配套、散在场地里的针也改成了同一个做法,两边看到的是同一根针在做同一件事。
|
|
703
|
-
以后凡是 boss 发动、要瞄准玩家的机关,都按这个规则瞄 boss 正盯着的人;玩家自己的动作不受影响。
|
|
704
|
-
|
|
705
|
-
* 【有的怪判断「玩家在哪一边」时只看房间主机:修了】
|
|
706
|
-
不少怪(包括几个 boss)会看玩家在某条线的左边还是右边,来决定下一招往哪边打。
|
|
707
|
-
以前这一步看的永远是房间主机自己的人物,现在看的是这只怪正盯着的那个人。
|
|
708
|
-
|
|
709
|
-
* 【有一种从屏幕顶上落下的滚石,只按房间主机的屏幕落:修了】
|
|
710
|
-
有一场 boss 战里,有一种滚石是从屏幕顶上落下来的。以前这个「屏幕」永远是房间主机自己的屏幕,
|
|
711
|
-
boss 盯着另一个人、两个人又一高一低时,石头会从主机的屏幕上方落下,在另一个人那边可能凭空出现在半空。
|
|
712
|
-
现在按 boss 正盯着的那个人来估算:以那个人的位置为镜头中心,再像游戏自己那样把镜头限制在房间边界之内。
|
|
713
|
-
那个人抬头、低头看的时候,真实的镜头还会再偏一点,这一点没有算进去。
|
|
714
|
-
|
|
715
|
-
* 【房间主机中途离开时,接手的一方有的怪和机关会卡住:修了】
|
|
716
|
-
房间主机离开后,另一个人的游戏会接手房间里正在进行的一切,每只怪从它当时所处的状态接着跑。
|
|
717
|
-
以前接手时,状态里只保留少数几种「持续进行」的动作,碰撞检测、逐步加速和减速都会被丢掉,
|
|
718
|
-
于是正在冲撞的怪撞墙后可能不停,正在下落或飞行的东西可能停在半空。现在这几种动作也会保留(两百多种怪用到)。
|
|
719
|
-
自己会飞的东西(落石、飞针这类)接手时还会带上当时的速度、重力和角度,从半空接着飞。
|
|
720
|
-
|
|
721
|
-
* 【房间客机那边,很多怪的复制品会被错误地加上重力:修了】
|
|
722
|
-
很多怪会在自己的状态机里把自己从所在的分组里拿出来。
|
|
723
|
-
以前为了让怪放下的东西能落地,加过一条「被放出来的东西恢复自己的物理」,但它把怪自己也算了进去:
|
|
724
|
-
房间客机那边这些怪的复制品变成了受重力、带碰撞的物体,而复制品的位置本来只该由网络决定。
|
|
725
|
-
重力攒下的速度从不清零,可能表现为这些怪在房间客机那边偶尔往下抖一下,或贴着地形时被推开一点。
|
|
726
|
-
现在只有真正被放出来的东西才恢复物理,怪自己的复制品保持只听网络的。
|
|
727
|
-
|
|
728
|
-
* 【有的任务线索,房间客机那边可能查看不了:修了】
|
|
729
|
-
有一类要蹲下查看、再顺着痕迹去找的线索,名字里带着某种怪的名字,
|
|
730
|
-
模组就把它们当成了那种怪,交给房间主机的游戏去跑。房间客机那边看到的只是复制品,查看了也没反应。
|
|
731
|
-
现在这些线索不再被当成怪,两个人各自在自己的游戏里查看。
|
|
732
|
-
|
|
733
|
-
* 【打中由房间主机运行的东西时,「叮」的那一下只算在自己这边:修了】
|
|
734
|
-
有的东西被打中时只是「叮」一声、不掉血,却会因此改变动作:会落下来的钟被打偏,带盾的怪挡住以后反击。
|
|
735
|
-
这些东西里,有的只在房间主机的游戏里运行,另一个人那边看到的是复制品。以前另一个人打中复制品,
|
|
736
|
-
只有自己这边「叮」一声、自己被弹开,房间主机那边的钟照样往下落,怪也不知道自己挡过一下。
|
|
737
|
-
现在这一下会转给房间主机,两边的钟一起被打偏,怪一起反应。
|
|
738
|
-
钟这种自己会飞的东西,打的人这边当场就被打飞,不用等消息。房间主机那边以打的人打中的位置为准,
|
|
739
|
-
再补上消息路上耽误的那一小段,所以那边会看到钟跳一下,跳到它在打的人那边正飞到的地方,再接着飞。
|
|
740
|
-
带盾的怪这类要改动作的,打的人那边还是要等消息走一个来回(大约零点二到零点三秒)才看到反应。
|
|
741
|
-
|
|
742
|
-
* 【房间里「叮」一下就会动的东西,以前只在打的那个人那边动:修了】
|
|
743
|
-
房间里有上千个东西被「叮」到时会改变状态:挂着的钟被往上打飞、地雷被打坏、机关被敲响、平台晃动等。
|
|
744
|
-
以前「叮」只算打的人自己的(火花和把人弹开本来就是各自的),另一个人那边的东西完全没反应。
|
|
745
|
-
现在打的人那边的东西动了,这一下就发给另一个人,那边的同一个东西做同样的反应。
|
|
746
|
-
只有火花、把人弹开这类的「叮」,仍然各自算各自的。
|
|
747
|
-
|
|
748
|
-
* 【机关和被打中的东西,随机的部分两边不一样:改成谁触发谁掷骰子】
|
|
749
|
-
地雷弹出时的翻转、角度和落点,钟被往上打飞时的角度,以及其他机关在触发那一刻掷的骰子,以前两边各掷各的,
|
|
750
|
-
所以同一个地雷在两个人那边落在不同的地方。
|
|
751
|
-
现在机关被谁走近、东西被谁打中,就在谁的游戏里掷骰子,骰子跟着「触发了」「打中了」的消息一起发给另一个人,
|
|
752
|
-
那边用同一副骰子,所以结果一样。每一个掷骰子的动作开始前都记一次,中间音效之类多掷少掷也不会错开。
|
|
753
|
-
只管触发那一刻当场掷的;过一会儿才掷的(比如钟落地几秒后复位时换的样子)仍然各掷各的。
|
|
754
|
-
两个人几乎同时(零点一秒以内)触发同一个机关时,两边会各用自己的骰子。
|
|
755
|
-
另一个人那边收到消息时,正在落的钟已经多落了一点,所以被打飞的起点会略低一些。
|
|
756
|
-
|
|
757
|
-
* 【跳蚤小游戏:都要两个人一起开;下劈/飞针那个改成各玩各的;另外两个,不是房间主机的一方打跳蚤、得分、被撞都接上了】
|
|
758
|
-
- 三个游戏都不能一个人开了,和开始比赛一样:两个人都要各自去跟主持游戏的跳蚤说话、在同一个游戏选「是」,
|
|
759
|
-
才会一起开始。先选的人会停在选项上等对方,最多 20 秒;选「否」就可以收回。下劈/飞针那个也一样,
|
|
760
|
-
一起开始以后各玩各的。
|
|
761
|
-
- 下劈/飞针那个:以前两个人用的是同一批跳蚤,一个人踩掉一只,另一个人就少一只能落脚的,很快就掉下去。
|
|
762
|
-
现在两边各出各的跳蚤:各自的游戏给自己放跳蚤,对方看不见;得分、难度、存分都和一个人玩时一样,
|
|
763
|
-
对方的攻击也碰不到你的跳蚤。所以你会看到对方在踩一些你看不见的跳蚤。
|
|
764
|
-
- 另外两个还是两个人用同一批跳蚤,由房间主机的游戏放出来。以前不是房间主机的一方打中跳蚤,
|
|
765
|
-
只有自己这边「叮」一声,主机那边的跳蚤没反应;分也是按自己「叮」的次数记的,有一个游戏根本记不对。
|
|
766
|
-
现在这一下和打怪、打钟一样转给房间主机,两边的跳蚤一起反应。得分和跳蚤掉地算的失败,
|
|
767
|
-
都由主机那边的跳蚤说了算,再照样传给另一个人:分是两个人一起的,谁打中的、谁躲过去的,两个人各加一分。
|
|
768
|
-
不是房间主机的一方,分要等消息去主机再回来才跳。
|
|
769
|
-
- 要把跳蚤一直打在空中、不让它落地的那个游戏:以前不是房间主机的一方打中跳蚤,要等消息去主机再回来
|
|
770
|
-
它才弹起,这段时间它还在往下掉,看起来像穿过了你的攻击。现在它在你自己的游戏里当场弹起来:
|
|
771
|
-
往哪儿飞、飞多高由你这边掷的骰子定,主机那边照着同样的骰子让它飞同一条路,中途出现的东西也一样。
|
|
772
|
-
分还是等主机那边算过才跳。要是对方几乎同时也打中了同一只,或者你打得太晚、主机那边它其实已经落地了,
|
|
773
|
-
都以主机那边为准,你这边的跳蚤会回到主机那边的样子。
|
|
774
|
-
- 这两个游戏的跳蚤是房间主机的游戏放的,所以主机一起玩过、这一局结束以后,另一个人的这一局也跟着结束,
|
|
775
|
-
分照常存下。
|
|
776
|
-
- 会撞人的那个游戏:以前不是房间主机的一方根本不会被撞到。现在被撞在各自的游戏里当场算:
|
|
777
|
-
你看到的东西碰到你,你就被撞开,不等消息来回;往哪边撞跟着它飞的方向,越撞越累、撞得越远也按你自己的算。
|
|
778
|
-
对方被撞不影响你。
|
|
779
|
-
- 同一个游戏里,以前两边的平台各升各降,两个人站的平台高低对不上;中途出现的其他东西也是两边各出各的。
|
|
780
|
-
现在这些都听房间主机那边的:另一个人那边的平台还在自己游戏里照常动,只是按主机的指令动,会晚一点点;
|
|
781
|
-
中途出现的东西由主机的游戏放出来,两边看到的是同一个,它要瞄人时,每次在你们两个里随机挑一个;
|
|
782
|
-
另一个人这一局已经结束了,就只瞄还在玩的人。
|
|
783
|
-
- 另一个共享的游戏中途出现的东西,以前也是两边各出各的;现在和跳蚤一样由房间主机的游戏放出来,
|
|
784
|
-
谁打中都转给主机。
|
|
785
|
-
|
|
786
|
-
* 【打中、碰到就会动的东西,在你自己这边当场反应:统一成了一套做法】
|
|
787
|
-
这类东西由房间主机的游戏运行,另一个人那边看到的是复制品:会落下来的钟、要一直打在空中的跳蚤、
|
|
788
|
-
碰到人就炸开的石头。以前三样各有各的一套,现在合成一套:
|
|
789
|
-
- 你打中或碰到它,它在你这边当场就照游戏原本的样子反应:被打飞、弹起、炸开,连同声音和特效,不等消息;
|
|
790
|
-
- 反应里会动到两个人共有的东西的那一部分,你这边不做,只由房间主机那边做一次,再照常传给你:
|
|
791
|
-
加分、存档、掉钱、放出怪物之类,所以不会算两次;
|
|
792
|
-
- 房间主机收到后,把它放到你打中、碰到时它在你那边的位置,用你这边掷的骰子做同样的反应,
|
|
793
|
-
补上消息路上耽误的那一小段,同时回一句「收到了,它现在在做什么」;
|
|
794
|
-
- 回话到之前,主机那边发来的这个东西的动作都是它还没收到时的,你这边先压着;回话说主机那边也是一样的反应,
|
|
795
|
-
压着的就丢掉(你这边已经演过了);主机那边它已经变了样(比如早就落地了),你这边就马上改回主机那边的样子,
|
|
796
|
-
压着的按顺序补上;
|
|
797
|
-
- 反应做完,它接下来怎么走(落地、飞走、复位)由主机那边说了算,你这边不再自己往下演,免得同一声响两次。
|
|
798
|
-
和以前比能看出来的:碰到你炸开的石头,两边炸在同一个地方了(以前主机那边是在它自己落到的地方炸的)。
|
|
799
|
-
以后再有这一类东西,只要在名单里给它标上就行。
|
|
800
|
-
这一条改了同步的数据格式,两个人都要装这一版。
|
|
801
|
-
|
|
802
|
-
* 【玩着玩着游戏直接关掉、什么提示都没有:修了】
|
|
803
|
-
到现在一共遇到过三次,三次是同一个原因:
|
|
804
|
-
- 先是某段代码一下子调用得太深,把游戏的「栈」用光了(栈溢出)。这本来只算一个普通错误:
|
|
805
|
-
游戏的运行时会把它变成一条报错,这一帧没做完的事就不做了,游戏接着跑;
|
|
806
|
-
- 可运行时收拾这种错误时,用的是它自己生成的一小段代码,这段代码没把栈对齐好;
|
|
807
|
-
偏偏 Steam 的游戏内界面(Shift+Tab 那个)在系统里挂了钩子,会从这段代码底下经过,
|
|
808
|
-
于是游戏在 Windows 里直接崩掉,连报错都来不及留下;
|
|
809
|
-
- 现在模组一启动,就把那一小段代码改成先把栈对齐再往下走。以后再发生栈溢出,只会在日志里留一条报错,
|
|
810
|
-
不会再闪退。
|
|
811
|
-
这一条在测试里原样复现过同样的闪退(同一个运行时、同一个崩溃位置),改完后确认不崩了。
|
|
812
|
-
0.4.47:调用得太深的那段代码也找到了,是模组自己的:队友用道具时,你这边道具的复制品第一次生成某样东西
|
|
813
|
-
(比如一次爆炸),模组会先把它换成一份私有的副本;游戏发现这份副本还没准备好,就先准备、再生成一次,
|
|
814
|
-
而这第二次生成又被模组换成了新的副本……一层套一层,直到栈用光。现在副本不会再被复制第二次。
|
|
815
|
-
(0.4.46 里这个错误不再闪退,而是游戏卡死——错误发生在游戏自己的底层代码中间,收拾完也回不去了。
|
|
816
|
-
以后万一再有别的栈溢出,也可能是卡住而不是闪退:关掉游戏告诉我,日志里会写明是哪段代码。)
|
|
817
|
-
|
|
818
|
-
* 【有一场遭遇战:一个人进去以后,外面的人那边门也关了,进不去:修了】
|
|
819
|
-
规则一直是:遭遇战的门只对走进去的人关上,外面的人还能进去帮忙,进去以后就出不来。
|
|
820
|
-
大多数遭遇战的门是「把人锁进去」时关的,这一步只在走进去的人那边做;
|
|
821
|
-
但有一场遭遇战的入口门,是在战斗开始时听到一声「开打了」才关的,两边的游戏都会听到这一声,
|
|
822
|
-
所以没进去的人那边门也关了(上次一个人倒在里面,另一个人进不去救,就是这样)。
|
|
823
|
-
现在这种门,在你走进战斗区域之前一直开着,你走进去时才在身后关上。
|
|
824
|
-
|
|
825
|
-
* 【有个会飞的 boss 扔出的飞刃,两个人看到的方向不一样:修了】
|
|
826
|
-
一场战斗只在一个人的游戏里真正在跑,另一个人看到的是照着它演的复制品。
|
|
827
|
-
这个 boss 扔飞刃时,先把飞刃转成和自己一样的朝向,飞刃再按自己的朝向决定往左还是往右飞。
|
|
828
|
-
「转朝向」这一步以前没传给另一个人,所以另一个人那边的飞刃朝向是随便的,大约一半时间往反方向飞:
|
|
829
|
-
两个人看到的飞刃不一样,躲的也不是同一把。现在这一步照跑战斗那边的结果传过去。
|
|
830
|
-
同一类漏掉的还有几种,一起按同样的办法补上了:
|
|
831
|
-
- 另外几个 boss 按自己朝向发出去的剑气、火球、旋风,在另一个人那边停在原地不动;
|
|
832
|
-
- 怪甩出去、推出去、摆到某个位置的东西,在另一个人那边没被甩、没被推、没摆过去;
|
|
833
|
-
- 怪给扔出去的东西设的伤害,另一个人那边没设上,被打到时掉的血可能不一样。
|
|
834
|
-
另外,这个 boss 出手前手里的飞刃会慢慢变大,另一个人那边以前一直停在刚开始的大小,现在也跟着变大。
|
|
835
|
-
这一条改了同步的数据格式,两个人都要装这一版。
|
|
836
|
-
|
|
837
|
-
* 【被怪「抓住再连斩」时,怪在没跑战斗的那个人那边不停下来砍:修了】(0.4.49)
|
|
838
|
-
有些怪(包括好几个 boss)的招式是先用刀、爪之类的部位抓住人,然后原地连砍一串。
|
|
839
|
-
以前只有真正在跑战斗的那一边(主机)能做出这套连斩。另一个人被抓住时,他那边只有自己被定住挨打,
|
|
840
|
-
怪却照样飞走了;主机那边的怪也不知道抓到了人,根本不停。
|
|
841
|
-
现在和「被石头砸到」「打跳蚤」一样,被抓的人这边先放,再传给主机:
|
|
842
|
-
- 被抓住的那一刻,你这边的怪马上停下,对着你把整套连斩一口气打完
|
|
843
|
-
(把你定住、刀光、震屏、最后那一下都在你这边,不用等网络);
|
|
844
|
-
- 同时告诉主机,主机那边的怪也打同一套,但只做怪自己那部分:
|
|
845
|
-
定住人、刀光、震屏、最后那一下这些是冲着「被抓的人」的,主机那边跳过,不会去抓、去打主机自己的角色;
|
|
846
|
-
- 连斩打完以后,怪接下来怎么走,仍由主机那边说了算。
|
|
847
|
-
这是按「抓住再连打」这一整类做的:游戏里四十多种会这样抓人的怪都走同一条路,不只是这一个 boss。
|
|
848
|
-
已知的限制:
|
|
849
|
-
- 你看到的怪比主机那边晚一点(网络延迟)。如果你是在它一招快收尾时才被抓住,主机那边的它可能已经收招,
|
|
850
|
-
主机就不认这次抓人,你这边的连斩会在大约一个网络来回之后停下,改回主机那边的样子;
|
|
851
|
-
- 主机收到消息时,会先把怪放回你被抓住的位置再开始连斩,所以主机那边会看到怪往回闪一下;
|
|
852
|
-
- 连斩打完以后,你这边的怪会多停大约一个网络来回,等主机那边的下一步。
|
|
853
|
-
|
|
854
|
-
* 【有的遭遇战打完不开门、有的 boss 房进去找不到 boss:修了】(0.4.50)
|
|
855
|
-
这两个是同一个根:
|
|
856
|
-
- 进一个房间时,模组要先问清楚这间房的怪由哪一边的游戏来跑(要等一个网络来回)。
|
|
857
|
-
这段时间里它会先把怪都关掉,免得本不该跑它们的那一边先动起来;问清楚以后,由跑的那一边重新打开。
|
|
858
|
-
- 问题出在游戏的怪「关掉再打开」时,行为逻辑会从第一步重新走一遍,已经做过的一次性动作会再做一次:
|
|
859
|
-
- 有一种怪进房间时,先「往上挪到房间外面藏起来」,等它那一波开始时再「挪回来飞进场」。
|
|
860
|
-
重走一遍就又往外挪了一次,飞进场时只挪回一半,一直待在房间外面。遭遇战等不到它死,门就不开;
|
|
861
|
-
- 有援助角色的 boss 房,房间一开始会「叫援助角色出场」,重走一遍时又叫了一次。
|
|
862
|
-
这一下正好被模组拦住(那时援助角色还没分好由谁来跑),拦下后又没让它算做完,
|
|
863
|
-
房间就一直停在这一步,走不到「等玩家进来开打」,boss 就一直不出来,换另一个人接管房间也一样。
|
|
864
|
-
- 现在还是会重走一遍,但重走时它自己挪出去的那一下,模组会当场把它挪回原处:
|
|
865
|
-
它还藏在原来的位置,那一波开始时就能正好飞回场地里;
|
|
866
|
-
- 模组拦下的「叫出场」现在也算做完,房间能接着走到「等玩家进来开打」。
|
|
867
|
-
之前修过一次同类问题(上次那个打完不开门的遭遇战),那次放回去的是怪「走到哪一步」,这次补上的是它「站在哪」。
|
|
868
|
-
重走时其他不涉及位置的动作这次没有改,和以前一样。
|
|
869
|
-
|
|
870
|
-
* 【在没跑战斗的那个人那边,隔着一段距离就被怪撞到、被它的飞镖打到:修了】(0.4.50)
|
|
871
|
-
- 另一个人那边的怪是照着主机那边的位置一帧一帧摆出来的,它的身体本来不受物理影响;
|
|
872
|
-
- 但有些怪飞进场时会把自己的身体切成「受重力」,这一下以前也原样传给了另一个人。
|
|
873
|
-
于是另一个人那边的怪在两帧之间会往下掉到地上,下一帧又被摆回空中:
|
|
874
|
-
你看到它在半空,它能撞人的身体却一直在地面上,也就是你站的地方,所以隔着一段距离也会被撞到;
|
|
875
|
-
它这时扔出的飞镖,也可能是从地面上那个位置扔出来的;
|
|
876
|
-
- 现在这一下不再改动另一个人那边的怪,它的身体一直就在你看到它的位置。
|
|
877
|
-
所有会这样切换身体的怪都有这个问题,这次是一起修的,不只这一种。
|
|
878
|
-
|
|
879
|
-
* 【请求援助:要两个人都请求才会来(新规则)】(0.4.50)
|
|
880
|
-
以前联机时这件事没有专门处理过:谁请求了,就只在谁的存档里记下;战斗时由跑战斗的那一边看自己的存档决定援助来不来,
|
|
881
|
-
另一个人同意没同意都不管。现在和接祈愿一样:
|
|
882
|
-
- 两个人各自去跟那个角色说话,都在自己的选项上选「是」,援助才成立;
|
|
883
|
-
- 先选「是」的人会停在选项上等,另一个人会收到提示,去找同一个角色也选「是」;
|
|
884
|
-
- 20 秒内没等到,或者另一个人选了「否」,就当两个人都没请求,角色照常说拒绝时的话;
|
|
885
|
-
- 如果你的存档里已经请求过这个援助,队友来请求时直接算你同意;
|
|
886
|
-
- 战斗里始终只有一个援助角色:由跑这场战斗的那一边让它出场,另一边看到的是同步过来的同一个。
|
|
887
|
-
另外说明一下:请求援助这个记录,游戏自己每次从主菜单读档时都会清掉(原版就是这样),
|
|
888
|
-
所以重新进游戏以后要重新请求。
|
|
889
|
-
|
|
890
|
-
* 【一个人倒下时不再是「真的死了」:只演死亡动画,人留在原地等队友拉,两个人都倒下才真的死】(0.4.51)
|
|
891
|
-
- 以前一个人倒下时,模组先让游戏把死亡流程跑一截再停住,等队友来拉。
|
|
892
|
-
游戏在这一截里会顺手改掉很多东西:把地上的钱锁住、把房间里盖住暗处的黑色遮罩冻住、告诉全房间「角色死了」、
|
|
893
|
-
把钱和丝收进茧里等等。拉起来时模组再一件件改回去,漏一件就是一个 bug。
|
|
894
|
-
上次在黑里被地刺扎、什么都看不见,就是漏掉的一件:死的那一刻,盖住暗处的黑色遮罩被冻住了,
|
|
895
|
-
之后人走进那片地方,就等于走进了黑幕里。
|
|
896
|
-
- 现在反过来:一个人倒下时,游戏的死亡流程一步都不跑。
|
|
897
|
-
人留在倒下的地方,照样播游戏原版的死亡动画和音效(音乐变安静、黑屏都和以前一样),然后变成茧等队友拉;
|
|
898
|
-
只是不会告诉房间「角色死了」,钱和丝也都留在身上,不改存档。
|
|
899
|
-
- 被拉起来就在原地站起来,半血。
|
|
900
|
-
- 两个人都倒下、等救超时、或者自己放弃时,才从头跑游戏自己的死亡,回椅子(钱照原版收进茧里)。
|
|
901
|
-
这时不会把死亡动画再放一遍,而是直接黑屏回椅子。
|
|
902
|
-
- 所以以前那些「拉起来以后还卡着」的问题都不会再有:
|
|
903
|
-
- 盖住暗处的黑色遮罩不会被冻住,走进去照常掀开;
|
|
904
|
-
- 钱不会被锁住:倒下时吸钱的道具照样把钱吸进口袋,不会再在身边来回晃;站起来后地上的钱也照常能捡;
|
|
905
|
-
- 你倒下时,队友照样能把 boss 打死。以前有四十多个怪(大多是 boss)有一条「角色死了,自己就不许死」,
|
|
906
|
-
刚好是你的游戏在跑这场战斗时,你倒着 boss 就打不死;
|
|
907
|
-
- 镜头照常;手柄震动和冰冻值在被拉起来时恢复;
|
|
908
|
-
- 有一场剧情战斗,角色死了会把战斗改回「没打过」,现在只有真的死了才会改。
|
|
909
|
-
- 倒着的时候:
|
|
910
|
-
- 冰冻这类会绕过无敌的伤害不再扣你的血、不再弄坏你送的货,队友那边也不会隔一会儿就又看到一次你的死亡动画;
|
|
911
|
-
- 不管是什么把操作交还给你(对话结束、boss 房等人、门、游戏自己),茧里的你都不会动起来;
|
|
912
|
-
- 放弃等待以后、真的死之前那半秒黑屏里也还算倒着:这时队友倒下,会马上告诉对方两个人一起回椅子。
|
|
913
|
-
你已经在回椅子的路上时队友倒下也一样,不会让对方在原地白等。
|
|
914
|
-
- 被拉起来时不再清理房间里的东西。以前模组会清掉「不会自己消失的特效」(修「炸死后烟雾一直不散」时加的),
|
|
915
|
-
现在人不会真的死,这一步已经没有要清的了。按朋友的日志,它清掉的其实都是房间里本来就有的东西:
|
|
916
|
-
插在墙上的刺、钉子、碎石,还有地上的钱(近百枚)和没捡的道具(二十多个)。队友那边这些都还在,两边就对不上了。
|
|
917
|
-
- 钢魂模式照原版:倒下就是真的死了,不等救。
|
|
918
|
-
- 有些特殊场景里的死亡,游戏本来就不算真死,也照原版走,不等救。
|
|
919
|
-
|
|
920
|
-
* 【进一个归你跑的房间时,怪不再「先关掉、再打开」】(0.4.51)
|
|
921
|
-
- 上一版说过:进房间时模组要先问清楚这间房由谁的游戏来跑,这段时间里先把怪都关掉,问清楚以后由跑的那一边重新打开;
|
|
922
|
-
而怪「关掉再打开」时,行为会从头再走一遍。上一版修了两种因此出的问题,但「重走一遍」本身还在。
|
|
923
|
-
- 现在服务器会告诉每个人「另一个人在哪个房间」。房间归先进去的人跑,所以你进一个房间时,
|
|
924
|
-
如果另一个人不在里面,这间房一定归你:你这边的怪从一开始就正常跑,不关也不重新打开,和单机时一样。
|
|
925
|
-
- 另一个人已经在里面时,照旧先关着,等着看对方那边的(这时本来就是对方在跑)。
|
|
926
|
-
- 万一判断错了(比如两个人几乎同时进同一个房间,消息还没到),会退回以前的做法:
|
|
927
|
-
你这边先跑起来的怪马上关掉,由对方来跑。这种情况下它们在你这边会多动一小会儿(大约一个网络来回)。
|
|
928
|
-
- 这一条改了联机的数据格式,两个人都要装这一版。
|
|
929
|
-
|
|
930
|
-
*
|
|
931
|
-
-
|
|
932
|
-
|
|
933
|
-
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
|
|
984
|
-
|
|
985
|
-
|
|
986
|
-
|
|
987
|
-
|
|
988
|
-
|
|
1
|
+
丝之歌联机模组(SSMP 自制版)——一键安装
|
|
2
|
+
==========================================
|
|
3
|
+
|
|
4
|
+
这是 SSMP 联机模组的一个自制版本,比公开版多了「双人存档」:
|
|
5
|
+
两个人共用一条流程,任务、世界变化、剧情道具会互相同步。
|
|
6
|
+
|
|
7
|
+
重要:两个人必须装【同一份】这个压缩包,不能一个人用公开版。
|
|
8
|
+
|
|
9
|
+
【从这一版开始,版本不一致会被直接拦住。】
|
|
10
|
+
加入房间时会比对双方的版本,不一样就不让连,并且明确告诉你
|
|
11
|
+
「你们装的版本不同」,而不是连上之后表现出一堆对不上的怪事。
|
|
12
|
+
|
|
13
|
+
※ 代价是:这一版【不认识任何旧版本】。
|
|
14
|
+
所以【两个人必须一起换成这一版】,只有一个人装的话,
|
|
15
|
+
你们会连不上——这是正常的,不是坏了。
|
|
16
|
+
这笔账只付一次,以后就不会再有「一个人更了一个人没更」还不知情的情况。
|
|
17
|
+
|
|
18
|
+
(顺带更正我之前在这里写错的话:我原先说「版本不一致配对时会提示」,
|
|
19
|
+
那时候是【不对的】,当时根本没有任何东西在比对版本。现在才是真的。)
|
|
20
|
+
|
|
21
|
+
【这个包是完全离线的】模组加载器已经放在包里,
|
|
22
|
+
安装过程不需要联网,不用梯子,也不受任何网站能不能打开的影响。
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
一、怎么装(双击一下就行)
|
|
26
|
+
--------------------------
|
|
27
|
+
|
|
28
|
+
1. 把这个压缩包【完整解压】到任意位置(比如桌面)。
|
|
29
|
+
不要只解压出单个文件,INSTALL.bat、SSMP 文件夹和
|
|
30
|
+
BepInEx_win_x64_5.4.23.4.zip 必须在一起。
|
|
31
|
+
|
|
32
|
+
2. 双击 INSTALL.bat。
|
|
33
|
+
|
|
34
|
+
3. 等它跑完,看到绿色的 Done 就好了。
|
|
35
|
+
|
|
36
|
+
它会自己做这几件事:
|
|
37
|
+
- 找到你的 Silksong 安装位置(找不到会让你把路径粘进去)
|
|
38
|
+
- 先把你的存档备份成 zip,放在这个文件夹里的 save-backups\ 下
|
|
39
|
+
(只留最近 3 份,更旧的会自动删掉;它不会碰别的文件)
|
|
40
|
+
- 用包里自带的加载器装好(不联网)
|
|
41
|
+
- 把联机插件放进去
|
|
42
|
+
- 最后检查一遍有没有装成功
|
|
43
|
+
|
|
44
|
+
窗口里的提示是英文的,因为 Windows 自带的 PowerShell 显示中文
|
|
45
|
+
经常是乱码,英文反而不会出错。
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
二、这个脚本安全吗
|
|
49
|
+
------------------
|
|
50
|
+
|
|
51
|
+
- 它只往【游戏目录】写东西,外加一个存档备份。
|
|
52
|
+
不改注册表、不改系统设置、不装任何后台程序、不联网。
|
|
53
|
+
- 不需要管理员权限(除非你的游戏装在 C:\Program Files 里)。
|
|
54
|
+
- 想卸载:把游戏目录里的 BepInEx 文件夹、winhttp.dll、
|
|
55
|
+
doorstop_config.ini、.doorstop_version、changelog.txt
|
|
56
|
+
删掉就完全干净了。
|
|
57
|
+
|
|
58
|
+
包里那个 BepInEx_win_x64_5.4.23.4.zip 是 BepInEx 官方在 GitHub
|
|
59
|
+
上发布的原版文件,没有改动过,大小 638,940 字节。
|
|
60
|
+
|
|
61
|
+
有一点要提前说:BepInEx 这类模组加载器的工作方式,是在游戏
|
|
62
|
+
exe 旁边放一个 dll,让游戏启动时连带加载它。这是所有同类
|
|
63
|
+
加载器的通用做法,但这个手法和某些恶意软件相同,所以
|
|
64
|
+
【杀毒软件有时会报毒】。看到告警是这个原因,不是脚本在干别的。
|
|
65
|
+
|
|
66
|
+
真正的风险不在系统,在存档:模组有可能弄坏存档,
|
|
67
|
+
所以脚本会先备份。
|
|
68
|
+
|
|
69
|
+
|
|
70
|
+
三、怎么一起玩
|
|
71
|
+
--------------
|
|
72
|
+
|
|
73
|
+
1. 【从 Steam 启动游戏】,不要直接双击 exe。
|
|
74
|
+
|
|
75
|
+
2. 一个人开房:选 "Steam" 那一页,点 Create Lobby。
|
|
76
|
+
开完房不会直接进游戏,而是停在一个【等待室】里。
|
|
77
|
+
|
|
78
|
+
3. 房主在等待室里点 INVITE FRIEND,会直接弹出 Steam 的邀请框,
|
|
79
|
+
不用自己去找 Steam 覆盖层。对方接受邀请就会进到同一个等待室。
|
|
80
|
+
|
|
81
|
+
4. 两个人各自点一次 I'M READY。
|
|
82
|
+
名单上能看到对方是 READY 还是 NOT READY。
|
|
83
|
+
【两个人都 READY 之后】,两边才会同时打开各自的选存档界面。
|
|
84
|
+
反悔就再点一次取消。
|
|
85
|
+
|
|
86
|
+
5. 进游戏后,屏幕上方会出现一行字,
|
|
87
|
+
写着「按 L 和 XXX 组成双人存档」。
|
|
88
|
+
两个人都按一下 L 就配对好了。
|
|
89
|
+
不想配对就别理它,它会自己消失。
|
|
90
|
+
|
|
91
|
+
【用手柄的话把左摇杆按进去(L3)】,和 L 是同一件事。
|
|
92
|
+
是像按按钮一样把摇杆往手柄里按,会「咔哒」一声;往下推是方向,不算。
|
|
93
|
+
插着手柄时,屏幕上那行字会把键盘键和手柄键都写出来。
|
|
94
|
+
|
|
95
|
+
(配对键原来是 J,这一版改成了 L。因为 J 是游戏自己
|
|
96
|
+
「打开背包并翻到笔记页」的默认键,按一下会同时干两件事。
|
|
97
|
+
L 在游戏的默认键位里没人用。)
|
|
98
|
+
|
|
99
|
+
6. 之后这两个存档必须两个人都在线才能打开。
|
|
100
|
+
如果对方不来、或者两边一直停在「Waiting for XXX」不动,
|
|
101
|
+
你会被定住不能移动,屏幕上会写着在等谁。
|
|
102
|
+
【这时按 K】就能退出双人存档、自己单独玩。
|
|
103
|
+
注意:这只解开你这边,对方要自己也按一次 K。
|
|
104
|
+
|
|
105
|
+
※ 不要去聊天框打 /coopsave off。被定住的时候聊天框打不开;
|
|
106
|
+
而且只要对方还在线,那条指令也只是【请求对方同意】,
|
|
107
|
+
并不会放你走。K 才是真正的出路。
|
|
108
|
+
|
|
109
|
+
|
|
110
|
+
四、第一次玩的建议
|
|
111
|
+
------------------
|
|
112
|
+
|
|
113
|
+
* 两个人都【开新档】。
|
|
114
|
+
配对会检查双方已击败的 Boss 是否一致,老档大概率对不上。
|
|
115
|
+
|
|
116
|
+
* 连接和等待室都已经实测跑通过(中国 ↔ 马来西亚,走 Steam 中继)。
|
|
117
|
+
|
|
118
|
+
* 【之前卡在「Waiting for XXX」的原因已经找到并修掉了】
|
|
119
|
+
服务器把所有玩家的网络数据放在同一个拼包缓冲区里,而且是先拼字节、
|
|
120
|
+
后判断这包是谁发的。双人存档要同步的世界进度是全游戏唯一一个
|
|
121
|
+
大到需要拆包发送的数据,一拆包,两个人的数据就会被粘在一起,
|
|
122
|
+
连接的分帧从此错乱、五秒后超时重连,于是校验永远走不完。
|
|
123
|
+
|
|
124
|
+
这也解释了为什么配对、聊天、看到对方走路一直都正常——
|
|
125
|
+
那些包都很小,从来不需要拆。
|
|
126
|
+
|
|
127
|
+
现在每条连接各用各的缓冲区。
|
|
128
|
+
【这个修复已经实机验证通过】,两个人已经正常连上并一起玩过了。
|
|
129
|
+
万一还卡:按 K 脱身,然后把两边的日志都发回来。
|
|
130
|
+
|
|
131
|
+
备份脚本会自动做,位置见上面第一节。
|
|
132
|
+
|
|
133
|
+
* 【从这一版开始,敌人和 Boss 才是真正同步的】
|
|
134
|
+
在这之前,控制这件事的开关默认是关的,而且没有任何界面能打开它,
|
|
135
|
+
所以你们其实是各打各的:同一只怪在你这边死了、在她那边还站着,
|
|
136
|
+
打完的记录也只记在动手的那个人身上。
|
|
137
|
+
现在这个开关被固定为常开,配置文件里存着的旧设置不再起作用。
|
|
138
|
+
【两个人都必须重装这一版】,只有一个人装是没用的。
|
|
139
|
+
|
|
140
|
+
顺带说一句:Boss 的击败记录本来就是各记各的,不会互相抄,
|
|
141
|
+
这是当初定好的规则(剧情进度共享,战绩和拾取各归各的)。
|
|
142
|
+
所以如果一个人已经打过、另一个人没打过,
|
|
143
|
+
那只怪在没打过的那个人的世界里还在,两个人可以一起再打一遍,
|
|
144
|
+
这次两边都会拿到记录。
|
|
145
|
+
|
|
146
|
+
* 【茧:平时各看各的;但你死了之后,队友可以把你拉起来】
|
|
147
|
+
平时的规则没变:你只看得见【自己】的茧,对方也碰不到你的。
|
|
148
|
+
|
|
149
|
+
新加的是救人。你死掉之后【不会立刻回长椅】,会先在原地等一会儿,
|
|
150
|
+
最多 45 秒。这段时间里,你的茧会出现在【队友】那边,
|
|
151
|
+
她打【5 下】就能把你拉起来:
|
|
152
|
+
在你倒下的地方站起来,血量是你上限的【一半】(向下取整),
|
|
153
|
+
茧里的钱和丝也一起还给你,等于这一次没白死。
|
|
154
|
+
|
|
155
|
+
等的时候屏幕上有一行字,写着在等谁、对方已经打了几下。
|
|
156
|
+
不想等了就【按 K】,立刻回长椅、按原来的规则结算,
|
|
157
|
+
你的茧同时从队友那边消失。等满 45 秒没人来,也一样自动回长椅。
|
|
158
|
+
(注意:这里的 K 只是「不等了」,不会解除你们的双人存档。)
|
|
159
|
+
|
|
160
|
+
【两个人都死了,就都直接回长椅】,不会互相干等,
|
|
161
|
+
也不会出现谁站在那儿等一个同样躺着的人。
|
|
162
|
+
|
|
163
|
+
这一条是刚写的,【还没有实机验证过】。
|
|
164
|
+
真卡住不动了(按理说等满 45 秒一定会自己回长椅),
|
|
165
|
+
Alt+F4 强退就行,存档还停在上一次保存的地方。
|
|
166
|
+
|
|
167
|
+
这里原本藏着一个很隐蔽的问题,已经修掉:
|
|
168
|
+
两个人的茧在各自游戏里【名字完全一样】,而模组会把「打碎世界物件」
|
|
169
|
+
这类命中按名字转发给对方重放。于是她打她自己的茧,
|
|
170
|
+
你这边被打碎的是【你的】茧——而且和你们死在哪儿没关系,
|
|
171
|
+
隔着半个房间照样会中。茧里的钱是记在存档里的,
|
|
172
|
+
被这样打掉会直接结算掉、还会抹掉你那个茧的记录。
|
|
173
|
+
现在茧被排除在转发之外,对方攻击的副本也碰不到它。
|
|
174
|
+
你自己打自己的茧,一切照旧。
|
|
175
|
+
|
|
176
|
+
* 【修掉了「后进房间的人,满屋子怪全定住」】
|
|
177
|
+
只要你走进一个对方已经清过的房间,那些怪在你这边会全部卡死不动。
|
|
178
|
+
原因是服务器只记得「这怪没血了」,却不记得「它死过」,
|
|
179
|
+
于是你这边的怪变成了一具零血的活尸:它每一帧都想死,
|
|
180
|
+
每一帧都被模组挡回去,一个房间能刷出七千多次,整屋子就此卡住。
|
|
181
|
+
现在补状态时会把这类怪真正结算掉一次,进门看到的是尸体而不是活尸。
|
|
182
|
+
|
|
183
|
+
* 【昵称会记住了】
|
|
184
|
+
以前只有「直连 IP」和「直连开房」两条路会保存昵称,而你们用的是 Steam
|
|
185
|
+
开房 / 加入 / 房间列表,这几条一条都不保存 —— 所以不是你忘了填,
|
|
186
|
+
是它在你的用法下从来没存过。现在填一次就记住,下次自动带出来。
|
|
187
|
+
|
|
188
|
+
* 【进游戏之后不用再碰键盘了】
|
|
189
|
+
配对(L)和放弃等待(K)这两个动作,手柄都可以【把左摇杆按进去】来完成
|
|
190
|
+
(L3:摇杆当按钮往里按,不是往下推)。
|
|
191
|
+
选左摇杆是因为它是游戏唯一没占用的按钮 —— 扳机、肩键、四个面键、
|
|
192
|
+
右摇杆按下、旁边那两个键,游戏全都用掉了。
|
|
193
|
+
这两个动作不会同时出现(没配对时才问你要不要配对,配对了才谈得上放弃),
|
|
194
|
+
所以共用一个键不会冲突。
|
|
195
|
+
聊天键故意没给手柄绑:手柄本来就打不了字,绑了也只是开一个填不进去的框。
|
|
196
|
+
|
|
197
|
+
※ 联机大厅(连接、房间列表、等待室)目前仍然要用鼠标键盘,这是你定的。
|
|
198
|
+
|
|
199
|
+
* 【手柄在选存档界面按不进去:真正的原因找到了】
|
|
200
|
+
这里一共有两道闸,前几版只拆了第一道。
|
|
201
|
+
|
|
202
|
+
第一道:模组自己建了一套界面输入系统,在菜单里抢着管事。
|
|
203
|
+
它能认键盘的确认,不认手柄的,所以当时是「只有键盘能进存档」。
|
|
204
|
+
这一道之前已经关掉了,菜单交回给游戏自己的输入。
|
|
205
|
+
|
|
206
|
+
第二道:模组打开选存档界面时,先调用了游戏的「隐藏当前菜单」。
|
|
207
|
+
这个功能只认主菜单下面的子菜单(设置、音频这些),
|
|
208
|
+
碰到主菜单时会先挂上「菜单正在切换」的牌子,然后直接退出,再也不摘。
|
|
209
|
+
游戏的菜单挂着这块牌子时,会丢掉所有「确认」和「返回」,
|
|
210
|
+
唯独「左右移动」不查它 —— 所以手柄能左右切换存档,却怎么都按不进去。
|
|
211
|
+
游戏自己打开选存档界面时,在主菜单本来就不会调用它;现在模组也不调了。
|
|
212
|
+
从联机菜单按 Esc 回主菜单也会挂上同一块牌子,一起去掉了。
|
|
213
|
+
|
|
214
|
+
顺带:在这个界面按 B(或 Esc)现在会回到联机菜单,
|
|
215
|
+
和左下角的「返回」一样,不会掉回游戏主菜单把联机流程卡住。
|
|
216
|
+
|
|
217
|
+
※ 这一条【没有实机验证过】。
|
|
218
|
+
|
|
219
|
+
* 【修掉了「血还没空,却一直反复播死亡动画」】
|
|
220
|
+
那不是死亡动画,是被抓住时的受伤姿势,所以血没到 0 也会出现。
|
|
221
|
+
只发生在【不是房间主机】的那个人身上,和网络卡不卡没有关系。
|
|
222
|
+
|
|
223
|
+
有的 Boss 反击时会打开一个「抓人判定框」,只开那一招那么长,
|
|
224
|
+
这一招结束时游戏会自动把它关上。
|
|
225
|
+
模组只把「打开」传给了另一边,「自动关上」从来没传过,
|
|
226
|
+
所以在房间客机那边,这个框在第一次反击之后就再也不关了。
|
|
227
|
+
碰到它就被抓:扣 1 血,定住摆受伤姿势最多 4 秒,
|
|
228
|
+
放开后的下一帧又被抓住,一直循环到血真的扣光。
|
|
229
|
+
现在那一招结束时,这边也会把框关上。
|
|
230
|
+
凡是「只在某一招里打开」的判定框都是同一个问题,一起修了。
|
|
231
|
+
|
|
232
|
+
在房间客机那边,要是正好在那一招里被抓到:扣 1 血,
|
|
233
|
+
这一招一结束就放开(最多 0.65 秒,再加一点网络延迟),
|
|
234
|
+
和游戏里 Boss 抓人途中被打出硬直时放人的方式一样。
|
|
235
|
+
没有最后那一刀,因为那一刀只有房间主机那边的 Boss 放得出来。
|
|
236
|
+
|
|
237
|
+
* 【修掉了「怪物在它出生的地方一闪一闪」】
|
|
238
|
+
用身体撞人的怪(比如沿着台阶一圈爬的那种),只要它的伤害数值一变,
|
|
239
|
+
模组就会把你这边「睡着的那一只原版怪」叫醒一下,
|
|
240
|
+
于是它在出生点露脸一帧又消失。现在不会去叫醒它了。
|
|
241
|
+
|
|
242
|
+
* 【两个人都被打倒时,Boss 会做胜利动作了】
|
|
243
|
+
本来的设计是:一个人倒下时先不告诉 Boss(免得它对着还在打的人庆祝),
|
|
244
|
+
两个人都倒下才告诉它。但第二个人倒下时这条消息也被压住了,
|
|
245
|
+
所以 Boss 从来没做过胜利动作。现在第二个人倒下时会告诉它;
|
|
246
|
+
先倒下的是房间主机时,等另一个人也倒下,房间主机这边会补上这条消息。
|
|
247
|
+
|
|
248
|
+
* 【修掉了「交接房间主机时,怪消失、隐身、或者跳回原处」】
|
|
249
|
+
一个人离开房间、房间交给留下的人时,留下的人会把房间里的怪接过来自己跑。
|
|
250
|
+
接的时候,模组会把每只怪「第一步」里的动作补做一遍,本意是补上
|
|
251
|
+
这只怪在你这边从来没做过的准备工作(比如找到自己身上的零件)。
|
|
252
|
+
可是很多怪的第一步里还有「先藏起来」:出场前关掉自己的画面和碰撞、
|
|
253
|
+
定在原地不动,有的还会挪到房间外面、或者挪回它的起点等着。
|
|
254
|
+
交接时把这一步重做一遍,正在打架的怪就又被藏了起来,
|
|
255
|
+
而且「看不见」这个状态还会同步给对方,结果两个人都看不见它,它却照样在打人。
|
|
256
|
+
那只看不见、却一直朝你扔东西的会飞的怪就是这么来的;
|
|
257
|
+
交接之后会飞的怪突然不见、像回到了出生点,主要也是这个原因。
|
|
258
|
+
游戏里有 29 种怪会这样藏自己,其中包括好几个 Boss。
|
|
259
|
+
第一步里别的动作也会闹出小一号的同类问题:有的怪交接后被扭成朝同一个方向,
|
|
260
|
+
有的变得打不到。
|
|
261
|
+
|
|
262
|
+
现在交接时只补准备工作。怪站在哪、多大、朝哪边、看不看得见、能不能打到,
|
|
263
|
+
都按对方那边当时的样子接过来,第一步不会再把它们改掉。
|
|
264
|
+
只有当时那只怪本来就还藏着没出来,才会把「藏起来」这一步照做。
|
|
265
|
+
|
|
266
|
+
(上一版修的「怪被重新启用时从头来过」也是真的问题,那个修复还留着。
|
|
267
|
+
但我当时说那就是怪消失的原因,说错了,主要原因是上面这个。)
|
|
268
|
+
|
|
269
|
+
* 【修掉了「怪身上的一部分东西,房间客机看不到」】
|
|
270
|
+
最早发现的是沿台阶爬的那种怪:它出招时先挑「用哪一个喷射」,
|
|
271
|
+
把结果记在一个变量里,再把那个喷射打开。挑的那一步只在房间主机那边跑,
|
|
272
|
+
所以房间客机这边这个变量一直是空的,「打开喷射」找不到对象:
|
|
273
|
+
你当主机时看得到,不当主机时就看不到。
|
|
274
|
+
这不是个例。「先把要用的零件记进变量、再对它做事」这种写法,
|
|
275
|
+
游戏里有 3792 处,分布在 106 种怪上:喷射、粒子、声音、
|
|
276
|
+
发给自己零件的信号、零件的判定框开关、把一个零件挂到另一个零件下面……
|
|
277
|
+
以前这些在房间客机那边全都落空了。挂零件那种还更糟:
|
|
278
|
+
变量是空的,零件就被直接甩到了房间里,不再跟着怪走。
|
|
279
|
+
现在房间主机每做一次这类动作,都会告诉对方用的是怪身上的哪个零件。
|
|
280
|
+
|
|
281
|
+
* 【「只在一招里出现的东西」在房间客机那边会一直留着:一起修了】
|
|
282
|
+
上面那个抓人判定框只是其中一种。怪出招时打开、这一招一结束游戏就自动关掉的东西,
|
|
283
|
+
游戏里一共有六千五百多处:零件、判定框、特效、粒子,还有跟着这一招走的位移。
|
|
284
|
+
以前房间客机那边只收到过「打开」,从没收到过「关上」,
|
|
285
|
+
所以这些东西第一次出现之后就一直留在那里:特效不消失,碰到就挨打的判定框也不收。
|
|
286
|
+
现在这一招结束时,这边也会一起关掉。
|
|
287
|
+
|
|
288
|
+
* 【修掉了「怪抓住房间主机,房间客机也跟着中招」】
|
|
289
|
+
有些怪的动作是直接作用在「玩家」身上的:抓住、定住、藏起来、转身、甩出去、
|
|
290
|
+
摆受伤姿势、打断玩家正在做的事(回血、冲刺、技能)等等。
|
|
291
|
+
这些动作在对方那边说的是【对方的】角色,传到你这边重放时,
|
|
292
|
+
「玩家」指的却变成了【你自己】,所以不管你站在哪,都会跟着中招。
|
|
293
|
+
比如 Boss 抓住房间主机时,房间客机也会在原地摆出受伤姿势;
|
|
294
|
+
抓人结束时那一下「打断一切」,会把房间客机正在回的血、正在放的技能一起打断。
|
|
295
|
+
游戏里这类动作大约有一千处,分布在四十种左右的怪上。
|
|
296
|
+
现在这些动作在你这边一律不对你的角色做。能碰到你的,只有你这边的怪本身。
|
|
297
|
+
副作用:Boss 出场时让玩家摆的那些动作,房间客机这边也不会再跟着摆了。
|
|
298
|
+
|
|
299
|
+
* 【只有两个人都倒下,世界才会「过一段时间」】
|
|
300
|
+
单机里每死一次(或者退出游戏),游戏都会让时间往前走一截:
|
|
301
|
+
有的角色换了地方、有的这次不在、只维持几个房间的状态结束。
|
|
302
|
+
联机里现在是这样:
|
|
303
|
+
- 被队友救起来:不算(本来就不算)。
|
|
304
|
+
- 两个人都倒下:算,和以前一样。
|
|
305
|
+
- 一个人倒下、没人救(自己放弃或者等到超时)回长椅:以前算,现在不算了,
|
|
306
|
+
因为另一个人还站着。
|
|
307
|
+
退出游戏照常算。
|
|
308
|
+
|
|
309
|
+
顺带修了一个问题:两个人几乎同时倒下时(都还没收到对方倒下的消息),
|
|
310
|
+
以前两边都会躺着等对方来救,要干等 45 秒才回长椅;
|
|
311
|
+
现在一收到对方也倒下了,两个人就直接一起回长椅。
|
|
312
|
+
|
|
313
|
+
* 【暗房间里「开灯」两边一起变】
|
|
314
|
+
有些房间很暗,只看得到自己身边一小圈。
|
|
315
|
+
- 有两场 Boss 战,是 Boss 自己在开打时(或者打到一半)调亮度。
|
|
316
|
+
以前只有房主(先进房间的人)那边会变,另一个人整场都在暗处打;
|
|
317
|
+
现在两边一起变。
|
|
318
|
+
- 有一场遭遇战要「调查」某个东西才开打,开打时会顺带开灯。
|
|
319
|
+
以前只有调查的人那边亮,现在战斗在搭档那边开始时,搭档那边也一起亮。
|
|
320
|
+
|
|
321
|
+
* 【赛跑:两个人一起跑,一个人赢了就算两个人都赢】
|
|
322
|
+
开始比赛现在和接愿望一样:两个人都要各自去跟对手说话、都选「是」才会开始。
|
|
323
|
+
先选的人会停在选项上等对方,最多 20 秒;选「否」就可以收回。
|
|
324
|
+
开跑前,先到起跑线的人会在黑屏里等另一个人到,然后两边一起倒数
|
|
325
|
+
(最多等一分钟,等不到就自己先跑)。
|
|
326
|
+
跑的时候各跑各的赛道。只要有一个人赢了对手,两个人都算赢,各拿各的奖励。
|
|
327
|
+
先输了(或者犯规)的人不会马上被判输:你还能动,但要等队友跑完——
|
|
328
|
+
队友赢了,你这边直接算赢;队友也输了,两个人一起算输,然后一起问要不要再来。
|
|
329
|
+
中途用 needolin 放弃比赛,算你自己退出:之后队友赢了,也不算你赢。
|
|
330
|
+
|
|
331
|
+
* 【有的 Boss 格挡时,队友那边会莫名冒出一串受伤特效:修了】
|
|
332
|
+
Boss 挡住你的攻击时,你这边看到的是格挡的火花和「叮」的一声,
|
|
333
|
+
但传给队友的却是「打中了」的特效,所以队友看它每挡一下就冒一次伤害特效。
|
|
334
|
+
现在挡住的攻击传过去就是格挡:火花出在攻击打来的那一侧,也有「叮」的声音。
|
|
335
|
+
|
|
336
|
+
* 【后进房间的人也有 Boss 战音乐了】
|
|
337
|
+
Boss 开打时的战斗音乐、配套的混音(比如周围一下安静下来),
|
|
338
|
+
还有屏幕上出现的 Boss 名字,以前只在先进房间的人那边出现,
|
|
339
|
+
后进来的人整场都没有 BGM。现在两边都有。
|
|
340
|
+
|
|
341
|
+
* 【自己的角色不会再被队友的角色挡住】
|
|
342
|
+
以前两个人叠在一起时,队友的角色总是画在你自己的角色上面。
|
|
343
|
+
现在自己的角色永远在前面(对方那边也一样,是对方自己的角色在前面)。
|
|
344
|
+
|
|
345
|
+
* 【队友身上的特效补上了,嘲讽也有声音了】
|
|
346
|
+
以前队友那边只看得到你角色本身的动作,动作附带的特效全都看不到。
|
|
347
|
+
现在补上了 62 个,比如:嘲讽时的丝线(身上有丝时才会出,会用掉 1 丝)、冲刺的爆发、
|
|
348
|
+
蹬墙和后空翻的烟、下劈的爆发、蓄力时的光、可以回血时的提示光、
|
|
349
|
+
各种移动技能和工具的特效。
|
|
350
|
+
嘲讽时说的那句话现在队友也听得到。只加了这一句,
|
|
351
|
+
别的声音还是各听各的,免得两个人的声音叠在一起太吵。
|
|
352
|
+
这些特效里会让画面抖动、手柄震动的部分,在队友那边是关掉的。
|
|
353
|
+
还没做的两类:临时生成的特效(比如落地、起跳时的灰尘),
|
|
354
|
+
和跟着状态一直冒的粒子(比如贴着墙往下滑时的灰),它们是另一套机制。
|
|
355
|
+
|
|
356
|
+
* 【0.4.39 里下劈踩怪不反弹、打茧打不中:修了】
|
|
357
|
+
上一版加的「队友身上的特效」有个错:游戏刚生成你的角色、角色还没准备好时,
|
|
358
|
+
它就去读角色身上的东西,报了错。这个错正好打断了一个下劈的准备工作
|
|
359
|
+
(就是你们俩用的那个护符的下劈),于是下劈打中怪不会弹起来,
|
|
360
|
+
也没有弹起时那一下短暂的无敌,人直接落到怪身上挨打;打茧则根本打不中,次数不涨。
|
|
361
|
+
打在 Boss 的刀上还能弹,是因为那走的是另一条路。
|
|
362
|
+
同一个错还让上一版新加的「队友身上的特效」和嘲讽的声音一次都没生效,
|
|
363
|
+
并且挤掉了原来就有的几样:两种护符回血时的特殊动作、回血被打断、坐长椅,
|
|
364
|
+
这些在 0.4.39 里队友那边都看不到。现在全部恢复。
|
|
365
|
+
|
|
366
|
+
* 【有的闸门,队友打开了你这边却不开:修了】
|
|
367
|
+
有些闸门打一下就会打开,穿过去就是另一个房间(比如深坞那个)。
|
|
368
|
+
游戏只会为你自己的角色把它打开、撑住,所以以前:
|
|
369
|
+
队友从隔壁房间把它打开,你这边这一头还关着;队友从关着的闸门里钻出来;
|
|
370
|
+
队友站在闸门里时,闸门会在队友身上关上。
|
|
371
|
+
现在两边会互相告诉对方:自己这边的人打开了哪个闸门、正站在哪个闸门里,
|
|
372
|
+
对方那边就一直把它开着,等那个人走了,再按游戏原本的方式关上。
|
|
373
|
+
|
|
374
|
+
* 【队友的道具看得到了:蛰刺碎片,还有其他十几种攻击道具】
|
|
375
|
+
以前队友扔出去、射出去、放在地上的道具,你这边几乎都看不到,
|
|
376
|
+
只看得到打中敌人时冒出来的伤害(打 Lace 时她身上莫名冒出一串伤害特效,就是这个)。
|
|
377
|
+
现在这些东西在你这边都会出现:飞、弹、插在墙上、爆开,都和队友那边一样。
|
|
378
|
+
- 只有扔的那一方才知道的事(碰到了哪个敌人、有没有被攻击打中、随机往哪边弹),
|
|
379
|
+
都由那一方告诉你这边,所以两边看到的是同一个结果。
|
|
380
|
+
- 你这边的只是给你看的:伤害只在扔的那一方算一次;
|
|
381
|
+
它不会让你的屏幕震动、不会发出引怪的声音、不会用掉你的道具,
|
|
382
|
+
也不会掉出你能捡的东西。
|
|
383
|
+
- 和游戏里一样,道具只有扔它的人的攻击才碰得动:
|
|
384
|
+
你的攻击碰不到队友的道具,队友的攻击也碰不到你的。
|
|
385
|
+
- 跟着角色走的效果,在你这边跟着队友的角色走。
|
|
386
|
+
你进房间之前队友就已经扔出去的东西,你这边看不到。
|
|
387
|
+
|
|
388
|
+
* 【用道具时的样子,队友那边也看得到了】
|
|
389
|
+
有的道具用的时候,角色会换成一个专门的姿势。以前队友那边只看得到你的普通动作,
|
|
390
|
+
所以用这些道具的整个过程里,你在队友眼里是定住不动的。
|
|
391
|
+
现在这个姿势、姿势上附带的东西、身上冒出的粒子都会同步。
|
|
392
|
+
有的道具用的时候角色会整个闪一下,有的用完之后一段时间里武器带上效果、
|
|
393
|
+
角色一直闪光、挥砍的样子也跟着变——这些现在队友那边也看得到。
|
|
394
|
+
持续期间那段循环的声音没有同步,免得两个人的声音叠在一起太吵。
|
|
395
|
+
|
|
396
|
+
* 【蛰刺碎片打中敌人时,两边伤害特效喷的方向不一样:修了】
|
|
397
|
+
有些攻击的伤害特效是从攻击的来源朝敌人喷的。以前你这边拿自己这边的敌人位置去算方向,
|
|
398
|
+
可两边的敌人从来不会站在完全同一个点上,来源又几乎贴在敌人身上,
|
|
399
|
+
结果一边是从头顶往上喷,另一边是往旁边喷。现在两边按同一个方向喷。
|
|
400
|
+
|
|
401
|
+
* 【贴着墙扔出的道具,在队友那边往墙里飞:修了】
|
|
402
|
+
有的道具贴着墙扔时,是往离开墙的方向飞的。
|
|
403
|
+
传给队友时「是不是贴着墙」这一项读错了位置,所以在队友那边它往墙里飞。
|
|
404
|
+
|
|
405
|
+
* 【远野有的房间第一次进去没有怪,第二次进去才有:修了】
|
|
406
|
+
这和地图姐没有关系。走进下一个房间时,游戏会先在旁边把下一个房间加载好再切过去,
|
|
407
|
+
而不少相邻房间在游戏内部的名字只差末尾一个字母。
|
|
408
|
+
模组以前靠「名字开头一样」来认「这是当前房间的一部分」,
|
|
409
|
+
于是把还没走进去的下一个房间里的怪,提前登记成了当前房间的;
|
|
410
|
+
你在当前房间是房间客机时,登记的同时会先把这些怪关掉,等房间主机的消息。
|
|
411
|
+
等你真正走进那个房间、又比队友先到(成了那个房间的房间主机),
|
|
412
|
+
模组把这些「已经被关掉」的怪当成了它们本来的样子,于是两边都看不到它们。
|
|
413
|
+
从别的方向再进来就正常了,所以是「第二次才有」。
|
|
414
|
+
现在正在走进去的那个房间,不会再被当成当前房间的一部分。
|
|
415
|
+
|
|
416
|
+
* 【被 Boss 抓住以后,镜头一直抖到换房间:修了】
|
|
417
|
+
有的 Boss 抓住玩家后会让镜头一直抖,等这一招收尾时,游戏再把抖动停掉。
|
|
418
|
+
你是房间客机时,「抓住你、开始抖」是你这边的 Boss 身上的部件做的,
|
|
419
|
+
可「停下来」这一步只在房间主机那边的 Boss 身上跑,传不到你这边,
|
|
420
|
+
所以镜头会一直抖,直到换房间时游戏把所有抖动一起清掉(所以「换图就好了」)。
|
|
421
|
+
现在这一招收尾、Boss 把抓人的部件收起来时,你这边的抖动也一起停。
|
|
422
|
+
之前两次我以为是「死亡时的抖动没关」,改的是别的地方;
|
|
423
|
+
这次的日志证明那里根本没被触发过,真正的原因是这个。
|
|
424
|
+
|
|
425
|
+
* 【队友挨打时的受击效果,不再出现在你这边】
|
|
426
|
+
低血量时挨打,游戏会在挨打的人周围闪一大片暗色,原本只给挨打的人自己看。
|
|
427
|
+
以前这个效果,还有冰冻受伤时的碎晶粒子,会跟着「队友身上的特效」一起同步过来,
|
|
428
|
+
所以你这边会莫名其妙地闪一下。现在受击效果一律不同步。
|
|
429
|
+
|
|
430
|
+
* 【狩猎祈愿那两个房间,后进去的人看不到怪、也看不到队友:修了】
|
|
431
|
+
有的怪会射出东西,而射出来的东西在游戏内部的名字里带着这只怪自己的名字。
|
|
432
|
+
模组是靠名字认怪的,于是把射出来的每一样都当成了一只新怪,
|
|
433
|
+
并要求另一边也照样生成一只——另一边根本做不到,当场报错。
|
|
434
|
+
更糟的是:你后进一个房间时,模组要先把「房间里已经有什么」整份告诉你,
|
|
435
|
+
里面只要夹着一只这种「怪」,整份信息就断在那里。房间里的怪、队友、场景的变化,
|
|
436
|
+
你这边就全都收不到了,一直到你离开这个房间(日志里每次后进那两个房间都是这样)。
|
|
437
|
+
「场景不同步了,比如岩浆爆炸物」应该也是这个原因:那时候后进来的人那边,整个房间都没在同步。
|
|
438
|
+
而且之后如果由你接手这个房间,那些怪在你这边还是关着的,结果连队友那边也跟着看不到了。
|
|
439
|
+
现在怪射出来的东西不再当成怪,而是和别的投射物一样,在你这边照着队友那边的样子射一遍,
|
|
440
|
+
你也看得到,方向也对。
|
|
441
|
+
|
|
442
|
+
* 【深坞里沿着台阶爬的怪,换人接手房间后绕着空气转圈:修了】
|
|
443
|
+
这种怪是贴着表面爬的,碰到拐角就绕过去。先进房间的人离开、由另一个人接手这个房间的怪时,
|
|
444
|
+
以前有两个错:
|
|
445
|
+
- 位置换算漏了它所在那块东西的缩放,把它放到了离原来的台阶将近半格远的地方;
|
|
446
|
+
- 把它的身体一律改成了「会被物理推开」的类型,而它本来只按自己的爬行方式移动、不会被推挤。
|
|
447
|
+
离开表面以后,它每走一小段就以为到了拐角、转个弯,于是就在空中绕着一个小方块一直转。
|
|
448
|
+
这个错不只影响这一种怪:挂在带缩放的物件下面的怪,接手时位置都会偏;
|
|
449
|
+
本来不受物理推挤的怪,接手后都会变成能被推开的。
|
|
450
|
+
现在接手时按真实位置放,身体是什么类型,由原来跑它的那一边告诉你,不再一律改掉。
|
|
451
|
+
|
|
452
|
+
* 【怪叫出来的小怪,现在两边都看得到】
|
|
453
|
+
有些怪打着打着会叫出别的小怪。以前这些小怪只出现在房间主机那边,
|
|
454
|
+
房间客机那边什么都没有,等于在跟看不见的东西打。
|
|
455
|
+
原因是模组以前只会在另一边造「草球」这一种东西,别的都造不出来,干脆就不告诉另一边。
|
|
456
|
+
现在房间主机那边叫出一只小怪时,另一边会照着自己这边同一种怪身上的召唤动作,造出同一只小怪;
|
|
457
|
+
之后它怎么动、掉多少血、什么时候死,都跟着房间主机那边走,和房间里本来就有的怪一样。
|
|
458
|
+
只有确定另一边造得出「同一只」时才这么做;造不出来的,仍然只留在房间主机那边(和以前一样),
|
|
459
|
+
也不会再报错。
|
|
460
|
+
另外有两种会被叫出来的小怪,模组的怪物登记表里一直漏了它们的类型,
|
|
461
|
+
以前是两边各生一只、各打各的。现在补上了,也按上面的方式同步。
|
|
462
|
+
从怪的尸体里跑出来的小怪不在此列:尸体本来就是两边各自播放的,所以仍然是两边各一只。
|
|
463
|
+
|
|
464
|
+
* 【房间里的东西放出来的小怪,现在两边也都看得到】
|
|
465
|
+
还有一些小怪不是怪叫出来的,而是房间里的东西放出来的:
|
|
466
|
+
比如一个会挨打、会往外放飞虫的巢,或者一进去就在房间各处放出几只怪的房间。
|
|
467
|
+
放它们的东西本身不是怪,模组以前不管,于是两边的游戏各放各的:
|
|
468
|
+
你打的是你这边的,队友打的是队友那边的,谁也看不到对方的。
|
|
469
|
+
现在只有房间主机那边会放,放出来的就和别的怪一样同步给另一边,另一边自己不再放。
|
|
470
|
+
刚进房间、还没确定谁是房间主机的那一小会儿,房间放出来的怪先关着不出现(房间里别的怪这时也是停着的);
|
|
471
|
+
确定之后,房间主机那边的才出来,另一边自己放的直接收掉。
|
|
472
|
+
巢本身和以前一样,两边各有一个(两个人打它,两边的巢都会掉血)。
|
|
473
|
+
|
|
474
|
+
* 【被队友从茧里拉起来,不会再直接掉进岩浆了】
|
|
475
|
+
之前以为修过「被岩浆、尖刺弄死的,就换到安全点站起来」,其实那一版从来没生效:
|
|
476
|
+
游戏只在「被烫了一下、还剩血、被送回安全点」时才记「是场景弄的」,
|
|
477
|
+
最后一下直接烫死的时候不记,所以模组一直当成是怪打死的,照样在倒下的地方把人拉起来。
|
|
478
|
+
跳过岩浆的半空中被怪打死也一样,倒下的地方下面就是岩浆。
|
|
479
|
+
两种都是站起来就掉进去:岩浆扣 2 格血,而拉起来只给上限的一半(上限 5 格就是 2 格),等于刚起来又死一遍。
|
|
480
|
+
现在站起来之前先看位置:人陷在岩浆、尖刺这类东西里,或者正下方最先碰到的是它们而不是地面,
|
|
481
|
+
就改在游戏自己记的安全点站起来(和你自己掉进岩浆后被放回去的是同一个地方)。
|
|
482
|
+
|
|
483
|
+
* 【岩浆往上涨、要一直往上跑的那种追逐:改成「双人成行」的玩法】
|
|
484
|
+
以前岩浆是各有各的:每个人游戏里一条,只追自己,两个人其实是各跑各的。
|
|
485
|
+
你会看到落在后面的队友像泡在你的岩浆里,被烫死以后也几乎没法救。
|
|
486
|
+
现在:
|
|
487
|
+
- 岩浆只有一条,两边一样高,追的是落在后面的那个人,一直往上涨,不会因为谁出事停下来或退回去;
|
|
488
|
+
- 被烫到但还剩血:不回自己的安全点,直接回到队友刚才站稳的地方,该扣的血照扣;
|
|
489
|
+
- 被烫死或被怪打死:不出茧、不用打 5 下,大约 3 秒后在队友身边站起来,
|
|
490
|
+
血量是上限的一半,钱和丝都还你;不想等可以按 K 直接回长椅;
|
|
491
|
+
队友那时候要是在半空、或者正被烫着,就等他落地站稳了再起来;
|
|
492
|
+
队友先离开了这个房间,就马上在他最后站稳的地方站起来;
|
|
493
|
+
- 两个人都倒下(一个倒着还没站起来,另一个也倒了)就都回长椅。
|
|
494
|
+
「站起来」由活着的那一边决定:它自己一倒下就不会再把人拉起来,
|
|
495
|
+
所以不会出现一个站起来、另一个被送回长椅;
|
|
496
|
+
- 队友正倒着、不在这个房间、或者他身边已经没有岩浆够不着的地方时,
|
|
497
|
+
你被烫到就按单人的规则回自己的安全点,岩浆退到你脚下(两边一起退)。
|
|
498
|
+
- 后进房间的人,如果岩浆已经涨过了入口,要先穿过岩浆面(会被烫一次)才能回到队友身边。
|
|
499
|
+
这些只在岩浆正在涨的时候生效,其他时候还是原来拉人的规则。
|
|
500
|
+
|
|
501
|
+
* 【一坐就塌的假椅子:两边一起塌】
|
|
502
|
+
以前一个人坐上去、连人带椅子掉下去以后,队友那边这把椅子还好好地立着,要重新进房间才会消失。
|
|
503
|
+
现在队友那边会同时看到地板碎掉、椅子掉下去(站在那块地板上的人也会一起掉下去)。
|
|
504
|
+
掉下去、被赶下长椅、镜头跟着走这些只发生在坐上去的那个人身上,不会拉着队友。
|
|
505
|
+
|
|
506
|
+
* 【会把人关起来的笼子:要两个人都在才会触发】
|
|
507
|
+
一个人去碰笼子底下的那个东西,什么都不会发生:蹲一下、站起来,东西还在原地。
|
|
508
|
+
两个人都紧挨着那个东西站的时候,谁去碰都行,两边会同时触发,把两个人一起关进去、一起带走。
|
|
509
|
+
另一个人不用做任何动作。先下去的那一边触发之后,没跟上的人这时候再去碰,一个人也会触发。
|
|
510
|
+
|
|
511
|
+
* 【被抓进监狱:两个人一起】
|
|
512
|
+
以前只有一个人会被抓走(抓人的东西只看得见它自己那边的角色),另一个人留在外面。
|
|
513
|
+
现在一个人被抓,另一个人也会被一起关进去:被拿走的东西一样,从同一个地方醒来。
|
|
514
|
+
另一个人那时候要是坐在长椅上、正在进出房间、倒下了、或者正被游戏控制着(比如在对话),
|
|
515
|
+
就等他能动了再带走。已经在监狱里的人不会被再抓一次。
|
|
516
|
+
|
|
517
|
+
* 【拿回衣服:两个人都伸手了才会抢】
|
|
518
|
+
两个人都没衣服的时候,先去拿的人会蹲在那里等另一个人,聊天框会告诉两个人。
|
|
519
|
+
另一个人也去拿了,两边才一起抢。队友那边会看到你这边的整段动作
|
|
520
|
+
(以前只看得到你蹲下、然后停在半空)。
|
|
521
|
+
等的时候按跳跃键就不等了,人站起来,想拿随时可以再去拿。
|
|
522
|
+
队友已经拿回衣服了,就不用等,直接抢。
|
|
523
|
+
|
|
524
|
+
* 【棘刺怪:刺卡在半空、打着打着打不到了:修了】
|
|
525
|
+
- 刺卡在半空、只有一根朝下(只出现在房间客机那边):
|
|
526
|
+
棘刺怪长出来的几根刺,在游戏里名字都一样。房间主机那边每长出一根,就把它转到自己的方向;
|
|
527
|
+
房间客机照着做的时候是按名字找刺的,每次找到的都是第一根,
|
|
528
|
+
结果第一根被转了好几遍,其余几根一直朝下,叠在同一个位置。
|
|
529
|
+
刺和刺之间是会互相撞的,射出去的一瞬间就撞在一起停住了,看起来就是半空里卡着一根朝下的刺。
|
|
530
|
+
(上一版说「方向也对」,其实没对。)
|
|
531
|
+
现在房间客机转的就是自己刚照着长出来的那一根,几根刺的方向、射出去的样子都和房间主机那边一样。
|
|
532
|
+
- 打着打着打不到了(最后一下是房间客机打的时候):
|
|
533
|
+
棘刺怪的血打光以后,会先把身体关掉(从这时起就打不到了),再从「挨了一下」之后进入的状态里自爆。
|
|
534
|
+
房间客机打出的最后一下,传到房间主机那边只是「血没了」,怪并不知道自己挨了打;
|
|
535
|
+
它那时要是还在闲逛、没发现人,就会一直浮在那里:不炸,也打不到,两边看到的都一样。
|
|
536
|
+
现在房间客机打出最后一下时,房间主机那边的怪会先收到「挨了一下」,和被房间主机打死时一样,照常自爆。
|
|
537
|
+
这一点对所有怪都一样:被房间客机打死的怪,房间主机那边在它死之前也会先收到「挨了一下」。
|
|
538
|
+
- 墙上插着的、能打碎的那种刺,以前被模组当成了棘刺怪本身,房间客机打它没反应。现在两边都能打碎。
|
|
539
|
+
|
|
540
|
+
* 【房间客机那边的怪:离得很远很糊、身体不动、场景没反应、有时打不到:修了】
|
|
541
|
+
这几个问题是在一场 boss 战里一起发现的,但都是模组整体的毛病,很多怪都受影响,这次一起修了。
|
|
542
|
+
- 离得很远、很模糊(但能打到):
|
|
543
|
+
怪往背景里退、或者从背景里冲出来,只是在「前后」这个方向上动。
|
|
544
|
+
模组以前只同步上下左右,前后用的是房间客机自己那份,而那份常常停在半路:
|
|
545
|
+
比如 boss 从背景里升起来的时候,客机那边的 boss 就一直停在远处的背景里打完整场。
|
|
546
|
+
现在前后也跟着房间主机走。会飞进背景、从背景里出来的怪有很多种,这次都一起修了。
|
|
547
|
+
- 身体不动(看不到横扫、砸地这些动作):
|
|
548
|
+
有几种怪(其中有几个 boss)的身体动作是用另一套动画系统播的,模组以前完全不同步这一套,
|
|
549
|
+
房间客机那边只看得到它摆着一个姿势不动。现在同步了。
|
|
550
|
+
- 场景没反应(地板不碎、天上不掉石头):
|
|
551
|
+
boss 打碎地板、让石头从天上掉下来,都是它去指挥房间里的东西。
|
|
552
|
+
房间客机那边的怪找不到这些东西,所以什么都不会发生。
|
|
553
|
+
现在告诉客机「是哪个场景里的哪一个东西」,客机那边也会碎、会掉,伤害也一样会打到人。
|
|
554
|
+
- 怪对整个房间「喊一声」,房间里的机关跟着动:
|
|
555
|
+
很多怪会向整个房间广播一个消息,比如镜头换个取景、boss 被打晕时碎掉的地板马上长回来、
|
|
556
|
+
空中的石头炸掉、灯亮起来、音乐和人群跟着变。以前只有房间主机那边的房间听得到,客机那边这些都不会发生。
|
|
557
|
+
现在客机那边的房间也会跟着动。和角色本人有关的那几种(被打中、被抓住、弹反之类)不传,
|
|
558
|
+
因为那是房间主机自己的角色身上发生的事,传过去会变成客机的角色也「被打中」「被抓住」。
|
|
559
|
+
- 有时打不到:
|
|
560
|
+
很多怪藏起来、钻地、无敌的时候,会换到一个「打不到」的碰撞层,出来再换回来。
|
|
561
|
+
模组以前不同步这个,房间客机那边的怪一直停在它一开始的层上:出来了也打不到,藏着反而打得到。
|
|
562
|
+
现在同步了,后进房间的人也会拿到当前的状态。之前一些「这只怪怎么都打不到」,可能也是这个原因。
|
|
563
|
+
这一版改了同步的数据格式,两个人都要装同一个版本(版本不一样会进不了房间,模组会提示)。
|
|
564
|
+
|
|
565
|
+
* 【房间客机那边的怪:看不到变色和闪光、听不到叫声、镜头不跟着震:修了】
|
|
566
|
+
这些以前只在房间主机那边发生,房间客机那边的怪是「哑的」:
|
|
567
|
+
- 声音:怪的叫声、喊声,还有很多从一组声音里随机挑一个来放的音效(攻击、落地、蓄力之类),
|
|
568
|
+
以及声音的淡入淡出、循环、停止。
|
|
569
|
+
- 变色和闪光:怪蓄力时变亮、变红,淡出、淡入,身上一闪一闪,怪身上的光变化。
|
|
570
|
+
- 镜头:怪砸地、咆哮、大招时的镜头震动和白闪,包括一直震到被叫停的那种。
|
|
571
|
+
现在这些房间客机那边也都有了,和房间主机同时发生。网络卡了、补发旧数据时,早该停的震动和变色也不会卡着不停。
|
|
572
|
+
例外:怪抓住、刺中、打伤房间主机的角色时(连同紧接着的那一整套动作)的震动、白闪,以及在那个角色身上放的声音,
|
|
573
|
+
只留在房间主机那边——那是打在房间主机角色身上的效果,客机的角色并没有被抓住。咆哮的震动和声音两边都有。
|
|
574
|
+
另外,整个画面变黑、变模糊那种「全屏过场」不传:那是房间主机那边自己的过场,
|
|
575
|
+
传过来会把客机的画面也盖住。
|
|
576
|
+
|
|
577
|
+
* 【场景里被打会有反应的东西(会炸的石头、灵丝轴、墙、宝箱、铃、拉杆、藤蔓之类):两边一定一起变】
|
|
578
|
+
以前只有一部分东西(可破坏物、拉杆、草、装钱的袋子等)是「打的人把这一下发给对方,对方原样重放」,
|
|
579
|
+
其余的全靠「你屏幕上队友那一刀的复制品」刚好砍到才算。复制品画在你的游戏认为队友所在的位置,
|
|
580
|
+
和队友实际的位置差一点点,擦边的一刀就会落空;有的东西还只在「这台游戏自己的角色」站在旁边时才认这一下,
|
|
581
|
+
所以会出现「队友那边炸了,你这边没炸」。这不是丢包。
|
|
582
|
+
现在场景里所有被打会有反应的东西都改成:打的人把这一下发过去,对方原样重放。
|
|
583
|
+
刀、扔出去的工具、技能放在场景里的攻击都算。
|
|
584
|
+
「当时站没站在旁边、站在墙的哪一边」这类判断,大多数也按打的人那边算;
|
|
585
|
+
少数东西直接看「这台游戏自己的角色」站在哪,这种在你这边重放时还是看你的角色,偶尔可能对不上。
|
|
586
|
+
很多东西(单向墙、宝箱、铃、拉杆、藤蔓等)不是靠「挨打」、而是靠「刀碰到」来反应的,这些也一样:
|
|
587
|
+
打的人那边刀碰到、东西真的有了反应,才发过去让对方重放;东西没认这一下(比如站得太远、打错了边),就不发。
|
|
588
|
+
队友那一刀的复制品只负责画出动作,不再碰任何场景物件。
|
|
589
|
+
- 给东西的规则不变:直接给的丝和钱只给打的人(以前队友打灵丝轴,你也会白拿丝,这次一起修了);
|
|
590
|
+
掉在地上的东西两边各掉一份,各捡各的。
|
|
591
|
+
- 把人弹起来的泡泡和蘑菇荚、回血的脓包和飞虫、打墙时的弹刀、砍尖刺冒的火花,只和打的人自己有关,
|
|
592
|
+
不同步,各玩各的。
|
|
593
|
+
- 重放永远不会作用到你自己的角色:不会把你弹起、推开、弄伤,也不会给你东西。
|
|
594
|
+
- 怪物不在这次改动里:同步的怪本来就是把打的结果发过去。
|
|
595
|
+
|
|
596
|
+
* 【新增:两边状态自动对比,只写日志,不改游戏】
|
|
597
|
+
两个人在同一个房间时,两边的游戏每隔几秒互相核对一次这个房间的状态:
|
|
598
|
+
场景物件(墙、石头、拉杆、宝箱、灵丝轴、草……)现在是什么样、存档里记下的世界变化、
|
|
599
|
+
怪物在不在、剩多少血、共享的剧情标记。
|
|
600
|
+
某样东西两边不一样,而且两边都已经保持了好几秒(说明不是消息还在路上),
|
|
601
|
+
日志里就会写一段 [State check]:两边各是什么、各保持了多久、谁是房间主机、两个人站在哪,
|
|
602
|
+
以及最近两分钟里这个东西上两边来回过哪些攻击、重放了没有、有没有反应。
|
|
603
|
+
以后遇到「你那边变了我这边没变」,不用再靠你们回忆和描述,日志里直接有。
|
|
604
|
+
- 有些东西本来就会不一样(只认自己角色站位的区域、正在说话的角色、随机乱动的小东西),
|
|
605
|
+
这些不单独报,只在离开房间时汇总列一下。
|
|
606
|
+
- 队友的攻击在你这边没法重放时(找不到那个东西、那个东西在你这边是关着的等),
|
|
607
|
+
日志里也会写 [Hits] 说明原因。以前这种情况是悄悄跳过的。
|
|
608
|
+
- 流量很小:平时每 4 秒一条几百字节的摘要,只有对不上的时候才多发一点。
|
|
609
|
+
|
|
610
|
+
* 【队友的「残影」:修了】
|
|
611
|
+
你刚离开一个房间、队友又恰好在这时进了那个房间,服务器还以为你在那里,
|
|
612
|
+
会告诉你「队友进来了」——可你已经到了下一个房间。
|
|
613
|
+
结果下一个房间里会多出一个一动不动的队友,而且所有「等两个人都到」的地方都当队友在场,
|
|
614
|
+
会一直等一个其实不在的人,直到你再换一次房间。
|
|
615
|
+
两个人的日志里确实出现过(701 次换房间里有 3 次)。
|
|
616
|
+
现在「谁进了房间」的消息带上了房间名,和你所在的房间对不上就直接丢掉。
|
|
617
|
+
这一条改了同步的数据格式,两个人都要装这一版。
|
|
618
|
+
|
|
619
|
+
* 【boss 开打前,两个人可能互相干等:修了】
|
|
620
|
+
有的 boss 要等两个人都走完开场才开打。boss 只在房间主机的游戏里真正运行,
|
|
621
|
+
它开场说的话会发给另一个人,另一个人按自己的节奏看,boss 不会停下来等。
|
|
622
|
+
房间走到开打那一刻时,还没看完这些台词的一方先不算「看完了」,这是对的;
|
|
623
|
+
但以前看完之后,没有任何地方再补上这一句,两边就一直互相等,直到有人离开房间。
|
|
624
|
+
(这和「两个人都进了 boss 范围」是两回事,那个是另一条消息,没有问题。)
|
|
625
|
+
现在台词一看完就会告诉对方。等人的时候每 30 秒提示一次,和其他等人的地方一样。
|
|
626
|
+
|
|
627
|
+
* 【两个人都要选「是」的地方(接愿望、开始赛跑):队友收回之后,你这边还记着队友的「是」:修了】
|
|
628
|
+
队友先选了「是」在等你,后来又收回了(选了「否」、对话结束、等超时、或者离开了房间),
|
|
629
|
+
你这边以前不知道,还当队友在等。你这时再选「是」,就会直接成立,
|
|
630
|
+
但队友那边已经不算了,变成只有你一个人接了愿望、或者只有你开跑。
|
|
631
|
+
现在队友一收回,你这边马上知道,聊天框会说「X 的「是」已经不算数了」。
|
|
632
|
+
|
|
633
|
+
* 【赛跑:两个人都开跑以后,两边会不停地互相发「我准备好了」:修了】
|
|
634
|
+
不影响玩,只是白占网络、刷日志。现在回一次就停。
|
|
635
|
+
|
|
636
|
+
* 【拿回衣服:你蹲着等的时候离开了房间,队友那边还当你在等:修了】
|
|
637
|
+
以前队友这时去拿,会以为两个人都伸手了,结果只有队友那边抢了。
|
|
638
|
+
现在你一离开,队友那边就知道你不等了。
|
|
639
|
+
|
|
640
|
+
* 【跳蚤小游戏:都赢过之后,结尾可能一直等不到队友:修了】
|
|
641
|
+
结尾要两个人都赢过所有项目才会继续,每一边只在「全赢了」变化时告诉对方一次。
|
|
642
|
+
有两种情况会漏掉:一方断线重连之后,对方不会再说第二遍;
|
|
643
|
+
或者进游戏时一边加载得比另一边慢,先准备好的一边说了,另一边还没准备好,就把它扔了。
|
|
644
|
+
漏掉以后结尾就一直等着。现在两种情况都会补上。
|
|
645
|
+
|
|
646
|
+
* 【boss 的吼叫:以前只吼得住房间主机,现在两个人都会被吼住】
|
|
647
|
+
boss 吼叫时会把玩家定住(摆出迎敌的姿势),还会放出一圈吼叫的波纹。
|
|
648
|
+
这个动作只在房间主机的游戏里执行,所以以前只有房间主机会被吼住,
|
|
649
|
+
另一个人照样能动,也看不到波纹。
|
|
650
|
+
现在另一个人的游戏里也会吼一次,吼住的是那边自己的角色,吼叫结束时两边一起松开。
|
|
651
|
+
吼叫结束后才进房间的人不会被补吼。
|
|
652
|
+
吼到一半房间主机离开、由另一个人接管 boss 时,也会照常松开,不会一直被定住。
|
|
653
|
+
|
|
654
|
+
* 【有的 boss 的头在房间客机那边一直抖:修了】
|
|
655
|
+
有的 boss 身体和头是分开的两部分(头是挨打的那部分)。
|
|
656
|
+
以前房间客机那边把头单独复制了一份,放在身体外面,只按网络传来的位置走:
|
|
657
|
+
位置每秒来几次,中间靠猜;而身体是本地动画一帧一帧带着动的,
|
|
658
|
+
所以头一直在抖,和身体也对不齐。
|
|
659
|
+
现在头就是身体复制品里原本那颗头,跟着身体的动画一起动,不再单独同步位置。
|
|
660
|
+
|
|
661
|
+
* 【掉进岩浆后,两边的地块对不上:修了】
|
|
662
|
+
有的 boss 房间里,玩家掉进岩浆、复活的那一刻,碎掉的地块会全部立刻升回来,好让人有地方落脚。
|
|
663
|
+
以前这只发生在掉下去那个人的游戏里,另一个人那边的地块还碎着,
|
|
664
|
+
会看到队友站在「还没升上来」的地方,两边的地块也就一直对不上。
|
|
665
|
+
现在谁掉岩浆复活了,队友那边的地块也一起升回来。
|
|
666
|
+
岩浆会上涨的房间不算在内,那里有自己的双人规则。
|
|
667
|
+
这一条改了同步的数据格式,两个人都要装这一版。
|
|
668
|
+
|
|
669
|
+
* 【队友的名字盖住自己的名字:修了】
|
|
670
|
+
两个人站在一起时,队友头上的名字以前总是画在你自己的名字上面。
|
|
671
|
+
之前已经把队友的人物挪到了你自己人物的稍后面一点,名字当时漏了,现在名字也挪到同一个深度。
|
|
672
|
+
|
|
673
|
+
* 【队友的人物颜色比自己的浅:修了】
|
|
674
|
+
有的房间在某些区域会给角色统一染上一层色调(比如偏暗)。
|
|
675
|
+
游戏靠角色走进这些区域来发现要染谁,而队友的人物为了不触发机关,放在区域发现不了的层上,
|
|
676
|
+
所以一直是原色,看起来比你自己的人物浅。
|
|
677
|
+
现在你自己的人物染色变化时,队友的人物跟着一起变(渐变也一样),站在一起时颜色相同。
|
|
678
|
+
两个人在同一房间的不同区域时,队友的人物用的是你所在区域的色调。
|
|
679
|
+
|
|
680
|
+
* 【有一场 boss 战的落石两边对不上:先修这一处】
|
|
681
|
+
boss 下令落石以后,落哪块石头、落在哪、隔多久、下落多快,以前是两边游戏各掷各的骰子,
|
|
682
|
+
所以两个人看到的落石不一样:你这边砸空的石头,队友那边可能正砸在身上。
|
|
683
|
+
现在落石的随机部分只在房间主机的游戏里掷:落哪块、落在哪、什么角度、多快、转多快,
|
|
684
|
+
这些都在石头出发的那一刻定下。出发那一刻的结果传给另一个人,之后两边各自让石头往下落,
|
|
685
|
+
下落本身没有任何随机,所以两边落的一样;网络卡住时石头也照样往下落,不会停在半空。
|
|
686
|
+
下落途中主机也不再每帧发石头的位置:一块石头只发「出发」和「停下」两条小消息,网络更轻。
|
|
687
|
+
另一个人看到的落石和 boss 本身一样,有一点网络延迟。
|
|
688
|
+
石头砸中另一个人时,那一边先扣血、石头当场炸开,再告诉房间主机,主机那边的石头也炸开消失。
|
|
689
|
+
同类的东西也改成了一样的做法:随机数归房间主机,飞行归各自的游戏按原本的规则去跑。
|
|
690
|
+
包括另外两种直线落下的机关、越落越快的滚石、落地会弹起来的钟铃。
|
|
691
|
+
它们的加速和重力在两边每个物理步都一模一样地算,所以落点一致;落地、弹起这种「转折」仍由主机决定:
|
|
692
|
+
每碰到一次东西,主机补发一条小消息,告诉另一边碰完之后怎么走。
|
|
693
|
+
其他房间里类似的随机机关还没有改,之后一类一类地改。
|
|
694
|
+
这一条改了同步的名单和数据格式,两个人都要装这一版。
|
|
695
|
+
|
|
696
|
+
* 【有一场 boss 战的飞针两边对不上:修了】
|
|
697
|
+
以前这些飞针从哪里、以什么角度、按什么先后射出,都是两边游戏各掷各的骰子,
|
|
698
|
+
而且各自只瞄准自己游戏里的人物,所以两个人看到的飞针完全不一样。
|
|
699
|
+
现在和落石一样:随机的部分只在房间主机的游戏里掷,针一出发就把位置、角度和速度传给另一个人,
|
|
700
|
+
之后两边各自让针飞,飞行途中不发位置。
|
|
701
|
+
瞄准的是 boss 当时正盯着的那个人(以前房间主机那边永远瞄准房间主机自己)。
|
|
702
|
+
跟这些飞针配套、散在场地里的针也改成了同一个做法,两边看到的是同一根针在做同一件事。
|
|
703
|
+
以后凡是 boss 发动、要瞄准玩家的机关,都按这个规则瞄 boss 正盯着的人;玩家自己的动作不受影响。
|
|
704
|
+
|
|
705
|
+
* 【有的怪判断「玩家在哪一边」时只看房间主机:修了】
|
|
706
|
+
不少怪(包括几个 boss)会看玩家在某条线的左边还是右边,来决定下一招往哪边打。
|
|
707
|
+
以前这一步看的永远是房间主机自己的人物,现在看的是这只怪正盯着的那个人。
|
|
708
|
+
|
|
709
|
+
* 【有一种从屏幕顶上落下的滚石,只按房间主机的屏幕落:修了】
|
|
710
|
+
有一场 boss 战里,有一种滚石是从屏幕顶上落下来的。以前这个「屏幕」永远是房间主机自己的屏幕,
|
|
711
|
+
boss 盯着另一个人、两个人又一高一低时,石头会从主机的屏幕上方落下,在另一个人那边可能凭空出现在半空。
|
|
712
|
+
现在按 boss 正盯着的那个人来估算:以那个人的位置为镜头中心,再像游戏自己那样把镜头限制在房间边界之内。
|
|
713
|
+
那个人抬头、低头看的时候,真实的镜头还会再偏一点,这一点没有算进去。
|
|
714
|
+
|
|
715
|
+
* 【房间主机中途离开时,接手的一方有的怪和机关会卡住:修了】
|
|
716
|
+
房间主机离开后,另一个人的游戏会接手房间里正在进行的一切,每只怪从它当时所处的状态接着跑。
|
|
717
|
+
以前接手时,状态里只保留少数几种「持续进行」的动作,碰撞检测、逐步加速和减速都会被丢掉,
|
|
718
|
+
于是正在冲撞的怪撞墙后可能不停,正在下落或飞行的东西可能停在半空。现在这几种动作也会保留(两百多种怪用到)。
|
|
719
|
+
自己会飞的东西(落石、飞针这类)接手时还会带上当时的速度、重力和角度,从半空接着飞。
|
|
720
|
+
|
|
721
|
+
* 【房间客机那边,很多怪的复制品会被错误地加上重力:修了】
|
|
722
|
+
很多怪会在自己的状态机里把自己从所在的分组里拿出来。
|
|
723
|
+
以前为了让怪放下的东西能落地,加过一条「被放出来的东西恢复自己的物理」,但它把怪自己也算了进去:
|
|
724
|
+
房间客机那边这些怪的复制品变成了受重力、带碰撞的物体,而复制品的位置本来只该由网络决定。
|
|
725
|
+
重力攒下的速度从不清零,可能表现为这些怪在房间客机那边偶尔往下抖一下,或贴着地形时被推开一点。
|
|
726
|
+
现在只有真正被放出来的东西才恢复物理,怪自己的复制品保持只听网络的。
|
|
727
|
+
|
|
728
|
+
* 【有的任务线索,房间客机那边可能查看不了:修了】
|
|
729
|
+
有一类要蹲下查看、再顺着痕迹去找的线索,名字里带着某种怪的名字,
|
|
730
|
+
模组就把它们当成了那种怪,交给房间主机的游戏去跑。房间客机那边看到的只是复制品,查看了也没反应。
|
|
731
|
+
现在这些线索不再被当成怪,两个人各自在自己的游戏里查看。
|
|
732
|
+
|
|
733
|
+
* 【打中由房间主机运行的东西时,「叮」的那一下只算在自己这边:修了】
|
|
734
|
+
有的东西被打中时只是「叮」一声、不掉血,却会因此改变动作:会落下来的钟被打偏,带盾的怪挡住以后反击。
|
|
735
|
+
这些东西里,有的只在房间主机的游戏里运行,另一个人那边看到的是复制品。以前另一个人打中复制品,
|
|
736
|
+
只有自己这边「叮」一声、自己被弹开,房间主机那边的钟照样往下落,怪也不知道自己挡过一下。
|
|
737
|
+
现在这一下会转给房间主机,两边的钟一起被打偏,怪一起反应。
|
|
738
|
+
钟这种自己会飞的东西,打的人这边当场就被打飞,不用等消息。房间主机那边以打的人打中的位置为准,
|
|
739
|
+
再补上消息路上耽误的那一小段,所以那边会看到钟跳一下,跳到它在打的人那边正飞到的地方,再接着飞。
|
|
740
|
+
带盾的怪这类要改动作的,打的人那边还是要等消息走一个来回(大约零点二到零点三秒)才看到反应。
|
|
741
|
+
|
|
742
|
+
* 【房间里「叮」一下就会动的东西,以前只在打的那个人那边动:修了】
|
|
743
|
+
房间里有上千个东西被「叮」到时会改变状态:挂着的钟被往上打飞、地雷被打坏、机关被敲响、平台晃动等。
|
|
744
|
+
以前「叮」只算打的人自己的(火花和把人弹开本来就是各自的),另一个人那边的东西完全没反应。
|
|
745
|
+
现在打的人那边的东西动了,这一下就发给另一个人,那边的同一个东西做同样的反应。
|
|
746
|
+
只有火花、把人弹开这类的「叮」,仍然各自算各自的。
|
|
747
|
+
|
|
748
|
+
* 【机关和被打中的东西,随机的部分两边不一样:改成谁触发谁掷骰子】
|
|
749
|
+
地雷弹出时的翻转、角度和落点,钟被往上打飞时的角度,以及其他机关在触发那一刻掷的骰子,以前两边各掷各的,
|
|
750
|
+
所以同一个地雷在两个人那边落在不同的地方。
|
|
751
|
+
现在机关被谁走近、东西被谁打中,就在谁的游戏里掷骰子,骰子跟着「触发了」「打中了」的消息一起发给另一个人,
|
|
752
|
+
那边用同一副骰子,所以结果一样。每一个掷骰子的动作开始前都记一次,中间音效之类多掷少掷也不会错开。
|
|
753
|
+
只管触发那一刻当场掷的;过一会儿才掷的(比如钟落地几秒后复位时换的样子)仍然各掷各的。
|
|
754
|
+
两个人几乎同时(零点一秒以内)触发同一个机关时,两边会各用自己的骰子。
|
|
755
|
+
另一个人那边收到消息时,正在落的钟已经多落了一点,所以被打飞的起点会略低一些。
|
|
756
|
+
|
|
757
|
+
* 【跳蚤小游戏:都要两个人一起开;下劈/飞针那个改成各玩各的;另外两个,不是房间主机的一方打跳蚤、得分、被撞都接上了】
|
|
758
|
+
- 三个游戏都不能一个人开了,和开始比赛一样:两个人都要各自去跟主持游戏的跳蚤说话、在同一个游戏选「是」,
|
|
759
|
+
才会一起开始。先选的人会停在选项上等对方,最多 20 秒;选「否」就可以收回。下劈/飞针那个也一样,
|
|
760
|
+
一起开始以后各玩各的。
|
|
761
|
+
- 下劈/飞针那个:以前两个人用的是同一批跳蚤,一个人踩掉一只,另一个人就少一只能落脚的,很快就掉下去。
|
|
762
|
+
现在两边各出各的跳蚤:各自的游戏给自己放跳蚤,对方看不见;得分、难度、存分都和一个人玩时一样,
|
|
763
|
+
对方的攻击也碰不到你的跳蚤。所以你会看到对方在踩一些你看不见的跳蚤。
|
|
764
|
+
- 另外两个还是两个人用同一批跳蚤,由房间主机的游戏放出来。以前不是房间主机的一方打中跳蚤,
|
|
765
|
+
只有自己这边「叮」一声,主机那边的跳蚤没反应;分也是按自己「叮」的次数记的,有一个游戏根本记不对。
|
|
766
|
+
现在这一下和打怪、打钟一样转给房间主机,两边的跳蚤一起反应。得分和跳蚤掉地算的失败,
|
|
767
|
+
都由主机那边的跳蚤说了算,再照样传给另一个人:分是两个人一起的,谁打中的、谁躲过去的,两个人各加一分。
|
|
768
|
+
不是房间主机的一方,分要等消息去主机再回来才跳。
|
|
769
|
+
- 要把跳蚤一直打在空中、不让它落地的那个游戏:以前不是房间主机的一方打中跳蚤,要等消息去主机再回来
|
|
770
|
+
它才弹起,这段时间它还在往下掉,看起来像穿过了你的攻击。现在它在你自己的游戏里当场弹起来:
|
|
771
|
+
往哪儿飞、飞多高由你这边掷的骰子定,主机那边照着同样的骰子让它飞同一条路,中途出现的东西也一样。
|
|
772
|
+
分还是等主机那边算过才跳。要是对方几乎同时也打中了同一只,或者你打得太晚、主机那边它其实已经落地了,
|
|
773
|
+
都以主机那边为准,你这边的跳蚤会回到主机那边的样子。
|
|
774
|
+
- 这两个游戏的跳蚤是房间主机的游戏放的,所以主机一起玩过、这一局结束以后,另一个人的这一局也跟着结束,
|
|
775
|
+
分照常存下。
|
|
776
|
+
- 会撞人的那个游戏:以前不是房间主机的一方根本不会被撞到。现在被撞在各自的游戏里当场算:
|
|
777
|
+
你看到的东西碰到你,你就被撞开,不等消息来回;往哪边撞跟着它飞的方向,越撞越累、撞得越远也按你自己的算。
|
|
778
|
+
对方被撞不影响你。
|
|
779
|
+
- 同一个游戏里,以前两边的平台各升各降,两个人站的平台高低对不上;中途出现的其他东西也是两边各出各的。
|
|
780
|
+
现在这些都听房间主机那边的:另一个人那边的平台还在自己游戏里照常动,只是按主机的指令动,会晚一点点;
|
|
781
|
+
中途出现的东西由主机的游戏放出来,两边看到的是同一个,它要瞄人时,每次在你们两个里随机挑一个;
|
|
782
|
+
另一个人这一局已经结束了,就只瞄还在玩的人。
|
|
783
|
+
- 另一个共享的游戏中途出现的东西,以前也是两边各出各的;现在和跳蚤一样由房间主机的游戏放出来,
|
|
784
|
+
谁打中都转给主机。
|
|
785
|
+
|
|
786
|
+
* 【打中、碰到就会动的东西,在你自己这边当场反应:统一成了一套做法】
|
|
787
|
+
这类东西由房间主机的游戏运行,另一个人那边看到的是复制品:会落下来的钟、要一直打在空中的跳蚤、
|
|
788
|
+
碰到人就炸开的石头。以前三样各有各的一套,现在合成一套:
|
|
789
|
+
- 你打中或碰到它,它在你这边当场就照游戏原本的样子反应:被打飞、弹起、炸开,连同声音和特效,不等消息;
|
|
790
|
+
- 反应里会动到两个人共有的东西的那一部分,你这边不做,只由房间主机那边做一次,再照常传给你:
|
|
791
|
+
加分、存档、掉钱、放出怪物之类,所以不会算两次;
|
|
792
|
+
- 房间主机收到后,把它放到你打中、碰到时它在你那边的位置,用你这边掷的骰子做同样的反应,
|
|
793
|
+
补上消息路上耽误的那一小段,同时回一句「收到了,它现在在做什么」;
|
|
794
|
+
- 回话到之前,主机那边发来的这个东西的动作都是它还没收到时的,你这边先压着;回话说主机那边也是一样的反应,
|
|
795
|
+
压着的就丢掉(你这边已经演过了);主机那边它已经变了样(比如早就落地了),你这边就马上改回主机那边的样子,
|
|
796
|
+
压着的按顺序补上;
|
|
797
|
+
- 反应做完,它接下来怎么走(落地、飞走、复位)由主机那边说了算,你这边不再自己往下演,免得同一声响两次。
|
|
798
|
+
和以前比能看出来的:碰到你炸开的石头,两边炸在同一个地方了(以前主机那边是在它自己落到的地方炸的)。
|
|
799
|
+
以后再有这一类东西,只要在名单里给它标上就行。
|
|
800
|
+
这一条改了同步的数据格式,两个人都要装这一版。
|
|
801
|
+
|
|
802
|
+
* 【玩着玩着游戏直接关掉、什么提示都没有:修了】
|
|
803
|
+
到现在一共遇到过三次,三次是同一个原因:
|
|
804
|
+
- 先是某段代码一下子调用得太深,把游戏的「栈」用光了(栈溢出)。这本来只算一个普通错误:
|
|
805
|
+
游戏的运行时会把它变成一条报错,这一帧没做完的事就不做了,游戏接着跑;
|
|
806
|
+
- 可运行时收拾这种错误时,用的是它自己生成的一小段代码,这段代码没把栈对齐好;
|
|
807
|
+
偏偏 Steam 的游戏内界面(Shift+Tab 那个)在系统里挂了钩子,会从这段代码底下经过,
|
|
808
|
+
于是游戏在 Windows 里直接崩掉,连报错都来不及留下;
|
|
809
|
+
- 现在模组一启动,就把那一小段代码改成先把栈对齐再往下走。以后再发生栈溢出,只会在日志里留一条报错,
|
|
810
|
+
不会再闪退。
|
|
811
|
+
这一条在测试里原样复现过同样的闪退(同一个运行时、同一个崩溃位置),改完后确认不崩了。
|
|
812
|
+
0.4.47:调用得太深的那段代码也找到了,是模组自己的:队友用道具时,你这边道具的复制品第一次生成某样东西
|
|
813
|
+
(比如一次爆炸),模组会先把它换成一份私有的副本;游戏发现这份副本还没准备好,就先准备、再生成一次,
|
|
814
|
+
而这第二次生成又被模组换成了新的副本……一层套一层,直到栈用光。现在副本不会再被复制第二次。
|
|
815
|
+
(0.4.46 里这个错误不再闪退,而是游戏卡死——错误发生在游戏自己的底层代码中间,收拾完也回不去了。
|
|
816
|
+
以后万一再有别的栈溢出,也可能是卡住而不是闪退:关掉游戏告诉我,日志里会写明是哪段代码。)
|
|
817
|
+
|
|
818
|
+
* 【有一场遭遇战:一个人进去以后,外面的人那边门也关了,进不去:修了】
|
|
819
|
+
规则一直是:遭遇战的门只对走进去的人关上,外面的人还能进去帮忙,进去以后就出不来。
|
|
820
|
+
大多数遭遇战的门是「把人锁进去」时关的,这一步只在走进去的人那边做;
|
|
821
|
+
但有一场遭遇战的入口门,是在战斗开始时听到一声「开打了」才关的,两边的游戏都会听到这一声,
|
|
822
|
+
所以没进去的人那边门也关了(上次一个人倒在里面,另一个人进不去救,就是这样)。
|
|
823
|
+
现在这种门,在你走进战斗区域之前一直开着,你走进去时才在身后关上。
|
|
824
|
+
|
|
825
|
+
* 【有个会飞的 boss 扔出的飞刃,两个人看到的方向不一样:修了】
|
|
826
|
+
一场战斗只在一个人的游戏里真正在跑,另一个人看到的是照着它演的复制品。
|
|
827
|
+
这个 boss 扔飞刃时,先把飞刃转成和自己一样的朝向,飞刃再按自己的朝向决定往左还是往右飞。
|
|
828
|
+
「转朝向」这一步以前没传给另一个人,所以另一个人那边的飞刃朝向是随便的,大约一半时间往反方向飞:
|
|
829
|
+
两个人看到的飞刃不一样,躲的也不是同一把。现在这一步照跑战斗那边的结果传过去。
|
|
830
|
+
同一类漏掉的还有几种,一起按同样的办法补上了:
|
|
831
|
+
- 另外几个 boss 按自己朝向发出去的剑气、火球、旋风,在另一个人那边停在原地不动;
|
|
832
|
+
- 怪甩出去、推出去、摆到某个位置的东西,在另一个人那边没被甩、没被推、没摆过去;
|
|
833
|
+
- 怪给扔出去的东西设的伤害,另一个人那边没设上,被打到时掉的血可能不一样。
|
|
834
|
+
另外,这个 boss 出手前手里的飞刃会慢慢变大,另一个人那边以前一直停在刚开始的大小,现在也跟着变大。
|
|
835
|
+
这一条改了同步的数据格式,两个人都要装这一版。
|
|
836
|
+
|
|
837
|
+
* 【被怪「抓住再连斩」时,怪在没跑战斗的那个人那边不停下来砍:修了】(0.4.49)
|
|
838
|
+
有些怪(包括好几个 boss)的招式是先用刀、爪之类的部位抓住人,然后原地连砍一串。
|
|
839
|
+
以前只有真正在跑战斗的那一边(主机)能做出这套连斩。另一个人被抓住时,他那边只有自己被定住挨打,
|
|
840
|
+
怪却照样飞走了;主机那边的怪也不知道抓到了人,根本不停。
|
|
841
|
+
现在和「被石头砸到」「打跳蚤」一样,被抓的人这边先放,再传给主机:
|
|
842
|
+
- 被抓住的那一刻,你这边的怪马上停下,对着你把整套连斩一口气打完
|
|
843
|
+
(把你定住、刀光、震屏、最后那一下都在你这边,不用等网络);
|
|
844
|
+
- 同时告诉主机,主机那边的怪也打同一套,但只做怪自己那部分:
|
|
845
|
+
定住人、刀光、震屏、最后那一下这些是冲着「被抓的人」的,主机那边跳过,不会去抓、去打主机自己的角色;
|
|
846
|
+
- 连斩打完以后,怪接下来怎么走,仍由主机那边说了算。
|
|
847
|
+
这是按「抓住再连打」这一整类做的:游戏里四十多种会这样抓人的怪都走同一条路,不只是这一个 boss。
|
|
848
|
+
已知的限制:
|
|
849
|
+
- 你看到的怪比主机那边晚一点(网络延迟)。如果你是在它一招快收尾时才被抓住,主机那边的它可能已经收招,
|
|
850
|
+
主机就不认这次抓人,你这边的连斩会在大约一个网络来回之后停下,改回主机那边的样子;
|
|
851
|
+
- 主机收到消息时,会先把怪放回你被抓住的位置再开始连斩,所以主机那边会看到怪往回闪一下;
|
|
852
|
+
- 连斩打完以后,你这边的怪会多停大约一个网络来回,等主机那边的下一步。
|
|
853
|
+
|
|
854
|
+
* 【有的遭遇战打完不开门、有的 boss 房进去找不到 boss:修了】(0.4.50)
|
|
855
|
+
这两个是同一个根:
|
|
856
|
+
- 进一个房间时,模组要先问清楚这间房的怪由哪一边的游戏来跑(要等一个网络来回)。
|
|
857
|
+
这段时间里它会先把怪都关掉,免得本不该跑它们的那一边先动起来;问清楚以后,由跑的那一边重新打开。
|
|
858
|
+
- 问题出在游戏的怪「关掉再打开」时,行为逻辑会从第一步重新走一遍,已经做过的一次性动作会再做一次:
|
|
859
|
+
- 有一种怪进房间时,先「往上挪到房间外面藏起来」,等它那一波开始时再「挪回来飞进场」。
|
|
860
|
+
重走一遍就又往外挪了一次,飞进场时只挪回一半,一直待在房间外面。遭遇战等不到它死,门就不开;
|
|
861
|
+
- 有援助角色的 boss 房,房间一开始会「叫援助角色出场」,重走一遍时又叫了一次。
|
|
862
|
+
这一下正好被模组拦住(那时援助角色还没分好由谁来跑),拦下后又没让它算做完,
|
|
863
|
+
房间就一直停在这一步,走不到「等玩家进来开打」,boss 就一直不出来,换另一个人接管房间也一样。
|
|
864
|
+
- 现在还是会重走一遍,但重走时它自己挪出去的那一下,模组会当场把它挪回原处:
|
|
865
|
+
它还藏在原来的位置,那一波开始时就能正好飞回场地里;
|
|
866
|
+
- 模组拦下的「叫出场」现在也算做完,房间能接着走到「等玩家进来开打」。
|
|
867
|
+
之前修过一次同类问题(上次那个打完不开门的遭遇战),那次放回去的是怪「走到哪一步」,这次补上的是它「站在哪」。
|
|
868
|
+
重走时其他不涉及位置的动作这次没有改,和以前一样。
|
|
869
|
+
|
|
870
|
+
* 【在没跑战斗的那个人那边,隔着一段距离就被怪撞到、被它的飞镖打到:修了】(0.4.50)
|
|
871
|
+
- 另一个人那边的怪是照着主机那边的位置一帧一帧摆出来的,它的身体本来不受物理影响;
|
|
872
|
+
- 但有些怪飞进场时会把自己的身体切成「受重力」,这一下以前也原样传给了另一个人。
|
|
873
|
+
于是另一个人那边的怪在两帧之间会往下掉到地上,下一帧又被摆回空中:
|
|
874
|
+
你看到它在半空,它能撞人的身体却一直在地面上,也就是你站的地方,所以隔着一段距离也会被撞到;
|
|
875
|
+
它这时扔出的飞镖,也可能是从地面上那个位置扔出来的;
|
|
876
|
+
- 现在这一下不再改动另一个人那边的怪,它的身体一直就在你看到它的位置。
|
|
877
|
+
所有会这样切换身体的怪都有这个问题,这次是一起修的,不只这一种。
|
|
878
|
+
|
|
879
|
+
* 【请求援助:要两个人都请求才会来(新规则)】(0.4.50)
|
|
880
|
+
以前联机时这件事没有专门处理过:谁请求了,就只在谁的存档里记下;战斗时由跑战斗的那一边看自己的存档决定援助来不来,
|
|
881
|
+
另一个人同意没同意都不管。现在和接祈愿一样:
|
|
882
|
+
- 两个人各自去跟那个角色说话,都在自己的选项上选「是」,援助才成立;
|
|
883
|
+
- 先选「是」的人会停在选项上等,另一个人会收到提示,去找同一个角色也选「是」;
|
|
884
|
+
- 20 秒内没等到,或者另一个人选了「否」,就当两个人都没请求,角色照常说拒绝时的话;
|
|
885
|
+
- 如果你的存档里已经请求过这个援助,队友来请求时直接算你同意;
|
|
886
|
+
- 战斗里始终只有一个援助角色:由跑这场战斗的那一边让它出场,另一边看到的是同步过来的同一个。
|
|
887
|
+
另外说明一下:请求援助这个记录,游戏自己每次从主菜单读档时都会清掉(原版就是这样),
|
|
888
|
+
所以重新进游戏以后要重新请求。
|
|
889
|
+
|
|
890
|
+
* 【一个人倒下时不再是「真的死了」:只演死亡动画,人留在原地等队友拉,两个人都倒下才真的死】(0.4.51)
|
|
891
|
+
- 以前一个人倒下时,模组先让游戏把死亡流程跑一截再停住,等队友来拉。
|
|
892
|
+
游戏在这一截里会顺手改掉很多东西:把地上的钱锁住、把房间里盖住暗处的黑色遮罩冻住、告诉全房间「角色死了」、
|
|
893
|
+
把钱和丝收进茧里等等。拉起来时模组再一件件改回去,漏一件就是一个 bug。
|
|
894
|
+
上次在黑里被地刺扎、什么都看不见,就是漏掉的一件:死的那一刻,盖住暗处的黑色遮罩被冻住了,
|
|
895
|
+
之后人走进那片地方,就等于走进了黑幕里。
|
|
896
|
+
- 现在反过来:一个人倒下时,游戏的死亡流程一步都不跑。
|
|
897
|
+
人留在倒下的地方,照样播游戏原版的死亡动画和音效(音乐变安静、黑屏都和以前一样),然后变成茧等队友拉;
|
|
898
|
+
只是不会告诉房间「角色死了」,钱和丝也都留在身上,不改存档。
|
|
899
|
+
- 被拉起来就在原地站起来,半血。
|
|
900
|
+
- 两个人都倒下、等救超时、或者自己放弃时,才从头跑游戏自己的死亡,回椅子(钱照原版收进茧里)。
|
|
901
|
+
这时不会把死亡动画再放一遍,而是直接黑屏回椅子。
|
|
902
|
+
- 所以以前那些「拉起来以后还卡着」的问题都不会再有:
|
|
903
|
+
- 盖住暗处的黑色遮罩不会被冻住,走进去照常掀开;
|
|
904
|
+
- 钱不会被锁住:倒下时吸钱的道具照样把钱吸进口袋,不会再在身边来回晃;站起来后地上的钱也照常能捡;
|
|
905
|
+
- 你倒下时,队友照样能把 boss 打死。以前有四十多个怪(大多是 boss)有一条「角色死了,自己就不许死」,
|
|
906
|
+
刚好是你的游戏在跑这场战斗时,你倒着 boss 就打不死;
|
|
907
|
+
- 镜头照常;手柄震动和冰冻值在被拉起来时恢复;
|
|
908
|
+
- 有一场剧情战斗,角色死了会把战斗改回「没打过」,现在只有真的死了才会改。
|
|
909
|
+
- 倒着的时候:
|
|
910
|
+
- 冰冻这类会绕过无敌的伤害不再扣你的血、不再弄坏你送的货,队友那边也不会隔一会儿就又看到一次你的死亡动画;
|
|
911
|
+
- 不管是什么把操作交还给你(对话结束、boss 房等人、门、游戏自己),茧里的你都不会动起来;
|
|
912
|
+
- 放弃等待以后、真的死之前那半秒黑屏里也还算倒着:这时队友倒下,会马上告诉对方两个人一起回椅子。
|
|
913
|
+
你已经在回椅子的路上时队友倒下也一样,不会让对方在原地白等。
|
|
914
|
+
- 被拉起来时不再清理房间里的东西。以前模组会清掉「不会自己消失的特效」(修「炸死后烟雾一直不散」时加的),
|
|
915
|
+
现在人不会真的死,这一步已经没有要清的了。按朋友的日志,它清掉的其实都是房间里本来就有的东西:
|
|
916
|
+
插在墙上的刺、钉子、碎石,还有地上的钱(近百枚)和没捡的道具(二十多个)。队友那边这些都还在,两边就对不上了。
|
|
917
|
+
- 钢魂模式照原版:倒下就是真的死了,不等救。
|
|
918
|
+
- 有些特殊场景里的死亡,游戏本来就不算真死,也照原版走,不等救。
|
|
919
|
+
|
|
920
|
+
* 【进一个归你跑的房间时,怪不再「先关掉、再打开」】(0.4.51)
|
|
921
|
+
- 上一版说过:进房间时模组要先问清楚这间房由谁的游戏来跑,这段时间里先把怪都关掉,问清楚以后由跑的那一边重新打开;
|
|
922
|
+
而怪「关掉再打开」时,行为会从头再走一遍。上一版修了两种因此出的问题,但「重走一遍」本身还在。
|
|
923
|
+
- 现在服务器会告诉每个人「另一个人在哪个房间」。房间归先进去的人跑,所以你进一个房间时,
|
|
924
|
+
如果另一个人不在里面,这间房一定归你:你这边的怪从一开始就正常跑,不关也不重新打开,和单机时一样。
|
|
925
|
+
- 另一个人已经在里面时,照旧先关着,等着看对方那边的(这时本来就是对方在跑)。
|
|
926
|
+
- 万一判断错了(比如两个人几乎同时进同一个房间,消息还没到),会退回以前的做法:
|
|
927
|
+
你这边先跑起来的怪马上关掉,由对方来跑。这种情况下它们在你这边会多动一小会儿(大约一个网络来回)。
|
|
928
|
+
- 这一条改了联机的数据格式,两个人都要装这一版。
|
|
929
|
+
|
|
930
|
+
* 【两个人都倒下后,死亡音效不再放两遍】(0.4.52)
|
|
931
|
+
- 两个人都倒下时,先倒下的那个人回椅子前,游戏会在黑屏后面把自己的死亡再跑一遍:画面看不见,声音却听得见,
|
|
932
|
+
所以死亡音效会放第二遍。现在黑屏后面这一遍不出声。
|
|
933
|
+
|
|
934
|
+
* 【被拉起来:半血加 5 格丝;打茧的人每打一下回一格丝,打击效果和打灵丝轴一样】(0.4.53)
|
|
935
|
+
- 被拉起来时回 5 格丝,正好对应打开茧要打的 5 下。原来身上的丝也还在。
|
|
936
|
+
- 打队友的茧和打怪一样回丝:每打中一下回一格,打开一个茧正好回 5 格。
|
|
937
|
+
打怪不回丝的道具,打茧也不回;一次攻击打出好几段的,也只有第一下回丝,都和打怪一样。
|
|
938
|
+
- 打茧的打击效果换成了打灵丝轴时的那种:针击闪光、丝线迸散,回丝的那一下还有「得到丝」的闪光和音效。
|
|
939
|
+
这些是游戏里共用的特效,不是灵丝轴专门画的。
|
|
940
|
+
倒在茧里的人也能看到队友每一下打在自己茧上的闪光和丝线(「得到丝」的那部分只给打茧的人,丝是他们拿的)。
|
|
941
|
+
|
|
942
|
+
* 【怪打到茧上不再算次数】(0.4.54)
|
|
943
|
+
- 有些怪的攻击会打中它碰到的东西,打到队友的茧上也被算成了「拉人」的一下,还会给你回丝。
|
|
944
|
+
- 现在只有你自己的攻击(针、道具、技能)才算,怪的攻击直接穿过茧。
|
|
945
|
+
|
|
946
|
+
* 【倒下后很快被拉起来,镜头会一直抖到换房间:修了】(0.4.54)
|
|
947
|
+
- 倒下时放的死亡动画,在丝线爆开那两步会给镜头打开一个「持续抖动」的开关,到动画最后一步才关掉。
|
|
948
|
+
- 死亡动画还没播完(倒下后大约 4 秒内)就被拉起来时,动画被提前收掉,关开关的那一步就没跑到,
|
|
949
|
+
镜头每次停下来都会重新开始抖,直到换房间才被游戏清掉。所以只是「有时候」会出现。
|
|
950
|
+
- 不是网络丢了指令,是本地的问题。现在动画被提前收掉时,会替它把这个开关关上。
|
|
951
|
+
- 0.4.52 是回 9 格(一整管,和打破自己的茧一样),站起来马上就能绑一次,
|
|
952
|
+
再配上绑的时候不会被打断的道具,几乎等于站起来就满血,太容易了。
|
|
953
|
+
|
|
954
|
+
※ 以上七十四条【没有实机验证过】。
|
|
955
|
+
|
|
956
|
+
* 聊天框默认按 Y 打开,打 /help 可以看到所有指令。
|
|
957
|
+
|
|
958
|
+
* 【修掉了「在聊天框打字会误触发快捷键」】
|
|
959
|
+
以前模组只屏蔽了游戏自己的操作,没屏蔽它自己的快捷键。
|
|
960
|
+
所以在聊天框里打一句带 k 的话(比如「ok」)就等于按了一次 K ——
|
|
961
|
+
配上新的救人机制,那就是当场放弃等救援、直接回长椅;
|
|
962
|
+
打带配对键的字则会发一次配对请求。
|
|
963
|
+
现在聊天框一打开,模组自己的快捷键就整个关掉,关掉聊天再恢复。
|
|
964
|
+
另外 Enter 以前在聊天关着的时候也会白触发一次,现在不会了。
|
|
965
|
+
|
|
966
|
+
* 【模组界面跟着游戏语言走】
|
|
967
|
+
以前模组自己的字全是英文,游戏明明是中文的,
|
|
968
|
+
一到模组这儿就换语言。
|
|
969
|
+
现在游戏设成中文,联机界面、聊天里的提示、
|
|
970
|
+
等人和救人的提示都是中文;设成别的语言还是英文。
|
|
971
|
+
在游戏选项里中途换语言也会立刻跟着变,不用重开游戏。
|
|
972
|
+
|
|
973
|
+
|
|
974
|
+
五、出问题的话
|
|
975
|
+
--------------
|
|
976
|
+
|
|
977
|
+
游戏目录下 BepInEx\LogOutput.log 是日志,
|
|
978
|
+
出问题把它发回来就能定位。
|
|
979
|
+
|
|
980
|
+
如果是卡在「Waiting for XXX」,日志里这两句最有用:
|
|
981
|
+
Starting a check —— 会列出三个存档 key,一眼能看出哪个对不上
|
|
982
|
+
Turned down a hello —— 说明有一条握手消息被丢掉了,以及丢的原因
|
|
983
|
+
|
|
984
|
+
两个人一起玩的时候:
|
|
985
|
+
[State check] —— 两边自动对比出来的不一样的地方
|
|
986
|
+
[Hits] —— 队友的攻击为什么没能在你这边重放
|
|
987
|
+
遇到两边不一样的情况,最好把两个人的日志都发回来。
|
|
988
|
+
|
|
989
|
+
|
|
990
|
+
六、这东西是谁写的
|
|
991
|
+
------------------
|
|
992
|
+
|
|
993
|
+
联机功能本身、以及这里几乎全部的代码,都是 Extremelyd1 写的
|
|
994
|
+
(原项目:github.com/Extremelyd1/SSMP)。
|
|
995
|
+
这一份只是在它上面加了「两个人共用一条流程」的双人存档,
|
|
996
|
+
沿用和原作相同的 LGPL-2.1 许可证。
|
|
997
|
+
|
|
998
|
+
※ 有任何问题请找我,【不要去原作者的 Discord 或 issues 页面】。
|
|
999
|
+
这些改动不是人家写的,人家既复现不了也没义务解释。
|
|
1000
|
+
|
|
1001
|
+
包里还有两个别人的东西:
|
|
1002
|
+
BouncyCastle.Cryptography.dll —— 第三方加密库,MIT 许可证,
|
|
1003
|
+
版权归 The Legion of the Bouncy Castle Inc.,
|
|
1004
|
+
完整条款见同目录下的 LICENSE-BouncyCastle.md。
|
|
1005
|
+
BepInEx_win_x64_5.4.23.4.zip —— BepInEx 官方发布的原包,
|
|
1006
|
+
一个字节都没有改过。
|