KeyFC欢迎致辞,点击播放
资源、介绍、历史、Q群等新人必读
KeyFC 社区总索引
如果你找到这个笔记本,请把它邮寄给我们的回忆
KeyFC 漂流瓶传递活动 Since 2011
 

MM GAL 企划中,欢迎大家提建议(禁水)

[ 6522 查看 / 17 回复 ]

这个标题是不是很让人想入非非? 嘿嘿...

不过事实上也不是想象的那么无聊啦...
MM GAL = Misha's Mad Graphic Audio Language

怎么说呢,应该是一个小型的特效脚本语言。

采用我正在开发中的GDI特效引擎提供支持;(试验作品见土豆星专卖)
目标是能够采用非常接近自然语言的格式,和非常接近电影(游戏)剧本的形式,实现一些华丽的特效场景。

本引擎与现存的各种商业/非商业脚本引擎并非竞争关系,因为设计目标不同:
现存的脚本引擎是为了做出有一定长度和内容的故事(Graphic Novel);
而MMGAL则是为了做出一个短小精干而引人注目的场景

因此,MMGAL也能够提供一些非常有趣的语言特征:

初步的企划如下,欢迎大家提供功能/语法上的建议和意见。

* 脚本语言由一些基本的,类似电影脚本的元素组成:
  Scenario(场景) - 最大的一个元素,整个脚本由一个或者多个场景组成;
  Stage(舞台) - 组成场景的元素,对应屏幕上的窗口
  Prop(道具) - 组成场景的元素,对应一个图片(绘图表面)

* 对道具和舞台可以有多种特效操作
  目前能想到的如下,欢迎大家提供更多建议
  平移,翻转,灰度化,淡入淡出,各种绘图操作(直线/方框/椭圆/填充等),亮度/色彩/对比度调节,放缩,模糊,马赛克

* 整个场景由Track(时间轴)推动
  具体地说应该是每一个道具根据自己的时间轴作出相应的动作。当然如果需要的话,也可以对外部事件(鼠标键盘)做出响应。

* 声音的支持目前列在第二期计划中,初步定义如下
  每一个场景可定义循环播放的(BGMusic)背景音乐;
  每一个道具可定义(Lines)台词,可由时间轴或者事件触发。

整个语言设计的最终目的就是让它神似于自然语言和脚本设定语言,让每个感兴趣的人都能够轻松的做出自己想要的特效场景,不论有没有程序基础。
分享 转发
飛べない翼に、意味はあるんでしょうか?
TOP

回复:MM GAL 企划中,欢迎大家提建议(禁水)

给出一个粗略的脚本样板吧,当然不保证今后真正支持的格式就是一模一样的:

场景:一架飞机从桌面飞过

舞台:桌面
    大小:全屏
    样式:半透明
    位置:左上角

道具:桌面.飞机
    大小:未知
    位置:左边居中
    样式:半透明

场景(一架飞机从桌面飞过)准备

桌面.飞机:载入图片"飞机.PNG"
          移动:左,全长      // 将飞机彻底移出左边界
          时间轴-长度:10秒
                间隔:0.1秒
                动作:定位:横向,(桌面.全长 + 桌面.飞机.全长*2) * 时间点编号/100
                重复:否

场景(一架飞机从桌面飞过)开始

等待动作结束:桌面.飞机

场景(一架飞机从桌面飞过)结束


以上脚本将会使一个飞机模样的图片用十秒钟从屏幕的左面飞到右面。
飛べない翼に、意味はあるんでしょうか?
TOP

回复:MM GAL 企划中,欢迎大家提建议(禁水)

……
是用中文编的脚本?!  orz
那这个最后是EXE格式的吧?


那么就是一个插件了么?
不懂编程啊,所以没法提供什么专业的意见了。
不过中文编程语言还是要绝对支持啊orz
像喜剧一样。
TOP

回复:MM GAL 企划中,欢迎大家提建议(禁水)

如果能够只用一句话就好了,比如下面的:
一架飞机从屏幕左上角向左飞过,用时10秒。

貌似很难的说说……
TOP

回复:MM GAL 企划中,欢迎大家提建议(禁水)

楼上的这个的确有难度...因为让计算机懂人类语法到现在都还是不可能的...
多多少少这个GAL也是编程语言,因此只能神似,做不到形也似...

楼上的楼上: 最终产品应该是就一个脚本语言,文本文件。当然也可以编译一下成为MM GAL脚本引擎的专用脚本文件。至于资源打包等就是后话了。

目前需要通过大家的智慧确定一个比较实用而方便的稳定语法结构。

