[NDS教程]四代地图制作指南1 – 介绍

[NDS教程]四代地图制作指南1 – 介绍

第四代宝可梦地图制作入门

本页面旨在帮助你了解与第四代任天堂DS宝可梦游戏(钻石、珍珠、白金、心金、魂银版本)地图定义相关的组件,并理解如何与这些组件交互以创建和编辑自定义地图。

概念、约束、结构与指导

层级/结构

与第四代宝可梦ROM改版的许多元素一样,数据结构始于标头,此层级内的项目会继承和/或共享信息。

概要

结构的简单轮廓如下:

  • 标头

    • 区域数据

      • 地图纹理包 (.nsbtx)

      • 建筑纹理包 (.nsbtx)

      • 全局动画文件 (.nsbta)*

      • 矩阵

        • 地图 (.nsbmd)

        • 地形数据 (.bdhc)

        • 通行数据 (.per)

        • 背景声音数据 (.bgs)*

        • 建筑数据 (.bld)

      • 其他各种与地图不直接相关的数据和文件

    仅限心金魂银)*

这些数据中,有些在更高层级中是唯一的(例如,每个地图文件必须存在且仅存在一套通行数据),而其他数据则具有不同的关系(一个矩阵可能包含一个或多个地图文件的一个或多个实例,反之,任意数量的标头可能使用同一个地图纹理包)。

地图

第四代宝可梦游戏中的地图模型是单一的3D模型,在概念上可划分为1024个网格方块(32×32)的网格。每个网格方块在3D建模软件(如Blender)中查看时相当于16米,因此地图名义尺寸为512米见方。然而,大多数常用的ROM改版工具会应用0.0625的比例因子(例如,此比例在DSPRE地图编辑器的“建筑”选项卡中可见)。

为简单起见,本指南将每个1/32的分区称为一个“单位”距离;因此,一个地图名义上是32个单位宽乘32个单位深,每个网格方块是一个单位宽乘一个单位深。

地图模型可以扩展到32×32单位的方形区域之外,但“地图”层级以下的数据不能。实际上,这可能用于在地图边界之外提供额外的纯视觉效果元素,或让模型元素/几何体跨越相邻地图之间的边界。

一个单位(一个网格方块的宽度)大致相当于:

  • 玩家行走图的宽度。

  • 玩家或其他行走图在游戏中能完成的最小完整移动距离。

每个地图网格方块都附有来自较低层级(低于“地图”层级)的一些数据点:

属性 文件扩展名 详情
地形数据 .bdhc 每个地形“板块”可能与一个网格方块相交零次或多次。这些板块代表玩家和其他主世界精灵可以在(每个网格方块上)横向移动的Z轴高度,它们可能与“地面”平行,也可能倾斜以允许上升或下降。地形板块的边界在水平方向上(X和Y轴)必须遵循网格方块边界,但在垂直方向上(Z轴)可以设置为更小的距离分割。
移动权限 .per 每个网格方块必须包含以下各项的数据:
–> 碰撞   一小部分值,用于确定对主世界精灵移动的重大限制,以及一些相关声音(例如,在心金魂银中,值04允许移动,并在玩家精灵在此网格方块上移动时产生草丛沙沙声;而值80则阻止任何主世界精灵在此网格方块上移动,无论地形数据如何)。
–> 类型   更大的值集,提供游戏内的附加功能(例如,在心金魂银中,02是在玩家与网格方块相交时触发高草动画以及(如果填充了相应的遭遇表和遭遇率)触发野生宝可梦遭遇所需的权限类型)。
背景声音 .bgs 每个声音“板块”可能与一个网格方块相交零次或多次。这些板块决定了当玩家精灵位于该网格方块上时,是否会播放特定的背景声音。仅限心金魂银。

编辑地图与工具抽象

如上所述,在这些游戏中,每个地图都是一个独立的3D模型,并为该模型及其内部的1024个网格方块分配了各种附加属性。特别重要的是,除了每个地图的单个3D模型之外,常用的(且通常更复杂的)3D模型也可以“放置”在此之上,这些被称为“建筑”(无论它们是否实际代表一个建筑物)。

