Project1

标题: RM VX/ACE 自动元件算法分析与讨论(1) [打印本页]

作者: yangff    时间: 2012-2-6 12:41
标题: RM VX/ACE 自动元件算法分析与讨论(1)
本帖最后由 yangff 于 2012-2-6 14:26 编辑

这里说的是A1 与 A2 组元件。不考虑地图边界。这块内容与XP基本相同。A1 组比A2不过是多了动画
首先我们对元件进行标号分割成16*16的小单元
1 1 2 3
1 1 4 5
6 7 89
10 11 12 13
14 15 16 17
18 19 20 21
在编辑器中画出各种转交
然后讨论设BASE[x,y]=地图在x,y的元件ID(编号前),按照32*32作为单位大小
首先按照
[16 15]
[12 11]
填充。此次填充优先级最低。填充的是中心区域
然后考虑特殊情况
第一层 优先级
当 BASE[x,y]!=BASE[x,y+1]时候 A
填充
[x x]
[20 19]
当 BASE[x,y]!=BASE[x,y-1]时候 B
填充
[8 7]
[x x]
以上填充的是上下边界
当 BASE[x,y]!=BASE[x-1,y]时候 C
填充
[14 x]
[10 x]
当 BASE[x,y]!=BASE[x+1,y]时候  D
填充
[x 17]
[x 13]
以上填充左右边界
以上是第二层优先级,若有冲突,则必为转交按照下面的填充
当 BASE[x,y]!=BASE[x-1,y] && BASE[x,y]!=BASE[x,y-1]时候 E
填充
[6 x]
[x x]
左上转交
当 BASE[x,y]!=BASE[x,y+1] && BASE[x,y]!=BASE[x+1,y]时候 F
填充
[x x]
[x 21]
右下转交
当 BASE[X,Y]!=BASE[X-1,Y] != BASE[X,Y+1]时候 G
填充
[X X]
[18 X]
左下转交
当 BASE[X,Y]!=BASE[X+1,Y] != BASE[X,Y-1]时候 H
填充
[X 9]
[X X]
左下转交
以上填充四个凸转交
对于地图边缘需特别处理(小路效果,下次再说= =)

最后填充内部的凹转交,优先级最高。
当 BASE[X,Y]==BASE[X+1,Y] && BASE[X,Y]==BASE[X,Y+1] && BASE[X,Y]!=BASE[X

+1,Y+1]
填充
[x x]
[x 5]
右下凹
当 BASE[X,Y]==BASE[X+1,Y]==BASE[X,Y-1] && BASE[X,Y]!=BASE[X+1,Y-1]
填充
[x 3]
[x x]
右上凹
当 BASE[X,Y]==BASE[X-1,Y]==BASE[X,Y-1] && BASE[X,Y]!=BASE[X-1,Y-1]
填充
[2 x]
[x x]
左上凹
当 BASE[X,Y]==BASE[X-1,Y]==BASE[X,Y+1] && BASE[X,Y]!=BASE[X-1,Y+1]
填充
[x x]
[2 x]
左下凹



传送门,分析2:http://rpg.blue/thread-222035-1-1.html
作者: viktor    时间: 2012-3-7 10:49
本帖最后由 viktor 于 2012-3-7 10:53 编辑

匿了{:nm_9:}
作者: 死伤殆尽    时间: 2012-4-20 20:14
我就明确说了吧,ACE的自动元件和VX是一样的算法,我以前有分析贴在没必要做重复劳动,分析填充度优先级根本是走歪路,正确的想法是分成四个小块,每个小块由相邻的三个其它图块来决定对应素材图像中的哪一部分




欢迎光临 Project1 (https://rpg.blue/) Powered by Discuz! X3.1