`
bulote
  • 浏览: 1305269 次
文章分类
社区版块
存档分类
最新评论

手把手教你开发galgame 游戏(galgame 游戏引擎开发入门经典教程)

 
阅读更多

首先要给大家说明的是:软件工程知识,就是利用好现有游戏引擎这样省时省力
比如吉利吉利系统就是开源免费的,做自己的引擎也是好主意,这样可以充分享受DIY的乐趣!
我最近回味魔兽学院 MAN AT WORK !2永远的羁绊 这个游戏,觉得做的很好,于是就想起动手写个类似的程序

本文源代码:http://download.csdn.net/source/353069

galgame 游戏有好多种,比如RPG,ADV
本文暂时基于ADV 文本类型讲解。一般来说开发游戏用VC++ 和DX(DirectX)比较无敌
大师擅长.net 而且.netframework编程开发效率高,可能你几天搞定的 用VC++要几个月

本文使用语言:VB.net,简单以学习,比起VB6来说,不仅继承VB6的优点,而且还可以充分利用.netframework的优势,当然用C#也可以


注意:本文虽然说是
手把手,但不是教啥基础都没有的人哦
至少需要:
VB6 或者VB.net或者C#编程,能够开发一个窗体程序
还有Visual studio 2005或者2008 要掌握面向对象编程

大师知道要理解并且运用面向对象编程需要时间的,对于初学者来岁,老是希望能 “突飞猛进”。实际上,没有几年编程实践,

是很难有什么水平的

.netframework 现在有两个架构可以供大家使用:以前winform以及3.0以后的WPF
本文源代码使用winform为主,照顾大家,同时讲解WPF更多优势

庖丁解牛,看看 大师如何实现的一个一个的元素

声音播放实现
永远的羁绊只有背景音乐,这样很简单,My.Computer.Audio.Play方法就可以完成任务,源码详见mainform.vb
但是首先要确定文件存在,使用File.Exists方法
If File.Exists("music/bgm02b.wav") Then
My.Computer.Audio.Play("music/bgm02b.wav", AudioPlayMode.BackgroundLoop)
End If
这个也可以用于主菜单中music也就是音乐点播模块实现

WPF更强大:一般来说ADV,除了背景音乐还有语音,而且很多都不用WAV格式,因为这样文件很大。除了播放声音,动画在ADV中的

比重也越来越大,比如SD游戏就有20G大小,大部分是动画
WPF提供了MediaElement控件,可以不必使用DX就可以完成上面要求,播放音乐时候,设为不可见(不要告诉我你不会),播放多个

音乐或是语音就搞多个MediaElement控件
唯一的缺点就是 MediaElement控件不支持资源打包,这既是优点也是缺点(???为什么?请继续看)

图像显示实现:
首先介绍个概念:抠图
我们知道,Photoshop 中有图层 这种东西。可以将背景和人物合成,背景还可以随便换。。
天气预报中,主持人对着身后的大屏幕讲解天气。很多人问大师,这种屏幕去哪里买?
实际上,主持人身后只是一块普通的布而已,使用 色抠或者色键(color key) 即时合成的

说白了 吧,就是把某个颜色设置为透明,让后面的东西显示出来,比如主持人身后使用蓝色布,使用蓝色抠和大屏幕动画(就暂时

让我这么称呼)即时合成
如果大家用过VC++ 开发就知道,这项技术实现:黑色设置为透明,使用异或 XOR 运算
在.net开发中,这一切变得很简单了,大师使用PNG格式图像,PNG 继承GIF的透明图像,只要在Photoshop 制作出透明图像就可以

很容易在程序中实现
VC++ 开发还存在图层问题,就是先画什么后画什么,还要用排序算法解决。


图像显示还存在双缓冲问题,你试试一个一个画在屏幕上,然后清屏,会发现明显闪烁
大师使用方法:源码详见collage.vb
screensurface 为背景图像
Dim screensurface As Image = choosepicture() 
surface = Graphics.FromImage(screensurface)
surface.DrawImageUnscaledAndClipped和 surface.DrawString方法画所需东西
最后 使用Image 控件screen.Image = screensurface 或者Graphics.DrawImageUnscaledAndClipped显示surface
这样不存在明显闪烁问题

WPF更强大

一般来说2DGALGAME 对显卡要求低,很多都要依赖CPU处理,专业术语就是只能软件模拟/运算,不能硬件加速
winform使用的是GDI+技术,无法发挥显卡硬件加速能力。使用DX开发固然可以发挥显卡硬件加速能力,但是开发复杂
WPF可以做到发挥显卡硬件加速能力,而且开发很简单,特别是一些动画效果使用微软公司的Microsoft Expression Blend软件,就像用FLASH一样很容易制作的。

关于文本读取和资源打包
大师使用。net的资源文件,说白了就是要操作Visual Studio
程序中使用资源 My.Resources可以直接使用
建议文本用数据库 比如ACESS、SQLlite 之类实现

源代码:http://download.csdn.net/source/353069 使用的结构:
使用控件 将程序模块化,对应游戏菜单开发了音乐music和地图模块,还有具体剧情

WPF更强大
其实我们玩过GALGAME就知道:
点击 新游戏<-〉进入地图<-〉剧情
点击 CG 浏览<-〉进入CG 浏览<-〉查看CG
很类似于 网页 主页<-〉进入分类<-〉查看文章
WPF使用一种叫 页 page方式,完全可以实现网页浏览模式。比起控件 将程序模块化将更简单实用

具体模块一些小技巧,就不再提。比如地图上不断变化的闪光点 是使用timer控件和多个图片,这些可以看源代码

WPF无敌之处

WPF可以实现网络化,刚才提到MediaElement控件不支持资源打包,实际上,对于网络游戏,完全可以把资源放到服务器上!
这样玩家只需要能上网就可以玩这个游戏
搞过项目开发的都知道,自从1995年以后,软件开发分成两大阵营:B/S和C/S 就是使用一般应用程序还是使用IE浏览器
大师使用WPF,可以只开发一个软件,最后只需要简单写个外壳就可以同时发布B/S和C/S,这种优势很容易发布基于IE浏览器网游,这是其他任何开发平台无法实现的

唯一缺点就是 客户端要安装 .netframework3.0,意味着只能支持XP或者更新的操作系统

具体可以看看大师开发.net WPF开发的英语教学软件,至于如何操作数据库(刚才提到文本读取),里面也有了


总之,软件开发充满乐趣和挑战性,相信大家能够开发出属于自己的GALGAME

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics