游戏启示录 关于Update的相关问题

这里说的Update是指的游戏的主循环。一般情况下。为了程序的方便控制我们一般只会有一个主循环。所有的游戏逻辑都会在这一个循环中完成。(额,其实这么做有点浪费。因为毕竟现在的电脑都是多核的。这么做了之后。其实只是利用了其中一个核心而已。不过这个并不是我们讨论的重点。)

起因

我非常喜欢火影。里边的打斗场景做的非常不错。特别是佩恩VS九尾那段。名人九尾化之后,放出了能量弹幕而佩恩释放出了小规模的神罗天征。形成了能量屏障,将九尾的弹幕屏蔽在外。我想在我们的游戏里边加一个能量护盾。可以让射过来的弹幕弹开。不过我发现基于我们的普通更新的更新架构,没有办法完成这件事情。

原本的架构



我想说的是我们的原本的架构可能就是现在使用最广泛的架构。我们是按照个体来更新的。就是认为场中的所有的东西都是单独的个体。某一个怪物、子弹、玩家、障碍物都认为是一个个体。让他们挨个进行更新。一个更新完了下一个更新。比如说,先让怪物更新,AI或者伤害;子弹位置更新、伤害;玩家的动作等等等。虽然这是常见的更新方式。不过这样的更新方式却没有办法完成神罗天征这个技能。因为超高速的弹幕是可以直接越过护盾直接打到玩家。

按照同一个Object一块更新的模式

缺陷的分析

其实也就是在某一帧里边的更新顺序分析。可能会产生以下结果:

模式1

1. 技能先更新,查找到范围内的弹幕,然后将他们弹开。
2. 弹幕更新,因为技能已经更新,所以这一帧中后来能够进来的弹幕,会在这一帧进入技能范围。甚至击中玩家

模式2

1. 弹幕更新,弹幕进入技能范围。打出伤害
2. 技能更新,发现界面内部的范围的弹幕,将弹幕弹开。不过那些已经击中玩家的弹幕就没有办法。他们的任务已经完成了。

设想

其实这个事情也挺简单的。就是逻辑更新顺序的问题。其实应该,就是弹幕更新位置之后,技能更新将弹幕推出去,弹幕计算伤害。这样弹幕就能够被能量护盾推出去了。简直完美。

1. 弹幕位置更新 可能进入范围
2. 技能逻辑更新 将进入范围的弹幕放到合适的位置
3. 弹幕伤害计算 看有没有能够击中的目标释放伤害

扩展

其实。当这个游戏的对象的移动都比较缓慢的情况下。所有的这些细节都不是很重要了。毕竟这种更新是比较高速的情况才会出现问题的。比如说某一个弹幕的射速非常快,每秒钟的射速为1800。按照满帧60为来计算,那么每一帧的更新为30像素,因为某些顺序更新的问题可能会造成最大2帧的的差异也就是可能出现60像素的差异。其实这个已经非常夸张了吧。非常明显。如果你的护盾不够60像素,那是极有可能直接呼一脸的。

新的更新模式

如果说原来的更新模式为纵向,那么现在的更新顺序应该修改为横向。按照相同的逻辑一块更新的模式。

如果是这种更新模式的话。就可以在某一个对象更新中插入其他的更新逻辑。简直棒棒哒的。

算了其实这种总结的内容说起来比较困难。只有体会过才会明白。

