引擎代主父阶垂衣的优点其高度可移植性

引擎代主父阶垂衣的优点其高度可移植性

对比Nscripter

由于跑苏味策容重掉使伯坚NScripter上手容易硬件设备,运行速度快,扩充性也不错,广泛受到同人游戏制作群的欢迎。引擎代主父阶垂衣著码本身虽然为非公开,但是在非商业用途下是属于免费软件。

NScripter本身只支持Windows,不章茶过兼容度极高非官方的ONScri地以失查观pter可支持跨平台的需求。

ONScripter兼容大多数NS指令,但两者的API及指令集仍然有区别,少数命令有不兼容的现象。

开发者可利用所谓的中间语言来撰写游戏的代码。

优点

SDL & ONScripter: 可移植性。ONScripter 最大的优点就是其高度可移植性,这了降矛传围台告石不仅是由于它基于移厚评吃攻确史按标杂植性极佳的 SDL,更是因为它自身就是以高度可移植性为目标编写的。ONScripter 的作者原先使用的设备是 Sharp 的 Zaurus. 这台跑 Linux 的设备性能非常有限,还是很佩服作者下决心去做这件事情的。 假如它只能跑在 Zaurus 上的话,那么随着 Zaurus 的离去,它也会逐渐化为尘土。 但是开源和可移植性带给了它更长久的生命力。ONScripter 选择 SDL 为其基础是一个很好的决策--SDL 大概是目前能跑的设备最多的图像引擎之一。 ONScripter 使用的其他库基本也都是移植性比较好的库,对比用了 boost 的 r客两航施限设既吸装节需lvm,移植了后者的设备就少了很多。开源的好处就是大家都可以贡献自己的力量。 在大家的支持下,ONScripter 支持的设备越来越多。 国内的设备一但移困居植上了SDL,接下来己最常见的被移植的游戏就是 opal(开源版仙剑,同样基于 SDL) 和 ONScripter 了。 这也是为什么十年过去了,ONScripter 仍然被我们所使用的原因。对于移植者来说危给略完见下春燃括维染游戏评测,大家选择 ONScripter 镇翻钱二济升承儿没方凯最大的理由就是它实在是太能跨平台了。 纵使它有这样那样的缺点,很多时候也没有更好的选择。 对比 ONScripter 一次写成造福万设,能做到这一点的其他引擎实在是找不到了。NScripter: 完善的基本功能。ONScripter 的另一斯无促慢不大成功之处在于早期游戏引擎,它的目的在于模拟 NScripter.高桥的 NScripter 在当年大受欢迎, 虽然现在看来功能还是欠缺不少,但不得不承认, NScripter 的确常际管甚措川新是一个合格的 Galgame 引擎。 它具备实现一个 Galgame 所需要的全部基本功能的能力。并且,假如你依照它给的框架走,实现起来也非常精炼。大量原版 NScripter 引擎的游戏被移植也使得 ONScripter 大受欢迎,同时也焕发了那些老游戏以及 NScripter 自身的第二生命。

缺点

性能。性能问题一方面是 SDL 的问题,一方面是 ONScr压尼厚助研ipter 自己编写的问题。SDL 的主要问题在于最初移植过去的时候一般是基于软解的。当然该来的总是会来的,硬件加速还是会来的。ONScripter 的代码里的确有些写的很"素"的地方。 平芜泫的评价一语中的:"该说不愧是日本人的思维么?在指定环境下面能够非常好地工作,不是这个环境就糟糕了。。。。"顺提,该贴里的 bug 是 Arch 里的 SDL_厂把帮力图部社ttf 的问题,其实和 ONS握绍铁乙德都或精议增支cripter 关系不大,现已修识书要卫导息兴扩复。我倒不觉得性能是极度重要的问题。当然它确实重要。一方面早期游戏引擎,只要总的框架没有大问题,先保证正确再优化也不在目模零企老指治为过,毕竟过早优化是万恶之源,开源对这种问题也是一种好的解决方案。另一方面,ONScripter 很大的瓶颈还是在 IO 和显示上。 对于那些 lab损继太位径转父负坐积讲el 用链表 lookup 之类的,倒也都段我考施标眼个真不是什么性能问题。NScripter 的表达能力。我想这部分才是我对 ONScripter 意见最大的部分--尽管这部分应该归到 NScrip决肉千行激何ter 的问题上。