可以通过多种方式改变原始(或“原版”)地图模型:

  1. 编辑3D模型:从游戏中导出完整的3D模型,在3D建模软件(如Blender)中进行修改,然后重新导入。

  2. 放置附加建筑:通过使用DSPRE工具在地图上放置更多建筑实例(无论是来自原版游戏的建筑还是自定义建筑),进行增量更改(添加以前不存在的东西,例如一片高草或一个悬崖)。

  3. 重建地图:使用PDSMS工具,利用其基于图块的资产放置系统,重建地图(对原始地图进行小幅或大幅更改),然后重新导入。

  4. 重新贴图:仅替换模型的纹理,而不改变几何体,可以通过更改.nsbtx中的图像纹理(同时保留相同的名称)来实现。

选项三通常是对地图进行重大更改(或涉及移除地图某些元素的更改)的最容易上手的方法。选项一可能适合有这些工具使用经验的人,但也有限制(因为更改仅应用于该地图模型的特定实例,此处投入的努力不能直接惠及其他地图)。

值得注意的是,在某些情况下,原始地图难以在PDSMS中原样重建,因为某些元素无法与基于图块的资产放置系统很好地配合。

图块

为了在PDSMS中创建地图,必须创建组件模型,这些是可重用的组件,包含整体地图的某个(通常较小的)方面,例如:一棵树。这些组件通常被称为图块,由两个文件组成,扩展名为.obj和.mtl。重要的是要记住,图块是PDSMS中的一个完全抽象的概念,在原始游戏中没有任何意义:原版ROM中没有现成的图块可供提取和使用。

一些基本图块的示例如下所示(来自PDSMS附带的“图块集2 – 主世界”图块集),显示的白色网格代表地图的32×32细分,其中每个网格方块为一个单位乘一个单位。

hgss_selection_of_tiles_pdsms-ee9a8f6ca00f3aeca3dcefe4c2f4e08f

图块集

图块集是图块的分组,还包括许多其他属性,例如纹理和材质数据,以及一些PDSMS特定功能的属性和定义(例如“智能绘制”)。

PDSMS工具附带了一些常用的图块集,其他图块集则在ROM改版社区(如Kingdom of DS ROM Hacking Discord服务器)中创建和共享。

有关地图和建筑模型以及图块和图块集的更多详细信息,请参阅以下页面。


纹理、材质与动画

纹理和材质

3D模型的几何体或“网格”是第四代宝可梦游戏中所有地图的基础,但如果没有不同的纹理应用于几何体的面/多边形,地图的颜色将完全统一(忽略顶点颜色等属性)。

  • 纹理是可以“映射”到网格表面的图像文件。

  • UV贴图是图像纹理到网格每个面的精确映射。

  • 材质是纹理的一个实例,带有多个其他属性(范围从定义UV超出图像纹理边界时发生什么的“越界”选项,到16色板或A3I5等颜色格式)。

在第四代宝可梦游戏改版中,必须遵守一些规则(有些来自游戏限制,有些来自工具限制):

  • 每个面/多边形必须分配一个材质,该材质必须关联到一个图像纹理。

  • 要作为图块导入PDSMS的每个图块.obj不得有未使用的材质。

  • (PDSMS中的)每个图块.obj不得有超过一个材质使用任何给定的图像纹理。

动画

第四代宝可梦游戏中可以实现多种类型的动画,以下是这些类型的简要概述:

 
 
动画类型 描述 文件
几何体 SRT 这些是骨骼动画,即3D模型的某些部分相对于其他部分移动(来自心金魂银的一个好例子是若叶镇的风车)。 .nsbca(与建筑相关)
纹理 SRT 这些是UV贴图动画,即UV贴图位置在其应用的面/多边形上移动(来自心金魂银的一个好例子是河流和池塘的表面)。 .nsbta(通过区域数据中使用的全局.nsbta文件与地图相关,也与建筑相关)
纹理图案 这些是“翻书”或序列动画,其中一系列图像纹理按顺序显示,并且任何给定图像纹理的可见相对时间可以变化(来自心金魂银的一个例子是许多草地上的红白花)。 .nsbtp(与地图和建筑相关)
材质动画 很少使用的动画类型(来自心金魂银的一个例子是漩涡列岛洛奇亚 chambers的钟)。 .nsbma(与建筑相关)
可见性动画 在第四代宝可梦游戏中用途未知。 .nsbva