游戏启示录 关于Update的相关问题的更多相关文章

  1. Unity游戏暂停之Update与FixedUpdate区别

    游戏暂停 示例程序 下面这段代码演示游戏暂停 using UnityEngine; using System.Collections; public class GamePauseTest : Mon ...

  2. 如何系统掌握游戏编程中3D图形学相关的基础?

    https://www.zhihu.com/question/27544895 三维几何学基础:三维坐标系统点与矢量矩阵与几何变换四元数与三维旋转

  3. windows游戏编程X86 (内存)寄存器相关的基本概念

    本系列文章由jadeshu编写,转载请注明出处.http://blog.csdn.net/jadeshu/article/details/22446971 作者:jadeshu   邮箱: jades ...

  4. 游戏编程算法与技巧 Game Programming Algorithms and Techniques (Sanjay Madhav 著)

    http://gamealgorithms.net 第1章 游戏编程概述 (已看) 第2章 2D图形 (已看) 第3章 游戏中的线性代数 (已看) 第4章 3D图形 (已看) 第5章 游戏输入 (已看 ...

  5. 介绍用C#和VS2015开发基于Unity架构的2D、3D游戏的技术

    [Unity]13.3 Realtime GI示例 摘要: 分类:Unity.C#.VS2015 创建日期:2016-04-19 一.简介 使用简单示例而不是使用实际示例的好处是能让你快速理解光照贴图 ...

  6. cocos2d-x游戏引擎核心之六——绘图原理和绘图技巧

    一.OpenGL基础 游戏引擎是对底层绘图接口的包装,Cocos2d-x 也一样,它是对不同平台下 OpenGL 的包装.OpenGL 全称为 Open Graphics Library,是一个开放的 ...

  7. 游戏引擎架构 (Jason Gregory 著)

    第一部分 基础 第1章 导论 (已看) 第2章 专业工具 (已看) 第3章 游戏软件工程基础 (已看) 第4章 游戏所需的三维数学 (已看) 第二部分 低阶引擎系统 第5章 游戏支持系统 (已看) 第 ...

  8. python作业-2048小游戏

    需了解的知识 Pygame中的各个模块及其功能: Pygame.init():初始化所有导入的模块 pygame.display: pygame.display.init()  -  初始化 disp ...

  9. APP 游戏审核改动

    广电总局封杀游戏 移动游戏将进入洗牌期 封杀了电影.电视剧.网络剧 现在轮到游戏了 新法速递 2016年7月1日,国家新闻出版广电总局办公厅<关于移动游戏出版服务管理的通知>(新广出办发[ ...

随机推荐

  1. 自定义搭建PHP开发环境

    学习了一段时间php了,因为之前是刚接触php,所以用的是集成安装包(wamp).现在想进一步了解apache.mysql.php之间的关系以及提升自己所以进行自定义搭建PHP开发环境.废话不多说,请 ...

  2. 在Linux系统下运行微信Web开发者工具

    微信Web开发者工具只有window版本和mac版本,如果想要在Linux系统下运行微信Web开发者工具,需要花费很大周折. 注:带 * 的步骤或文件为不确定是否管用的步骤或文件.本人系统为Linux ...

  3. JavaScript基础学习-函数及作用域

    函数和作用域是JavaScript的重要组成部分,我们在使用JavaScript编写程序的过程中经常要用到这两部分内容,作为初学者,我经常有困惑,借助写此博文来巩固下之前学习的内容. (一)JavaS ...

  4. BPM配置故事之案例1-配置简单流程

    某天,Boss找到了信息部工程师小明. Boss:咱们新上了H3 BPM,你研究研究把现在的采购申请流程加上去吧,这是采购申请单. 小明:好嘞 采购申请单 小明回去后拿着表单想了想,开始着手配置. 他 ...

  5. H3 BPM让天下没有难用的流程之技术特性

    一.集成性  H3 BPM可以与其它系统进行多个层面的集成,满足企业的针对不同系统的集成需求. 图:多种集成维度 Ø  用户集成 可与企业现有系统进行组织架构同步或调用,也可以直接与AD 进行集成. ...

  6. (转)从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群)

    原文地址:  http://www.cnblogs.com/lyhabc/p/4682028.html 这一篇是从0开始搭建SQL Server AlwaysOn 的第二篇,主要讲述如何搭建故障转移集 ...

  7. VIM教程

    vim 的环境设定参数 :set nu :set nonu             就是设定与取消行号啊! :set hlsearch :set nohlsearch     hlsearch 就是 ...

  8. Ognl表达式基本原理和使用方法

    Ognl表达式基本原理和使用方法 1.Ognl表达式语言 1.1.概述 OGNL表达式 OGNL是Object Graphic Navigation Language(对象图导航语言)的缩写,他是一个 ...

  9. CSS样式表分类

    1.内联样式表 <p  style="font-size:11px;">内联样式表</p> 2.内嵌样式表 写在head标签里 <style  typ ...

  10. WEB 基础知识(一)

    1. 系统架构 1.1 B/S系统架构 1.2 C/S系统架构 1.3 对比与区别 1.3.1 概述 C/S结构,即Client/Server(客户机/服务器)结构,是大家熟知的软件系统体系结构,通过 ...