《星界边境》角色重新自定义功能

0 点赞
星界边境
转载

本指南将尽力向你展示如何直接通过玩家文件编辑角色名称/外观。这个过程看似漫长,但一旦熟练操作就会发现其实不然。我只是想尽可能详细地进行说明。附录部分包含了创建独特配色方案的高级步骤,难度相对较大。 0 - 请先阅读。 本指南涵盖了玩家自定义的多个方面,由于在撰写过程中不断扩展内容,导致不同操作流程变得有些混乱,我正在对这部分内容进行优化。 根据你要执行的具体任务,指南中的某些部分可能与你相关,而其他部分则可能无关。将外观从一个角色转移到另一个角色【难度:新手】 创建一个具有所需外观的新角色,然后将该外观转移到你的角色上。这是本指南的初衷,因此指南的主要部分(第1-9节)将引导你完成此过程。 引用自scareduser91:九节?!你疯了吗?别担心,主要部分都非常简短。有时就像两行字那么短。它们更像是步骤。 更改名称【难度:新手】 更改名称不需要模板角色,因此你可以安全地跳过第1节和第6节。你还应忽略任何提及模板角色和附录部分的内容。特殊自定义【难度:高级】 你可以自定义配色方案,让自己在联机时独一无二。你不需要模板角色,因此再次跳过第1节。当你获得第4节中的角色数据JSON,并阅读了第5节的说明后,直接跳至专门介绍此流程的附录A和附录B。完成后,返回“8 - 生成新玩家文件”部分。 1 - 创建新(模板)角色 运行游戏,按照你想要的样子创建一个角色。我们将此角色称为模板。 你无需用该角色开始游戏,只需让它存在即可。2 - 找到玩家文件 玩家文件夹位于: 【Steam库路径】steamapps common Starbound storage player 在此文件夹中,每个玩家都有一个以玩家ID命名的.player文件和.shipworld文件(.bak文件是这些文件的备份)。此操作只需关注.player文件。 示例: afd4133d29788b76caf3f2f684b8a139.player afd4133d29788b76caf3f2f684b8a139.shipworld 要确定哪个ID对应你的角色,请用该角色登录游戏,退出游戏,然后返回文件夹。时间戳最新的文件就是你刚刚使用的角色文件。你需要记下你的角色和模板角色的ID。3 - 商店库存与备份文件 这一步是可选的,但我强烈建议你将携带的所有物品存放到某处的箱子里,如果你使用了船员自定义+功能,也请将船员装备一并存放。某些物品可能会以程序不兼容的方式改变属性。如果你在重新打包时遇到关于无效值的错误,这很可能就是原因。 现在,在继续操作之前,请将.player文件复制到安全的地方,以防操作失误。 4 - 导出玩家数据 首先,我们要确认Windows资源管理器中文件扩展名是否可见。点击顶部菜单,依次选择“文件”->“更改文件夹和搜索选项”。在弹出的窗口中切换到“查看”选项卡,确保“隐藏已知文件类型的扩展名”选项未被勾选。

