SlideShare uma empresa Scribd logo
1 de 29
从娑婆物语谈
Isometric Tile Based
游戏引擎开发
Hugh Tsai
Nov 28th 2010
Contents
什么是Isometric Tile Based Game
为什么开发Isometric Tile Based Game Engine(特性)
如何构建Isometric Tile Based Game Engine
(以自主开发的Misato引擎为例)
引擎架构
核心问题
地图格式
渲染与遮挡
碰撞检测
What is Isometric Tile Based Game
一些你或许知道或许并不了解的事实
什么是Isometric Tile Based Game
基于区块的斜45°等角游戏
电子游戏
2D游戏
基于区块
横版或纵版滚轴
游戏
多方向滚轴地图
游戏
六边形地图 四边形地图
90°方向投影 60°方向投影 斜45°方向投影
不分块
3D游戏
什么是Isometric Tile Based Game
基于区块的斜45°等角游戏
电子游戏
2D游戏
基于区块
横版或纵版滚轴
游戏
多方向滚轴地图
游戏
六边形地图 四边形地图
90°方向投影 60°方向投影 斜45°方向投影
不分块
3D游戏
什么是Isometric Tile Based Game
基于区块的斜45°等角游戏
电子游戏
2D游戏
基于区块
横版或纵版滚轴
游戏
多方向滚轴地图
游戏
六边形地图 四边形地图
90°方向投影 60°方向投影 斜45°方向投影
不分块
3D游戏
什么是Isometric Tile Based Game
基于区块的斜45°等角游戏
电子游戏
2D游戏
基于区块
横版或纵版滚轴
游戏
多方向滚轴地图
游戏
六边形地图 四边形地图
90°方向投影 60°方向投影 斜45°方向投影
不分块
3D游戏
什么是Isometric Tile Based Game
基于区块的斜45°等角游戏
电子游戏
2D游戏
基于区块
横版或纵版滚轴
游戏
多方向滚轴地图
游戏
六边形地图 四边形地图
90°方向投影 60°方向投影 斜45°方向投影
不分块
3D游戏
什么是Isometric Tile Based Game
基于区块的斜45°等角游戏
电子游戏
2D游戏
基于区块
横版或纵版滚轴
游戏
多方向滚轴地图
游戏
六边形地图 四边形地图
90°方向投影 60°方向投影 斜45°方向投影
不分块
3D游戏
什么是Isometric Tile Based Game
基于区块的斜45°等角游戏
电子游戏
2D游戏
基于区块
横版或纵版滚轴
游戏
多方向滚轴地图
游戏
六边形地图 四边形地图
90°方向投影 60°方向投影 斜45°方向投影
不分块
3D游戏
Why Use Isometric Tile Based Engine
基于区块的斜45°等角渲染的特点
Isometric Tile Based Engine 特性
优势
内存与计算资源消耗小
可以用2.5D视角模拟3D效果,提升游戏表现力
基于预先渲染,美术可以无限精细,风格自由
局限性
游戏视角变化很有限
严格45°方向的键盘控制,对部分用户不适应
没有透视感,高度判定易产生错觉
Build Isometric Tile Based Engine
以 Misato Engine 为例
Build Isometric Tile Based Engine
娑婆物语
基于Misato Engine开发的2.5D 动作角色扮演游戏。
游戏中,玩家控制Avatar,利用加速跑、跳跃、防御、时间暂停等
技能,躲避或防御弹幕攻击,跨越悬崖,解开机关,从而解谜剧
情并完成闯关任务。
Build Isometric Tile Based Engine
MISATO ENGINE
Misato引擎是一款基于Flash技术的2.5D网页游戏引擎。可以支持基
于2D渲染的2.5D斜45°游戏模式,并且有3D的物理引擎支持。基
于Misato引擎可以实现独特的2DAVG过场剧情与动画,与流畅绚
丽的2.5DARPG游戏效果。
可定制的图形渲染模式
3D的物理效果
高性能的AI算法
Why Named
By
MISATO!
Build Isometric Tile Based Engine
MISATO ENGINE 架构
Build Isometric Tile Based Engine
MISATO ENGINE 架构
Build Isometric Tile Based Engine
MISATO ENGINE 地图格式
Staggered Map
坐标变换公式:
Diamond Map Slide Map
logic.y = ( 2 * stage.y ) / TileHeigth;
logic.x = ( stage.x / TileWidth ) - ( logic.y & 1 ) * ( TileWidth / 2 );
stage.x = logic.x * TileWidth + ( logic.y & 1) * ( TileWidth / 2 );
stage.y = logic.y * TileHeigth / 2;
Build Isometric Tile Based Engine
MISATO ENGINE 地图格式
逻辑格子与图形个子对应表
mapLogicOrder =
(mapGraphicRows - 1) / 2 +
mapGraphicCols
logicRowStartCol[row] =
(mapGraphicRows - 1) / 2 –
row
logicRowEndCol[row] =
mapLogicOrder -
(mapGraphicCols - row)
Build Isometric Tile Based Engine
MISATO ENGINE 渲染与遮挡
Input: 游戏的逻辑地图
Output: 符合正确遮挡顺序的游戏场景
Build Isometric Tile Based Engine
MISATO ENGINE 渲染与遮挡
Input: 游戏的逻辑地图
Output: 符合正确遮挡顺序的游戏场景
Build Isometric Tile Based Engine
MISATO ENGINE 渲染与遮挡
静态场景渲染处理
假设:地形只由1 X 1的Tile构成
无需做遮挡排序
按照 LogicRow -> LogicCol的优先顺序,依次绘制即可
Build Isometric Tile Based Engine
MISATO ENGINE 渲染与遮挡
动态遮挡的情况可能多种多样
Build Isometric Tile Based Engine
MISATO ENGINE 渲染与遮挡
根据不同的渲染需求选择适合的遮挡处理方法
测试问题描述:
显示区域内有S = 1000个静态Tile,N个动态的Entity。每一个Tile
与Entity都有高度,存在彼此之间存在遮挡。
1、N = O(1) 如 1 ~10 时
算法A:预先Cache全部静态Tile为位图置于底层, 同时标记可能
与动态Entity发生遮挡的静态Tile。当静态Tile与动态Entity发生
遮挡时,在Entity之上再绘制依次Tile进行遮挡。
性能与N成正比,对于每一个Entity,每次遮挡的开销就是,需要
重绘其周围一片区域。
Build Isometric Tile Based Engine
MISATO ENGINE 渲染与遮挡
根据不同的渲染需求选择适合的遮挡处理方法
测试问题描述:
显示区域内有S = 1000个静态Tile,N个动态的Entity。每一个Tile
与Entity都有高度,存在彼此之间存在遮挡。
2、N = O(log S) 如 100 时
算法B:自定义一种基于链表的数据结构,来维护显示区域内的全
部Tile和Entity。动态调整Tile与Entity彼此之间的渲染顺序,并
与Stage上的顺序进行同步。
基于removeChild和addChildAt操作,性能稳定,取决于每次调
整的幅度。如果是滚屏显示,可以优化的空间很大。
Build Isometric Tile Based Engine
MISATO ENGINE 渲染与遮挡
根据不同的渲染需求选择适合的遮挡处理方法
测试问题描述:
显示区域内有S = 1000个静态Tile,N个动态的Entity。每一个Tile
与Entity都有高度,存在彼此之间存在遮挡。
3、N = S 如 1000 时
算法C:全部从舞台上移除,全部重排排序后再全部重绘。
性能恒定,就是全部重新排序重新绘制的开销。
Build Isometric Tile Based Engine
MISATO ENGINE 渲染与遮挡
根据不同的渲染需求选择适合的遮挡处理方法
测试结果:基于FlashPlayer 10.0 每种算法渲染100次
0
500
1000
1500
2000
2500
3000
3500
算法A 算法B 算法C
N=1
N=10
N=100
N=1000
单位ms
2ms
19ms
20ms
50ms
Build Isometric Tile Based Engine
MISATO ENGINE 碰撞检测
静态碰撞
基于Tile的格子进行判断。对于不同的表面形状,为各种Tile,包
括地形和各种建筑,障碍物。设定固定的物理包围壳,根据不同
的包围面进行物理计算。
动态碰撞
将地图再次切分为更小的格子,比如一个Tile切为9个小格。保证每
个格子中有且只有一个动态的Entity。
这样虽然消耗一定的内存空间。但是对于碰撞可以很简单的处理,
也有利于寻径等操作。
Thanks
Hugh Tsai
Nov 28th 2010
Reference
http://www.47school.com/soft/Flash/yykf/2009/1002/57697.html
http://www.tilebasedgames.com/
http://members.chello.at/theodor.lauppert/games/iso.htm
http://www.tonypa.pri.ee/tbw/start.html

