类似于oj的模组评测系统

纪华裕


众所周知,算法竞赛有一套在线评测系统,那么模组是不是也可以有一个在线的评测系统?

类似软件的自动化测试这样的。
比如把评测脚本进行录制,然后通过CI进行自动执行,自动评测,最后出一个分数。


FledgeXu


做是肯定可以做到的,但是这个系统会很复杂。
大部分的OJ平台用的也是已经实现好的开源系统吧。


纪华裕


可是试一下,从最简单的几个功能,比如添加mod,添加物品,等等。


Snownee


不支持。开发系统浪费时间和金钱。自己做点东西出来远比通过测试爽。


Snownee


添加mod,添加物品对于有开发经验的人真的再简单不过了。鸡肋。


纪华裕


其实也有一个目的就是通过一个题目,来引导。
目前想的是,针对一个初学者的进阶,而不是针对已经会的人。


纪华裕


比如教程,手把手教完了,也许需要自己试一下,就是逼着同学,自己去写。


Snownee


模组开发不都是面向需求的吗?我还没见过有谁事先把模组开发学会了。


FledgeXu


有兴趣的人自然会去尝试的,没兴趣的人你逼他他也不会学的。
另外还有两个非常现实的原因。


纪华裕


的确,这个需要挺多的时间。


纪华裕


其实和OJ有一个差不多的想法,就是分享你的学习进度。

OJ的主要目的有这么几个:

但是还是一个问题,为什么做模组。大部分人都是因为兴趣,而不是为了生存。
理论上OJ这种东西,应该不太行,类似于之前的mcbbs模组制作比赛(听说没人参加)。

还有就是mc的模组开发对于其他工作使用的东西帮助比较少,很难形成一个良好的循环。

再则,缺少一块氛围。

或许少儿编程会是模组制作的一个新天地?(误


FledgeXu


少儿编程已经有别的可以开发mod的系统了,不过好像也是在forge上修改的。


纪华裕


还是感觉想学的人不太多,又缺乏一套合适的进阶指南,形成不了一个比较好的氛围。
如果有一些公司愿意来带头开展,就。。


FledgeXu


想学的人不多和缺乏合适的进阶指南是互相影响的。
想学的人数的增加我们没有什么办法,但是合适的进阶指南还是可以努力的。
MCbbs的编程区帖子阅读人数也不少啊


纪华裕


想学—>去学—>主动学,需要一步一步进阶,是时候来一个java教程了。


FledgeXu



纪华裕


是符合我的世界模组开发的Java教程


FledgeXu


学编程是一件挺严肃的事情。
很多事现在偷懒,以后要花更多尽力补回来。
而且我也提供了相对偷懒方法的链接。


纪华裕


但是有多少人愿意在学模组制作前好好的学一遍java。
还不是一边,一边。


FledgeXu


而且之前已经有很多人写了非常不错的教程,这些教程也经历了很多人学习的检验。
私以为这些教程的质量要比我们随便写写的Java教程要好上不少。
我也阅读过很多MCbbs上的Java教程,质量实在不敢恭维。


FledgeXu


即使是一边写一边学,我这个帖子里提供的资料的质量也比随便哪里的Java教程质量要好上不少。


纪华裕


质量肯定好,但是有多少人会去看完呢?看完会记得多少呢?
虽然,这部分人不多,但是也不少。


FledgeXu


不需要看完,只要让他们知道如果他们需要这部分知识,到哪里可以获取优质的教程就好了。


FledgeXu


只要资源足够丰富和高质量,就像河流总会到达大海。新人们总会学会的。


LittleboyHarry


我觉得你想要的是JUnit 测试用例和 Gradle 测试脚本。
难的不是测试用例的编程,而是你要做出能让人循序渐进的开发指导教案,这倒是教育学师范的问题


lss233


我赞同 @LittleboyHarry 的观点。
楼主的意思是自动化测试,但是话题怎么偏到写教程去了?
做当然可以做,~有条件的话你设置可以写一个核武器发射装置呢~
问题难道不应该是做什么、怎样做吗?
模组评测,测什么内容?给什么人看?这个东西解决了谁的什么痛点?
运行时间?复杂程度?崩溃概率?可玩性?
不同类型的模组,评分的时候又应该制定什么样的指标呢?


Chenwe_i_lin


总体来说, 这可能比开发一个给别人用的开发框架还难.

就以 python 生态系统内经常使用的 linter: “pylint” 和测试工具 “pytest”,
他们都是使用了 “规则” 来规范代码的运行结果, 运行的过程, 还有代码本身. 无论如何这些工作都遵循着人来写的 “规则” 运作.

我本人对这种重复思考的事情除了写本体, 写文档和重新思考总体架构上, 并不看好这种编写规则并让自己的程序遵守这些规则这种事情. 因为这不仅仅是一种重复思考, 它虽然会增进整个程序的健壮性, 但也会引起新的问题(比如对先前工作的错误理解导致的新 bug).

这个想法显然非常的具有建设性, 尽管是个非常好的想法: 根据一个个阶段性的 “成就/进度” 来促进他人熟悉工作, 但是很显然, 在 modding minecraft 的开发中, 仅仅这样是不够的, 我认为应该先让模组开发的生态系统通过某种渐进式的方式建立, 成熟起来, 比如说前辈的开发者对 Forge 框架的理解和看法, 对其中一些坑点的指出这部分. 技巧性问题上, 他人应该可以通过一个非常详细的步骤(问题引入 -> 问题本身 -> 问题解决方法 -> 问题发生的根本原因) 来对后辈指导.


Chenwe_i_lin


对新来的读者: 很抱歉, 对这种问题的看法, 我的说法显然太过于杂乱没有逻辑了…


Twily


这可能需要比较大的服务器开销,而且安全性也是个问题。
此外,有些mod没有可比性,比如难安装的(大jar)和不好看但是性能好的,这怎么比…

不过我还是希望有一个统一安装mod的标准,毕竟现在的mod严重缺乏统一管理,虽然有mcbbs和curseforge撑着,但是仍然没能做到像apt-get和yum那样方便(一键安装mod?我试试写在我的启动器里)

偏题了,回来。
其次就是版本混乱,OJ很难选择最合适的Forge版本(32.0.61玄学出了个错,然后63就修复了)。
mod是个…差不多是自娱自乐的东西,除非能做到像几个人尽皆知的mod那样强大,否则并没有普及的意义。
(个人观点,欢迎指教)


Lasm Gratel


不同意通过 OJ 的形式进行“引导学习”。Mod 的开发训练和进阶在于填坑,维护一个愈加复杂的系统而不是围绕几个简单的模块团团转。但既然你提到了 OJ,我觉得我们可以做些别的。

自动化测试上我们还可以再前进一步。既然浏览器有 Selenium,何不制作一个适用于 MC 的 Selenium 然后创建测试用例?
也可以和 Travis, AppVeyor 甚至 “OJ” 进行对接

或者我们也可以为 SonarQube 编写一些插件

这样我们通过评测系统评测代码和 Mod 质量,给新人建立一个基本的观念