标题：ONScripter
前言
Onscripter（Open Source Nscripter Galgame Engine）是一个用来解析NScripter脚本的第三方开源AVG游戏引擎，可以在多种平台和设备上（Windows，Linux，FreeBSD，Android，iOS，Symbian……etc）上运行使用NScripter脚本编译的文字冒险类游戏。示例相册(3张)
发展历史
最初是一个叫Ogapee的家伙想在自己的Zaurus（SHARP公司推出的高性能PDA）上运行游戏，于是自己写了一个在Linux下运行的NScripter等效引擎，命名为ONScripter（Open-source NScripter），并不断完善之。由于开放源代码并且是用高度可移植的SDL库编写的，很多爱好者就把它移植到不同的平台上，并不断地把使用其他游戏引擎的AVG游戏移植到该平台上，不断地发扬光大。
目前流传的中文版并无官方授权，乃由玩家自行改版产生。
目的
与NScripter为了编写新游戏不同，ONScripter设计当初就是为了在别的平台运行用NS制作的游戏。目前发展最成熟的是安卓和Linux平台，大多数游戏都能够顺利移植。因为目前通用引擎只有Waffle(AVG32)和ONScripter已经成功移植，而ONScripter又是当中资料和工具比较多的，因此也会有人把本来不是NS引擎编写的游戏用NS重新编写并用ONS在别的平台上运行，例如《Fate / stay night》和《CLANNAD》等。
应用案例
商用作品银色（猫猫社）
月は东に日は西に ～Operation Sanctuary～（オーガスト）
バイナリィ・ポット（オーガスト）
Princess Holiday ～転がるりんご亭千夜一夜～（オーガスト）
水色（猫猫社）同人作品寒蝉鸣泣之时系列（07th Expansion）
海猫鸣泣（07th Expansion）
月姫（TYPE-MOON）
One Way Love～ミントちゃん物语（王宫魔法剧団）
ひとかた（お竜）
水仙~narcissu~1&2（stage-nana）移植作品Key社
AIR\Clannad\Planetarian\Little Busters!
KID社
Memories Off 2nd\ever17
minori
eden*\ef-the first tale\ef-the latter tale\天使的日曜日
AKABEiSOFT2
车轮之国、向日葵的少女\车轮之国、悠久的少年少女
猫猫社
银色\弹珠汽水\Scarlett
八月社
秽翼的尤斯蒂娅\夜明前的琉璃色
CUFFS社
缘之空\悠之空
PULLTOP
遥仰凰华
Lass
3days
TYPE-MOON
Fate stay Night

