重装机兵联机版设计方案

Download Report

Transcript 重装机兵联机版设计方案

重装机兵联机版设计方案
基于脚本的联机游戏结构设计
北京交通大学 软件02-02 吕飞
E-mail:[email protected]
概要策划



开发模式:原型开发
游戏类型:局域联机PRG
设计难点:



网络实时高
剧情实现复杂
多角色实现复杂
概要策划





原型
画面
风格
类型
操作
概要策划

角色设定:





驾驶
修理
力量
体力
战士 机械师 女战士
高
中
低
中
高
低
中
低
高
中
低
高
这样的多角色设定可增大游戏乐趣和难度。
特殊剧情触发(比如机械师可触发特殊计算机等)
特殊装备的装备(扳手只能机械师装备等)
房间的进入限制(机械师未满18岁,不能进入酒吧,有些地方只能
女人进入等等)
概要策划












部分功能定义
人物起名新建一个人物并为其起名游戏中创建一个人物
对话面对一位NPC与NPC对话弹出对话框(具体视NCP而定。例如与装备
店老板说话会弹出购买装备的对话框,与路人说话会得到相关游戏信息
装备道具栏或身上有装备物(人物);坦克上有零件(坦克)更改或取下身上
装备(人物);更改或取下坦克零件(坦克)改变自身或坦克装备。
丢弃身上有物品丢掉某物品丢弃掉相应的物品
使用身上有物品使用某物品(可平时,也可战斗中)产生相应的效果
调查面对某物品查看或拾取面前的物品显示该物品信息,或得到该物品
存放身上有物品将暂时不用的物品放入仓库把相应的物品存入仓库
攻击战斗中攻击敌人(可肉搏,也可乘坦克。)攻击敌人
逃跑战斗中遇到强敌或不想战斗,可以逃跑以一定的成功机率脱离战斗。
BOSS战时无法逃跑。
坦克起名得到一辆坦克后给坦克起名给坦克起名
乘降有自己的坦克上坦克或下坦克上坦克或下坦克
概要策划





原型的修改
行走:每个人由个人单独控制行走,与人对话等等
战斗:一人触发战斗,与之同屏的人将一起加入战斗
(如果队友离自己太远的话就惨了)
传递: 把身上的物品给附近的另一位玩家
关卡:





有些关卡要一人或多人留下踩机关,其他人进入
不同角色可进入关卡
使用道具进入关卡
站斗进入关卡
密码进入关卡
概要策划
发送信息
加入游戏
(from 重装机兵策划图)
强度
(from 重装机兵策划图)
(from 重装机兵策划图)
游戏菜单角色

简
单
用
例
图
工具
(from 重装机兵策划图)
建立游戏
(from 重装机兵策划图)
装备
新建人物
漫游角色
(from 重装机兵策划图)
(from 重装机兵策划图)
乘降
(from 重装机兵策划图)
炮弹
(from 重装机兵策划图)
模式
调查
(from 重装机兵策划图)
角色移动
对话
(from 重装机兵策划图)
(from 重装机兵策划图) (from 重装机兵策划图)
战车主炮攻击
(from 重装机兵策划图)
徒步战斗工具
(from 重装机兵策划图)
战斗角色
徒步战斗角色
战车炮弹使用
(from 重装机兵策划图)
徒步战斗攻击
战车战斗角色
(from 重装机兵策划图)
徒步战斗装备
(from 重装机兵策划图)
角色辅助
(from 重装机兵策划图)
战车SE攻击
战车副炮攻击
(from 重装机兵策划图)
(from 重装机兵策划图)
战车工具使用
(from 重装机兵策划图)
补充
买卖人类工具
休息
概要策划
寄存
退出游戏
情报速度
买卖战车工具
喝酒
服务
买卖人物武器
音效开关
按摩
发送信息
洗车
乘降
触发剧情
普通对话
买卖战车武器

扩
展
用
例
图
动画开关
模式
服务
冒险数据
买卖战车
买卖
对话
漫游角色
工具
传递
对话战斗
强度
战车强度
炮弹
扔掉
装备
人物强度
角色移动
调查
使用
拆装甲
普通移动
战车装备
进屋
人物装备
触发剧情
新建人物
发现宝物
控制机关
发现战车
触发战斗
加入游戏
游戏菜单角色
建立游戏
徒步战斗攻击
战斗角色
战车主炮攻击
徒步战斗角色
徒步战斗工具
战车副炮攻击
角色辅助
战车战斗角色
徒步战斗装备
战车炮弹使用
角色保护
角色乘降
战车工具使用
战车SE攻击
角色逃跑
角色防卫
设计方案

星型拓扑结构




实用于局域联机
容易网络实时传输
用户数少
服务器开销小
客户端4
服务器
客户端3
客户端1
客户端2
设计方案

组
件
图
DirectX SDK
CDX引擎
圣2脚本
解析系统
Quake3网
络组件
脚本解析
系统
资源表现
系统
游戏主体
游戏资源
管理系统
设计方案

DirectX开发包
WinSocket包
包图
CDX引擎
控制器包
windows包
资源管理包
游戏主体
Quake3网络包
圣剑传说2脚本包
网络控制包
脚本管理包
游戏脚本设计

什么是游戏脚本?






程序员自定义其格式
程序运行时,读取文本并运行之。
如同功能很少的计算机语言
一个语句能实现一个游戏动作
一个脚本是一个动作的集合
有统一的书写格式
游戏脚本设计


利用脚本书写一段剧情动画。
勇士向父亲说自己的报复,却被父亲打
击的一段剧情动画。
游戏脚本设计
游戏脚本设计
游戏脚本设计
游戏脚本设计
游戏脚本设计
游戏脚本设计
游戏脚本设计
游戏脚本设计
游戏脚本设计


















用脚本语言描述
play01.stg
/*******************勇士的梦想*************************/
;NPC1001为父亲的名字,NPC1002为自己的名字,NPC1003为姐姐的名字。
;初始化场景
/*脚本发送等级(L 本机执行不发送,S 本机不执行发送,A 本机执行发送)*/
/*SET 地图名:脚本发送等级*/
SET SYS_MAP =MAP1:L;
/*SET 角色名.坐标=X,Y,地图名:脚本发送等级*/
SET NPC1001.POSITION=10,20, SYS_MAP:L;
SET NPC1002.POSITION=7,5, SYS_MAP:L;
SET NPC1003.POSITION=9,5, SYS_MAP:L;
/*SET 角色名.方向=方向*/
SET NPC1001.DIRECT=DOWN;
SET NPC1002.DIRECT=LEFT;
SET NPC1003.DIRECT=UP;
/*SLEEP 暂停时间(mS)*/
SLEEP 1000:L;
游戏脚本设计

















/*显示一段对话*/
SET SYS_TALKDIALOG.SHOW=TURE;
SET SYS_TALKDIALOG.CONTEXT=[爸爸“什么,你说想成为超级勇士?”]:L;
WAIT:L;
SET SYS_TALKDIALOG.CONTEXT=[爸爸“还没放弃这种无聊的追求!
$SYS_MAINROLE.NAME$!]:L;
WAIT:L;
SET SYS_TALKDIALOG.SHOW=FLASE:L;
/*姐姐移动动画*/
SET NPC1003.DIRECT=DOWN:L;
SLEEP 100:L;
/*并行运行,运行体*/
SEGMENT_BEGIN:L;
/*MOVE 角色名,坐标X,坐标Y,方向,距离,速度,前台执行*/
MOVE NPC1003,NPC1003.POS.X,NPC1003.POS.Y,DOWN,1,NOMAL,FRONT:L;
MOVE NPC1002,NPC1002.POS.X,NPC1002.POS.Y,LEFT,1,NOMAL,FRONT:L;
SEGMENT_END:L;
...
游戏脚本设计

脚本设计的优点



将游戏的逻辑从游戏主体中独立出来
游戏运行逻辑容易编辑
程序员设计不用管游戏剧情
此脚本中的对象全为在游戏初始化中已创建,程序实现难度不大。
如果将脚本扩展,可以做成一个脚本语言系统
加入 新建对象,判断,循环,计算语句,可以用脚本直接写成小游戏.
游戏脚本设计

脚本运行机制
*脚本产生器
*资源管理类
*脚本缓存队列类
*脚本执行类
游戏脚本设计

添加网络功能的脚本运行机制
*网络脚本接收器
*脚本产生器
*资源管理类
*脚本缓存队列类
*脚本执行类
框架设计



简单概念类图
(这个结构实用对网络要求较高的局域联机游
戏。尤其是实时性较高的游戏。如泡泡堂,联
机射击游戏,联机坦克游戏等)
只要将脚本设计与脚本执行类设计好,很容易
就能做出小型的联机游戏,至于联机棋牌那种
实时低的游戏,可能不太实用)
框架设计
游戏系统结构图
*资源管理类
利
用
发
送
脚
本
实
现
联
机
实
时
游
戏
每0.01s刷新一次屏
幕
游戏的变化来源
+1
g_ResManager
自动累加,至最
大值归零
*网络脚本接收器
*图像显示类
*声音播放类
+1
+1
*脚本产生器
+1
*计时器类
+1
g_SoundPlay
g_Count
g_ScriptCreator
+1
+1 +1
*网络脚本发送器
+1
g_MsgRecv
g_Display
+1+1
+1
+1
+1
*游戏主体类
+1
+1
g_ScriptList
*脚本缓存队列类
g_MsgSend
不断循环,接收消
息
服务器每0.01s组播
一次剧情脚本
+1
+1
g_ScriptRun
g_UserMsg
+1
*脚本执行类
+1
*玩家消息接收器
修改游戏资源
框架设计
时间剧情脚本
控制人物脚本
重
装
机
兵
联
机
版
的
实
现
网络接受脚本
触发剧情脚本
菜单事件类
游戏战斗中菜单基类
脚本基类
+1..n
游戏移动事件类
+1
脚本资源管理类
*资源管理类
游戏中菜单基类
+1
事件基类
音乐资源管理类
+1
+0..n
+0..n
特殊音效类
+1
地图资源管理类
+1
+1..n
背景音乐类
角色基类
地形基类
战斗资源管理类
+0..n
+0..n
物体基类
+1
战斗组类
出场战斗组类
敌方战斗组类
友方战斗组类
*图像显示类
*声音播放类
玩家脚本产生类
+1..n
+1
*脚本产生器
+1
+1
+1
g_ResManager
控制人物
*玩家消息接收器
g_Display
网络脚本产生类
+1
g_ScriptCreator
g_SoundPlay
时间脚本产生类
g_UserMsg
+1
*计时器类
+1
+1
+1
+1
+1 +1
*游戏主体类
g_Count
网络基类
+1
+1
+1
+1
g_ScriptRun
+1
g_ScriptList
+1
*脚本缓存队列类
g_MsgSend
客户端网络类
g_MsgRecv
服务器端网络类
+1
*网络脚本接收器
+1
*网络脚本发送器
*脚本执行类
剧情人物
主角战斗组类
框架设计

移动角色用例的顺序图
: *玩家消息
接收器
: *计时器类
: *脚本产生
器
: *脚本缓存
队列类
: *资源管理
类
: *脚本执行
类
1: 移动消息
2: 产生移动脚本
3: 定时发送玩家移动脚本
4: 执行脚本缓存队列
5: 更改游戏资源
6: 将当前游戏图像资源刷新至屏幕
7: 将当前游戏声音资源播放
: *网络脚本
发送器
: *图像显示
类
: *声音播放
类
结束语

设计难点:



网络实时高
剧情实现复杂
多角色实现复杂
利用此设计,这些难点都得到一一解决
结束语






脚本的设计
基于脚本的联机游戏结构设计
重装机兵联机版在结构中的运用
脚本的改进与增强
可视化游戏逻辑的设计
开发一套游戏工厂网络版
结束语
结束