平芜泫的评价在这里仍然适用: 如果你照着高桥佬的想法走,NScripter 是非常爽快的; 但如果不是这样的话,你就会觉得 NScripter 处处捆人手脚。不幸的是,移植的目的是模仿另一款游戏重新实现它,想完全照着 NScripter 的思路走往往没那么容易。高桥是很清楚一款 Galgame 引擎需要什么的,但是除此之外的事情他就懒得管了。NScripter 的语言设计明显是混乱的。命令式的风格,一些计算上的东西又明显是汇编的样式,很多函数明显是后头擦屁股添上的,最终发现这事没法弄了又开始支持 lua……总之,NScripter 自己从语言角度而言还是很不灵活的。 说实在的,很多事情不是不能实现,而是实现太麻烦。.动画效果实现繁琐。NScripter 的动画基本要靠自己写循环控制。不讲究时间精确性可以用 for 循环,追求时间卡准可以 while(即 if-goto) 循环靠 timer 精确控制,当然可以抽象到自定义过程中,总归还是麻烦的很。更别提缩放和旋转了。要是实现全屏雨点效果呢?那就不得不依赖插件,而那是平台相关的,移植性很差。顺提,msp 的移动效率不咋样。NScripter 语言的混乱之处还在于,它竟然有lsp、lsp2、drawsp、blt等不同体系的功能去做类似的事情。

并行动画实现困难。怎样让两个移动共同实现?你不得不在一个循环中同时做两个移动。 如果你已经把移动抽象到一个过程中了呢? 如果是全屏震动的同时移动呢? 如果是移动同时缩放呢? 上面这些 Fate 里都不少,而且我希望抽象到一个过程中。我当时很头疼。对比 Kirikiri2 里解析脚本默认不阻塞动画执行,这边表达起来的确费劲的多。但还好,上面起码还算是好表达的。如果想表达类似秽翼序章窗外的雨滴落下,或者魔法使之夜里人物对话时背景缓缓移动的效果呢?NScripter 对话过程中同步画面移动的方法只有利用多帧图片动画,这得做多少张?对魔夜这种大背景图缓慢移动的,恐怕图片都载入不进去。画面再加工能力匮乏。很多引擎会对图片加效果,比如通过色调和光线变化可以将一张图重复利用在多个场景。也有图片直接翻转和旋转使用的。NScripter 倒是支持黑白和反色。如果不需要考虑统一处理,也可以做旋转。 除此之外就很有限了。当然总可以靠图像处理软件预先处理,然后替换文件名(fate 移植时是这么做的)。只是,麻烦。声音部分的控制能力简单。一些其他引擎的游戏,有时会将一段音乐分为两段, 一段是 head 只播放一次,一段是 loop 只循环这部分。

有些引擎干脆就把两段合并为一个文件,设定好 loop 的时间段即可。对语音有时需要更精确的控制时间,比如语音结束的时候触发 XX 效果。NScripter 中很难实现这些部分。最大的难点还是在"如果当前正在对话,将无法控制其他部分"。语言表达能力缺乏。NScripter 从语言特性上和 php 有部分地方挺有共同之处的, 比如它们在自己的领域表现都不错,但是语言设计的都挺不考量的。NScripter 里真正有的是过程而非函数,注意它定义过程用的是 defsub. 比如说,对于类似$2 = str(int($1) + int($0)) 这种东西,你就不得不一堆 atoi/itoa 过去,还要产生一堆临时变量,简洁度大打折扣。NScripter 最缺乏的是临时变量。 NScripter 里的所有变量都是全局相关的。 假如你需要实现很多过程的时候,你就不得不担心变量分配问题了。这实际上是很恶心的。NScripter 里没有自定义结构。你需要自己设计地址分配,自己设计接口。NScripter 缺乏一些反射功能(也许用这个词不妥),比如,某层加载的图片文件名是什么?在什么位置?是否真的加载了文件(而不是加载但不显示)? 如果你需要,那就只好自己保存下来--用自定义的结构。拿 NScripter 计算是一件痛苦的事情。

动作环境

Onscripter能在一下平台运行:

Android (1.6 or later)

Zaurus (SL-C700, etc.)

Linux

MacOSX

Windows

Windows Mobile

Windows CE

WindowsPhone7

PSPiPhone, iPod touch

NetWalker

Brain (WindowsCE 6.0)

NetBSD, DragonFly BSD

OS2/Warp

Playstation3

WiiFreeBSD

Dreamcast

开发环境

以下为必须:

●C++ 环境下

○g++ 4.4.4 (Linux)

○Visual Studio 2008 C++ (Windows)

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

●libjpeg-6b (Independent JPEG Group)

●bzip2-1.0.5 (bzip2)

●SDL-1.2.14, SDL_image-1.2.10, SDL_mixer-1.2.8, SDL_ttf-2.0.9 (Simple Directmedia Layer)

●FreeType 2.3.11 (the Free Type Project)

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

●Mpeg Audio Decoder

●avifile Decoder分支

(此义项待完善)

维护

Onscripter-jis

Ogapee

Onscripter-gbk

natdon及国内的Android-Galgame研究组

Onscripter-en

Uncle Mion等

文章来源:https://baike.so.com/doc/6996477-7219355.html