技术
与Nscripter的区别由于NScripter上手容易，运行速度快，扩充性也不错，广泛受到同人游戏制作群的欢迎。引擎代码本身虽然为非公开，但是在非商业用途下是属于免费软件。
NScripter本身只支持Windows，不过兼容度极高非官方的ONScripter可支持跨平台的需求。
ONScripter兼容大多数NS指令，但两者的API及指令集仍然有区别，少数命令有不兼容的现象。
开发者可利用所谓的中间语言来撰写游戏的代码。优缺点优点：1.SDL & ONScripter: 可移植性。
ONScripter 最大的优点就是其高度可移植性，这不仅是由于它基于移植性极佳的 SDL，更是因为它自身就是以高度可移植性为目标编写的。
ONScripter 的作者原先使用的设备是 Sharp 的 Zaurus. 这台跑 Linux 的设备性能非常有限，还是很佩服作者下决心去做这件事情的。 假如它只能跑在 Zaurus 上的话，那么随着 Zaurus 的离去，它也会逐渐化为尘土。 但是开源和可移植性带给了它更长久的生命力。
ONScripter 选择 SDL 为其基础是一个很好的决策——SDL 大概是目前能跑的设备最多的图像引擎之一。 ONScripter 使用的其他库基本也都是移植性比较好的库，对比用了 boost 的 rlvm，移植了后者的设备就少了很多。
开源的好处就是大家都可以贡献自己的力量。 在大家的支持下，ONScripter 现在支持的设备越来越多。 就我所知，国内的设备一但移植上了 SDL，接下来最常见的被移植的游戏就是 opal(开源版仙剑，同样基于 SDL) 和 ONScripter 了。 这也是为什么十年过去了，ONScripter 仍然被我们所使用的原因。
对于移植者来说，大家选择 ONScripter 最大的理由就是它实在是太能跨平台了。 纵使它有这样那样的缺点，很多时候也没有更好的选择。 对比 ONScripter 一次写成造福万设，能做到这一点的其他引擎实在是找不到了。
2.NScripter: 完善的基本功能。
ONScripter 的另一大成功之处在于，它的目的在于模拟 NScripter.
高桥的 NScripter 在当年大受欢迎，现在也有作品在出。 虽然现在看来功能还是欠缺不少，但不得不承认， NScripter 的确是一个合格的 Galgame 引擎。 它具备实现一个 Galgame 所需要的全部基本功能的能力。
并且，假如你依照它给的框架走，实现起来也非常精炼。
大量原版 NScripter 引擎的游戏被移植也使得 ONScripter 大受欢迎，同时也焕发了那些老游戏以及 NScripter 自身的第二生命。缺点：1.性能。
性能问题一方面是 SDL 的问题，一方面是 ONScripter 自己编写的问题。
SDL 的主要问题在于最初移植过去的时候一般是基于软解的。 当然该来的总是会来的，硬件加速还是会来的。
ONScripter 的代码里的确有些写的很“素”的地方。 平芜泫的评价一语中的：
“该说不愧是日本人的思维么？在指定环境下面能够非常好地工作，不是这个环境就糟糕了。。。。”
顺提，该贴里的 bug 是 Arch 里的 SDL_ttf 的问题，其实和 ONScripter 关系不大，现已修复。
我倒不觉得性能是极度重要的问题。当然它确实重要。
一方面，只要总的框架没有大问题，先保证正确再优化也不为过，毕竟过早优化是万恶之源，开源对这种问题也是一种好的解决方案。
另一方面，ONScripter 很大的瓶颈还是在 IO 和显示上。 对于那些 label 用链表 lookup 之类的，倒也真不是什么性能问题。
2.NScripter 的表达能力。
我想这部分才是我对 ONScripter 意见最大的部分——尽管这部分应该归到 NScripter 的问题上。
平芜泫的评价在这里仍然适用： 如果你照着高桥佬的想法走，NScripter 是非常爽快的； 但如果不是这样的话，你就会觉得 NScripter 处处捆人手脚。
不幸的是，移植的目的是模仿另一款游戏重新实现它，想完全照着 NScripter 的思路走往往没那么容易。
高桥是很清楚一款 Galgame 引擎需要什么的，但是除此之外的事情他就懒得管了。NScripter 的语言设计明显是混乱的。命令式的风格，一些计算上的东西又明显是汇编的样式，很多函数明显是后头擦屁股添上的，最终发现这事没法弄了又开始支持 lua……
总之，NScripter 自己从语言角度而言还是很不灵活的。 说实在的，很多事情不是不能实现，而是实现太麻烦。
3.动画效果实现繁琐。
NScripter 的动画基本要靠自己写循环控制。不讲究时间精确性可以用 for 循环，追求时间卡准可以 while(即 if-goto) 循环靠 timer 精确控制，当然可以抽象到自定义过程中，总归还是麻烦的很。更别提缩放和旋转了。
要是实现全屏雨点效果呢？那就不得不依赖插件，而那是平台相关的，移植性很差。
顺提，msp 的移动效率不咋样。
NScripter 语言的混乱之处还在于，它竟然有lsp、lsp2、drawsp、blt等不同体系的功能去做类似的事情。
并行动画实现困难。
怎样让两个移动共同实现？你不得不在一个循环中同时做两个移动。 如果你已经把移动抽象到一个过程中了呢？ 如果是全屏震动的同时移动呢？ 如果是移动同时缩放呢？ 上面这些 Fate 里都不少，而且我希望抽象到一个过程中。我当时很头疼。
对比 Kirikiri2 里解析脚本默认不阻塞动画执行，这边表达起来的确费劲的多。
但还好，上面起码还算是好表达的。如果想表达类似秽翼序章窗外的雨滴落下，或者魔法使之夜里人物对话时背景缓缓移动的效果呢？
我目前知道的 NScripter 对话过程中同步画面移动的方法只有利用多帧图片动画，这得做多少张？对魔夜这种大背景图缓慢移动的，恐怕图片都载入不进去。
4.画面再加工能力匮乏。
很多引擎会对图片加效果，比如通过色调和光线变化可以将一张图重复利用在多个场景。 也有图片直接翻转和旋转使用的。
NScripter 倒是支持黑白和反色。如果不需要考虑统一处理，也可以做旋转。 除此之外就很有限了。
当然总可以靠图像处理软件预先处理，然后替换文件名(fate 移植时是这么做的)。只是，麻烦。
5.声音部分的控制能力简单。
一些其他引擎的游戏，有时会将一段音乐分为两段， 一段是 head 只播放一次，一段是 loop 只循环这部分。 有些引擎干脆就把两段合并为一个文件，设定好 loop 的时间段即可。
对语音有时需要更精确的控制时间，比如语音结束的时候触发 XX 效果。
NScripter 中很难实现这些部分。最大的难点还是在“如果当前正在对话，将无法控制其他部分”。
6.语言表达能力缺乏。
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
PSP
iPhone, iPod touch
NetWalker
Brain (WindowsCE 6.0)
NetBSD, DragonFly BSD
OS2/Warp
Playstation3
Wii
FreeBSD
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等
相关参考书籍NScripter官方手册，由秀和システム2004年9月11日出版（第一版）。 ISBN编码：ISBN 4-7980-0867-2 。目前该书已经绝版，具体请参考后面的修订版。
Nscripter高级官方读本，由秀和システム2005年7月9日出版（第一版）。 ISBN编码：ISBN 4-7980-1104-5。
Nscripter官方手册修订版，由秀和システム2007年12月21日出版（第一版）。 ISBN编码：ISBN 978-4-7980-1852-2。
Nscripter从零开始制作冒险（小说）游戏，由新纪元社2006年9月1日出版（第一版）。 ISBN编码：ISBN 4-7753-0496-8。