IIDX 17,18,19是三个不同的游戏内核机制。因为IIDX 19的联网和IIDX 20非常相近。因此拿19代来开一下刀。
对于19代来说,因为采用了强制联网的形式,因此在调试编写的时候比18,17代要好很多,而不至于刷卡失败后提前进入mode select阶段。由于篇幅实在有限和这个shit一样的写作框导致我只能写很小的一部分。
19代需要server返回如下的内容,首先是系统pc部分。
pc.get //刷卡profile
pc.reg // 店铺排行
pc.save //退卡保存游戏
pc.getname //获取商铺名称
pc.common //iidx活动,游戏内参数设置等
pc.playstart
pc.playend
pc.delete
pc.visit //行脚
其次关于music部分需要编写如下:
music.getrank //用户成绩的返回
music.crate //music enable id
music.appoint //游戏内柱状图的返回
其余的部分均与20代的结构相同老实说。不过着重提一点关于musicid 同步和pc.common。
关于musicid 同步的情况。如果是对每一个music part采用了独立的结构和分布,以5.1.1歌曲来说。在20+版本的id是1000,而在20-版本则是100。通过观察发现,在20代开始,所有的歌曲ID在第三位添加了0。同理SHADE歌曲ID在20代以前是1935,在20代以后则变成了19035。因此关于歌曲成绩的反向同步,我自己给出两种解决办法来搞定。
在前端和db server的部分,将每一个music id独立成属于自己的url。然后建立版本映射关系。大概的数据给的结构如下。
music = Table(
'music',
'id',
'songid',
'url', //init url for each music.
'chart',
'game',
'version',
'name',
'atrist',
'genre',
'data',
)
如果对后端music 表结构不想进行修改,那么需要如下在后端的步骤,当然这样会严重影响music db的问题。只需要对music id的数字进行修改,示其全部编程20+版本的格式即可。
着重说一下关于pc.common和pc.get的部分。因为expert模式在这一代再次复活,外加bemaniwiki给的十分的混乱,因此我大概会给出来一部分代码进行示例。
对于pc.common。正确返回的格式如下:
<pc>
<mranking> //hitchart. 乐曲游玩次数排行
<ir> // internet ranking
<secret> //OME 19代七宗罪
<lincle/> //lincle 活动版本 phase beat#1
<boss/> //OME乐曲phase
<monex/> //collection
<travel/> //lincle跑图
</pc>
关于服务器强制解锁歌曲的部分,与20+相比。19代的版本不存在[-1,-1,-,1]的形式,转而言之所有的flg应全部设置成1才可进行强制解锁。
关于19代的weekly应当是在pc.get部分获取。格式应如下:
<weekly mid="music id" wid="weekly id"/>
因此经过hex探究pc.get部分应如下:
<pc>
<pcdata/>
<attack/>
<fcombo/>
<lincle/>
<reflec/>
<phase2/>
<jubeat/>
<kingdom/>
<cf />
<qcf/>
<piece/>
</kingdom>
<shop>
<item/>
</shop>
<event/>
<travel/>
<history>
<type/>
<time/>
<param0/>
<param1/>
<param2/>
<param3/>
<param4/>
</history>
<grade/>
<skin/>
<qprodata/>
<rlist/>
<ex/>
<weekly/>
<visitor/>
</step>
<phase4/>
</pc>
由于篇幅有限,只能写到这儿了lfmao.