ONS通用游戏引擎高清版技术

由于NScripter简单易用,运行速度快,扩展性好,所以广受粉丝游戏制作人的欢迎。虽然引擎代码本身并不公开,但属于非商业用途的自由软件。

NScripter本身只支持Windows,但非官方的高兼容性ONScripter可以支持跨平台需求。

ONScripter与大多数NS命令兼容,但它们的API和指令集仍然不同,少数命令不兼容。

开发者可以使用所谓的中间语言来编写游戏的代码。SDL & amp;说明:可移植性。ONScripter最大的优势就是移植性高,不仅因为它是基于移植性优秀的SDL编写的,还因为它是以移植性高为目标编写的。ONScripter的作者使用的设备是夏普的Zaurus。这种运行Linux的设备性能非常有限,我还是很佩服作者的决心。如果它只能在Zaurus上运行,那么它会随着Zaurus的离去而逐渐化为尘土。但是开源和便携性给它带来了更长的寿命。

ONScripter选择SDL作为其基础是一个很好的决定——SDL可能是目前可以在大多数设备上运行的图像引擎之一。ONScripter使用的其他库基本上都是可移植库。与带boost的rlvm相比,移植后者的设备更少。

开源的好处是每个人都可以贡献自己的力量。在大家的支持下,ONScripter支持的设备越来越多。一旦国产设备移植到SDL,最常见的移植游戏就是opal(开源仙剑,也是基于SDL)和ONScripter。这也是ONScripter十年后依然被我们使用的原因。对于移植者来说,人们选择ONScripter的最大原因是它的跨平台性太强了。即使有这样的缺点,也往往没有更好的选择。与ONScripter相比,没有其他引擎可以做到这一点。NScripter:完善的基本功能。

ONScripter的另一个巨大成功是它的目的是模拟NScripter。

高桥的剧本在那一年很受欢迎。虽然看起来它的功能还是有所欠缺,但是我们不得不承认NScripter确实是一个合格的Galgame引擎。它有能力实现Galgame所需的所有基本功能。

而且,如果按照它给出的框架,实现也是非常精细的。

大量移植了原NScripter引擎的游戏,让ONScripter流行起来,同时也让那些老游戏和NScripter自己的第二人生复活了。性能。性能问题一方面是SDL的问题,另一方面是ONScripter写的问题。

SDL的主要问题是,当它第一次移植到过去时,它通常基于软解决方案。当然,该来的总会来,硬件加速还是会来。

ONScripter的代码中确实有“平淡”的地方。吴平-凌的评价一针见血:“值得日本人思考吗?能在规定的环境下很好的工作,否则就不好了。。。。"

顺带一提,本帖的bug是Arch中SDL_ttf的问题,但和ONScripter关系不大,已经修复。

我不认为性能是一个极其重要的问题。当然,真的很重要。

一方面,只要整体框架没有大问题,优化前保证正确性也不过分。毕竟过早优化是万恶之源,开源也是解决这个问题的好办法。

另一方面,ONScripter的瓶颈还是在IO和显示上。对于那些使用链表查找标签,这真的不是一个性能问题。NScripter的表达能力。

我觉得这部分是我对ONScripter最大的评论——虽然应该归功于NScripter。

平芜湖的评价在这里依然适用:如果按照高桥的思路,NScripter很坦白;但如果不是这样,你会觉得NScripter处处被捆绑。

可惜移植的目的是模仿另一个游戏来再次实现,完全按照NScripter的思路往往不是那么容易。

高桥很清楚一个Galgame引擎需要什么,但是他懒得关心其他的事情。NScripter的语言设计明显混乱。命令式风格,有些计算的东西明显是汇编风格,很多功能明显是后面加的。最后发现这件事做不到,开始支持lua……...总之,NScripter本人从语言的角度来说还是很不灵活的。说实话,很多事情不是做不到,而是太麻烦,无法实现。动画效果实现起来很繁琐。

NScripter的动画基本靠自己的写周期控制。如果不注意时间的准确性,可以使用for循环。if-goto循环可以通过定时器精确控制,当然也可以抽象到定制过程中,虽然还是很麻烦。

