跳至正文

dxtst

教程编写注意事项

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

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

阅读更多 »教程编写注意事项

联机同步(一)基本概念

之前写弹幕AI的时候我们提到了神奇的AI数组,我曾经说过是因为它能更好的进行变量存储和联机同步。具体来说就是,AI数组的内容会在需要同步的时候与服务器端、客户端进行同步,确保在两个终端里面AI数组的值都一致。同时,TR内部也会同步弹幕的位置,速度等基础属性。在自动机的AI模式下,如果AI数组里面的值一致,我们就可以认为这个物体它在行为上基本是一致的。但是只同步ai值就足够吗?事情远没有那么简单。

根据NPC行为的不同,我们很可能需要用不同的手段去进行联机同步。此外,为了妥协正确性和流畅性,我们经常要进行取舍。而本系列教程将会讨论如何正确的进行联机同步,包括基础概念、游戏机制和实现方案。由于内容较多,本系列教程会分为很多个章节。本章我会介绍联机同步的基本概念以及背后的原理,同时还会介绍一部分TML提供的联机同步API。提醒一下,联机同步的代码其实不是很容易debug,因为你需要一个客户端和一个服务器端同时运行代码,错会出在哪一个终端上不好判断。而且有些时候甚至需要不止一个客户端来观察行为,所以这部分代码编写的时候难度是比较大的,需要仔细思考以及对原版联机模式的深入理解。

本章还是使用1.3的TML而不是1.4,如有差异请麻烦告知一下(懒)。

阅读更多 »联机同步(一)基本概念

魔改进阶——Mod联动


主流方法

我们说几个Mod之间有联动,一般是指Mod之间可以互相引用对方的内容。要实现这个功能,我们一般可以通过:

  1. 强弱引用/依赖:也就是在build.txt中标记依赖哪些Mod,然后通过引用这些Mod的程序集来修改内容。这种方法可以享受到代码高亮以及自动补全,是比较推荐的做法。
  2. 反射:利用.Net提供的反射方法去动态获取需要修改的属性,好处是比较自由,而且能访问第一种方法无法访问的一些属性。坏处就是代码量大,而且性能差,可读性差。
  3. Call接口:有些Mod会显式提供Call接口给其他Mod传参数,具体用法要看各个Mod的实现(比如BossChecklist)。优点是基本不会受到版本更新的影响,缺点是局限性大,没法自由的更改。

当然,也可以把几种方法结合起来,但是无论你用的是哪种方法,一定要先获取目标Mod的源码,你才能知道具体有哪些属性是你需要修改的。此外,在进行Mod联动的时候,一定要知道对方的Mod有没有被加载,如果没有加载那么你进行的操作其实是无效的,而且还会报错。

阅读更多 »魔改进阶——Mod联动

Shader简介

前置知识:向量,三角函数,线性代数

题目名叫Shader简介,其实这也只是个简介而已,对于Shader在TR以外的用途我仍然知之甚少。所以本次教程我会教一下着色器在TR的基本使用方法,遗憾的是,由于XNA这方面的资料不全,所以可能会出现一些疏漏,请大家帮助指出。

阅读更多 »Shader简介