Mais conteúdo relacionado

Mais procurados

Seminar ppt on google cardboard
Seminar ppt on google cardboardSeminar ppt on google cardboard
Seminar ppt on google cardboardPankaj Kushwaha
 
Level design for games
Level design for gamesLevel design for games
Level design for gamesJayyes
 
Smart Glasses Market report 2015: towards 1 billion shipments
Smart Glasses Market report 2015: towards 1 billion shipments Smart Glasses Market report 2015: towards 1 billion shipments
Smart Glasses Market report 2015: towards 1 billion shipments Ori Inbar
 
Web Game Development
Web Game DevelopmentWeb Game Development
Web Game DevelopmentSabin Buraga
 
Object and pose detection
Object and pose detectionObject and pose detection
Object and pose detectionAshwinBicholiya
 
AUGMENTED REALITY Documentation
AUGMENTED REALITY DocumentationAUGMENTED REALITY Documentation
AUGMENTED REALITY DocumentationVenu Gopal
 
Game Design Document - Step by Step Guide
Game Design Document - Step by Step GuideGame Design Document - Step by Step Guide
Game Design Document - Step by Step GuideDevBatch Inc.
 

Mais procurados (11)

Seminar ppt on google cardboard
Seminar ppt on google cardboardSeminar ppt on google cardboard
Seminar ppt on google cardboard
 