更不用说缩放和旋转了。如果实现了全屏雨滴效果呢?然后你还得依赖插件,插件与平台相关,可移植性差。

顺带一提,msp的移动效率并不是那么好。NScripter语言的困惑在于,它有lsp、lsp2、drawsp、blt等不同系统做类似事情的功能。

很难实现并行动画。

如何让两个动作配合起来?你必须在一个循环中同时做两个动作。如果你把运动抽象成一个过程呢?如果是全屏振动同时移动怎么办?如果一边移动一边缩放呢?上面这些缘分有很多,希望抽象成一个过程。我头疼。

与Kirikiri2中的解析脚本相比,它默认不阻止动画执行,在这里表达起来真的困难很多。

不过还好,至少很容易表达。想表达窗外雨水滴落的效果,或者晚上对话时魔法让背景慢慢移动怎么办?

在NScripter dialogue中同步图片移动的唯一方法是使用多帧图片动画。你要做多少张照片?我怕幻夜的大背景图移动慢,图片加载不了。缺乏图像再处理能力。

很多引擎会给图片添加特效,比如一张图片可以通过颜色和光线的变化在多个场景中重复使用。

还有可以直接翻转旋转的图片。

NScripter支持黑白和反色。如果不需要考虑统一处理,也可以做轮换。除此之外,非常有限。当然,总是可以通过图像处理软件进行预处理,然后替换文件名(fate移植的时候就是这么做的)。只是,麻烦。声音部分的控制能力简单。

其他一些引擎游戏有时候会把一段音乐分成两部分,一部分是头只放一遍,另一部分是循环只循环这一部分。有些引擎只是将这两个部分合并成一个文件,并设置循环的时间段。

语音有时候需要更精准的控制时间,比如语音结束触发XX效果。

很难在NScripter中实现这些部分。最大的困难是“如果你目前正在说话,你将无法控制其他部分”。缺乏语言表达能力。

NScripter在语言特征上和php有一些共同之处。比如他们在自己的领域都表现不错,但是语言设计却相当粗心。

NScripter中真的是过程而不是函数。注意,它使用defsub来定义过程。比如像$2 = str(int($1)+int($0))这样的东西,你要过去一堆atoi/itoa,生成一堆临时变量,这就大大降低了简单性。NScripter最缺的就是临时变量。NScripter中的所有变量都是全局相关的。如果需要实现很多流程,就不得不担心变量分配的问题。这其实很恶心。

NScripter中没有自定义结构。你需要设计自己的地址分配和接口。

NScripter缺少一些反射功能(也许这个词不合适),比如某一层加载的图片的文件名是什么?它在哪里?你真的加载文件了吗(而不是加载但不显示)?如果你需要它,你必须自己保存它——用一个定制的结构。

用NScripter计算是一件痛苦的事情。Onscripter可以在以下平台上运行:

Android (1.6或更高版本)

Zaurus (SL-C700等。)

Linux操作系统

MacOSX

Windows操作系统

Windows Mobile

Windows CE

WindowsPhone7

PSP电话,iPod touch

网络步行者

大脑(WindowsCE 6.0)

NetBSD,蜻蜓BSD

OS2/Warp

游戏机3

WiiFreeBSD

Dreamcast需要以下内容:

●在●C++环境中

○g++ 4.4.4 (Linux)

Visual Studio 2008 C++ (Windows)

●Unicode集的TTF字体(文件名default.ttf)

●libjpeg-6b(独立jpeg组)

●bzip2-1.0.5 (bzip2)

●SDL-1.2.14,SDL _图像-1.2.10,SDL _混音器-1.2.8,SDL_ttf-2.0.9(简单Directmedia层)

●FreeType 2.3.11(自由类型项目)

以下为推荐项目,可根据您的实际情况酌情考虑:

●Mpeg音频解码器

●avifile解码器分支

(这个意思需要完善)Onscripter-jis

Ogapee

Onscripter-gbk

Natdon和Android-Galgame研究小组在中国

翁斯特-恩

美音叔叔等人。