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

 找回密码
 少女注册中
搜索
楼主: Sonicthedgehog

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

 火.. [复制链接]
 楼主| 发表于 2015-3-28 18:10:00 | 显示全部楼层
2015-3-28 18:07:21
呀嘞呀嘞,昨天木有更新啊,肝了大概3h吧。
昨天下电脑的时候腰酸背痛腿抽筋,结果还没写好,实在累得不行就先睡了。


bug.PNG

昨天就是弄成了这样然后怎么debug怎么断点怎么弄怎么弄都不知道哪里错了……(谁让你自己写好了引擎还瞎改!)

没事,现在继续开更了。晚上应该还会有一帖~
回复

使用道具 举报

 楼主| 发表于 2015-3-27 02:02:33 来自手机 | 显示全部楼层
提示: 该帖被管理员或版主屏蔽
回复

使用道具 举报

 楼主| 发表于 2015-3-27 00:34:49 | 显示全部楼层
本帖最后由 Sonicthedgehog 于 2015-3-27 00:39 编辑

2015-3-27 00:29:47

沉痛的消息……
今天被学校叫过去开会了……再这样下去好像连一本都困难了……
距离高考还有71天。

啊啊啊啊啊啊好烦啊到底怎么权衡这个和那个什么的……
完全不拿手啊……


算了算了,回归正题,今天把写设定的小本本拍了一下,压了下图,能看清的吧应该?













恩,就是这些了。有兴趣的可以仔细看看,没兴趣的可以骂两句LZ

为什么要骂两句LZ呢?

因为LZ今天又没更代码233333333333333333


以上。

点评

随机地图生成啊。。。。好强。。  发表于 2015-7-16 18:31
虽然想早点看见完坑的一日,但是觉得以高考为重好点。 按自己的节奏来做就好了。  发表于 2015-3-27 01:02
回复

使用道具 举报

发表于 2015-3-26 11:55:36 来自手机 | 显示全部楼层
提示: 该帖被管理员或版主屏蔽
回复

使用道具 举报

 楼主| 发表于 2015-3-26 00:58:48 | 显示全部楼层
本帖最后由 Sonicthedgehog 于 2015-3-26 01:01 编辑

2015-3-26 00:45:34

今天没有更新,但是还是过来写点什么。
感觉这里已经变成我的日记屋了。

有在考虑写点除了地图之外的东西了,比如敌人和攻击什么的。
地图代码的话更新实在太繁琐了,推到周六日解决。

说到敌人和攻击,感觉有必要照几张小本本,上边都是关于游戏的架构和策划,晚自习8.30放,基本上每天放之前写个5-10min,现在看来也攒了两三页了。明天发发照片啥的。
哦对了,如果明天还是像今天这么累的话呢,就先不肝代码了,跟大家说说TDA的设定和一些趣闻什么的好了,也好让大家多多期待一下这个坑。

其实我想现在就说趣闻……
好吧那就说了吧。
开头那帖子也提到过,LZ是因为假期联机玩了Hammerwatch这款抖M(雾)游戏才开的坑。中文翻译是铁锤守卫,watch取名词意思,守卫。
于是这个坑最开始的名字是Touhouwatch。发到群(自己的)里和大家交流了一下。于是诞生了一个新名字——“东裱”

什么鬼啦!

嘛嘛,冷笑话讲完了,民那也踊跃评论下嘛,老感觉技术区死气沉沉的……(不过好像这里的确是用来记录东西的地方……吧……)

那么,各位晚安辣。
回复

使用道具 举报

 楼主| 发表于 2015-3-25 01:15:05 | 显示全部楼层
本帖最后由 Sonicthedgehog 于 2015-3-25 01:16 编辑

2015-3-25 00:49:03

唔……感谢@盛夏的笨蛋 提供的算法,看了看虽然小的细节写的有点问题不过看懂了。
这个是读取的事情吧喂……读取的话已经很完善了。不过依然非常感谢

其实我想问的是最后那里写的关于显示什么图像的问题。因为生成的时候这个格子只会被标记成“墙”,实际显示什么是得等生成完了再从头遍历一遍检测完再改成“墙,左边缘”或者“墙,左上凹角”这种的。

