GalgameOl设计笔记

请注意,本文编写于 2681 天前,最后修改于 2328 天前,其中某些信息可能已经过时。

2017-07-23 00:08

直接提供图片算了,简单粗暴

乱做的示意图.png
乱做的示意图.png


2017-07-21 23:15

重大更新,因为不考虑ons引擎,只考虑自己的了,所以得先设计语法,明天zai'shuo


结构如下:

PY后端:

  • manage.py 用户处理websocket事件
  • resolve.py 用于处理引擎

前端就是基础三件套。
目前支持语法
["mov","goto","dwave","bgm","bgmstop","bg","if","SEL","end","fin","gosub"]

可识别语法:
["mov","goto","dwave","print","bgm","lsp","bgmstop","wait","textclear","bg","if","SEL","end","fin","gosub","br"]

通信通过WebSocket通信。

过程:

前端->{dat:游戏脚本路径或者特殊标号}
->后端:

  • 是否第一次运行? 找到第一个游戏段,解析;解析段地址为前端给予的地址
  • 解析

-返回成指定数据格式`
->前端:

  • 数据格式拆包
  • 显示给用户
  • 遇到SEL/END ->发送下一个章节的代码段(代码段在SEL语句里有)->跳转到最上方

后端解析方式:

更具前端返回,判断是否有cs?
有:读取指定的cs段 ; 没有:从第一个cs段开始解析
读入cs端,逐行解析

两个for迭代循环命令,判断语句是否带有上面的可识别命令

遇到执行命令,append到指定的列表中去(bgm,bg,voice等等),并记录文字列表的长度(好让前端知道什么时候显示

如果全都不是,那么认为为文字(文字之前没有任何命令,print什么的都没有,就直接显示)

append到文字列表

持续到逐行全部解析结束
打包成指定数据格式
通过websocket发送给前端

指定数据格式结构:

一段json:

{
    "str":[文本i,文本j....文本n],
    "flag":{用户所包含的文本地址},(这个参数请下一次请求时也请原封不动的传递上来)
    "bgm":{int:资源地址,int:'资源地址'},
    "voice":{int:'资源地址',int:'资源地址'}, 
    "Dwave":{同上},
    "bg":{同上},
    "Next":下一章节标题名,
}

dict格式{int:资源地址},其中int和list 显示文本一一对应。
后期扩展(如特效等等):延长json长度,后面加入更多的特效指令和list对应。
其中,Next一般是SEL语句或者是直接下一章的章节名,如果是SEL语句请更具用户的选择来返回对应的Next。

完整流程:

第一次运行游戏请用ws传递json {"dat":游戏脚本}
同时,ws端将会返回一大段的

{
    "str":[文本i,文本j....文本n],
    "flag":{用户所包含的文本地址},(这个参数请下一次请求时也请原封不动的传递上来)
    "bgm":{i:资源地址,j:'资源地址'},
    "voice":{k:'资源地址',n:'资源地址'},    (ijkl均为int,对应着文本i,j,k,l..)
    "Dwave":{同上},
    "bg":{同上},
    "Next":下一章节标题名,  (这个也请原封不动的传递上来)
}

不同的是Next有时候并不会返回章节名,也许会返回选择支,例如

SEL "敲门","今天这先这样吧","*CA_0","*CA_1"

请更具用户的选择修改给函数传递的cs内容。当然,也有会其他类型的文本

error 说明脚本编写错误,请直接停止游戏,因为脚本无法继续运行下去了

GameEnd/End/Fin 说明已经通关到达结局

传递消息
第二次运行时请传递json {"flag":上一次返回的,"cs",也是上一次返回的} 均为上次返回的值
注意cs可能更具SEL的选择支进行改变
返回的内容同上


2017/5/30更新

程序项目新地址:https://git.oschina.net/gaoshi_team/galgame_server

如你们所见基本没怎么动。

把那个很蠢的函数判断方法换了,用了你个略魔幻的方法

QQ图片20170530181645.png
QQ图片20170530181645.png

添加新评论

已有 5 条评论

9bie,你的本子站呢,就是那个213端口的,我打不开了

⑨BIE ⑨BIE 回复 @HigHwind

关了_(:з)∠)_。。。源码这个站里有

大佬的博客越来越看不懂了……

⑨BIE ⑨BIE 回复 @末间 Doeca

我只是一条咸鱼啦_(:з)∠)_

搞事竟然没叫上我