值得注意的是,这些动画类型可以组合。例如,心金魂银中海浪的“尖端”使用纹理图案动画来更改显示的图像纹理,并使用纹理SRT动画来对角线地平移受影响面/多边形上的UV。这些复合效果可以创造更身临其境的玩家环境。

有多种方法和教程详细说明了如何创建和编辑这些动画,并且心金魂银与钻石珍珠铂之间的使用和实现存在差异。

有关第四代游戏中动画的更多详细信息,请参阅以下页面。

01_nsbca_nsbta_windmill_pondwater-e869dbb2ad191d5ed8b661dfabbed266

02_nsbtp_nsbta_flowers_seawaves-b9dc4bea6cf73e743551139591d00d2b


游戏内性能

作为2004年的掌上游戏机,任天堂DS(以及为其设计的游戏)本身不具备任何现代游戏机的图形处理能力。需要考虑一些限制,其中一些与地图制作和图形渲染特别相关(这也涉及到其他领域,例如屏幕上的精灵数量)。

这些限制通常归结为文件大小。在修改构成可见地图的文件时,可能会增加文件本身的大小(通常是通过某种方式添加更多细节)。与原版相比,相对较大的文件大小可能会导致性能下降、画面丢失和/或崩溃。例如:

  • 纹理数量/尺寸:为地图和/或建筑加载的纹理包(.nsbtx文件)大小增加,可能是因为:纹理数量显著增加;和/或这些图像的尺寸非常大。

  • 多边形数量:为地图和/或建筑加载的多边形(.nsbmd文件)数量由于更详细/复杂的几何体/网格而增加。

关于最大文件大小或多边形数量,没有“硬性规定”,因为这些只是消耗游戏资源的更广泛元素中的一部分。但是,一些行之有效的指导原则是:

  • 尽可能将文件大小保持在与原版相近的范围内(像DSPRE这样的工具在许多情况下允许用户查看现有的文件大小)。

  • 添加或编辑纹理时:

    • 坚持使用“合法”的纹理尺寸(8、16、32、64、128、256、512、1024px的任意组合)。

    • 使用尽可能小的颜色格式(基于唯一颜色的数量)。

    • 为了获得真实的任天堂DS外观和感觉,每个单位(网格方块宽度)约16像素的比例就足够了。

  • 某些材质设置会影响其他文件,例如,不均匀的法线数据会显著增加.nsbmd文件的内容。

  • 某些工具会在特定文件大小阈值时提供警告(例如PDSMS在地图转换为.imd时)。

  • 当玩家在游戏中导航地图时,将根据玩家精灵的位置同时加载一个正方形区域中最多四个相邻的地图。所有这些地图上的多边形,包括任何可见的建筑和动态主世界精灵,构成了任何时刻渲染的多边形总数。这四个地图是:

    • 玩家精灵所在的地图。

    • 水平方向上离玩家精灵最近的地图。

    • 垂直方向上离玩家精灵最近的地图。

    • 对角线方向上离玩家精灵最近的地图。

  • 一般的“经验法则是,尽可能将每个地图文件的多边形数量控制在少于1000个,特别是对于主要的主世界地图。不建议每个地图的总多边形(地图、建筑、精灵)超过2000个

  • 有很多上下文相关的“变通空间”,例如,以下情况可能表现良好:一个高多边形计数的地图被非常低多边形计数的地图包围(甚至根本没有地图,考虑像洞穴矩阵那样只有一个地图的情况)。

这张来自Shamanka27的GIF演示了地图是如何加载的:绿色方块是玩家所在的地图,橙色是周围加载的地图,而精灵球是玩家在地图中的相对位置。