而且吧,正好关于显示这个问题。
老⑨!啊呸,咬舌头了……劳资!想了一个多小时呐!终于想的还算是过得去了!(喂
大概是想的时候突然想到为啥RM的素材每张就那么几格,然后想……想……想……
DSC_0007.JPG

天机瞬悟!原来就是拼的……是按照一个自动元件32x32分成lefttop(以此类推)、rt、lb、rb四个16x16小格拼凑而成的。
于是这又冒出来个问题。
1.我都改了他的图块了还怎么辨识他是这个元件呢?
2.我的图像引擎又得改!又得改!


不带这么玩的!好吧,一坑坑到底。2的话LZ自己慢慢坑,1个话呢,今天已经解决了!
上图!

tagsystem.png

可以点开看大图,就是tag系统。已经做了优化,占用极少内存。没有特殊标记的地方可以不用管。
而且对应的Tile读入系统也更新了。就像↓这样。

mTexPath,image\tilesets\mansion.png
mTexSplitX,8
mTexSplitY,16
_LoadTex
iTileCount,128
sTag,
_ReDimTile
_AutoLoad

//天花板
sTag,ceiling
bTileCC,1
bTileCP,1
iTileReadNow,4
_FDIT

//所有墙面
sTag,wall
bTileCC,1
bTileCP,1
iTileRNstart,8
iTileRNend,10
_FDITmulti
iTileRNstart,16
iTileRNend,18
_FDITmulti
iTileRNstart,24
iTileRNend,26
_FDITmulti

//深渊 BCC=true BCP=false
sTag,cliff
bTileCC,1
bTileCP,0
iTileRNstart,11
iTileRNend,13
_FDITmulti
iTileRNstart,19
iTileRNend,21
_FDITmulti
iTileRNstart,27
iTileRNend,29
_FDITmulti

//桌子
sTag,table
bTileCC,1
bTileCP,1
iTileReadNow,56
_FDIT
iTileReadNow,57
_FDIT
iTileReadNow,58
_FDIT
iTileReadNow,64
_FDIT
iTileReadNow,65
_FDIT
iTileReadNow,66
_FDIT
iTileReadNow,72
_FDIT
iTileReadNow,73
_FDIT
iTileReadNow,74
_FDIT

//椅子
sTag,chair
bTileCC,1
bTileCP,1
iTileRNstart,37
iTileRNend,38
_FDITmulti
iTileRNstart,45
iTileRNend,46
_FDITmulti

//窗户
sTag,window
bTileCC,1
bTileCP,1
iTileRNstart,51
iTileRNend,53
_FDITmulti
iTileRNstart,59
iTileRNend,61
_FDITmulti
iTileRNstart,67
iTileRNend,70
_FDITmulti
iTileRNstart,75
iTileRNend,78
_FDITmulti


啊,明天是写自动元件呢,还是写地图生成呢?还是干脆抛开先去写cMob或者cDanmaku呢?啊,好难选……

以上。

点评

抱歉,看来我昨天理解错了呢。(低落 另外,真不愧是大触,rm的确是这样拼接无误。 而且rm还在此基础上弄出个动态的自动元件,具体情况跟人物行走图类似。  发表于 2015-3-25 03:08
回复

使用道具 举报

发表于 2015-3-24 05:12:36 | 显示全部楼层
Sonicthedgehog 发表于 2015-3-24 01:10
2015-3-24 01:04:18

今天木有什么实质性的进展呐……

这次只是纯粹来卖萌的,下面的无视无视。


不太建议自动元件匹配,感觉这个像是面向开发工具(如rm的地图编辑器)。

如果是游戏本身,地图图层以元件编号来储存的话。(实际上用地图元件的话我暂时想不到其他方法)
那么设素材长为L格,宽为H格,以此对一个图层的建立用读取 完整 的二维数组的方式就好了。
要匹配自动元件的话算法的时间复杂度大概要在基础上乘以O(n^x)到O(n^8x)不等。
(x是自动元件占地图元件的百分百比,最大值为1)

如果作为地图编辑的话……有个不完整的极其简陋的思路,仅作启发。

该类型素材区域必须以3*32像素为倍数。(32*32为一格……凹角不在此区域范围内。)
设素材区域长为L格,宽为H格,起始格数为(0,0),a、b、n、k为无符号整形(误)。
另地毯中心在素材坐标为(a,b)
可得取值为:  a→for(n=1,n<=L/3,n++){a=3*n-2;} //不是vb注意
                  b→for(k=1,k<=H/3,k++){b=3*k-2;} //不是vb注意
可求得矩阵
(a-1,B-1)  (a,-1)    (a+1,b-1)
(a-1,b)     (a,b)   (a+1,b)
(a-1,b+1)   (a,1)   (a+1,b+1)
然后再按中间的元件对应所在的地图坐标四周为空的地方填充就行了。(为空就是该位置没元件)
凹角的话……判断元件斜四个方向有没有完全一样的元件,有的话就在对角为空的地方填充对应的凹角元件就行了。
这个也可以用代码进行绑定,思路跟上面类似,就不说了。

(以上纯粹口胡,有错的地方还望大触指正。)
果然说起编程算法,感觉我还是卖萌好了。 ARN40{99CJLIX`%D{S9U`PT.jpg

回复

使用道具 举报

 楼主| 发表于 2015-3-24 01:10:37 | 显示全部楼层
本帖最后由 Sonicthedgehog 于 2015-3-24 01:12 编辑

2015-3-24 01:04:18

今天木有什么实质性的进展呐……
一直在构思一套简单易用的生成地图的函数组/方法组……
而且自动元件部分的处理卡壳啦!可恶!
我需要用整块的时间在本上划拉划拉才行,恩。


自动元件什么的如果有什么比较好的算法请务必告诉我!大概参照上边发过的Tilesets图,只给出图块坐标和自动元件中心那格的ID,想让他自动匹成周围一圈的或者是右边凹角的四个。
哦对了,关于图层,已经想好怎么弄了,只不过没实践呢

感谢!抱歉……
困困,碎觉觉……

以上。


回复

使用道具 举报

 楼主| 发表于 2015-3-23 12:49:59 | 显示全部楼层
盛夏的笨蛋 发表于 2015-3-23 03:21
一天一更好评!

(从这里开始,纯粹口胡...)

2d啊。。。3d无力。。图层会好好写的!另外。。。好萌好萌抱走抱走!
回复

使用道具 举报

发表于 2015-3-23 03:21:35 | 显示全部楼层
Sonicthedgehog 发表于 2015-3-23 01:35
2015-3-23 01:27:11

地图生成部分更新。

一天一更好评!

(从这里开始,纯粹口胡...)

真要成为伪3D的节奏么...
只靠图片素材的话...大概要用到3D变换吧……
(也可参考ps里面的变换函数,虽然感觉好像只是把图片给扭曲而已...)

其实2D用多层移动突出层次感也挺不错的。
某种意义上,感觉多层图像也算是一种Z轴。某图层在某图层之上相当于z+1……

总觉得扯到vb就好没发言权...
结果我还是卖萌好了。
来自rm绘制。QAQ求抱走(扇飞
某神社.png
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-31 11:41

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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