这名字是怎么回事?希腊奶。
幻想指的当然是幻想乡了。东方弹幕的弹幕数量可不是一般的多,所以在想是否需要这样一个Lib。
如果注册成千上万个实体估计会卡死吧,但是用粒子效果似乎不会(参考B站的各种视频),所以我想的是希望能够消弱判定频率。
大致的草稿如下:
弹幕有几个主要组成部分:
1、基础移动(由附属完成,给出接口即可)
2、具体渲染(提供基本的粒子渲染,包括各种米弹小玉中玉大玉光玉之类的,也提供接口方便实现自定义的渲染)
3、具体判定
具体渲染是时刻都进行渲染的。
具体判定就是要消弱的部分了,东方的大量弹幕是真的打不着人的,比如你缩在板底,还有一堆向上飞的弹幕,它们自然打不到你,需要大幅减缓更新频率。
当然使魔之类的可以不断更新。
所以一个弹幕在被更新时,要进行几件事:判定,是否出界要被删,预定下一次更新。
至于更新的访问,我的构思是桶:例如最大更新时间上限是80tick,则提供一个大小略大于80的数组(数组元素是 弹幕构成的list)。举例为100。
比如当前访问的弹幕在该数组的第50个list中,预定更新在65tick,则从这个list弹出到该数组的第15个list中。这样的决定更新的复杂度是O(1),根本用不着什么堆之类的进行维护。
(啊这,OI弄多了,脑子里都是C的语法(list变成vector就对了),如有不太对劲的地方感谢指出)
只是一个针对东方弹幕的优化方案,仅讨论了这么一个优化细则,没有别的意思。
幻想指的当然是幻想乡了。东方弹幕的弹幕数量可不是一般的多,所以在想是否需要这样一个Lib。
如果注册成千上万个实体估计会卡死吧,但是用粒子效果似乎不会(参考B站的各种视频),所以我想的是希望能够消弱判定频率。
大致的草稿如下:
弹幕有几个主要组成部分:
1、基础移动(由附属完成,给出接口即可)
2、具体渲染(提供基本的粒子渲染,包括各种米弹小玉中玉大玉光玉之类的,也提供接口方便实现自定义的渲染)
3、具体判定
具体渲染是时刻都进行渲染的。
具体判定就是要消弱的部分了,东方的大量弹幕是真的打不着人的,比如你缩在板底,还有一堆向上飞的弹幕,它们自然打不到你,需要大幅减缓更新频率。
当然使魔之类的可以不断更新。
所以一个弹幕在被更新时,要进行几件事:判定,是否出界要被删,预定下一次更新。
至于更新的访问,我的构思是桶:例如最大更新时间上限是80tick,则提供一个大小略大于80的数组(数组元素是 弹幕构成的list)。举例为100。
比如当前访问的弹幕在该数组的第50个list中,预定更新在65tick,则从这个list弹出到该数组的第15个list中。这样的决定更新的复杂度是O(1),根本用不着什么堆之类的进行维护。
(啊这,OI弄多了,脑子里都是C的语法(list变成vector就对了),如有不太对劲的地方感谢指出)
只是一个针对东方弹幕的优化方案,仅讨论了这么一个优化细则,没有别的意思。
感觉车万女仆mod有类似的弹幕设置,不过弹幕种类还是少了些,而且我在想这个弹幕需要能秒掉玩家的伤害。
光明之空间 发表于 2020-8-31 19:12
感觉车万女仆mod有类似的弹幕设置,不过弹幕种类还是少了些,而且我在想这个弹幕需要能秒掉玩家的伤害。 ...
弹幕秒杀不难……
943有的话也的应该是实体……
名为123的貘 发表于 2020-8-31 19:32
弹幕秒杀不难……
943有的话也的应该是实体……
我倒是有个注意,距离玩家太远的弹幕可以清除,楼主也可以去东方3d弹幕作品中看一下,或许有所启发。
光明之空间 发表于 2020-8-31 20:20
我倒是有个注意,距离玩家太远的弹幕可以清除,楼主也可以去东方3d弹幕作品中看一下,或许有所启发。 ...
写过了
“出界被删”
不然的话跑跑一般通过开花弹就立刻爆炸了
 本帖最后由 SQwatermark 于 2020-9-1 18:21 编辑 
我写的话肯定不会用实体而是自己注册一种类型,但是不会c语言,opengl真的啃得头大。
↓因为市面上opengl的教程都是需要c语言基础的,写这种mod不可避免的要跟opengl打交道
我写的话肯定不会用实体而是自己注册一种类型,但是不会c语言,opengl真的啃得头大。
↓因为市面上opengl的教程都是需要c语言基础的,写这种mod不可避免的要跟opengl打交道