哦,对了,因为本语言的元素较少,语法相对简单,应该可以用语言转译配置文件的方式支持多种语言。编译器支持的"本土语言"应该是英文(因为敲起来速度比较快),但是如果不会英文或者不喜欢英文的用户可以选择自己喜欢的语言(火星语?) ^^
飛べない翼に、意味はあるんでしょうか?
TOP

回复:MM GAL 企划中,欢迎大家提建议(禁水)

嗯,可以把一些最常用的模式 + 填参数 的方法来合并一下,就像宏。
至少这这些模式里,让它像个人……
以后的人们可以加入新模式,让它更像人……但有一点,实现代码上绝对不能重复,对人接口疯狂重复(没歧义的前提下),疯狂引用就好了。DRY(Don't repeat yourself)原则是我认为的最重要的原则之一。楼主应该比我清楚。不过后面加入的那些如何符合标准就不太好办了……
模式的输入可以弄个选择什么的,像VS的自动完成那样……

基本动作,大概就是:
移动,透明度改变(出现和消失都包含了),文字显示(这个和图形不一样,是种特殊方式),执行时间,自动作用的代码范围(比如:自动动作执行到某一步就退出),键盘响应与跳转。

我似乎暂时想不出来更多了。大家补充吧。
TOP

回复:MM GAL 企划中,欢迎大家提建议(禁水)

其实感觉做出来的东西和flash是一个效果……—v—b

那么就像楼上所说,可否做成mark language样的脚本语言,
函数+参数式……
模块(函数):move <object= ..., time=...>

那么编译后会变成什么格式的可执行文件?还是一个动态图片?还是什么?
比大海更深沉的忧伤,比天空更青蓝的悠远。
TOP

回复:MM GAL 企划中,欢迎大家提建议(禁水)

不是每个人都喜欢程序一样的语言的...但是如果喜欢的人,也可以用这些语法,通过一个转译文件就可以实现 ^^

编译后的文件一般来说仍然是不可独立执行的文件,需要和引擎一起发布,就像avg32/Reallive 和seen.txt的关系一样。
不过如果需要,也可以把编译后脚本并为引擎的资源的一部分,这样就可以一个EXE文件发布了。
当然如果引用了外部文件的话,最好还是分开发布,不然带有几十上百MB资源的EXE文件可能会有执行效率问题...
飛べない翼に、意味はあるんでしょうか?
TOP

回复:MM GAL 企划中,欢迎大家提建议(禁水)

特效加上旋转扭曲与波动扭曲吧
一切都是过眼云烟
TOP

回复:MM GAL 企划中,欢迎大家提建议(禁水)

这样的设计思路如何

程序执行机构 <- 初级解释脚本 <- 宏定义 <- 高级脚本

比如:
==========================================
高级脚本(结构化描述)
SC [desktop(舞台名称),@Desktop(舞台),full(大小),50(透明度),X,Y,W,H(舞台位置)]  //舞台设定
IT [plane(道具名称),picture(到据类型),"飞机.PNG"(道具载入),X,Y,W,H(初始定位)] //道具设定(坐标相对于舞台坐标)
TL [10(fps设定),noloop(是否循环),desktop(舞台),(plane)(道具列表)]  //时间轴设定
BEGIN
    AF [0(处于帧)]  //关键帧设置
    {
    plane.X = <初始位置X坐标>
    plane.Y = <初始位置Y坐标>
    plane.W = <初始位置W坐标>
    plane.H = <初始位置H坐标>
    }
    AF [100(处于帧)]  //关键帧设置
    {
    plane.X = <结束位置X坐标>
    plane.Y = <结束位置Y坐标>
    plane.W = <结束位置W坐标>
    plane.H = <结束位置H坐标>
    }
END //结束时间轴
==========================================
把以上高级脚本经过宏解释器分解为低级脚本操作序列,具体执行了以下过程:
1.载入桌面场景
2.定义舞台边界
3.定义舞台相对坐标与全局坐标的转换
4.设置相关属性(如alpha等)
5.载入文件"飞机.PNG"
7.定义基于"飞机.PNG"的物件对象
8.在舞台上进行物件位置的初始化
9.设定时间线
10.记录关键帧(第0帧)信息
11.执行关键帧(第0帧)信息
12.记录关键帧(第100帧)信息
13.对比上一关键帧(第0帧)与本关键帧(第100帧)信息
14.制定动画向量方法
15.从关键帧(第0帧)到关键帧(第100帧)顺序运行动画向量方法(绘图)
16.结束标记
==========================================
最后把以上由低级脚本描述的过程付诸实际代码执行


当添加了新的底层功能时只需要扩充低级脚本,并根据实用需求增加一些宏代码就行了
这年头
做魔王难
做公主更难
TOP