一个控制4个不同角色游戏教案中班(职业不同)的回合制游戏

这是一个roguelike大神写的关于回合制游戏的主循环博客,原文地址:
在这里做一下简略的翻译和梳理
该作者游戏设计所遵循的两大准则
游戏引擎应该和UI严格分开,model和view的分离是一个好的设计,可以让一个引擎更方便地复用到多种类型的ui上
怪物和玩家控制的对象被一致对待,Actor作为Monster和Hero的父类,引擎的多数时候都是统一地处理这个类
&下面是最开始的游戏主循环,只要还在游戏中,那么就会不断遍历每个actor并更新其状态:
void gameLoop() {
while (stillPlaying) {
for (var actor in actors) {
actor.update();
&然而,由于引擎与ui是解耦合的,它将在外部被调用,引擎会有一个Game类,UI会拥有这个类的一个对象,然后告诉它进行一些处理,在将控制权交给UI之前,引擎只能前进一“步”,也就是说Game类必须要记录上一个进行了操作的actor是哪一个,以便下次调用:
class Game {
final actors = &Actor&[];
int _currentActor = 0;
void process() {
actors[_currentActor].update();
_currentActor = (_currentActor + 1) % actors.
&在update函数中,actor可能会进行移动、进行战斗、撞墙、开门、拾取物品等等,我们可以选择将这些内容都写到Actor类中,不过那样Actor类就会几乎包涵下整个的游戏逻辑,那样很糟。
另一种做法是,我们将决定执行什么动作从执行这些动作中分离开,如下所示,游戏主循环将会询问每个actor做出一个action的选择,让后让action做出执行动作:
void process() {
var action = actors[_currentActor].getAction();
action.perform();
_currentActor = (_currentActor + 1) % actors.
Action类可以派生出各种各样的动作类,例如&,&,&等等。
我们将这些动作的逻辑放到了这些类中,并且更重要的是,使他们彼此之间分隔开了,如果设计者需要增加、修改action,将会变得非常简单而且清晰,这就是松耦合的好处;另外一点是许多的Action对于Hero和Monster来说是可以共用的。
我们现在有了一个起作用的主循环了,但是这个游戏有点太“回合制”了,actor都是以固定的顺序行动,你一步,我一步。
为了解决这个,我们将让actor以不同的速度运行。当然,这个速度是回合制的,不是说走得有多快,有更快速度的actor能够比速度慢的actor更频繁地获得行动机会,
一个很棒的解决方案是:每个actor都有一个能量值,每当主循环遍历到一个actor的时候,就会给它增加一些能量值,当这个actor的能量达到了一定的阈值,它就可以执行动作,如果达不到,那就跳过这个actor,每个actor都在聚集能量,消耗能量,如此循环。
加入速度属性的方法很简单,快的actor能够在每个回合获得更多能量,他们将能更快地达到阈值,所以他们能更频繁地进行操作,此外,设计者可以将不同的action类型所需要的能量值进行区分,带来更多的复杂性。
继续讨论主循环,带AI的monster可以自主决定下一步的操作(getAction),而玩家需要获得UI层带来的指令,例如:
void handleInput(Keyboard keyboard) {
switch (keyboard.lastPressed) {
case KeyCode.G:
game.hero.setNextAction(new PickUpAction())
case KeyCode.I:
walk(Direction.NW); break;
case KeyCode.O:
walk(Direction.N); break;
case KeyCode.P:
walk(Direction.NE); break;
case KeyCode.K:
walk(Direction.W); break;
case KeyCode.L:
walk(Direction.NONE); break;
case KeyCode.SEMICOLON: walk(Direction.E); break;
case KeyCode.COMMA:
walk(Direction.SW); break;
case KeyCode.PERIOD:
walk(Direction.S); break;
case KeyCode.SLASH:
walk(Direction.SE); break;
void walk(Direction dir) {
game.hero.setNextAction(new WalkAction(dir));
而相应的Hero类如下:
class Hero extends Actor {
Action _nextA
void setNextAction(Action action) {
_nextAction =
Action getAction() {
var action = _nextA
// Only perform it once.
_nextAction = null;
// Other heroic stuff...
剩下的问题是,当主循环执行到hero的回合,但是UI处没有相应该怎么办,为了解决这个问题 ,循环会检查actor有没有设置下一个action,如果没有,循环将会跳过并继续等待UI,在任何时候UI都能将下一步要做的操作抛给引擎,并在下一次通知引擎process的时候完成它。
void process() {
var action = actors[_currentActor].getAction();
// Don't advance past the actor if it didn't take a turn.
if (action == null) return;
action.perform();
_currentActor = (_currentActor + 1) % actors.
&接下来要考虑到的问题是更高的可用性,玩家会出错,那么引擎要做的就是适应它,想象玩家控制的角色在逃脱追捕的时候,向墙壁走了一步,这样的操作可能导致玩家的角色丢掉性命,这并不好,我们希望当玩家做出不可能的操作的时候,我们不会浪费掉宝贵的回合。
&一种处理这个的方式是在UI端来验证用户输入,在处理输入的时候检查角色将要移动的块是不是地板,如果不是,那么ui将会提示错误并且不将这个action传递给引擎,在引擎端则只会收到完美、正确的action。
但是做这样的验证确实是很复杂的事,或许角色拥有能穿墙的法术,或许墙上有传送门,有隧道,或许角色在物品栏里放着一把铲子……我所描述的这些都是游戏机制,游戏机制应该在游戏引擎中处理,特别地,这些基本都属于action的处理范畴,所以我们应该把问题的解决方法放在action里面,当一个action运行的时候,我们会返回一个提示是否成功运行的值,如果运行失败,那么主循环将不会认为操作发生,如下所示:
void process() {
var action = actors[_currentActor].getAction();
if (action == null) return;
var success = action.perform();
// Don't advance if the action failed.
if (!success) return;
_currentActor = (_currentActor + 1) % actors.
这使得引擎更加健壮,你可以随意做出一些操作,引擎会优雅地处理好一切,并且代码将所有的验证作为一个机制放在了一个地方(action),这是很好的封装。
成功/失败能够处理玩家给出了错误操作的情况,但有的时候引擎可以推测出玩家的意图,例如,如果你想控制英雄走入一扇关闭的门而不是使用具体的“开门”命令,那么很可能你是想打开这扇门,类似地,如果你想走进一个怪物,那你很可能是想打上一架。
我知道这听上去很明显,但是你会惊讶于现在许多的roguelike游戏不会做这样的事,改善可用性也是我对于游戏的追求,所以我关心这个问题,并且我也有很简单的解决方案。
当一个操作验证自身的时候,它可以直接像之前那样返回失败,但是它也可以回应一个备选的操作,就像是在说“不,你想做的是这个。”
既然action的perform方法可以返回success表示一切正常,failure表示什么也没发生以及其他的action来作为备选,我们将写一个类把他们封装起来。
class ActionResult {
static final SUCCESS = const ActionResult(true);
static final FAILURE = const ActionResult(false);
/// An alternate [Action] that should be performed instead of
/// the one that failed.
/// `true` if the [Action] was successful and energy should
/// be consumed.
const ActionResult(this.succeeded)
: alternative = null;
const ActionResult.alternate(this.alternative)
: succeeded = true;
现在的主循环是这样的:
void process() {
var action = actors[_currentActor].getAction();
if (action == null) return;
while (true) {
var result = action.perform();
if (!result.succeeded) return;
if (result.alternate == null) break;
action = result.
_currentActor = (_currentActor + 1) % actors.
我们将代码放在while循环中是因为一个备选的action可能会返回另一个备选,这是个递归的过程,所以利用while直到最后返回的是succeeds或者fails。这将应用到游戏中很多方便的特性中,例如:
当你使用一个物品,“使用物品”操作将会查看物品的具体类型(火球,传送门等等)然后返回一个备选的操作,当你使用可装备的物体,它将返回“装备”操作作为备选
如果actor发出来行走操作命令但是没有方向,引擎将会返回“休息”操作来回复一定生命值
如果actor走近一扇门,引擎返回开门操作作为备选
如果actor试图走入另一个actor,引擎返回攻击操作作为备选
后三个尤其好用,因为它们也能应用到怪物们身上,这样怪物的AI系统将不用检查下一步是门还是对手,它们只需要尝试让怪物接近它们的目标,引擎会处理好诸如开门、攻击这样的事,如果没有目标,怪物也会自动休息。相信我,任何能精简你AI代码的事都是好主意。
最后,这个作者写了一本书叫,可以多学习学习。
阅读(...) 评论()先锋游戏知道信息频道欢迎您
找一款单机回合制策略游戏
[欢乐猪] [ 14:01:43] (<span id="tgd) (<span id="tfd) &&
问题详情找一款回合制策略游戏我以前在网吧玩过的感觉象魔法门英雄无敌~里面每个势力的主堡里有一个老王~我把地图上的城都占了派所有的兵去打他的主堡都被他老王几刀看翻了~这游戏还有会喷火的矮人招~还有龙招~~现在请大家帮下忙~谁知道那游戏叫什么?最佳答案在西方,人们一提起就回合制策略游戏首先就会想到《战神》系列和《英雄无敌》系列这两大门庭——想当年,二者真可谓一时“瑜亮”。但与《英雄无敌》系列在国内大红大紫的情形不同,《战神》受到的待遇只能用漠视来形容(一种比批评还要可怕的待遇,因为根本就没有人关心)。为什么国内玩家对待二者的态度差别如此之大,小曦并不能给出解答。不过,小曦觉得可能是国内玩家的判断及预知能力非常高的缘故,因为《战神》的制作公司ssg自己都对制作回合制策略的《战神4》不感兴趣了(显然他们也意识到游戏原有的设定将不再对玩家有吸引力了),开始改行作即时战略游戏了!虽说是作即时战略游戏,ssg公司还是不忍心完全放弃自己过去的宝贵经验、市场及财富,于是以《战神》系列为依托制作出了第四代“战神”游戏《呼啸战神》(warlords:battlecry),尽管这已经是一款即时战略游戏了。出于对《战神》系列的缅怀以及ssg公司自信的“扬弃”,小曦决定仔细地研究一下这个游戏。《呼啸战神》的故事发生在曾经富裕、祥和的加迪尔(guardia)大陆上。一群邪恶的怪物入侵打破了这里的和平生活。米诺斯(minos)国王和帕瑞迪安(paridian)将军决定找出制造灾难的元凶。作为国王忠实的骑士,玩家的任务就是协助国王和将军达成愿望——指挥军队将敌人逐出家园,使人民重新过上和平安静的生活。但是随着游戏地进行,帕瑞迪安(paridian)将军开始相信只有依靠铁腕的统治才能拯救大陆,并且杀害了玩家的朋友。这是玩家面对与其分道扬镳,还是接受其疯狂的思想一起堕入黑暗派系……既然是一款即时战略游戏,自然不能不提游戏中种族的设定。《呼啸战神》中共有人族、野蛮人、牛头怪、黑暗精灵、矮子和僵尸等九个不同的种族可供选择,每个种族都拥有不同的兵种及其独有的特殊能力。由于各种族之间的差异很大(可以说超越了《星级争霸》中三大种族的差异程度),玩家如果想在游戏中取得好成绩后者在对战中取得胜利,将必须对每一个种族都加以细致的了解,做到“知己知彼,百战不殆”。也许有人会认为我夸大游戏中种族的差异,认为《呼啸战神》中各种族的差异不过是简单的雷同而已——请不要忘记ssg原来是作回合制策略游戏的!(玩过《战神》前三代的朋友显然会明白这是什么意思)举个简单的例子游戏中共有四种不同物资,分别为金钱、金属矿、石料及水晶,每个种族所需的资源种类都有所差异——矮人偏爱金属矿及石料、木精灵对金币和水晶情有独钟等,之所以会这样是因为各种族建造建筑和生产军队所需资源都各不相同,而由此衍生的建筑、兵种和技战法也都会发生很大变化。游戏中虽仍然保留了回合制策略游戏中的“占领”功能,但很多建筑物即使获得也无法使用(如生产兵种类型的建筑),这也正是由于他们分属不同派系……《呼啸战神》与一般即时战略游戏最大的不同在于游戏引入了角色扮演的成分。前面提到的玩家扮演的是米诺斯国王的侍卫,所以在游戏中他是作为一特殊人物——英雄出现。通过战斗和完成任务,英雄将会获得经验点,当到达一定的数值时英雄将会升级,然后根据他的职业的不同提升不同的能力值。英雄的作用与《战神3》系列中得很相似:探索宝箱、接受神殿任务,以期获得额外能力或的到提升英雄能力的物品(在过关模式中,几乎每关都有1个任务神殿及1个宝箱,最好让英雄能在最短的时间内找到,);领导部队时(就是手下处于英雄控制区域内)可以增加队伍的作战能力并且能恢复手下的生命值;学习和释放超强的魔法……不管是单人过关还是进行对战,玩家都必须先创造一位英雄,才能进行战争。刚开始,玩家只能选择英雄的种族(单人模式只能选人族)、脸谱及设置姓名、密码(防止别人使用);当英雄晋升到第二级之后,玩家将需对英雄的职业做出选择。游戏中共有四种职业,战士、浪人、牧师和巫师,不同的职业将决定着英雄在以后的游戏中将会掌握的技能。在过关任务中,一般如果英雄阵亡,战斗也就会宣告失败;而skirmish模式(人与电脑作战)下死亡的英雄并不会因此消失,战后该英雄又会复活,可进行下一场战役。再这两种模式中,英雄的经验点都是累加的(失败记录也是要累加的,这就是要设密码的原因),这意味着玩家不必象以前那样每次战斗都得重新培养英雄了。《呼啸战神》作为一款即时战略游戏,其在战略层次上对各种族不同时期发展计划、作战时兵种的配合使用等方面对玩家已经要求很高(玩家要有一个理智、聪明的大脑,否则无法抵抗电脑的攻击),而对于玩家战术层面上的要求更是非同一般。刚才已经说了,游戏引入了英雄的概念,在作战时如何充分发挥英雄的能力将成为玩家必须仔细考虑的问题。此外,游戏中每一个作战单位都有从“见人就躲”到“舍身杀敌”五种作战态度,再加上游戏中还有阵型设置,那么在不同情况下对不同兵种的安排也会显得很重用。那么,玩家游戏的时候是不是会为微操忙活的手忙脚乱的呢?答案是不会。原因还是因为ssg公司原来是做回合制策略游戏的。在《呼啸战神》的单人模式中玩家可以按f12键暂停游戏,然后再暂停的时候从容不迫的进行调度部队,施展法术、建造和生产等指令;等玩家再次按f12键使游戏时间重新流动后,玩家的命令将会被统统执行(很象《博得之门》吧)。这样玩家自然可以避免慌乱的情况出现喽!对了,很多即时战略游戏的玩家都对召唤他人建筑很感兴趣(白捡的么^_^),而在《呼啸战神》里相信玩家们会有很多机会体验到这种乐趣(痛苦)。在游戏中,英雄一出来就具有转化他人建筑的能力,而每一个种族所建造的主堡也都具备一种独特的特性——可将影响范围内的资源及建筑拒为己有。所说整个转换过程比较慢,而且在进行转换的过程中主堡(英雄)不能作其它事,但是整个游戏却可因此演化出很多新的战术来!至于究竟怎么样能干的最漂亮就要玩家自己去琢磨了。《呼啸战神》中还有很多其他“可爱”的设定和内容,诸如矿井里加入矿工才能有更高的效率;游戏中受伤的士兵可以躲入炮塔等建筑物中(特别是你的英雄快没命时),不仅可提高炮塔的攻击力还可以避免一死;英雄的魔法是又酷又劲;作战单位闲着没事的时候总喜欢耍上两招……总之,ssg这次改弦更张制作的即时战略版的《战神》四代,确实还是相当成功的——不仅把自己原有的在回合制策略游戏中最擅常的东西(种族设定及平衡性,战术安排等)完美的融入了即时战略游戏中,而且还给即时战略游戏引入了角色扮演成分,增加了游戏乐趣和可玩性,不知道以后这会不会成为即时战略游戏的一个发展方向呢?-----------------------------------------------------------贴个链接:
昵称: 验证码:
评论仅供网友表达个人看法,并不表明本站同意其观点或证实其描述
其它网游相关知识
其它网游其他问题不一般的回合制 《精灵契约》4月19日震撼开测
不一般的回合制 《精灵契约》4月19日震撼开测
来源:九游
发布时间: 23:23:00
摆脱传统回合,成就指尖上的畅爽决斗!
《》是一款精心打造的Q版风格手游,即将在4月19日开启删档不测试,届时众多玩家将在这一片精灵大陆上,带着各式特色战灵征战四方。
在这个生存着战灵的世界中,伴随着天使、恶魔、人类和兽人之间的争斗,作为正义的使者,主角需要在世界各地收集战灵,并组成自己的战队。以净化污染者灵魂,还原其纯洁本性为己任,一起对抗邪恶势力。
【五大战灵职业,展现不同职业特色】
游戏中的战灵,共包含有骑士、勇者、牧师、刺客、术士5大职业,每个职业都拥有各自不同的战斗技能,而不同的职业之中,又形成互相的战斗克制。
如何巧妙地运用不同的战灵职业搭配,在这个奇妙的精灵大陆上,闯荡出自己的天地,《精灵契约》等着诸位勇士的到来,开启一段新的之旅。
【多样特色玩法,缔造个性化决斗场面】
明快的游戏氛围,给玩家带来更轻松快速的游戏融入体验。而精心打造的个性化宠物,以及精彩炫目的战斗场景,则让游戏更具特色。
各种战灵的能力技能搭配,的战场站位和主角技能的选择,这一切共同铸造了《精灵契约》富有深度和变化的战斗。
体验更多神奇经历,了解更多战灵故事,《精灵契约》4月19日等你开启!
状态:删档内测
安卓版暂无下载
苹果版暂无下载
苹果版暂无下载
正在加载,请稍后...
《精灵契约》是2017年精心打造的卡通风格回合制角色扮演手游!拥有上百
《精灵契约》是2017年精心打造的卡通风格回合制角色扮演手游!拥有上百只的战灵宠物、特有的回合制战斗策略、独创自定义宠物组合玩法。在营造清新明快的游戏氛围上、加入打造个性化的宠物和精彩炫目的战斗体验,带给你不一样的感觉!
开发者:安徽三七网络科技有限公司
点击下载按钮,或通过扫描二维码直接下载!
请用手机扫描二维码订阅~
订阅后可及时接受活动,礼包,开测和开放下载的提醒!
扫描二维码下载九游app预约游戏
第一时间接受活动,礼包,开测和下载提醒
直接预约>>>
*手机号格式不正确
游戏开放下载时,我们将通过手机短信通知你,同时告知你礼包领取方式救世主 |安全下载普通下载安全下载应用有被劫持的风险,可能出现广告、病毒、扣费等风险状况,建议使用百度手机助手安全下载。安全下载一款来自韩国的大型动作RPG游戏,拥有4个不同角色,每个角色都有自己独特技能、特点、装备以及剧情,喜欢玩游戏剧情的玩家千万不要错过。而且这款游戏拥有在线交易市场,与其他游戏不同,这款游戏允许玩家与玩家在线交换装备。不过作为一个RPG游戏,全韩文的界面玩起来还是很吃力的。四个角色都有自己的职业:狂战士:使用近距离武器,威力强大,可以使用大量武器和盔甲。圣骑士:使用近距离武器,十分灵巧敏捷,可以使用大量武器和盔甲。女祭司:使用远距离武器,优越的魔法进攻和生命值恢复。魔法师:使用远距离武器,优越的魔法进攻和魔法护盾。游戏背景:Vardonia是一个动荡的大陆。两大敌对王国Arkan和Abylon在战争中。一场阴谋即将展开,探索隐藏的真相。一个伟大的故事:救赎、阴谋、背叛、发现、牺牲与荣耀,交错在激烈的战斗和具有挑战性的任务中。你能拯救Vardonia大陆吗?...
展开全部介绍
下载下载下载下载下载下载下载下载下载下载下载下载下载下载下载下载下载下载下载下载下载意见反馈百度手机助手正在下载打开助手立即安装腾讯年度回合制大作!灵山奇缘八大职业,哪一个才最适合你
腾讯年度回合制大作!灵山奇缘八大职业,哪一个才最适合你
由擎天柱公司研发,腾讯公司运营的《灵山奇缘》,是一款主打国风画面和万千灵兽培养系统的回合制网游。目前游戏共有人、妖、仙、鬼四大种族,每个种族又分两个职业,共计有8种职业可以选择。这八个职业的定位和特性各不相同,俗话说,没有最强的职业,对于新手来说,选择适合自己的才是最重要的。
八大职业大致可分为输出型、控制型以及治疗辅助型三大类别。
输出型的职业有四个,分别是花果山、天策府、龙宫和地府。
花果山以单体物理输出为主,在装备等级差不多的情况下,单体输出可以说是最暴力最强的。花果山的输出怒气越高,伤害越足,同时自身技能也有不少回怒的手段,在持续输出上表现不俗。不过一般情况下,队友对花果山所造成的伤害期待值也很高,所以如果不能够快速得到较好的装备,那么还是不要选择这个职业。
天策府属于半肉半输出的物理职业,可以选择纯输出路线,也可以选择肉盾路线。纯输出的天策伤害能力很强,还具有AOE能力,不过只能打3,好在精确度不错。纯肉的天策目前来说作用不太大,对队友的保护不如治疗辅助类的职业,PVP时表现才会好一些。总体来说,目前游戏中数量较少,需要谨慎选择。
龙宫属于法系输出职业,特点为法术群攻,而且可以打6,在刷图和做活动各方面作用较大,比较受欢迎。
和花果山一样属于单体物理输出定位的地府,则有一些冷门,伤害不如花果山高,不过生存能力更强一些。
控制型的职业有两个,分别是白骨洞和云梦泽。毕竟在回合制网游中控制类的职业必不可少,所以这两大职业都较为受欢迎。先说白骨洞,封印效果非常稳定,很容易牢牢控制住目标,此外还有复活技能,能够在治疗被秒的情况下撑一下。不过白骨还是太适合PVP,不太适合PVE。
云梦泽相对白骨洞来说更容易上手,混乱系的控制法术不够稳定,不过高等级下在PVE开荒时可无视BOSS的免疫,比较实用。输出能力也比白骨洞要强一些。
治疗辅助型的职业就是剩下的两个了,凌烟阁和灵山。治疗的重要性对于很多网游来说都无需多言,《灵山奇缘》也不例外,两个职业在游戏的各种挑战中都非常重要。相比之下,凌烟阁是一个更纯粹的治疗职业,奶量充足,复活手段有两个,是团队中的绝佳辅助,需要注意的就是自己的存活。
灵山则属于有些“不务正业”的奶妈了,治疗效果和凌霄阁相比略有不如,但是可造成持续回血效果,而且单体法术攻击的效果比较强,可以作为半输出半治疗职业。如果团队在进行难度不高的任务,治疗溢出的话,那么灵山是更好的选择。
总体来说,新手最好还是选择花果山、凌烟阁、龙宫这三个容易上手也比较好用的职业,云梦泽,灵山,天策、地府这些则需要好好研究一下才能玩的好,至于白骨洞,因为输出能力低,练级的时候有些被动,如果以后打算主玩PVP那么就选择白骨洞吧。
【编辑:17173】
类型:ARPG
特征:奇幻
类型:射击
特征:蒸汽朋克
类型:大型RPG
特征:魔幻
你不知道点进去会是什么
Wan网页游戏免费玩}

我要回帖

更多关于 职业角色 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信