. Now, inside the game's player directory: <SteamLibraryPath> steamapps common Starbound storage playercreate a text file called: DumpPlayerData.bat The .bat is an extension. It tells the OS how to handle the file. Like .txt is opened with a text editor. Right click the new file and click "Edit". Inside the file paste this: .. .. win32 dump_versioned_json.exe playerid.player playerid.json (Replace "playerid" with the playerid of your file) Save the file, close the editor and double click the file to run it. You will need to edit the script again, change the playerid, and run it again to dump both of the characters we are working with. NOTE: Adding the word "pause" (without quotations) in the next line inside the script file will keep the window open. Usually I don't do this, to make the process quicker. But it can help if the script is not working to read any potential errors. Example: .. .. win32 dump_versioned_json.exe cea38b05bf93475ec1b58a39ddaf8014.player cea38b05bf93475ec1b58a39ddaf8014.json pause 5 - THE PLAYER DATA FILE The only section of the file that we need is the "identity" section usually near the bottom of the file. Go to the very bottom and use the search tool to find "identity" going upwards (or backwards however your text editor refers to it). Should look something like this: "identity" : { "facialHairType" : "", "facialHairGroup" : "", "personalityArmOffset" : [0, 0], "hairType" : "45", "bodyDirectives" : "?replace;6f2919=782027;ffca8a=ffb0a3;e0975c=fc8469;a85636=be424d?replace;735e3a=196072;f7e7b2=b1f1fe;a38d59=3491aa;d9c189=5dd1ec?replace;dc1f00=8a897a;951500=2c2915;be1b00=4e4f42;f32200=b4b3ad?replace;dc1f00=8a897a;951500=2c2915;be1b00=4e4f42;f32200=b4b3ad", "personalityArmIdle" : "idle.1", "gender" : "male", "color" : [51, 117, 237], "personalityHeadOffset" : [0, 0], "hairGroup" : "hair", "facialMaskDirectives" : "", "species" : "hylotl", "personalityIdle" : "idle.4", "facialMaskGroup" : "", "name" : "Hideki", "facialHairDirectives" : "", "emoteDirectives" : "?replace;6f2919=782027;ffca8a=ffb0a3;e0975c=fc8469;a85636=be424d?replace;735e3a=196072;f7e7b2=b1f1fe;a38d59=3491aa;d9c189=5dd1ec?replace;dc1f00=8a897a;951500=2c2915;be1b00=4e4f42;f32200=b4b3ad?replace;dc1f00=8a897a;951500=2c2915;be1b00=4e4f42;f32200=b4b3ad", "hairDirectives" : "?replace;735e3a=196072;f7e7b2=b1f1fe;a38d59=3491aa;d9c189=5dd1ec?replace;dc1f00=8a897a;951500=2c2915;be1b00=4e4f42;f32200=b4b3ad", "facialMaskType" : "" }, This section contains a collection of key-value pairs for every aspect of the character. Copy the features you are interested in. They are self explanatory except for "Directives". "Directives" (bodyDirectives, emoteDirectives and so on) define the palette color replacements for the character. They can take multiple lines so be very careful to copy the whole thing. Like for example: "bodyDirectives" : "?replace;B3B3BA=7A0203;680D00=000000;E3E4E4=C6C6C6;91868D=6F0200;71FF35=61040E;60BDFF=383838;2D9600=6F0200;FF8D42=2B2B2B;BE1B00=31A500;7C1000=262626;FF3E21=161616;C0FFA5=6F0200;0094FF=2B2B2B;951500=267F00;796783=61040E;267F00=61040E;FFB07C=383838;0062A8=000000;F8F8F8=EDEDED;4CFF00=7A0203;FF6A00=1C1C1C;0084E2=1C1C1C", Always remember that except for the last pair in the collection, all values in key-value pairs have a comma (,) at the end, this will help you clearly identify where does a directive section end. These directives are the focus of the Appendix sections about advanced color customization. 6 - GET THE APPEARANCE FROM THE TEMPLATE Once you have located the identity section in the template file, simply copy all the features you want to transfer. If you only want the colors, copy only the directive sections. If you want the ears, hairstyle or whatever, copy them too. Remember to be especially careful when copying Directive sections since they can span across multiple lines. 7 - REPLACE THE ORIGINAL CHARACTER APPEARANCE Now open the json file corresponding to your character. Again, go to the bottom, search upwards for "Identity". Check the name property in this section, just to make sure you are working with the right character. Then start pasting the values you copied from the Template file. For details on making your own color scheme check the new Apendix on advanced color customization. Player name: I haven't changed my name really. But searching every instance of the player name in the file and replacing them all with the new name should suffice. Once done with this step, we are ready for the final step. 8 - GENERATE A NEW PLAYER FILE Remove the .player file (and it's bak files if any) for your character from the folder (HOPEFULLY YOU STILL HAVE THE BACKUP SOMEWHERE). And just like with the dump script, we have to create a Repack script. Inside the game's player directory <SteamLibraryPath> steamapps common Starbound storage playerCreate a new text file called "PackPlayerData.bat", right click, click edit and paste this: .. .. win32 make_versioned_json.exe playerid.json playerid.player (Replace "playerid" with the playerid of your file) You only need to do this for your character. No need to repack the template since it was only used for reference. Confirm that you have a new .player file for your character in the folder. Cross your fingers and run the game. If you did everything right, your character should have the new appearance. 9 - CLEANING UP Once you are done. You can get into the game and delete the template character. Also you can delete the 2 json files generated during the process. Appendix A: Advanced Color Customization (Setup) In order to make your unique color scheme, you are going to need a couple things: A tool to pick colors: By recommendation of 0x00FF00lolwut, creator of "Green's Dye Suite 1.7", I tried the ShareX app and found it extremely convenient. The color template for your species. Setting up ShareX: -Download and install ShareX from: https://getsharex.com/ -Run the app. -On the left side click on "Hotkey Settings":

