设为首页收藏本站喵玉殿官方微博

喵玉殿论坛 · 喵玉汉化组

 找回密码
 少女注册中
搜索
查看: 78552|回复: 277

[编程算法] 【史前】TouhouDungeonAdventrue 从开始制作到做完的记录

  [复制链接]
发表于 2015-3-15 02:10:51 | 显示全部楼层 |阅读模式
本帖最后由 Sonicthedgehog 于 2016-2-20 18:00 编辑

//2015-3-15 02:10:51
嘛。总之就是假期玩了HammerWatch(可以搜搜看,不错的游戏),感觉联起机来有点爽,通过配合可以加深与小伙伴本的友情(基情)。不过作为一个东方宅我真心不是很不满足,能用的人少得可怜,没啥剧情,技能好少,地图固定。于是想自己做一个。
同时招像素美工和音乐(程序的话,我还是想一个人做,不过也收意见建议,总之谢谢!),如果有想一起开坑的请联系我,我也在技术群里。

虽然已经高三了,6月份就高考,但是这个坑不开也得开,因为已经开了!
这个贴就当做是记录帖了,从开坑到结束会不断更新的。进度什么的会稍微经过汇总再发出来的。
就是这样。LZ很困,先滚去睡,明天发发目前现有的成果。
//2016-1-4 23:27:15
TDA算是重启了嘛,我慢慢做咯。
以后首贴就记录一些重大更新的进度好了。
//2016-2-20 18:00:25
git:https://github.com/STH99z/TouhouDungeonAdventure


楼层标记:
可以跳过不看的部分:81L-126L
游戏总设定:36L
大致剧本:66L
MapEditor简易教程1:37L


以上。欢迎围观~













 楼主| 发表于 2016-5-23 21:56:10 | 显示全部楼层
2016-5-23 21:32:42
嗯,是这样,遇到了个小问题,所以想在这里问一下。

先说一下超久不在这里更新的状况什么的,其实就是懒。前几个月吧,感觉人生没有目标的激情的那种感觉。然后就不更了,超没责任心。所以假设大家对这个项目抱有很大信心然后感到失望的话,有啥想说的想骂的请便吧,我应当受着。这里呢,除了道歉以外,能做的只有继续奋力肝代码了。

————————

为啥说“继续”奋力肝呢?因为最近学业任务比较松,项目重新又动起来了。
进入正题。

代码相关:
假设有这样一个情景,玩家选了红美铃作主角,她的主动躲弹方式为飞扑(翻滚,Dodge),在她的类里边有一个从Player类继承来的Dodge()方法。
这个继承来的Dodge()方法同样可以被其他角色类继承,所以不同的角色类内部有不同的实现方法。
然后美玲捡到一道具——隙间折伞
这个道具的其中一个效果是把角色的主动躲弹方式改为短距离隙间。这个两个Dodge()方法写起来差异巨大,比如改变角色中弹判定的时间, 贴图也得改,其他还有好多东西。
这TM就尴尬了,我怎么在程序运行的时候决定Dodge到底是哪种躲弹行为呢?


目前想到的可能方法有这么几种:
1.写一个Dodge方法合集类,里边把每种躲弹的方法都写好,然后在角色的Dodge()方法里边用if-else,缺点:太累,没法简化if-else
2.写好方法,然后角色类里边的Dodge方法变成委托,这个思路类似于函数指针?求问C#怎么实现,求伪代码。
3.听说有个叫接口的东西不知道有没有用武之地。
4.还有其他我想不出来求大神指教的方法。


大概就是这个问题了。求各位出出点子啥的。
项目现在用C#重制,用了32推荐的DxLib,还有有诸多需要适应的地方。
目前还在对2D绘制的二次封装阶段。


嗯。大概就这样,不保证最近还能把更新进度写在帖子里。:)


以上。

点评

没坑掉……因为标题写了不能坑  发表于 2016-5-24 22:28
诈尸了(吃鲸) 嘛没弃掉就好(虽然我的坑还有两周才能重启(死))  发表于 2016-5-24 19:26
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2016-2-22 00:17:45 | 显示全部楼层
2016-2-21 23:52:58
今天去THO也挺累的,代码就不多写了,为了写个Demo临时实现某些功能已经开始丧心病狂乱塞代码了……
不行,今天push上git之后明天还得改好多,把随便写的东西删掉,重新把新功能老老实实地放到搭好的框架里。
另外什么时候还是得整顿一下mFile里边的代码,槽得一比。

不更代码了,但是还是要写点啥。
就说一下前两贴里边的优化是怎么实现的吧。
——————
原来的思路:
从0开始遍历敌人,记作e1,直到总数
   从刚才遍历到的编号开始遍历敌人,记作e2,直到总数
       如果e2在e1的举行范围内,那么
           计算一下直线距离
           如果距离<=e1 e2的半径和,那么 碰撞

大概就是这样。
原来真是想不出什么更好的思路了。(虽然那个时候有人提过BSP但是并没有很好的理解)

