《Aground》游戏模组制作基础 什么是模组制作? 模组制作指的是利用游戏内置的特殊模组API来修改或改变游戏的某些方面。你可以通过模组添加新内容,比如武器、载具甚至岛屿,也可以只是修改现有的敌人或战斗,让它们更具挑战性。 如何进行模组制作? 开始制作模组前,你需要准备以下几样东西: - 《Aground》游戏的文件位置(通常在C盘的某个地方) - 文本编辑软件,例如Notepad++或Atom 游戏文件位置在哪? 如果你将游戏保存在Steam游戏文件夹(默认设置),那么文件应该位于C: Program Files (x86) Steam steamapps common Aground或类似路径下。 找到游戏文件后,打开【data】文件夹,然后打开【core】文件夹。现在你将看到构成游戏的XML文件。你可能会问XML是什么?它代表可扩展标记语言。游戏的实际代码是用HAXE编写的,HAXE通过XML文件的输入来创建你在游戏中看到的内容。任何知道从哪里查找的人都可以编辑这些XML文件,添加新内容! 举个例子,让我们打开“start”文件夹(数据核心),并在文本编辑器中打开start.xml。现在你会看到一个定义初始岛屿的大型文件。 要创建模组,请前往data mods文件夹,创建一个以你的模组名称命名的文件夹。然后在该文件夹内创建一个名为mod.xml的新XML文件,并粘贴以下代码: <?xml version="1.0" encoding="utf-8" ?>正如你在【dummy_boar】的说明中可能已经注意到的,我提到了动画!动画是游戏在事件发生时连续播放的一系列图块。一些常见的动画包括:闲置(当对象不移动时播放);移动或行走(当对象移动时播放);以及攻击(当对象攻击时播放)。当对象执行上述动作时,游戏会自动查找名称为“enemy_id.action”的动画。 动画由一个基础图块、要播放的帧数以及可选的项目帧率参数组成。例如:<animation id="fire_boar.roar" x="11" count="10" /> 野猪的动画更为复杂,同时使用了x和y坐标。在这个动画中,游戏会识别到【fire_boar】正在使用野猪图块,然后会提示“嘿!”它没有任何反应。我会播放闲置动画。”然后它会看到x="11",这表示播放fire_boar图块后的第11帧,并播放该帧及其后的9帧。如果你看到y="数值"和x="数值"一起出现,这只是另一种定位起始图块的方式。记住,这里以原始图块为(0,0),所以如果起始图块不是图集中的(0,0),那么坐标将会不同。如果你看到length="数值",这表示“在进入下一帧之前,连续播放当前帧数值次。这可用于减慢动画速度。 这只是一些示例的基本解释,请记住这三点:count是帧数;length是帧率;你指定的(x,y)坐标以图块为(0,0)。制作动画的第二种方法是依次定义每一帧,当你的帧不是连续的时可以使用这种方法。 在哪里可以获得更多帮助? 有一个非常活跃的模组制作者社区,他们会定期查看Steam、Reddit和Discord。主要的模组制作中心在Discord。我们期待你为这款出色游戏添加内容的创意! 学习新知识的最佳方式是查看游戏代码。如果你想了解某事物的工作原理,就去查看它!这是学习和扩展知识的绝佳途径。<模组> <名称>模组名称</名称> <描述>模组描述</描述> <作者>你的名字以及所有合作者</作者> <版本>1.0.0</版本> <初始化> 此处放置XML代码 </初始化> </模组> 完成上述步骤后,你就可以开始添加自己的内容了! 模组物品 最简单的入门方式是添加新物品。如果你打开数据核心物品items.xml,会看到一长串物品定义。例如:<物品 id="steel_bar" 类型="资源" 成本="75" 重量="5" 图标="steel_bar.让我们来解析上面这行代码的含义: <item />:游戏读取的标签,用于创建物品 id="steel_bar":物品的标识符,用于获取或制作该物品 type="resource":物品在 inventory 中的分类,以及其他相关属性。类型包括:resource(资源)、food(食物)、object(物体)、equipment(装备)、tool(工具)、spellbook(法术书)、blueprint(蓝图)等 cost="75":该物品在商店中的购买价格为75金币 weight="5":物品在 inventory 中的重量 icon="steel_bar":在 inventory 或其他地方显示该物品时所用的图标其他常见参数: animation="anim_id":在物品栏中播放动画(例如火野猪) slot="slot_name":若物品可装备,指定其可装备的部位 durability="value":物品的使用次数 查找示例的最佳方式是查看游戏代码,其中包含大量各类示例。大多数物品参数都相当简单。 如何添加图块? 既然已了解如何制作物品,接下来我们来了解图块或图像。每个敌人、物品对象、结构、NPC等都有一个图块。该图块是游戏在显示对应事物时被指示显示的内容。瓦片由三部分组成:瓦片集定义(瓦片来源的图像);瓦片定义(在该瓦片集上可找到瓦片的位置);以及瓦片调用(在使用瓦片的对象中,你会看到tile="tile_id"或icon="tile_id")。 要创建此瓦片,首先需要一个瓦片集。在我们的示例中,再次以钢条为例。如你在钢条物品定义上方所见,有一个瓦片定义。钢条的瓦片为:<tile id="steel_bar.ico" sheet="items.png" x="38" />。这意味着瓦片"steel_bar.ico"位于瓦片集items.png的x="38"处,即第38个瓦片。 大多数图标瓦片集实际上是一种特殊情况,由于默认瓦片尺寸为高10×宽16,即图标的尺寸,因此无需将items.png定义为瓦片集。不过,如果你确实要这样做,代码会如下所示:<tilesheet id="items.png" width="16" height="10"/>。 <tilesheet /> - 告知游戏定义一个图块集 id="items.png" - 使用此XML文件所在文件夹中的图像"items.png" width="16" - 将图像分隔为16像素宽的列 height="10" - 将图像分隔为10像素高的行 一旦定义了图块集,只需使用图块定义来调用你的图块集。记住,图块在图块集上的位置从0开始,因此左上角的图块是x="0" y="0",并从那里开始递增。 要在物品或对象中调用图块,请使用tile="tile_id"或icon="tile_id"。Icon主要用于物品,而tile用于结构。当不确定使用哪个时,可以在代码中查找示例。和之前一样,这里只是对 tilesheet(图块集)的基本介绍。可以定义不规则的图块集,比如龙 boss 的图块集。它们的工作方式大致相同,只是你必须用单独的代码行定义图块集中的每一帧。 如何制作敌人? 到目前为止,你可能已经花了一些时间编写代码,为自己打造了一把闪亮的新剑,能够一击杀死任何东西。现在是时候制作一些敌人来击杀了! 敌人的定义方式与其他事物大致相同,使用<enemy />标签。举个例子,我们以起始岛屿上的野猪为例。<enemy id="boar" tile="boar" health="4" damage="2" range="7" type="surface" trapped="pig" capture="2" kill_achievement="boar" night="false"> <run><play object="this" animation="roar" /></run><target id="rat" /> <loot p="4" /> <loot id="milk" p="1" /> <loot id="meat" p="16" /> </enemy> 如你所见,敌人设定会稍微复杂一些。我们来简化一下。 <enemy id="dummy_boar" tile="boar" health="4" damage="2" range="7" type="surface"> <loot id="meat" /> </enemy> 我们的新假野猪会在地表四处活动,被击杀后会掉落一块肉。这里最重要的参数如下: id="dummy_boar":敌人的ID,用于将其召唤到你的世界中 tile="boar":使用野猪的图块来显示和播放动画 health="4":拥有4点生命值 damage="2":每次攻击造成2点伤害 range="7":它能看到并追逐你的距离 type="surface":部分敌人类型包括地表、魔像和蠕虫。这些基于你在游戏早期看到的基本原型。类型决定了它们的行为。 <loot id="meat" />:被击杀时会掉落一块肉 要创建你自己的敌人,只需绘制它,定义图块集,定义图块,然后调用它。接着为其添加攻击和一些掉落物来完善它。如果你想制作更复杂的敌人,可以参考其他敌人,获取创建自定义攻击的灵感! 如何制作动画?




换一换 
