在以下菜单中,点击【添加...】

在接下来的窗口中,点击顶部显示“Task: None”的下拉列表,找到并选择“屏幕颜色拾取器”。

一旦选择完成,关闭该窗口,返回到热键设置界面。在新绑定项右侧显示“无”的位置点击,然后按下组合键来激活工具。如图所示,我之前已完成设置,将其指定为Ctrl+Alt+P。

关闭应用程序,并确保它在任务栏中仍处于活动状态

ShareX现已准备就绪。让我们进入下一步。 获取你的物种颜色模板: 我将为你展示两种方法。我强烈推荐使用第一种方法,因为该模组已集成工具可实时测试颜色。不过,我也提供了另一种方法,以防你确实不想安装模组。 方法1:简单方法 - 使用Green's Dye Suite 1.7模组: - 这是我的角色:

将预览切换为【皮肤模式】

这个颜色怪异的畸形产物就是颜色模板。 方法2:欢迎受虐狂——访问文件: 对于原版种族,流程应该类似,但我还没有解包核心文件,所以无法在此提供指导。不过对于自定义种族,你需要按以下步骤操作: -在创意工坊中找到该模组,并记下模组ID。它应该位于浏览器顶部的地址栏中。

-进入你电脑上该模组的工坊文件夹。其位置应为:<Steam库路径> steamapps workshop content 211820 ModId(将“ModId”替换为相应的ID)。 该文件夹内应有一个contents.pak文件。当你在文件资源管理器中打开此文件夹后,点击顶部的路径栏,删除原有内容,输入“cmd”(不含引号)并按回车键。

这将打开命令提示符。实际上,以下命令也可以放入.bat文件中。但由于这是一次性操作,可能不值得这么做,取决于你自己的选择。无论如何,现在你需要将以下内容粘贴到命令提示符中: ".... common starbound win32 asset_unpacker.exe" "contents.pak" ". unpack" 这将创建一个名为unpack的文件夹,其中包含模组内容,如下所示:

重要提示:如果解包了模组文件,使用完毕后请将其移出创意工坊文件夹或直接删除。否则游戏可能会崩溃。 我并非模组制作者,因此不太清楚不同模组的结构差异有多大,你可能需要自行多研究一下。在这个具体案例中,我们需要的文件位于humanoid->lyceen路径下。 以下是该种族使用的部分精灵图像:

既然要更换眼睛,我就打开malehead.png文件。

这是我们的颜色模板。 附录B:高级颜色自定义(步骤) 在本示例中,我们将为角色设置紫色眼睛。 指令 在此过程中,我们主要使用玩家文件的指令部分(有关更多信息,请回顾“5 - 玩家数据文件”部分)。 指令包含一系列十六进制颜色对,例如:6f2919=3e5c6d(此示例将6f2919颜色替换为3e5c6d颜色)。第一个颜色是“目标”值,即颜色模板中将要被替换的值。第二个值是“目标”值,即原始值将要变成的新值。 除非你知道自己在做什么,否则切勿编辑目标值。只更改每对中的目标值。每个颜色值由3个两位十六进制数组成,范围从00到FF,总共6位数字。这3个数字依次代表三原色(红、绿、蓝)。000000为黑色,FFFFFF为白色。 通过手动编辑这些数值,你可以获得角色创建时通常无法使用的配色方案。这些配色在多人游戏中也应生效,让你的角色看起来独一无二。 寻找目标数值 重要提示:不要尝试通过Steam截取屏幕并从中选取颜色。根据我的经验,Steam截图会轻微改变像素颜色,导致很难或无法在玩家文件的指令部分中获得正确的数值。这就是我使用ShareX的原因。无论你选择哪种方法打开颜色模板,都需要确保模板显示在屏幕上,然后按下你最初配置的ShareX热键。这将召唤出一个类似放大镜的取色器。将光标放在你需要更改颜色的像素上。在这个例子中,眼睛由两个不同颜色的像素组成,我们需要选取这两个像素。注意放大镜下方显示的十六进制(HEX)值。