Level design for games
Level design for gamesLevel design for games
Level design for games
 
Stereo vision
Stereo visionStereo vision
Stereo vision
 
Smart Glasses Market report 2015: towards 1 billion shipments
Smart Glasses Market report 2015: towards 1 billion shipments Smart Glasses Market report 2015: towards 1 billion shipments
Smart Glasses Market report 2015: towards 1 billion shipments
 
Game Design as a Career
Game Design as a CareerGame Design as a Career
Game Design as a Career
 
Web Game Development
Web Game DevelopmentWeb Game Development
Web Game Development
 
Diseño de videojuegos
Diseño de videojuegosDiseño de videojuegos
Diseño de videojuegos
 
Object and pose detection
Object and pose detectionObject and pose detection
Object and pose detection
 
World building part 1
World building part 1World building part 1
World building part 1
 
AUGMENTED REALITY Documentation
AUGMENTED REALITY DocumentationAUGMENTED REALITY Documentation
AUGMENTED REALITY Documentation
 
Game Design Document - Step by Step Guide
Game Design Document - Step by Step GuideGame Design Document - Step by Step Guide
Game Design Document - Step by Step Guide
 

Mais de FLASH开发者交流会

Introduction to air for android 邱彦林
Introduction to air for android 邱彦林Introduction to air for android 邱彦林
Introduction to air for android 邱彦林FLASH开发者交流会
 
Swf文件格式和abc代码混淆工具 黄珏坤
Swf文件格式和abc代码混淆工具 黄珏坤Swf文件格式和abc代码混淆工具 黄珏坤
Swf文件格式和abc代码混淆工具 黄珏坤FLASH开发者交流会
 
松耦合代码之开发方法与工具演示 刘争辉
松耦合代码之开发方法与工具演示 刘争辉松耦合代码之开发方法与工具演示 刘争辉
松耦合代码之开发方法与工具演示 刘争辉FLASH开发者交流会
 
Flash media server 开发经验谈 沈先彬
Flash media server 开发经验谈 沈先彬Flash media server 开发经验谈 沈先彬
Flash media server 开发经验谈 沈先彬FLASH开发者交流会
 
Flash 独立游戏开发之路 徐黎明
Flash 独立游戏开发之路 徐黎明Flash 独立游戏开发之路 徐黎明
Flash 独立游戏开发之路 徐黎明FLASH开发者交流会
 
程序接口的另类理解与使用 孙毅
程序接口的另类理解与使用 孙毅程序接口的另类理解与使用 孙毅
程序接口的另类理解与使用 孙毅FLASH开发者交流会
 
9月18技术交流会大赛作品介绍 廖湘宁
9月18技术交流会大赛作品介绍 廖湘宁9月18技术交流会大赛作品介绍 廖湘宁
9月18技术交流会大赛作品介绍 廖湘宁FLASH开发者交流会
 
Flash mmorpg游戏引擎及工具开发概述-张明光
Flash mmorpg游戏引擎及工具开发概述-张明光Flash mmorpg游戏引擎及工具开发概述-张明光
Flash mmorpg游戏引擎及工具开发概述-张明光FLASH开发者交流会
 
Flash 游戏应用框架和模块化开发 邱广钦
Flash 游戏应用框架和模块化开发 邱广钦Flash 游戏应用框架和模块化开发 邱广钦
Flash 游戏应用框架和模块化开发 邱广钦FLASH开发者交流会
 
