跳至正文

教程编写注意事项

近期收到了不少裙友的编写教程的意愿,我非常开心有越来越多的人希望加入维护裙中世界这个MOD社区。在此,我也对编写教程的各位提出一点小要求,以此来确保裙中世界教程的高质量和整体风格的统一性。满足这些要求的投稿才会通过审核哦。

如果对此有疑问,欢迎找我咨询。如果对其他教程有修改或者更新建议也欢迎进行重写。


投稿权限申请

如果想要参与裙中世界教程的编写,可以加群或者直接联系我申请权限,小裙子的QQ为:2237367067

申请时请附带在裙中世界里注册的用户名,想要贡献的教程题目,你对这个主题的想法以及一个大纲。一般来说,我希望你对这个主题已经有足够的经验和认识,你所写下的每一行代码你都要能清楚的说出为什么它们能实现想要的效果。如果以“因为XXXMOD也是这么写的,我就抄过来”为理由显然是不足够的。

如果你参考了其他地方的代码,请确保你完全理解它在干什么,并且要用人类可读的方式写出来。

虽然裙中世界大部分内容是关于代码的,但是我并不要求一定是代码教程,绘制、策划、错误处理等内容也是欢迎的,甚至可以制作一些与泰拉瑞亚无关,但是涉及游戏开发、计算机科学方面的高级内容。


编写要求

流程简介

获取权限后,在仪表盘点击文章部分即可进入文章列表。随后可以点击“写文章”来新建一个空白文章。

本平台使用的是WordPress框架,内置的文本编辑器有很多实用的排版工具,希望大家多多尝试和学习。

写完文章后,可以将文章发送到审核,然后不要忘了告诉我一声,因为我是没法立即知道你的文章是否处于待审核状态。

如果文章没有通过审核,我会告知你原因并且提出修改意见。

内容要求

  1. 不得涉及任何政治敏感、暴力、色情、人身攻击等与教程无关内容。
  2. 推荐以图文并茂的方式编写教程。
  3. 推荐加入GIF等动画来帮助其他开发者理解。
  4. 推荐以容易理解的方式讲述内容,而不是学术化的方式。
  5. 推荐给出实现代码,并且加上注释。
  6. 最终解释权归小裙子所有。

格式要求

尽量避免使用花里胡哨的字体大小和颜色,教程应保持简单易懂。默认的字体大小足以满足绝大部分要求,如果需要强调,可以使用粗体斜体,以及改变部分文字颜色。

使用标题元素,如H1,H2,H3等来组织文章结构。并且在下方选择插入目录,同时,你可以通过上方的详情查看文档大纲。

选择插入目录
查看文档大纲

如果一部分内容是代码或者代码元素,那么可以根据长短选择内嵌代码:比如 damage。如果代码较长请使用代码块:

选择源代码区块

效果如下:

public static Rectangle Frame(this Texture2D tex, int horizontalFrames = 1, int verticalFrames = 1, int frameX = 0, int frameY = 0);

代码块可以自己选择需要高亮的语法。

对于内嵌短代码,我们应该保证左右各留出空格,如这一小段 item.damage = 100 所示。如果有一端是一行的开头,或者标点符号空格等已经留出空间的区域,就没有必要再加一个空格了,比如 this.enableLock

一行代码推荐不要超过80个字符,可以选择在合适的地方换行来增加代码可读性。如果代码包含太多细节,也可以使用伪代码来简化代码长度和突出总体逻辑。

if 新加入的代码长度超过80个字符
    p 为最近的标点符号位置
    新的字符串 = p 前面的部分 + '\n' + p 后面的部分

代码块要使用正确的方法进行缩进,推荐先在VS上写好并且格式化,然后顶格复制到代码块中。VS里可以用 alt + 长按鼠标 选择一个特定的区域。

特殊的选择代码方式

错误的缩进:

            projectile.rotation = projectile.velocity.ToRotation();
        
            for (int i = 0; i < projectile.oldPos.Length; i++)
            {
                Dust dust = Dust.NewDustDirect(projectile.oldPos[i], projectile.width, projectile.height,
                    MyDustId.RedTorch, 0f, 0f, 100, default(Color), 3.0f);
                dust.noGravity = true;
                dust.velocity *= 0;
                dust.position = projectile.oldPos[i] + projectile.Size / 2f;
            }

正确的缩进:

projectile.rotation = projectile.velocity.ToRotation();

for (int i = 0; i < projectile.oldPos.Length; i++)
{
    Dust dust = Dust.NewDustDirect(projectile.oldPos[i], projectile.width, projectile.height,
        MyDustId.RedTorch, 0f, 0f, 100, default(Color), 3.0f);
    dust.noGravity = true;
    dust.velocity *= 0;
    dust.position = projectile.oldPos[i] + projectile.Size / 2f;
}

推荐对于图片都是用居中对齐,并且链接到媒体文件,这样可以开启点击查看大图的功能。

链接到媒体文件

对于GIF图片,请确保选择右边的图片尺寸为全尺寸,否则会导致动画无法播放。


如果想要启用 \( \LaTeX \),可以在文章开头的区块写下 [mathjax]。

内联(inline)的 Latex 代码块可以使用 \(\) 包围起来。例如

\( E = mc^2 \)

就会出现 \(E=mc^2\) 的效果。同样地,内联 Latex 代码也要像普通短代码一样在左右两端留出一个空格。如果是一大段 Latex 代码,则需要另起一个区块,并且使用 \[\] 包围起来,就像这样:

\[ \int_{a}^{b} f(x)\ dx \approx \frac{1}{N}\sum_{i=1}^{N} \frac{f(X_i)}{p(X_i)} \]

效果就像这样:

\[ \int_{a}^{b} f(x)\ dx \approx \frac{1}{N}\sum_{i=1}^{N} \frac{f(X_i)}{p(X_i)} \]

如果你没有开启 Latex 就不要使用那些花里胡哨的数学符号了,因为他们在文本下的表现能力很差!


其他要求

无论你的代码是不是从别的地方抄过来的,都推荐你用自己的理解重写写一遍,确定达到了一样的效果。不要在代码中出现明显的从别的地方参考的痕迹,说的就是你 numXXX

发表回复