- 注册时间
- 2006-6-5
- 最后登录
- 2011-1-7
⑤进阶
- 积分
- 919
|
经过15天*15小时的工作,终于把这部作品用NS演绎出来了!自己高兴一下。
现在把我个人的制作经验分享一下,希望各位能够不至于像我这样无端浪费了很多时间……
本人绝对不是什么达人,说得有错的话望大大加以改正……如果不是鬼话连篇就好……
本作属于AVG,是类似月姬的游戏,重点在于文字部分而不是画面,虽说很多人把月姬当成H来鉴赏……可实际上更重要的是其文字内涵……
首先个人认为最重要的一点是计划,无论如何先要构出模型出来。
不知道大家是怎么编写游戏的,我是先写剧本(类似写小说),剧本中要注意少用长句,省得别人看起来眼晕……然后写作的时候最好就加上谁说的话,可以用任何一种方式。一般AVG至少是要写出说话者的名字的,到时候把这些弄成脚本就会省下时间。如果方便的话就加上@或\……
跑题了……
在写脚本之前一定参考别人的范例,加上自己的思考,设计出最合理的方案。
如果每一个场景切换都用BG,每播放一个音乐都要想原先的函数是怎么回事,这是很不效率的方法。
个人认为一定要定义很好的函数(defsub)。
我在本作中定义的思想如下:
我用背景切换作例子,这是一部分代码
*b
getparam $191
mov %187,2
if $191="e" getparam %187:getparam $191
if $191="b" mov %187,-1
if $191="w" mov %187,-2
trans_bg $191
c
if %187=2 bg black,4
if %187=-1 bg black,4
if %187=-2 bg white,4
if %187!=-1 && %187!=-2 bg $194,%187
return
*trans_bg
getparam $191
if $191="XX" mov $194,"bg\XXXXXX.jpg":return
这是构造思路
首先b是定义的函数,b <e 效果数字(187)> 背景名缩写191;
切换都是双重的,默认效果是4,可以利用可选关键字e来更改,而且有变黑和变白的直接单层切换。
重点是调用了另一个函数,就是翻译函数,把缩写翻译成全称来显示。
一方面在外面好管理(不同文件夹,后缀等等),一方面内部在不重复的状况下可以简单使用。
我是先写好了这个函数再开始写脚本的。
我的文字量是五十万字,基本上与FATE线翻译版本相同,所以工作量庞大,必须用最简单的脚本语言描绘。
同样,建议立绘,音乐(这个可有可无),SP都弄成简单适合的模式。
我不知道大家习惯怎样处理不同人说话的区别。
首先我的界面是这样的,由于是突出文字,所以立绘的头部以下都是文字显示部分,是20的字*10行。而且似乎没有办法加入空格之类的东西,也很麻烦,所以我用了不同颜色分别显示不同人的话,这样就要定义很多简单的函数了。
我选择的办法是利用名称缩写(基本上是两个字母,除了独白是一个字母)来调用改变颜色函数。
而且像我这样的懒人把br也要重新定义一个叫r的函数……
然后比如一个人叫XX,我不仅定义了XX来改变颜色,还定义了XXr来加上换行。
毕竟我这里文字太多,一点一点写的话累死了。
不过不知道NS编译的时候是不是把所有的defsub展开带入,否则岂不是很耗内存?
继续,我在本作中犯了一个致命错误,就是用作人名的时候把cl命令给冲掉了……
一直到后来才发现,没办法,或者重新替代,或者将就了……
关于选项一点,我不太明白大家都是怎么做得选择分支,也懒得看说明之类的东西,就按照自己的方法选择了。
很多时候会有多个选择,比如睡觉前都要想些什么,想一个之后选择支就消失,直到除了睡觉以外就没有了才直接跳到睡觉……
我用的方法是二进制标示,首先变量x清零,选择了第一个的话变量加1,选择了第二个的话变量加2,第三个是加4,这样随时这个数字都会代表唯一的状态,翻译成二进制可能比较好理解,10100是选择了第一和第三个而没选其余,11001是还差三四没有选……
总之,这种选择分支是这样的思路,如果有好方法的话还请大大们教我。
变量分配一定要在事前进行,而且根据我的理解,%200以上是全局变量,用作全作品中整体的信息。比如说开启某些EXTRA项目,个人设定的东西。
简单说就是不随NEWGAME改变的东西放在这里。
而每个存档都会不同,相互不干涉,比如本个存档中的剧情完成度,事件标示,有的还要有好感度之类的放在%200以下。最好事先分配好一切,并留出足够的富裕。
然后设计好界面,开始写脚本。
我建议调试过程中把文字速度调成零,window切换之类的各种都弄得快点,按照我的方法只需要改几个地方,所以很方便。
调试是很枯燥的过程,我建议一上来就在前面加上goto *now之类的东西,直接跳到该点去调试。
前期不熟悉的时候特别容易出错,一定要有耐心。
这段过程可谓是艰苦,每天15小时的工作让我几乎垮掉了。
minigame这个环节费了我半天的时间,对于跳来跳去很不习惯。
简述一下一般思路
初始化-〉选择-〉判断-〉引发事件-〉更新数据-〉选择……
这样……看起来很简单,但……
一定事先想好过程,需要一定的编程基础……
而且……不得不说NS限定得太死了,用C语言的话几十行就能做到的说,这个浪费了我整个一个文件……
接下来我才做的OP和ED,由于是随着使用随着画人物和CG的,所以OP放到了最后制作。
大家在制作OP和ED的曲子的时候一定要注意标准化……
不过可能大家都有专人的人设和音乐,不像我全是自己做的……
不管这些,一定要标准节奏和标准小节,这样会让嵌入动画的时候很方便。
一定要用resettimer和waittimer来卡准时间,让鼓点准确对应图画切换。
由于NS没有并行的可能,所以不怎么建议太过份的制作,一分钟出头的动画就足够累人了……
当然,我是用了NS内部的指令来作的动画,如果做成AVI的话就不管我的事了……
ED的卷轴没什么好说的,去看怎么用blt就行了。
不过blt的缺点在于没办法跳出,就是响应trap。
主要是for循环中不允许乱七八糟的跳走,所以甚用blt……
或许有解决的可能吧,我不会罢了,貌似AIR做到了?……
我最后做出来的是EXTRA,不想做界面外加方便扩展,所以用了input方式
输入spellword(不是spellcard……)进入相应环节
音乐,CG鉴赏之类的好说,参考别的作品就行了。
本作中加入的是罪状系统(魔界战记……),判断启动次数之类的,通过积累罪状来打开最后的环节Q&A,其中有不少乱七八糟的东西。
然后类似回想系统的东西,我这个不是H,但是有EXTRASTORY,这部分相当于回想。
我使用了是否回想的判定变量,然后在原脚本中加上如果有这个flag就return。
当然,回想是要gosub的……
差不多就这些了,真正完成品还需要等一些,需要做一个AVI的FIRST RUN OP升华主题,然后是冗长的校验……
预定30号放出版本。
估计要有100M左右,不知道谁有没有好的空间推荐。
下面是发现的问题
先说个别现象,lchk到现在也不太会用,貌似是全局的,所以在正经的剧情中似乎不能用。
然后曾经有一次在某个label进行过程中存档后退出取档,结果就跳转回去之后就莫名其妙变化了。
这两个大家无视好了,我也解释不清楚
关键是貌似右键动作只能定义一种,不能根据不同情况改变,当然用别的方法可以实现,但还是觉得不舒服,希望有人能做出标准代码。
然后selgosub中貌似不能选择退出这一项,除非跳到另一个地方去处理之后跳回来再继续运行然后判断是否选择了退出项……
存档的时间乱码是可以修正的,但这就意味着不能使用简单的systemcall……
严重问题,blt之后即使立刻ofscpy,接下来bg也会产生跳跃,似乎是和textwindow有关。
有的时候lsp之后需要click,会在屏幕莫名其妙的位置出现换页的图标(没有textwindow的时候才会出现这样的问题)。
effect不能用左键跳过也就罢了,在effect开始之后按下Ctrl也没有用。
同样,震动也无法跳过。
nega的问题算我不了解,就连日文的那个函数表里也没有写(说起来不能弄个连接吗?那个API Reference……难道会日语的人很少吗……)
其余的就基本上没有了。
我要说,NS限制得很死,你只能按照它的想法做游戏。
但只要用了它的方式,就比任何其他的工具都简单……
所以我用了NS。
月姬是绝对的代表,只用了最简单的功能。
如果你认为游戏只是这样形式的话,就用NS
NS完全不支持并行操作,所以基本上别的功能是很难实现的。
大家在脑中也许有很多很好的幻想,但……
去学编程吧……
如果我还有精力做下一作的话,会自己编写一套脚本的,用别人的还是不舒服。
不过下两个月我应该会做一套弹幕出来……
最后我提醒大家,做游戏要用免费素材,最好是看清日本网站上的利用规约之后再引用,不要随便在别的游戏中截图,而且不推荐中国的网站,很多有着版权问题。
虽然不是商业用途的话就没什么太大关系,但还是希望不要侵权。
真正一点点做游戏才知道,要完成一部作品需要多大的努力。
所以别人的成果也是不要轻视,中国需要这样的尊重精神,虽然是盗版横行的年代……
但,你可以仿照任何一部作品自己画,画出来的东西就是你自己的了,就算与原画一模一样也没有关系,但前提是真正自己画出来的,在画的过程中也许就能明白作画的辛苦之类的了。
期待中国同人游戏市场的振兴…… |
|