7月24日交流会麻球演讲 廖湘宁
7月24日交流会麻球演讲 廖湘宁7月24日交流会麻球演讲 廖湘宁
7月24日交流会麻球演讲 廖湘宁FLASH开发者交流会
 
轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)FLASH开发者交流会
 
Ghost cat 以皮肤为主体的ui框架(唐翎)
Ghost cat 以皮肤为主体的ui框架(唐翎)Ghost cat 以皮肤为主体的ui框架(唐翎)
Ghost cat 以皮肤为主体的ui框架(唐翎)FLASH开发者交流会
 

Mais de FLASH开发者交流会 (20)

Bambook sdk 与action script
Bambook  sdk  与action scriptBambook  sdk  与action script
Bambook sdk 与action script
 
Bambook开放之路
Bambook开放之路Bambook开放之路
Bambook开放之路
 
Introduction to air for android 邱彦林
Introduction to air for android 邱彦林Introduction to air for android 邱彦林
Introduction to air for android 邱彦林
 
Swf文件格式和abc代码混淆工具 黄珏坤
Swf文件格式和abc代码混淆工具 黄珏坤Swf文件格式和abc代码混淆工具 黄珏坤
Swf文件格式和abc代码混淆工具 黄珏坤
 
松耦合代码之开发方法与工具演示 刘争辉
松耦合代码之开发方法与工具演示 刘争辉松耦合代码之开发方法与工具演示 刘争辉
松耦合代码之开发方法与工具演示 刘争辉
 
Flash media server 开发经验谈 沈先彬
Flash media server 开发经验谈 沈先彬Flash media server 开发经验谈 沈先彬
Flash media server 开发经验谈 沈先彬
 
Flash 独立游戏开发之路 徐黎明
Flash 独立游戏开发之路 徐黎明Flash 独立游戏开发之路 徐黎明
Flash 独立游戏开发之路 徐黎明
 
程序接口的另类理解与使用 孙毅
程序接口的另类理解与使用 孙毅程序接口的另类理解与使用 孙毅
程序接口的另类理解与使用 孙毅
 
Flash游戏大会 商文烨
Flash游戏大会 商文烨Flash游戏大会 商文烨
Flash游戏大会 商文烨
 
Flash ria usability 刘轩飞
Flash ria usability 刘轩飞Flash ria usability 刘轩飞
Flash ria usability 刘轩飞
 
9月18技术交流会大赛作品介绍 廖湘宁
9月18技术交流会大赛作品介绍 廖湘宁9月18技术交流会大赛作品介绍 廖湘宁
9月18技术交流会大赛作品介绍 廖湘宁
 
简化复杂的Flash应用程序 谈熠
简化复杂的Flash应用程序 谈熠简化复杂的Flash应用程序 谈熠
简化复杂的Flash应用程序 谈熠
 
Flash mmorpg游戏引擎及工具开发概述-张明光
Flash mmorpg游戏引擎及工具开发概述-张明光Flash mmorpg游戏引擎及工具开发概述-张明光
Flash mmorpg游戏引擎及工具开发概述-张明光
 
Web base 吴志华
Web base 吴志华Web base 吴志华
Web base 吴志华
 
Flash 游戏应用框架和模块化开发 邱广钦
Flash 游戏应用框架和模块化开发 邱广钦Flash 游戏应用框架和模块化开发 邱广钦
Flash 游戏应用框架和模块化开发 邱广钦
 
7月24日交流会麻球演讲 廖湘宁
7月24日交流会麻球演讲 廖湘宁7月24日交流会麻球演讲 廖湘宁
7月24日交流会麻球演讲 廖湘宁
 
浅析Flash特效开发 陈勇
浅析Flash特效开发 陈勇浅析Flash特效开发 陈勇
浅析Flash特效开发 陈勇
 
Flash网络通讯处理 陈苏俊
Flash网络通讯处理 陈苏俊Flash网络通讯处理 陈苏俊
Flash网络通讯处理 陈苏俊
 
轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)轻量级Flash服务器开发框架(刘恒)
轻量级Flash服务器开发框架(刘恒)
 
Ghost cat 以皮肤为主体的ui框架(唐翎)
Ghost cat 以皮肤为主体的ui框架(唐翎)Ghost cat 以皮肤为主体的ui框架(唐翎)
Ghost cat 以皮肤为主体的ui框架(唐翎)
 

