# 本文使用了
## Markdown
### 和Markdown
#### 以及Markdown
---
# 引言
随着 CNSector 社区的壮大,越来越多的人想要加入 Modder 的行列\
然后我们逐渐发现很多新人会遇到非常同质化的问题,一部分问题我们已经向不同的新人回复过很多遍了,本帖的主要目的是对此进行一些整理\
同时另一部分的原因在于,一些人带着一种近乎 **奇异搞笑** 的心态加入本群后造成了一些 ***状况***,所以本帖还有一部分的目的在于将这种成分 **排除在外**
总之,新人的数量已然多到我们确实需要这样一个 *常见问题帖* 来解救疲劳的群友们,特此,我创作了本帖。
以及,本帖可能会更新,但是我是懒逼,所以本帖更新不太可能
---
# 盾
这是一个传统的盾
以下全部内容均为我个人主观,不代表其他任何人的意志,只能说如果你愿意遵循下文,基本可以保证你不会臭名远扬。
本帖仅仅有指导意义,仅此而已
---
# 正文以及正文
## 引入以及引入
按理来说,Modding基础 **不应该** 包括诸如 **"做人基础"**、**"SocializeAPI教程"** 一类的内容
然而由于发生了一些 ***不愉快*** 的事情,有些事情终是不吐不快
那么也就引出了这篇帖子的 **大前提**,简单来说,
**只要你选择加入 `远行星号Mod制作讨论群` ,就意味着你希望使用一定的** ***社交能力*** **从他人那获取经验或直接帮助,使得你能够完成你的模组项目。**\
***实干、自知、有礼*** **是你首先需要的一切**
---
## 环境概况
我们一直在维护 `远行星号Mod制作讨论群` 这个小圈子,让其成为一个实事求是的和谐团体。仅就目前而言,其的确是大多数Modder最应该加入的群体之一。
这里有社会人士,大学生,甚至高中生;这里有 **Cjy、楼兰小五、鱼子哥、迪冷、Ajimu**,以及其他许多正在努力创作的同好。
本群虽然名义上会定期踢人,然而就目前而言频率并不高。只要你有一些作品,或者能让我们知道你正在为了代码或者图像等资产而奋斗,甚至哪怕你只是一个点子王 ~~那我真的很需要你~~,只要你对这个社区做出了一定贡献(或者至少不损害它),**我们其实不关心你是否能够长期活跃,也不在意你的进度快慢**
---
## 问题以及问题
那么这里有一个前提很重要:
你的模组首先得是面向公众玩家的。**Q群类模组,个人模组等不在下文的讨论范围内**
如果你的想法是做上述的模组,**你可以随时开始动手而不需要太担心下文的内容**
- ### 你可以组建团队,但是你真的能够掌控吗?
是的,下文要讨论的所有问题实际上都可以被规避,你只需要自己找画手,找码师,找文案,找音效,找策划,找测试员,甚至你可以用 ***钱*** 摆平这一切,让填表都不用你自己动手,然而组建团队本身就产生了很多需要你关注的问题:
**你能不能招到足够的组员?**\
**你和组员的协调效率如何?**\
**你的能力支不支持你领导整个团队做出成品?**\
**你的财力又能不能承受?**\
……
做这件事前,***请三思***。
由于大多数modder都是个人势,下文的讨论同样不会包括这种情况
- ### *Modding is hard*
众所周知,Modder 其实不玩游戏\
因为做模组会消耗你对 SS 的 **几乎全部** 热情,所以不要过于草率的加入这个行列,除非你真的很热爱
毕竟做模组最重要的是 **`FOR FUN`**\
~~当个臭打游戏的不好吗~~
- ### *Modding* 的第一步是 *Gamming*
没有足够的游戏理解的后果就是,你的内容大概率会在平衡性,游戏性,趣味性等方面全面崩盘,**所以请多玩游戏**
甚至有的时候其实这个问题已经严重到超出了 *游戏理解* 的范畴,有可能你对于原版内容也没有体验干净:\
***欧米茄是原版内容而不是模组内容***
- ### 别一开始就想做很炫酷帅气的东西
无论是在 CN 社区还是 EN 社区,SS 模组都越来越卷了。shader、3D 模型、PBR、手写AI、逆天级可动……你想得到的所有赛道都有人在跑了
虽然我自己也是在卷AI卷可动卷视效的一员,但我想说的是:**别被我们这群人影响了**。
如果你想上来就做点炫酷的东西,大概率会像我一样:*花一个月去做一个系统最后却不得不把它丢进垃圾桶*\
从最基础的开始才是最重要的。先收起你的磅礴野心,写点经典的改数值船插、系统,慢慢过渡到越来越高级的内容才是有效的路径
- ### 请做好从零开始学画画的准备
**船图是最重要的**
如果没有一组像样的船图,你的模组会很难受欢迎,**这是完全符合主流价值观的)**
画画很难,而且真的很难\
如果你不会画画,请静下心来慢慢学习。如果你真的是完全0基础,最好别说太多 *“教我画画”* 这种话,因为别人 **教不了**\
如果这样,请现在开始自己画,别在意自己画的东西丑,从模仿开始,多画多练多提高,**一起都会好起来的**
~~modding 7个月了我仍然在船图上摸爬滚打~~
就我个人的经验而言,配色、体积感、光影、结构感以及结构之间的衔接是最基础的,开始理解这些元素后就可以拿着图寻求一下群里 **常乐、狐狸条** 等画佬的意见 **(别太打扰别人**
同时也别怕被骂,别人愿意主动提出你的缺点 **是天大的好事**
- ### 开发模组需要 *Java* 基础
**这是废话**,但仍然需要提醒所有新人:**你想做的任何功能(系统,船插,武器特效)都需要代码的支持**
但是这并没有你想的这么难,**甚至是所有障碍里最容易跨过的**
模组开发这个过程对于 *Java* 水平的需求低到了实际上你可以边学边写的程度,所以 **大胆去吧**。
- ### 请用 IDE 而不是记事本和 *Notepad++* 写代码
使用 *Idea* 或者 *Eclipse* 能延长你,以及帮助你的人接近一倍的寿命
- ### 请用 PS 等绘图工具画图而不是 *Windows* 画图
……而使用 PS 能延长你接近三倍的寿命
- ### 打包!打包!打包!
更好的是,学会配置环境并把你的代码打成 `xxx.jar` 而不是使用 *Alex* 的傻逼 `common_complier` 能够实际上延长你五倍的寿命
- ### 请尽可能使用高版本游戏作为开发环境
高版本API提供了更多的功能,包括强制开火的方法、DEM相关的代码以及舰队生成相关的更新等等。即便你想要照顾 `0951` 或 `096` 玩家,也可以自行将包含新版API的内容删掉并行发布
使用高版本特性是一件非常爽的事情,在你的项目开始前你就应该首先考虑以最高游戏版本作为主要版本开发
- ### SS没有文档,以后也不会有
一些习惯了其他游戏的modder会关注文档问题,实际上Alex没有提供太多有价值的文档,官网上的文档也并没有实际内容
如果你需要指引,可以看 ***[Nihilism Guide](
https://1847905557.github.io/StarsectorNihilismGuidance)***(俗称`虚无主义教程`)或者b站 **@手电筒fw** 的教程视频
- ### 能问百度的尽量别问群友
群友能做的是作为 SS Modding 的人形文档供你查询,而不是 Java 文档,或是 Idea 文档。\
**请发挥你的自学能力**
群友很累,群友很忙,饶过你们的群友吧
- ### 抄代码不丢人
实话实说,因为没有文档,我们学习原版 API 的最大途径是 ***抄***
原版代码和其他模组的代码是这个学习过程最好的样板,通过复制和修改,你能够实现一些简单的功能,然后逐渐学会 API 中的各种东西,所以当你想做某个功能时,先思考 ***原版有没有这个功能?我应该去看看原版的代码***
当然这里也涉及到了一些版权相关的问题,如果从别人的模组里大片的复制代码,请尽可能获得原作者的许可
- ### 提问时尽可能描述清楚你的问题
不怕字多图多,就怕啥也没有:
*“为什么系统没有效果”*\
*“我游戏怎么闪退了”*\
*“这个怎么null了?”*
报错请附上log截图,截下 `starsector-core\starsector.log` 最靠下的 ERROR 信息以及报错的代码,并且尽可能学会自己排查错误。
诸如此类:
```
78970 [Thread-3] ERROR com.fs.starfarer.combat.CombatMain - java.lang.NullPointerException
java.lang.NullPointerException
at org.boxutil.util.TransformUtil.createModelMatrixVanilla(TransformUtil.java:234)
at org.boxutil.units.standard.entity.TextFieldEntity.setStateVanilla(TextFieldEntity.java:716)
at data.scripts.plugins.Self_SwordModeCtrlPlugin$RenderingPlugin.render(Self_SwordModeCtrlPlugin.java:63)
at com.fs.starfarer.combat.entities.CustomCombatEntity.render(Unknown Source)
at com.fs.starfarer.combat.entities.BaseEntity.render(Unknown Source)
at com.fs.graphics.LayeredRenderer.renderOnly(Unknown Source)
at com.fs.starfarer.combat.CombatEngine.render(Unknown Source)
at com.fs.starfarer.title.TitleScreenState.render(Unknown Source)
at com.fs.starfarer.BaseGameState.traverse(Unknown Source)
at com.fs.state.AppDriver.begin(Unknown Source)
at com.fs.starfarer.combat.CombatMain.main(Unknown Source)
at com.fs.starfarer.StarfarerLauncher.super(Unknown Source)
at com.fs.starfarer.StarfarerLauncher$1.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
```
- ### “为什么现在的年轻人越来越听劝?”
这是非真的。
最无趣的情况就是别人让你发图、发log、发舰船武器文件之类的然后你劈里啪啦半天就是不肯发——\
**如果你完全不愿意遵循别人的意见,我推荐你最好啥也别问**
这部分内容虽然已经包含在了 ***大前提*** 里面,但这种行为是相对最常见的,而且已经在群里面造成了一次长时间的无效讨论,**所以值得在这里特别点出**
- ### 别大谈人之领和大崩塌
实际上,你文案、设定里的人之领应该得是一个类似于~~克苏鲁~~的存在:**不过多叙述,别细致描绘**。
这样的模糊化处理是完全合理的,因为 **原版也干了**\
所以实际上 99% 的对于人之领的*细致*描述都可以被认为是 **吃书**
显然你可以有 `扩疆探索公司是人之领时期的留存……` 这样的简单提及,但你不能写:
*人之领是一个寰宇巨企开局的资本主义宝宝,一个人之领公民每天可以领取 590g 的丰厚食品配给,然后每个年满1.8岁的人之领员工都能够加入这个食品配给计划,而我的这个 **人之领果品.Inc** 就是为了生产这些食品配给而诞生的,总之大崩塌实际上是因为我们想要垄断整个英仙座的食品业搞的阴谋(天哪巨大的阴谋!),但是创始人Edison Vanderbilt不喜欢速子因为我喜欢霸主,所以我们和霸主是盟友而和速子不是盟友*
***……相信我,这会是一坨狗屎***\
总之你应该对自己的文案水平有一定的自知之明,设定不能无边无际,**这里是实际上有一条底线的**
- ### 平衡性很重要,但是平衡性重要不太可能
平衡性它确实很重要,因为 ~~星战Mod是一款我的最爱~~
既然如此,那么你应该花多大的心思去处理这个东西呢?——尽量别花。
**平衡的本质是让玩家有更多的选择**\
平衡是放在 **原版环境** 下的相对的状态,想要玩家有更多的选择的话,**创作更多的优秀内容并提高游戏性** 才是最重要的。
花太多精力对着csv表格调数值是本末倒置的,因为的确 **你调不明白**。很多模组数值实际上要么是俺寻思的,要么就是测试员专门测试并调整的,所以 **可以认为这件事情和早期开发完全无关**,你需要做的就是从原版复制数值,调整一下,然后祈祷最后辽辽会出现并调整你的 *池沼* 数值
- ### 你能做到。
~~某款二字游戏~~
我们一般希望一个圆满的结局\
尽力而为一类的话已经无需多谈,而 Modding 的确不失为一种打发时间、获得认可的好手段。\
但其实我们都只是在追求 **自我满足** ,如果你不能够得到满足,大可以退出,我们完全理解你的决定
- ### 也许还有更多?
呃啊我没想好
---
# 结语
模组开发不是一拍脑袋就可以做的事情,请确保你做好了准备来花上一两年时间做这件纯粹热爱的 ***“蠢事”***
请确保你能够和群友 ***友好*** 相处
请确保你能够在这个过程中享受到足够的 ***乐趣***
### ***然后,敬请见证***