开发Window Phone 7下的Galgame(一)

来源:互联网 发布:杨幂人品怎么样知乎 编辑:程序博客网 时间:2024/04/29 12:03

    这一段时间来android上的galgame很多,没办法这个要归功与ONS引擎。使得很多基于ONS引擎的galgame移植变得很容易。WP7手机上目前没有这样的解决方案,所以WP7上的galgame据我所知暂时还没有。

    但是,既然本人入手了一台Lumia 710,加上本人对galgame的热爱,所以本人就开始了WP7的galgame开发。

先上效果图。

游戏中所使用的素材是从feng社的あかね色に染まる坂里所提取的。

所使用的开发工具:Microsoft Visual Studio 2010 Express for Windows Phone

开发语言:C#

使用框架:XNA FrameWork

很多人觉得开发galgame是比较容易的。至少不需要什么BT的算法,所以很多游戏入门开发的新人也都喜欢选择AVG这类文字类游戏。真是这样么,我看未必。光是实现一个脚本引擎,你就必须了解一堆的编译原理。

这里我解释下为什么需要脚本引擎。游戏里的脚本主要是作为业务层级的流程控制,比如一个rpg游戏里,你控制的hero走到一个npc旁,然后触发一个与npc的对话事件,出现了对话内容,这些我们不应该写到主程序里,我们的主程序应该只做一些底层操作,比如图形渲染,用户输入获取,以及物理演算这些游戏引擎应该做的是,其它的逻辑流程交给脚本来控制。很多人会觉得脚本的速度肯定很慢,是的,的确脚本的执行速度要比我们用的程序语言慢个10倍,不过这个不会是游戏的瓶颈,因为大运算量的事我们已经交给了主程序,记住脚本只是基本的业务逻辑流程控制。

那些觉得AVG类型容易写的朋友,不是用现成的脚本引擎(普通的AVG游戏引擎都有自己的脚本引擎)像Ruby等脚本语言,就是自己写的类似配置的方式配置文件。前者,有先人编写过的脚本引擎,但是WP7程序必须是纯托管的,PC上的之前写过的非托管dll是不能调用的。后者配置文件一步步执行都是单流程控制的,不能有分支语句,这样的话就不能做逻辑判断和跳转了。

所以,这里我还是教大家先实现一个脚本引擎。

首先我们必须要程序比较容易知道我们要做什么,我们必须定义一种call这个程序里指定函数的方法,就是 指令+参数+参数+... 的形式,然后利用C#的反射机制(指令要与函数名相同才可以反射),然后Invoke对应的方法。C++没有反射机制,实现起来就比较麻烦,这里可以提供一个我的一个思路,可以做一个映射表,做成指令名对应相对应的函数指针的方式。

现在我们要实现的是如何获取到指令+参数+参数+...的形式,那就需要我们编写一个编译器。这里我提供下我编写的脚本编译器和脚本运行时的源代码:http://download.csdn.net/detail/zy974400763/4395613

Int choose
Print#"由依:欧尼酱,快起来,再不起来就迟到了哦\n"
Print#"我:好吵,再让我睡会儿...\n"
Print#"由依:再不起来我就不等你了"
Lable#Option false
Print#"要起来么?1.要 2.不要\n"
choose=(Input)
If (choose==1)
 Print#"我:好困...\n"
 Print#"由依:都怪欧尼酱每天晚上Play Game到两三点。\n"
 Print#"我:为什么你这都知道?\n"
 Print#"由依:不好了!迟到了!迟到了!\n"
ElseIf (choose==2)
 Print#"我:再睡会...\n"
 Print#"由依:欧尼酱 八嘎!\n"
Else
 Print#"输入错误!\n"
 EndIf

 

然后你可以编写这样一个脚本 用SimpleScriptCompiler编译,然后用SimpleScriptRuntime运行

效果如上。

下一篇开始正式进入XNA for Window Phone 7开发。

原创粉丝点击