Misato engine hugh_tsai-蔡浩宇

  • 2. Contents 什么是Isometric Tile Based Game 为什么开发Isometric Tile Based Game Engine(特性) 如何构建Isometric Tile Based Game Engine (以自主开发的Misato引擎为例) 引擎架构 核心问题 地图格式 渲染与遮挡 碰撞检测
  • 3. What is Isometric Tile Based Game 一些你或许知道或许并不了解的事实
  • 4. 什么是Isometric Tile Based Game 基于区块的斜45°等角游戏 电子游戏 2D游戏 基于区块 横版或纵版滚轴 游戏 多方向滚轴地图 游戏 六边形地图 四边形地图 90°方向投影 60°方向投影 斜45°方向投影 不分块 3D游戏
  • 5. 什么是Isometric Tile Based Game 基于区块的斜45°等角游戏 电子游戏 2D游戏 基于区块 横版或纵版滚轴 游戏 多方向滚轴地图 游戏 六边形地图 四边形地图 90°方向投影 60°方向投影 斜45°方向投影 不分块 3D游戏
  • 6. 什么是Isometric Tile Based Game 基于区块的斜45°等角游戏 电子游戏 2D游戏 基于区块 横版或纵版滚轴 游戏 多方向滚轴地图 游戏 六边形地图 四边形地图 90°方向投影 60°方向投影 斜45°方向投影 不分块 3D游戏
  • 7. 什么是Isometric Tile Based Game 基于区块的斜45°等角游戏 电子游戏 2D游戏 基于区块 横版或纵版滚轴 游戏 多方向滚轴地图 游戏 六边形地图 四边形地图 90°方向投影 60°方向投影 斜45°方向投影 不分块 3D游戏
  • 8. 什么是Isometric Tile Based Game 基于区块的斜45°等角游戏 电子游戏 2D游戏 基于区块 横版或纵版滚轴 游戏 多方向滚轴地图 游戏 六边形地图 四边形地图 90°方向投影 60°方向投影 斜45°方向投影 不分块 3D游戏
  • 9. 什么是Isometric Tile Based Game 基于区块的斜45°等角游戏 电子游戏 2D游戏 基于区块 横版或纵版滚轴 游戏 多方向滚轴地图 游戏 六边形地图 四边形地图 90°方向投影 60°方向投影 斜45°方向投影 不分块 3D游戏
  • 10. 什么是Isometric Tile Based Game 基于区块的斜45°等角游戏 电子游戏 2D游戏 基于区块 横版或纵版滚轴 游戏 多方向滚轴地图 游戏 六边形地图 四边形地图 90°方向投影 60°方向投影 斜45°方向投影 不分块 3D游戏
  • 11. Why Use Isometric Tile Based Engine 基于区块的斜45°等角渲染的特点
  • 12. Isometric Tile Based Engine 特性 优势 内存与计算资源消耗小 可以用2.5D视角模拟3D效果,提升游戏表现力 基于预先渲染,美术可以无限精细,风格自由 局限性 游戏视角变化很有限 严格45°方向的键盘控制,对部分用户不适应 没有透视感,高度判定易产生错觉
  • 13. Build Isometric Tile Based Engine 以 Misato Engine 为例
  • 14. Build Isometric Tile Based Engine 娑婆物语 基于Misato Engine开发的2.5D 动作角色扮演游戏。 游戏中,玩家控制Avatar,利用加速跑、跳跃、防御、时间暂停等 技能,躲避或防御弹幕攻击,跨越悬崖,解开机关,从而解谜剧 情并完成闯关任务。
  • 15. Build Isometric Tile Based Engine MISATO ENGINE Misato引擎是一款基于Flash技术的2.5D网页游戏引擎。可以支持基 于2D渲染的2.5D斜45°游戏模式,并且有3D的物理引擎支持。基 于Misato引擎可以实现独特的2DAVG过场剧情与动画,与流畅绚 丽的2.5DARPG游戏效果。 可定制的图形渲染模式 3D的物理效果 高性能的AI算法 Why Named By MISATO!
  • 16. Build Isometric Tile Based Engine MISATO ENGINE 架构
  • 17. Build Isometric Tile Based Engine MISATO ENGINE 架构
  • 18. Build Isometric Tile Based Engine MISATO ENGINE 地图格式 Staggered Map 坐标变换公式: Diamond Map Slide Map logic.y = ( 2 * stage.y ) / TileHeigth; logic.x = ( stage.x / TileWidth ) - ( logic.y & 1 ) * ( TileWidth / 2 ); stage.x = logic.x * TileWidth + ( logic.y & 1) * ( TileWidth / 2 ); stage.y = logic.y * TileHeigth / 2;
  • 19. Build Isometric Tile Based Engine MISATO ENGINE 地图格式 逻辑格子与图形个子对应表 mapLogicOrder = (mapGraphicRows - 1) / 2 + mapGraphicCols logicRowStartCol[row] = (mapGraphicRows - 1) / 2 – row logicRowEndCol[row] = mapLogicOrder - (mapGraphicCols - row)
  • 20. Build Isometric Tile Based Engine MISATO ENGINE 渲染与遮挡 Input: 游戏的逻辑地图 Output: 符合正确遮挡顺序的游戏场景
  • 21. Build Isometric Tile Based Engine MISATO ENGINE 渲染与遮挡 Input: 游戏的逻辑地图 Output: 符合正确遮挡顺序的游戏场景
  • 22. Build Isometric Tile Based Engine MISATO ENGINE 渲染与遮挡 静态场景渲染处理 假设:地形只由1 X 1的Tile构成 无需做遮挡排序 按照 LogicRow -> LogicCol的优先顺序,依次绘制即可
  • 23. Build Isometric Tile Based Engine MISATO ENGINE 渲染与遮挡 动态遮挡的情况可能多种多样
  • 24. Build Isometric Tile Based Engine MISATO ENGINE 渲染与遮挡 根据不同的渲染需求选择适合的遮挡处理方法 测试问题描述: 显示区域内有S = 1000个静态Tile,N个动态的Entity。每一个Tile 与Entity都有高度,存在彼此之间存在遮挡。 1、N = O(1) 如 1 ~10 时 算法A:预先Cache全部静态Tile为位图置于底层, 同时标记可能 与动态Entity发生遮挡的静态Tile。当静态Tile与动态Entity发生 遮挡时,在Entity之上再绘制依次Tile进行遮挡。 性能与N成正比,对于每一个Entity,每次遮挡的开销就是,需要 重绘其周围一片区域。
  • 25. Build Isometric Tile Based Engine MISATO ENGINE 渲染与遮挡 根据不同的渲染需求选择适合的遮挡处理方法 测试问题描述: 显示区域内有S = 1000个静态Tile,N个动态的Entity。每一个Tile 与Entity都有高度,存在彼此之间存在遮挡。 2、N = O(log S) 如 100 时 算法B:自定义一种基于链表的数据结构,来维护显示区域内的全 部Tile和Entity。动态调整Tile与Entity彼此之间的渲染顺序,并 与Stage上的顺序进行同步。 基于removeChild和addChildAt操作,性能稳定,取决于每次调 整的幅度。如果是滚屏显示,可以优化的空间很大。
  • 26. Build Isometric Tile Based Engine MISATO ENGINE 渲染与遮挡 根据不同的渲染需求选择适合的遮挡处理方法 测试问题描述: 显示区域内有S = 1000个静态Tile,N个动态的Entity。每一个Tile 与Entity都有高度,存在彼此之间存在遮挡。 3、N = S 如 1000 时 算法C:全部从舞台上移除,全部重排排序后再全部重绘。 性能恒定,就是全部重新排序重新绘制的开销。
  • 27. Build Isometric Tile Based Engine MISATO ENGINE 渲染与遮挡 根据不同的渲染需求选择适合的遮挡处理方法 测试结果:基于FlashPlayer 10.0 每种算法渲染100次 0 500 1000 1500 2000 2500 3000 3500 算法A 算法B 算法C N=1 N=10 N=100 N=1000 单位ms 2ms 19ms 20ms 50ms
  • 28. Build Isometric Tile Based Engine MISATO ENGINE 碰撞检测 静态碰撞 基于Tile的格子进行判断。对于不同的表面形状,为各种Tile,包 括地形和各种建筑,障碍物。设定固定的物理包围壳,根据不同 的包围面进行物理计算。 动态碰撞 将地图再次切分为更小的格子,比如一个Tile切为9个小格。保证每 个格子中有且只有一个动态的Entity。 这样虽然消耗一定的内存空间。但是对于碰撞可以很简单的处理, 也有利于寻径等操作。
  • 29. Thanks Hugh Tsai Nov 28th 2010 Reference http://www.47school.com/soft/Flash/yykf/2009/1002/57697.html http://www.tilebasedgames.com/ http://members.chello.at/theodor.lauppert/games/iso.htm http://www.tonypa.pri.ee/tbw/start.html