kiseeyou
2010-02-07 19:25:56
LEVEL 0 NScripter讲习所初心者向
题外话:
先扯几句,以免被人说我写下的都是中文但是没人看得懂。
关于中文NScripter漫长的历史……
NScripter,作者高桥直树,略称NS,是一款游戏编辑器,换用通俗的语言来说,就是一个做游戏的软件。
早在N年以前,大明(sdlhm520)和小胜两位先行者就已经推出了NScripter的中文版。
不过,NScripter真正开始热门起来,应该是从黑影团制作出的《青鸟之虚象》宣传开始的时候吧?
当发现这世界上居然还存在着可以做游戏的好东西(并且是免费软件),大批人,包括某D,制作游戏的热血顿时就熊熊燃烧起来了。
然而总之但是,或许是出于“商业机密”的考虑,黑影团对于NS的制作方面的任何资料都守口如瓶。于是一帮BT在碰壁无数次之下,决定拿出菜鸟之终级法宝:GOOGLE和BAIDU,对找到的信息进行地毯式筛选。其中,小渡君率先完成了NScripter的新版本不完全汉化。之后,终于,在长久的寻找之后,某D和小渡君与AVC君,地下党一般的接上了头。之后的数月里,日文盲某D每天潜水于NS官方讨论版,希望从一堆日文里找到看起来亲切的代码……
直到今天,得以和大家分享的这些NScripter资料,其实,是一群BT的汗水的结晶。
上面提到的所有名字,请大家牢记……(不是默哀……= =)
口号:同人精神永垂不朽!——支持原创!保护版权!技术共享!
-------------------------------------------------------------------
问题一:
NScripter能做什么样的游戏?我听说这是一款NVL(电子小说)专用的制作工具?
咳咳,首先来看一下目前已经制作完成,或者正在制作的一部分NS游戏。
商业游戏(日):
月东日西(高桥直树)(恋爱冒险)
夢みてナイト(高桥直树)(恋爱冒险)
同人游戏(中):
[url=http://www.lunatear.com/IL/Glassic/][color=#2b76b0]Glassic[/color][/url](幻灯领域制作组)(电子小说)
[url=http://summeryfancy.saintseiya.cn/][color=#2b76b0]青空之想试玩版II[/color][/url](S.F工作室)(恋爱养成+商店系统+物品合成+……)
同人游戏(日):
只推荐一个站点。看了他们的游戏介绍,就该知道这有多BT……
[url=http://inutoneko.jp/][color=#2b76b0]犬と猫[/color][/url]
这个组的全部游戏都是用NS完成的……包括SLG等……
当然大家最好不要和他们拼BT,全日本也就这一家而已。
范例游戏:
[url=http://jing.gbq.cn/data/LM2/apoversion521.rar][color=#2b76b0]某D的伪圣书[/color][/url](恋爱冒险)
[url=http://bbs.rpgchina.com/read-htm-tid-13105-fpage-2.html][color=#2b76b0]TOZ君的键控四方向行走范例[/color][/url](RPG行走)
[url=http://bbs.rpgchina.com/read-htm-tid-27181.html][color=#2b76b0]水螅的范例小游戏合集[/color][/url](小游戏)
看了以上的列表就很容易了解,NScripter的制作游戏范围其实是非常广泛的,从最简单的电子小说,恋爱冒险游戏,到养成游戏及卡片战斗系统,都可以完成。所以各位大可不必一直忧心忡忡的询问,NScripter能否完成这样那样的功能。答案几乎永远是YES,其关键只在于制作者本身的水平。
但是,NS主要应用范围,是集中在恋爱冒险游戏这一类型的。
从程序方面看,恋爱冒险类型的游戏不要求大量的循环(比如一张地图上七八个乱晃的NPC)或数据库处理(比如拥有300件武器的装备系统),结构比较清晰,制作难度比较低。
所以假如要做RPG游戏,还是推荐使用RPG MAKER系列来制作比较合适。因为即使能如TOZ君一样,利用接近BT顶级的思路及耐心完成大部分的功能,也会导致在速度方面非常受限制,制作效率则几乎为零。
-------------------------------------------------------------------
问题二:
NScripter制作出来的游戏,在发布及出售方面有限制吗?
NScripter为免费软件,因此使用NS制作的游戏,完全不用担心被指责为使用盗版。
打算贩卖的同人游戏也不需要征求作者的同意或者进贡什么的。
如果是商业游戏,才需要与作者联系并取得使用权。
并且如果商业游戏的定价低于一定程度可以获得优惠甚至免费。
实际上中国的一般软件价格是远低于日本的,
因此就算你真打算卖几百RMB,估计玩家会比高桥氏先跳起来。
(回报是,作者可能会根据你的要求为NS增加新的功能,假如,他看得懂你在说什么的话……= =)
使用规约原文:
[NScripterで作ったゲームを無料で配布する、あるいは値段をつけて売るとしても同人などの場合では、NScripterの使用料を高橋直樹氏に払う必要は無いということです。]
----------------------------------------------------------------------
问题三:
要使用NS,到底需要什么?
以下是某D被问过的最哭笑不得的问题:
Q:我要的是NScripter完整版,为什么只看到汉化补丁?
A:NScripter的主程式仅仅是一个不到400K的exe文件。
因此,你看到的就是完整版,不是什么汉化补丁。
Q:我下载了NS,为什么一执行就会出错?我什么都没看到啊?
A:NScripter并不像RM或者LM系列那样拥有图形界面(GUI)。
它的执行方法是读取与EXE文件同一文件夹内的TXT文件(一共可以创建0.txt~99.txt)或者代码压缩包内容,执行里面的命令。
简单的说,在你不写下任何命令之前,它什么也不会做,连脸都不会给你看一下。
实际上,要让NScripter跑起来,只需要两个东西。
1主程式(nscr.exe,名称可以修改/图标可以修改)
2 按照规则命名,并且写入正确内容的txt文件。(0.txt~99.txt均可)
把这两样东西塞到同一个文件夹里,这样就准备完毕,可以开始制作了。
而压缩包里的其他内容,就留待之后再说明吧。
附图1:NScripter运行需要基本文件。
[attachment=171]
附图2:NScripter脚本格式。(0.TXT文件内容)
[attachment=172]
(按照这样填写,闪一下关闭是正常现象哟,要让NS真正跑起来,请看下一讲内容。)
好,现在课间休息,大家可以去吃饭了。[某D被听众暴打中……]
本日小贴士:
NScripter使用环境:
WIN95-XP,推荐DirectX 8.0以上。
功能扩展性:
支持DLL插件。压缩包内附带有使用范例。
(由于这不是NS本身的功能,因此不多加说明。)
画面分辨率:
320X240~800X600
支持鼠标及键盘操作
素材格式一览
图片 BMP JPG
音乐音效 MIDI WAV MP3 OGG(OGG需要DLL插件支持,官方提供)
影片 AVI MPEG
其他 光标及动画光标 CUR ANI
LEVEL 1 Hello World !
相关指令:
*define
game
*start
end
reset
@
br
clickstr
_
;
Hello World。也就是所谓的“自己动手制作的第一个程序”。
似乎,在看过的基本所有程序类“入门到精通”的书里,都有这东西的存在。虽然这个程序既没有乐趣也没多少成就感,而且还没创意,但是,……
首先,打开我们已经建好的0.txt(其实叫2.txt或者99.txt或者别的什么也无所谓),在里面输入以下内容,然后保存。
[url=][color=#2b76b0]Copy code[/color][/url][indent];-------------------我是分隔线-------------------
*define
game
*start
你好,世界。@
这是我的第一个程序。
end
;-------------------我是分隔线-------------------
[/indent]
[attachment=174]
再补充说明一下:
一般来说,NScripter读取指令的时候,是依靠“分行”来辨认的,将每一行视为一条指令。如果有空行,就会被忽略。
还要注意的是“文章(无论中文E文数字都一样)”及“标点符号”必须使用全角,而作为“显示文章”标志的@和,以及其他的英文部分的指令则是使用半角的。
接下来,是每条指令详细的说明……
*define “define”是E文“定义”的意思。
从*define到game之间的部分,被称为NS的定义区块。这部分的主要功能是对NS的内部设置做一些修改。假如里面什么都不写的话也没关系,NS会全部采用默认设置。(包括我们现在看到的那排写着“画面设定”“字体设定”的菜单栏,内建存档的个数等等,都是可以修改的。)而NS开始执行游戏,也就是从寻找TXT文件里的*define标志开始的。(现在知道一开始只有一个EXE文件的NS为什么会显示“标签*define不存在”这样的错误信息了吧?)
game 表示定义部分已经完成,可以开始正式的游戏了。
*start ——当然就是开始游戏的意思。这部分以后,就是“游戏执行区块”了。
因为有定义部分和游戏部分的区别,NS本身的指令也分为三种:只能用在定义区块里的(F类指令),只能用在游戏执行区块里的(E类指令),和在两部分都可以通用的(FE类指令)。
最后,当NS执行到end指令的时候,就会退出。
中间的两行,刚刚已经看到了,就是显示出来的文章。
你好,世界。@
这是我的第一个程序。
@和这两个标志的意思都是“显示一段文字,并且等待玩家点鼠标(或者按下ENTER键)之后,才继续执行下一条指令”。如果不使用这两个标志来表示“等待”的话,这两句话会在屏幕上一闪而过,之后就退出了。
这两个标志的特殊还在于可以在同一行里多次出现。
类似这样的写法“你好,@世界。@这是我的第一个程序。”也是可以的。
-------------------------------------------------
问题一:既然同样都是作为“显示文章”的标志,@标志和标志有什么区别吗?
那么,试看看把程序写成这样……
[url=][color=#2b76b0]Copy code[/color][/url][indent];-------------------我是分隔线-------------------
*define
game
*start
你好,世界。
这是我的第一个程序。
end
;-------------------我是分隔线-------------------
[/indent]
这一次,在显示“这是我的第一个程序。”的同时,“你好,世界。”消失了。
标志比@标志多了一条功能,就是在显示它所在的这一行文章的同时,将之前显示的文章消除。在电子小说里,@是接着看下一行,而就是翻过一页,把之前的一页清掉了。
因为屏幕或者对话框的大小是有限的,如果已经显示的文章字数超过了屏幕可以容纳的范围,NS就会报错,因此在制作电子小说的时候,合理的使用这两个标志是很重要的基础哟。
-------------------------------------------------
问题二:我想在两行文字间空上一行,但是NS把所有空行都WS了?
因为这样,NS也提供了另外一条指令。“br”其实是HTML语言里表示空行的命令,在NS里,也是同样的意思。
[url=][color=#2b76b0]Copy code[/color][/url][indent];-------------------我是分隔线-------------------
*define
game
*start
你好,世界。@
br
这是我的第一个程序。
end
;-------------------我是分隔线-------------------
[/indent]
不用说,自己看看效果吧。
-------------------------------------------------
问题三:每显示一段文章都一定要用@和吗?麻烦不说,要是忘了加还容易出错,没有其他办法?
既然每句话结尾多少都有个感叹号句号问号之类的,在制作比较大型的游戏时,还要再为每行文字加一个标志确实很烦。因此,NS也提供了比较简单的方法:clickstr命令。
clickstr就是一个F类指令,也就是说,是只能用在NS的定义区块里的。
[url=][color=#2b76b0]Copy code[/color][/url][indent];-------------------我是分隔线-------------------
*define
clickstr "。",1
game
*start
你好,世界。
这是我的第一个程序。
end
;-------------------我是分隔线-------------------
[/indent]
没有使用@和的情况下,效果和之前的完全一样。
并且,使用clickstr命令之后,NS会根据参数,在文字显示超过屏幕可容纳字数后自动翻页。
Clickstr的格式为:
Clickstr "。!?(可以写一个,也可以写N个,必须要是全角)",2
Clickstr "等待标志",翻页参数
翻页参数为0时候,不会自动翻页,超过字数会出错。
为1时,显示到屏幕(或对话框)满为止,自动翻页。
为2时,到离可容纳字数还有1行时翻页。
为3时,到离可容纳字数还有2行时翻页。
以下类推。
而假如某一行里有句号或其他已经定义的等待符号,比如说问号,但是不想让这部分等待的时候,还有一个“等待失效”的标志“_”。
把“_”标志放在等待符号的前面,执行到这里的时候就不会等待,而会直接继续显示下一句了。
例如:
国家政策,小白要持证上岗_。
补充,假如真的对以上都懒得使用,请在define区内加入[color=red]linepage[/color]命令。
这条命令会把每一行视做一段对话。
缺点是,在使用这个命令之后/命令(换行失效命令)无法使用。
-----------------------------------------------------
问题四:执行完窗口关掉以后,怎么文件夹里多了一个叫“envdata”的文件?
Envdata文件是设置文件,类似一般游戏里的ini文件。作用是记录一些玩家的操作和设定,比如上一次进行游戏时是全屏还是窗口模式,使用的是什么字体之类的信息,都会被记录下来。这当然是很贴心的功能了,对游戏制作者来说却有点头大,修改了一些设定之后再执行游戏,却无论如何都没效果,究其原因,都是这个envdata文件在作怪。因此,保险起见,修改一些设定之后,请记得删除envdata文件再做测试。
------------------------------------------------------
本日小贴士:
注释符号“;(半角分号)”的使用。
NScripter里,某一行里的“; ”符号后面的部分会被当作注释而不执行,因此无论是中文英文全角半角都可以用在注释里。
虽然似乎很多人(包括蓝蛇……= =)都没有使用注释的习惯,但是,其实,根据某D的经验,注释还是非常有用的。除了使用文字和分隔线,免得时间长了自己看不懂以外,加在某个命令前,使某一条命令暂时不起作用以测试它的功能,或者用来加入大量个人化的东西以恶搞,打上版权标记,或者甚至仅仅为了让文本看起来不那么单调,请大家把注释华丽的使用到底吧……[天音:你以为全世界的人都和你一样无聊吗……]
注释使用范例:
[url=][color=#2b76b0]Copy code[/color][/url][indent];------------------我是分隔线----------<<==这行就全是注释了
*define;这里开始是定义区<<==可以这么用....
game ;定义结束...
;^^前面多打几个空格(半角空格)也可以,半角空格和空行一样是会被自动忽略的
;------------------我是分隔线----------<<==这行也是注释
[/indent]
------------------------------------------------------
作业(觉得太弱智的可以不做,反正没人检查……):
1随便找一段文字把它丢到NS里,小学课文也可以。试一下“ ,@,br,clickstr”的使用。
2把程序末尾的end指令令换成reset指令,看看会有什么变化。
3 DEBUG练习。
找出以下程序的错误。
[url=][color=#2b76b0]Copy code[/color][/url][indent]*define
clickstr “.”
game*START
HELLO WORLD!@
re
set[/indent]
任天之浪
2010-02-10 00:54:26
这不是老D发在幻想森林里的东西么
kiseeyou
2010-02-10 15:53:46
任叔也这么了解?
难道也玩了一段时间ons?
任天之浪
2010-02-10 16:57:23
俺在NS超麻烦的前期设定上缩了
kiseeyou
2010-02-12 09:04:26
任叔,其实define节是可以很简单的~
有兴趣请帮咱埋掉 无颜之月 那坑
andmoe
2011-05-14 03:21:51
纯支持!
百夜
2012-09-05 18:01:51
唉,果断3ds还是不适合用来看视频,要是支持3d效果那就无所谓10分钟的问题了~
yiersan
2012-12-01 05:13:20
我在学习
yiersan
2012-12-01 05:37:45
图都挂了。。你