《游戏脚本的设计与开发》-目录&序 - CSDN博客
《游戏脚本的设计与开发》-目录&序
本系列文章目录章节标题连接序游戏脚本简介第一章 基本功能1.1读取和解析一个脚本文件1.2文字显示[Hello world]1.3基础语法(注释,变量,函数,条件语句)1.4图片的读取显示1.5显示层,绘图1.6按钮,脚本的暂停和标签第一章总结文字脚本的功能扩展和一个游戏测试第二章 战棋类游戏2.1快速显示一张战场地图2.2军队降临战场2.3战场上的寻路和移动2.4物理攻击第三章 RPG类游戏3.1RPG地图到底怎么做?3.2地图遮挡和人物行走3.3加入多个人物以及对话实现3.4地图跳转3.5游戏背包和任务系统3.6队员列表和人物属性3.7战斗系统之自动战斗(一)3.8通过脚本来自由控制游戏(一)第四章 待定该项目github地址如下:序从现在开始,我将通过一系列的文章,来讲解一下游戏脚本的设计和开发,这是一个比较大的话题,并不是一两篇就能讲完的,所以这可能是一个大坑,如果你不小心掉了进来,那就跟着我一点点的来了解一下吧。一,什么是游戏脚本& & 简单说,游戏脚本就是依据一定的格式编写的可执行文件,游戏可以通过脚本中自定义的语句来执行相应的逻辑。& & 举个例子,舞蹈演员随着音乐翩翩起舞,其实音乐在这里就担当了脚本的角色,音乐里记录了每一个舞蹈动作,舞蹈演员根据自己的专业知识,将这些音乐转换为优美的舞姿。& & 游戏也一样,游戏脚本里记录了游戏的控制语句,游戏引擎将这些控制语句进行解析,转换为生动的游戏画面。二,为什么要将游戏脚本化& & 游戏脚本,可以令我们的游戏动态化,比如当我们开发了一款rpg游戏,里面的剧情,事件以及地图等,我们如果将这些全部写进程序里,当然是可以的,但是一旦出现问题,哪怕几个错别字,我们需要先将这几个错别字改正,并且将整个程序重新编译发布一遍,这个过程是相当令人反感的,因为如果游戏的程序跟着游戏的内容不断进行修改的话,那只会使你的程序越来越复杂。但是如果我们将这些可重复的数据,都定义到游戏程序之外的文件里面,当游戏引擎开发完毕,我们的游戏通过读取这些外部文件,来执行相应的剧情和事件,那么,像上述当我们的游戏出现了问题,我们只需要改动这些外部文件就可以了,并不需要重新编译整个程序,这样便使得我们的游戏开发,变得便利简洁。(熟悉我博客的朋友们是不是看着这段话眼熟?我直接拷贝了系列文章中的解释)& & 游戏脚本化的另一个好处,就是将游戏引擎和游戏内容分离。游戏的脚本语言,最大的有点就是简单易懂,如果再为这个脚本语言提供了编辑器的话,就算是不会编程的人也能很容易上手使用。三,游戏脚本能够实现哪些功能& & 一个优秀的游戏脚本,通常能控制游戏中的一切。游戏中所有可变的数据,都应该通过脚本来控制,例如RPG游戏中的剧情任务,人物对话,不同角色的成长,道具的属性,甚至游戏中的按钮等等。四,我要设计一款什么样的游戏脚本& & 既然是自定义脚本,你可以任意绝对脚本的格式,比如我曾看到过下面一种脚本。@@message 你好,欢迎来到脚本测试
@@drawgraph 50 100 human.png上面的脚本第一行是一个打字机效果的对话内容的显示,第二行是在坐标50,100的位置上显示了一张图片,脚本中利用空格将每一行的脚本语句进行分割,然后通过分割后的第一个字符串作为命令的种类,不同的命令再进行不同的解析,最后通过画面显示出来。& & 我在开发flash游戏引擎的时候,设计了一款脚本引擎,叫做L#,并成功使用这个脚本开发了《三国记》系列游戏,和。下面是游戏中的两个画面& & L#除了预计提供的RPG,SLG两大功能外,开发一些小应用也是很方便的,例如在L#中显示一行文字只需要下面一行脚本Text.label(-,txt,Hello World !,280,230,30,#000000);& & 为了提高flash端引擎的效率,最近打算使用Starling将flash端的L#脚本进行优化重构,顺便打算在HTML5中实现一下L#脚本的开发。于是接下来我会把这一过程中的HTML5部分记录下来,来说明一下如何具体来开发一款游戏脚本,大家可以从中了解到如何开发一款大型的SLG游戏和RPG游戏。五,准备工作& & 1,lufylegend.js引擎下载& & 我在下面的开发过程是建立在HTML5游戏引擎lufylegend.js的基础上的,当然你用其他语言,如C,C#,java等也是一样的,只要了解了原理,实现过程都不是问题。& & 下面是lufylegend.js引擎的官方网址& &&& & 2,一个本地的服务器& & 因为涉及到脚本文件的读取,所以如果你也是跟着我用HTML5来实现这一过程的话,为了实现ajax读取文件,你需要在自己的电脑上***一个本地服务器。我推荐你***xmapp,这个工具非常方便,***这个工具很简单,你可以百度一下,或者到我的这个帖子里,下载一书中的试读章节,里面第一章里面有xmapp的***介绍。这样准备就绪之后,就可以开始脚本开发之旅了,下一篇中,我将介绍如何来读取和解析一个脚本文件,敬请期待。转载请注明:欢迎继续关注我的博客
本文已收录于以下专栏:
相关文章推荐
一个RPG游戏中会触发各种各样的剧情,让某个人物的动作改变,或者让某个人移动到另一处,或者让某个人物从战场上消失,或者会播放一段动画,或者会切换游戏场景,等等吧,这些都要通过脚本来动态的控制。
脚本系列文章写了好几篇了,大家可能都不清楚这些脚本有什么用,游戏中如何能应用到这些东西。当然,目前所介绍的内容还只是个简单的开头,说到做游戏还远远不够。不过,本次就使用前几章所介绍的内容,先来尝试一下...
Java 脚本化编程指南
Java脚本化API为谁准备?脚本语言的一些有用的特性是:
方便:大多数脚本语言都是动态类型的。您通常可以创建新的变量,而不声明变量类型,并且您可以重用变量来存储不同类型的...
string类型的变量是一个数组,下列操作合法:
strName = $.name -- output: "Shemmy_03"
strName[1] --得到字符串...
我之前也写过一个短篇系列《零基础开发RPG游戏开源讲座》,介绍的也比较简单,这次我会更深入也更具体的介绍一下RPG游戏的开发过程。
话说好久没有更新博客了,其实这段时间主要是工作忙,没时间。那又是什么...
终于到了攻击部分了,战棋游戏中的攻击,主要分为物理攻击和法术攻击,本章就先从物理攻击讲起。物理攻击又分为普通攻击,连击(双击),以及致命攻击,再复杂一点的还有其他特殊攻击,比如我的《三国记-乱世群雄》...
今天开始脚本设计的第二部分,战棋游戏的开发。战棋游戏中我尤其喜爱光荣的英杰传和曹操传,我的多平台游戏三国记,也是以三国志曹操传为模板而开发的。本次也不例外,就从曹操传的移植为基础来开发,再进行扩展,从...
上回说到拍电影模式来设计游戏引擎。实际上不讲数据结构,光是类设计得不停的再思考。毕竟没有人能一步设计到位。
想对骨架进行剖析;我不是很想画图,程序员沟通不是靠画图和留文档。(别人来看图读文档...
本章来实现一下如何用脚本来读取一张图片,将其显示到画面中,并且对图片进行一些缓动变换等操作。本章预备实现一下几个脚本/*
游戏脚本的设计与开发 第四章
//读取图片数据
Load.img(bac...
他的最新文章
讲师:董岩
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)[转载]简单教你如何制作CS游戏地图
揭开CS游戏真实面纱,让我教你如何制作CS地图
现在的年轻人一定很喜欢打CS游戏吧,也许很多人会沉浸在游戏的趣味和战斗的拼杀中,如果你没有足够的探索欲和求知欲,你或许并不会关心CS这块经典电子竞技游戏里蕴藏的诸多奥秘。比如,这些游戏中角色是如何形成,如何定位的?游戏中的地图是如何改变的?如果自己做一个CS地图,可能你会认为这是件力所不能及的事情,因为你会自然而然地认为那是制作这款游戏的游戏商家的事情,我们只管玩就是了。其实不然,世界之大、无奇不有,如果你对一件事情足够好奇,你会主动接近了解他,然后发现它其中的奥秘。这就是一种探索精神,而无论你将来从事什么行业,这种精神的都是必不可少的。
如何制作一张完整的CS地图?首先我们需要了解地图的基本要素和它们的组成元素,然后要理解软件、地图和游戏这三者之间的关系,把这些基本概念理解了,就为你之后的亲手制作打下了可靠的基础!(至少你知道了CS地图是如何在游戏中运行的)。下面我按自己的理解来为大家以最简明扼要的方式讲解一下基本概念,具体的条条框框我也说不上来。
【制作游戏地图软件工具】Worldcraft(Hammer).(注:这两个软件是升级的名称不同,其实是同一个软件,最早使用的是Worldcraft
3.3,Hammer是升级到3.4的Worldcraft)
主要用途:制作生成地图的源文件,格式:*.rmf 或 *.map。
【编译地图软件】Q系列、ZHLT系列(hl系列)
分4大程序:csg、bsp、vis、rad
分别对应得Q系列:QCSG、QBSP、QVIS、QRAD;ZHLT系列:hlcsg、hlbsp、hlvis、hlrad
推荐使用:zhlt系列(功能更强大)
作用:把源文件(格式:*.rmf 或
*.map)编译成游戏可运行的地图文件(*.bsp)
各程序功能介绍:CSG:统计地图中的实体和所用的纹理贴图、
BSP:生成没有任何灯光效果的地图(提供了基本的三维场景)、VIS:预先优化地图结构,提高地图运行速度、RAD:处理地图光源,生成完整的地图(增加光影的效果)
【地图设计与游戏的关系】游戏(通过FGD地图设计规范)---》地图制作软件----》生成源文件map格式(通过编译程序zhlt系列或q系列)---&转换为地图文件(bsp格式)---》游戏(循环)
&&&&&【FGD】这是个地图设计的规范库,它指定了该游戏引擎所使用到的地图的规范,规定不能超越了这个设计范围。它提供了许多地图中的元素内容,使设计者能更加方便的根据自己的意愿设计。注意:fgd的内容与所玩的游戏一一对应,即CS游戏就对应CS
&&&&&【游戏中的地图元素】玩家(***、土匪)、人质、墙壁、地面、天空、墙壁、人质获救区,装备购买区、音乐等等其他元素。
&&&&&【地图设计中的3元素】固体(地面、天空、墙壁等等)、固体实体(人质获救区、装备购买区、车子移动等等这些被赋予特殊属性的固体,游戏中不可见)、点实体(玩家出生地、背景音乐、人质摆放区、自动配备武器等等这些自动作用于游戏,没有固定形状游戏中不可见的区域)。
【CS地图最基本构成要素】一个由固体组成的密闭空间、游戏双方玩家、光源(可以不需要)。
【CS基本实体和地图类型】
(红色为点实体,绿色为固体实体)
&&&&&&&&&玩家:info_player_deathmatch(土匪)、info_player_start(***)
&&&&&&&&&灯光:&light(室内灯光)、light_environment(户外太阳光)
&&&&&&&&&装备(非必须)func_buyzone(购买装备固体实体)
地图类型:1、pk地图(血战地图):满足以上基本实体即可;
&&&&&&&&&&&&&&&&&&&2、置拆弹地图(如dust系列):func_bomb_target(炸弹放置点)
3、人质地图(如Italy)func_hostage_rescue(***设置的人质获救区) 、hostage_entity(人质摆放区)
4、VIP地图(如油井地图)info_vip_start(定位1个VIP出生点)、func_vip_safetyzone(***护送VIP到指定地点)
5、土匪逃逸地图:func_escapezone(土匪逃逸到指定地点即获胜)
6、固定***械训练地图(pk地图的延伸):几种实体的组合
&&具体参照&----&
好了,了解了以上这些基础的知识,你就可以好好大干一场了,自己亲手做一个简单的CS地图来。
【首个地图制作】
1、准备一款地图制作软件:Worldcraft 或
注意:我给各位提供的软件工具包中包含Value Hammer Editor 3.4 汉化版\Wally
1.55B 汉化版(纹理制作)\HLCC 1.4 汉化版\WinBSPC 1.2 汉化版\Wavelength Sprite
Wizard 1.1 汉化版\GenSurf 1.9 汉化版\HalfLife Logo Creator Beta
2.3 汉化版\Half-Life Model Viewer 1.24 汉化版\SprView 汉化版\Zoner's
Halflife Tools 2.5.3\RAD Editor 1.2\CS地图制作快速入门\WorldCraft 3.x
2、配置软件参数:
刚刚***完软件,你需要按照我的步骤一步步配置软件参数,否则不能使用哦!
如果新运行Hammer它会自动提示你需要配置参数,或者点“工具”菜单-&选项。
(1)配置第一项“贴图”,在添加按钮中添加你的CS***目录下cstrike和value文件夹中的*.wad若干文件(建议最多贴8个)如下图:
(2)配置游戏配置参数:
配置名:counter strike。
游戏数据文件:你CS游戏的FDG文件(在你的CS***目录cstrike下有这个文件)
完成以上两项后,贴图格式、地图类型、默认点状实体和固体转实体类会自动生成。
游戏执行目录:你cstrike.exe 或 hl.exe
所在的路径
Mod目录:游戏执行目录cstrike
游戏目录:游戏执行目录value
rmf目录:保存制作的地图的位置
(3)配置编译程序参数:
配置名:cstrike
Game执行程序:你cstrike.exe 或 hl.exe 所在的路径
CSG编译程序、BSP编译程序、VIS编译程序、RAD编译程序这些目录在我给你的工具包中的ZHLT中有,你也可以使用Hammer自带的TOOLS中的Q系列,但我之前说过了zhlt系列比q系列功能更强大,建议还是使用zhlt.
在运行游戏前在这个目录编译地图:这个地址可以任意(最好保存在其他任意位置,然后在编译地图成功后,将该目录中的文件*.bsp复制到你CS***目录下的cstrikemaps下即可在你做好的CS地图下玩CS)。
3、软件基本界面(配置完参数后)
(1)文件---&新建---&开启编辑界面---&勾选“地图”菜单中的“对齐到网格”和“显示网格”
(2)在“工具”菜单中选择“选项”--&常规标签----&窗口设置中勾上单视图编辑,将视图窗口变为一个,用来更方便的作图。(注意:确定以后要重启软件,否则没有改变效果)
如果不改变,将是下面的效果(缺点:视图不够大,视野不够开阔)
(3)切换视图(图中已经介绍)
(4)界面工具详细介绍(图中已经介绍,如果看不清,请点击放大图片)
注意:窗口底部的信息栏也是比较重要的一项,当你选中对象后,第一部分会提示该固体的形状名称(如
solid face
6等,第二部分提示鼠标指针移动方向(如@512,700),第三部分提示宽w长l高h(如h),第四部分提示放大镜缩放比例如Zoom:0.25,第五部分提示网格是否显示(snap:on)以及网格大小Grid:32或&32)
4、制作一个由固体组成的密闭空间、添加双方玩家、添加光源的最简单CS地图:
(设置Grid网格大小:32,纹理贴图:自定义你喜欢的)
a.密闭空间:文件-》新建-》在顶视图中,用绘制固体工具绘制一个长方形(0h)-》在其上右击选中“创建对象”-》用选择工具选中该固体使其成为红色。-》切换到侧视图中,调整它的高度为640h.(完成固体绘制如下图)
执行:“工具”菜单--》“挖空”---》指定墙体厚度(默认32)--》确定
b.添加双方玩家:
在顶视图中,使用创建点实体工具--》定位在固体空间中,按回车出现一个粉点即可。
选中这个粉点-》“编辑”菜单--》属性---》弹出对象属性对话框---》“类”里选info_player_deathmatch
(这是指定的土匪出生点)--》关闭属性对话框--》切换到侧视图中,将该点实体的位置移动到长方体内部适合的位置,不要试图移出到外边或与边框接触,否则土匪生出后将卡在地面或悬在空中。
&用相同的方法设置***的出生点,唯一不同的是对象属性:info_player_start(这是***的出生点)如右上图。
c.&添加光源:
用上面相同的方法添加光源,唯一不同的是对象属性:light(灯光)
最后,文件-》保存-》另存为*.rmf --》点击编译按钮--》弹出运行地图对话框--》按我图中的配置即可。
&注意:右图是编译成功后的结果。另外,到你所指定的编译程序的路径哪里得到文件*.bsp,并复制到你CS***目录下的cstrikemaps下即可在你做好的CS地图中玩CS了&
自此,完成了以上这些工作,你已经基本做好了一个空旷的CS地图,不过出生后,***和土匪会对着开***,因为没有掩体,虽然简单,但是至少该地图可以用来玩了。
5.添加“天空”背景贴图:
-&重新打开先前你编辑保存的地图源文件*.rmf
添加天空纹理贴图方法:“工具”菜单--&选项--&贴图--&
从cstrike/value/halflife.wad加载--&在右边的贴图选框中的当前贴图中选择SKY,如下图:
切换到侧视图--&先按下打散分组工具,选中固体中最上面的天花板,使其变为红色--&使用左边的“当前贴图”工具,为固体顶部贴上当前的天空纹理贴图。--&切换到3D贴图视图(摄像机视图),用放大镜工具通过键盘(wsad)控制视图,观察效果。如下图
回到侧视图,选中先前做好的灯光点实体(如下图),编辑---》属性---》对象属性中,将light(密闭空间的灯光)改为light_environment(天空中太阳光)
“地图”菜单---》地图属性---》对象属性----》属性值第二个(天空图片贴图)---》后面的方框内你可以输入CS的地图名(如dust对应的天空是dust的天空)
改好后保存再编译(方法同上),好了以后,再从保存的地方复制你的地图文件(*.bsp)到cstrike/maps中来进入CS游戏看看效果吧。
于是,一个最简单的露天CS战场就做成了!!
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。