上眼像素颜色:951500 下眼像素颜色:be1b00 这些是目标值。我的角色指令部分如下: "bodyDirectives" : "?replace;b3b3ba=776149;951500=282117;ff6a00=896f55;c0ffa5=57422f;ff3e21=161616;796783=331b0f;680d00=331b0f;7c1000=4f2a17;71ff35=331b0f;2d9600=57422f;91868d=57422f;0084e2=776149;60bdff=dbc2a6;0094ff=9b7e60;f8f8f8=dbc2a6;4cff00=776149;ffb07c=dbc2a6;be1b00=5b4126;e3e4e4=9b7e60;ff8d42=9b7e60;0062a8=57422f;267f00=331b0f", "facialMaskDirectives" : "?"我已对涉及目标颜色的颜色对进行了下划线标注。(从玩家文件中获取此内容的方法在“4 - 导出玩家数据”部分有说明) 获取新的颜色值 使用Dye's suite的一个优势是可以快速测试新颜色。如果不使用该模组,则需要像GIMP这样的软件来测试颜色。记住,无论使用什么工具获取颜色值,都需要颜色的十六进制表示。本指南将展示使用Dye's suite进行颜色测试的过程。 如果不使用Dye's suite模组,可以使用相关工具获取所需颜色的十六进制值。 - 在右侧,使用每个默认颜色右侧的小“-”按钮移除4个默认颜色。

对于每一行,在标记为【目标】的槽位中填入我们找到的目标颜色(作为额外补充,我也选择了胸部毛发的颜色)。

对于每一行,点击标记为【目标】的槽位,然后使用底部的颜色滑块选择你喜欢的颜色,再点击【设置目标】。

在截图中,目标颜色有8位数字。该模组使用了玩家文件中未使用的Alpha通道,请只选取每种颜色的前6位数字。 现在你已获得指令的新颜色配对: 951500=ff2eff be1b00=c02ec3 f8f8f8=00ffff 将新颜色配对应用到指令中: "bodyDirectives" : "?replace;b3b3ba=776149;951500=ff2eff;ff6a00=896f55;c0ffa5=57422f;ff3e21=161616;796783=331b0f;680d00=331b0f;7c1000=4f2a17;71ff35=331b0f;2d9600=57422f;91868d=57422f;0084e2=776149;60bdff=dbc2a6;0094ff=9b7e60;f8f8f8=00ffff;4cff00=776149;ffb07c=dbc2a6;be1b00=c02ec3;e3e4e4=9b7e60;ff8d42=9b7e60;0062a8=57422f;267f00=331b0f", "facialMaskDirectives" : "?"无法识别内容,已删除。如果您想要更改的目标数值未出现在指令中,说明您的角色正在使用模板的默认颜色。以Lyceen为例,构成眼白的两个像素就是如此,只有一种皮肤会改变它们。不过不用担心,您只需在指令的最后一个引号前添加一个分号,然后跟上新的数值对即可。例如:"bodyDirectives" : "?一旦你修改完玩家文件中的指令,只需按照“8 - 生成新玩家文件”部分所示重新打包玩家文件即可完成操作。看看我把我的角色改成什么样了……

请记住:务必备份您的文件! 附录C:技术概念 在本节中,我将解释本指南中使用的一些概念,以便您更好地理解相关内容。 什么是.bat文件? 扩展名为.bat的文件被称为“批处理文件”,是包含一系列命令的文本文件,计算机会按顺序执行这些命令。本指南中使用的批处理文件非常基础,仅执行一条命令。例如,转储批处理文件包含以下命令: .. .. win32 dump_versioned_json.exe playerid.player playerid.json 不过,如前所述,系统可以按顺序执行您在文件中放置的任意数量的命令。如果你想同时导出角色和模板,可以将以下两行命令添加到同一个批处理文件中: .. .. win32 dump_versioned_json.exe YourCharId.player YourCharId.json .. .. win32 dump_versioned_json.exe TemplateCharId.player TemplateCharId.json 显然,需要将关键词YourCharId和TemplateCharId替换为实际的ID。我没有在主要指南中这样做是为了避免混淆,尤其是对于不需要模板角色的流程。 另外,也不需要创建.bat文件,你可以直接在Windows命令提示符中输入这些命令。 命令的使用结构是怎样的?