——————
然后现在直接优化成了这样。
在敌人New()时:记下所在地图格子的坐标
然后在一个大的HashTable二维数组中的,对应格子坐标的HashTable里边加入敌人。

在计算碰撞时:遍历所有敌人,每个敌人只去对以自己格点为中心3x3=9个格子里边的敌人(刚才记录在HashTable里边了)计算碰撞,思路一样,还是先矩形后圆形。

在怪的移动,碰撞偏移量释放,当前帧内不在移动时:重新计算所在格点,如果和之前的不同,删除之前对应HashTable里边的自己,在新的HashTable里边添加自己,并把之前记录的旧格点位置换成现在的。

在怪消失时:删除对应HashTable里边的自己。

——————
总之就是这样,怪再多因为有碰撞所以在9个格子里边的怪怎么着也不会多到爆炸,所以每个怪要碰撞的对象数量被极大地减少了。
大家都比较厉害,不多解释了QAQ……

先这样吧,可能思路很好但是我实现的方法很屎,还请多多指正,如果有更好的方法请一定告诉我,谢谢!

以上。

点评

一部分是来自魔女之家,之前的帖子里有好心人发给我的,还有一部分是从网上搜来的,都是RMVX那种的地图块。  发表于 2016-5-23 21:32
我想问问地图的素材是从哪里来的(&acute;;ω;`)  发表于 2016-3-14 20:50
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-2-21 02:04:53 | 显示全部楼层
2月21日 02:04
淦,不行,困炸了,明早写
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-2-21 00:58:32 | 显示全部楼层
2016-2-21 00:54:07

妈的不行可给我乐坏了!
优化大成功!

总之先不讲细节了,大概用了BSP的方法?(可能我不是很理解BSP)
总之先上图。


无弹幕情况下1400怪保持60FPS,相互碰撞每个都有参与计算。

先更一发,可能一会再来一发

以上
回复 支持 反对

使用道具 举报

发表于 2016-2-18 13:26:31 | 显示全部楼层
代号11037 发表于 2016-2-18 13:21
啊,现在才看到这帖子后续呢......

从第一页看到13页时间弄反了(智力-2)

点评

前一段时间调的倒序显示果然没能明显的让人发现QAQ  发表于 2016-2-20 17:58
回复 支持 反对

使用道具 举报

发表于 2016-2-18 13:21:16 | 显示全部楼层
啊,现在才看到这帖子后续呢......
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-2-17 23:08:10 | 显示全部楼层
2016-2-17 22:59:33

这段时间应该持续致力于消除旧引擎的bug了……
以前的代码,Naive……

也不知道以后看现在的代码会不会觉得Naive 233333333
Updates:
+音频引擎修正大bug,改了不少名
+音频系统增加起点终点之间loop的功能
+实体系统修正若干名称
+Player类增加回血机制
+Player类增加绘制血条蓝条的方法
……

另外发现一个不是很稳定的小bug,不清楚怎么解决呢现在。
小bug:
切出窗口再切回来时可能会有所有图形绘制失效(图像绘制照常)的问题,不清楚怎么回事,正在寻找解决方法。



新的预览图:


另外我觉得有必要优化一下实体碰撞系统和弹幕系统了,为了高效考虑……(喂强迫症啊你?)

嗯,先这样。
THO5要直播撸代码吗?我水平很差啊(>//////< )

以上

点评

早些好考虑线程问题吧,不然以后会很麻烦  发表于 2016-2-18 16:40
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-2-16 02:26:54 | 显示全部楼层
本帖最后由 Sonicthedgehog 于 2016-2-16 02:30 编辑

2016-2-16 02:26:48

啊,终于回归了。
看自己之前的代码,最大的感受是……
“哎我怎么这么吊哈哈哈哈哈哈”,“哎我怎么这么Naive哈哈哈哈哈哈”


总之是回来啦!最近熟悉熟悉原来的代码然后准备想些啥就写啥了。
git地址:https://github.com/STH99z/TouhouDungeonAdventure

//翻着翻着发现docs里边有一篇之前弃用了的设定,貌似预言了doremi的存在23333333333

总之先这样了。大家不要骂我File那部分代码写的有多屎了,估计得重写。

以上。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-2-15 16:50:15 | 显示全部楼层
2月15日 16:26

刚才在我那个小群里讨论了讨论,最后决定,我还是重新回去续写VB.NET的原工程或者用C#重写一遍。Unity开发不熟悉,用着太累了。。。

然后是项目开源,回去之后把VB.NET的源码git上去,开源。

讨论的时候Gear表示他的Unity用着比较顺手,可能过一段时间会在隔壁开个贴,用Unity实现TDA的功能,过程也记录下来,做成一个教程贴。(好期待正好我也学学!)

妈的我还想说点啥来着,这段话写了两遍,第一遍发的时候网络错误就没了。。。然后我想不起来了。。。

以上吧
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 少女注册中

本版积分规则

合作与事务联系|小黑屋|手机版|无图版|喵玉殿

GMT+8, 2024-3-29 13:26

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表