shamanka27_map_loading-1c11e1494c0d54f263bb8b7d94d39657


缩放与转换

如前所述,地图文件(以及因此所有关联文件,如建筑)的尺寸是任意的512米见方。然而,用于地图创建的主要工具要求将其缩小到1/16的大小(比例因子为0.0625)。当在PDSMS中转换地图准备导回游戏时,只要按顺序执行正确的导入步骤,此缩放会自动完成。然而,从原版地图中提取或“扒取”模型时,了解比例因子很有用。如果从DSPRE导出一个完整的地图3D模型,需要按0.0625的比例缩小,才能在PDSMS中正确缩放。缩放可以在将模型从.dae处理为.obj时在3D建模软件内完成,也可以作为将.obj文件导入PDSMS时输入的可选比例因子。此外,将同一模型导入PDSMS时,需要交换默认的Y轴和Z轴。同样,这可以在3D建模软件内完成,也可以在将.obj添加到PDSMS时作为复选框选择。


工具

第四代地图制作使用的主要工具在“第四代入门”页面中有详细介绍(PDSMS、DSPRE、MelonDS等模拟软件,以及在某些情况下的Tinke)。但是,地图制作时还有许多有用的附加工具和插件,在此处列出。

 
 
工具/插件名称 备注
Blender 广泛使用的免费3D建模软件。由于.obj导入/导出功能的问题,不推荐使用特定版本。安全且推荐的版本包括2.78-2.83版本和4.2版本。
任天堂Nitro系统 (NNS) Blender插件 用于为每个对象定义有一个“骨骼”的几何体/骨骼动画(建筑)创建正确的.NSBCA动画文件。
任天堂Nitro系统 (NNS) Blender插件 v0.2.1 用于为每个对象定义有多个“骨骼”的几何体/骨骼动画创建正确的.NSBCA动画文件。
Maya Blender插件 允许创建NSBTP(任天堂二进制纹理图案)文件的插件,用于“翻书”动画。
FreshLad的DS Blender插件 在处理3D模型时减少步骤/复杂性的生活质量插件。
马里奥赛车DS (MKDS) 赛道制作器 用于创建和编辑图案动画的工具。
Apicula 用于与DS游戏中使用的Nitro文件进行双向转换的工具,特别针对地图相关元素,包括各种动画类型。
GIMP, Paint.net, Nitropaint 简单的绘图工具,适用于编辑和创建纹理。这些示例包含许多相关功能,例如只需配置Alpha通道即可实现半透明/透明。

资源

对于初学者和有经验的地图制作ROM改版者来说,有许多有用的资源,大致可分为三类:

  • 视频和文字教程与指南

  • 支持社区(包括工具支持)

  • 地图制作资产

致谢

请记住,署名致谢(对于帮助和/或资源,无论大小)始终是正确的做法。思考这个比喻:

“我们站在巨人的肩膀上。”

如果没有那些创建工具以实现便捷地图制作的人,这将是仅限于少数知识渊博者的ROM改版领域。如果没有自由创建和共享的资产,我们可能无法朝着个人和团体的改版目标前进(如果没有显著更多的时间和精力投入)。

视频和文字教程与指南

Trifindo’s PDSMS Video Tutorial Series

JaySan’s Beginner Video Mapping Tutorials using PDSMS Series

SauceyaTTa’s Mapping Introdction (HGSS)

支持社区

  •  Kingdom of DS ROM Hacking (KoDSH) Discord服务器。第四代地图制作相关支持频道:

    • #mapping-general:在这里你可以发布你的成品地图、进行中的工作以及所有与地图相关的内容!

    • #g4-mapping-support:试图创建新地图?遇到传送点问题?在这里提出你的问题!

    • #tutorial-videos:链接到JaySan的地图制作教程(以及其他教程)。

    • #tutorial-zone:关于实现特定ROM改版目标(包括地图制作及其他)的社区内容。

地图制作资产

  • Kingdom of DS ROM Hacking (KoDSH) Discord服务器

  •  

 
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容