路径:告诉计算机去哪里查找文件。双点(..)表示“向上一级”。反斜杠(\)类似指针,用于连接路径中的位置。为说明此特定命令的作用,我们来看正在使用的星界边境文件夹,大致结构如下: 星界边境 | |__storage | |___player-----DumpPlayerData.bat | |__win32-----dump_versioned_json.exe 这意味着如果脚本文件位于player文件夹内,需要向上两级(.. ..)到达星界边境文件夹,然后进入win32文件夹(win32),最后执行其中的程序(dump_versioned_json.exe)。 参数:参数是程序运行所需的数据。此程序需要源文件的名称(你的.玩家文件)以及目标文件的名称,你可以随意命名,但最好加上ID以便区分归属。当然,文件扩展名必须是json,这样才能识别文件类型。在这种情况下,参数不需要路径,因为脚本和文件位于同一位置。如果你将脚本放在其他位置,则需要像指定程序路径那样,为每个参数添加路径。 什么是json文件?JSON是JavaScript对象表示法的缩写,是一种用于信息交换的标准格式。《星界边境》中的玩家数据就是以这种格式存储的。JSON容器以花括号({})开始和结束,数据以键值对的形式存储,并用逗号(,)分隔。值是数据本身,键是该数据的标识符。一个非常基础的JSON容器示例如下: { "name": "Corbent", "playtime": 100, "favoriteGame": { "title": "星界边境", "price": 30 } } 注意,键始终要用引号(")括起来,且键和值之间必须有冒号(:)。还要注意,只有当值需要被解释为文本时才用引号括起来。需要被解释为数字的值则不用引号,而最复杂的是,对象可以嵌套在其他对象内部。就像“favoriteGame”键对应一个包含其自身键值对的对象。 十六进制数:十六进制是一种类似于我们通常使用的数字系统,但它不是使用0到9这10个数字,而是使用0到F这16个数字:0、1、2、3、4、5、6、7、8、9、A=10、B=11、C=12、D=13、E=14、F=15。 在计算机应用中经常能看到这些数字,因为它是一种非常方便的缩短二进制数的方式。数据的基本单位是字节,一个字节由8个二进制数字组成(例如01010101)。一个字节的最大值是11111111,等于255。这个数字用十六进制表示就是FF。这就是为什么两位数的十六进制数如此常见。要了解两位十六进制数的值,取第一位数字的值乘以16,然后加上第二位数字的值。很简单: FF = 15×16 +15 = 240 +15 = 255 4C = 4×16 + 12 = 64 + 12 = 76 23 = 2×16 + 3 = 32 + 3 = 35 屏幕上显示的所有颜色都是由红、绿、蓝(RGB)三种原色以某种组合构成的。还有其他一些色彩系统,但除非你要做非常复杂的操作,否则RGB就是你要处理的。这些值中的每一个都称为一个通道,每个通道的值可以在0到255之间。 例如,紫色是【255,0,255】(红色和蓝色达到最大值,绿色为0)。255之所以是最大值,正是因为之前关于字节的讨论。要知道,一个字节的最大值是255,用十六进制表示就是FF。因此,颜色通常用三个两位数的十六进制数组合来表示。 以紫色为例,其十六进制代码为【FF00FF】。更高级的应用会额外使用一个通道,总共8位数字。这个用于透明度的通道叫做alpha通道,取值范围同样是0到255。不过在玩家文件中不会使用透明度。 你可以使用色轮,或者点击顶部的颜色下拉菜单来获取所需颜色的十六进制代码。这个功能很酷,因为点击“获取信息”后会显示大量细节,包括颜色深浅的数值,这能帮助你为角色正确上色。