开源战棋 SLG 游戏框架设计思考(一)简介和游戏引擎
战棋 SLG 游戏
SLG(Simulation Game)游戏是模拟游戏的简称。战棋类的SLG有两种:一种是 War Game 中的兵棋推演分支,常见的游戏有战争艺术3(TOAW3 — The Operational Art of War 3)、意大利之战(BII — Battle in Italy)、诺曼底之战(BIN — Battle in Normady)、前线(BF — Battlefront)、库尔松口袋(KP — Korsun Pocket)、太平洋战争(WITP — War in the Pacific)、高级战术(AT — Advanced Tactics)等;另一种是 TRPG(日本称SRPG)即带有角色扮演的策略游戏,日本的如火焰纹章,欧美有英雄无敌系列。
游戏形式是六角方格组成的棋盘,战斗单位按回合移动、战斗等。兵棋推演一般在特定回合后计算胜利点数判定胜方,而 TRGP 则基本以消灭敌人推进剧情。
战棋 SLG 游戏框架
一直以来都想做这样一个通用框架——任何人都可以通过导入自定义素材、编写规则和剧本来就可以生成一个战棋游戏。有点像RPG Maker,只不过我想要这个框架支持跨平台,规则和脚本采用更通用的 Python 或 Lua 等脚本语言;我希望它能够非常易用,即使不懂编程通过鼠标点选也可以制作游戏。
图形/游戏引擎
既然是游戏肯定要涉及图形,选择一款图形引擎或是灵活性高的游戏引擎无疑可以大大降低开发难度和工作量。
经过考察,形成了以下候选名单(描述来自wikipedia):
1. SDL
SDL(Simple DirectMedia Layer)是一套开放源代码的跨平台多媒体开发库,使用C语言写成。SDL提供了数种控制图像、声音、输出入的函数,让开发者只要用相同或是相似的代码就可以开发出跨多个平台(Linux、Windows、Mac OS X等)的应用软件。目前SDL多用于开发游戏、模拟器、媒体播放器等多媒体应用领域。
2. Allegro
Allegro是一个特别针对于电子游戏的开发的自由软件程序库。
该库提供基本二维图形、图像操作、音效输出、MIDI音乐、输入、计时器,以及额外的寻路矩阵计算、UNICODE、文件系统管理、有限而建基于软件的三维图形。
3. Cocos2d
Cocos2d 是一个开源的2D游戏框架. 最初的Cocos2D框架是使用Python编写的,基于pyglet开发。目前Cocos2D框架已经被移植到了多种语言和平台上。
4. Gameplay
GamePlay is an open-source, cross-platform 3D native C++ game framework.
5. libGDX
libGDX is a game-development application framework written in the Java programming language with some C and C++ components for performance dependent code. It allows for the development of desktop and mobile games by using the same code base. It is cross-platform, supporting Windows, Linux, Mac OS X, Android, iOS, and web browsers with WebGL support.
6. Ogre3D
OGRE(Object-Oriented Graphics Rendering Engine,面向对象图形渲染引擎) 又叫做OGRE 3D。OGRE是面向场景的、灵活的图像引擎。OGRE仍然在发展中,如果就功能和商业游戏引擎还有一定差距。在OGRE的论坛网站上你可以得到更多的信息,里面谈论到OGRE的一些格外的插件,如声音 ,UI ,物理检测,还有网络应用。
挨个评价一下这些引擎:
- SDL 是一个跨平台多媒体开发库,不是专门的游戏引擎,显然不利于简化开发工作。
- Allegro 是针对游戏的开发库,可惜的是没有网络库。
- Cocos2d/Cocos2d-x 应该算是国内最火的游戏引擎了。特别是中文资源很丰富。
- Gameplay 特性跟 Cocos2d-x 相似。资源不是很丰富。
- libGDX 是一个很成熟的跨平台游戏引擎。可以只编写一次即可发不到不同的平台,只是开发语言用的是 Java 有点不喜欢。
- Orgre3D是大名鼎鼎的重量级跨平台图形引擎。但缺少网络、IO等方面的库。
结语
终于把这些开源图形/游戏引擎挨个对比了一遍,最终结论:首选 Cocos2d-x 和 libGDX,而 Gameplay 作为备选,其他暂不考虑。
开源战棋 SLG 游戏框架设计思考(一)简介和游戏引擎的更多相关文章
- 开源战棋 SLG 游戏框架设计思考(二)规则系统要考虑的因素
游戏对象 1. 地块方格 地形:山脉.丘陵.乔木林.灌木林.平原.河流.湖泊.海洋.雪原.沼泽.沙漠.暗礁.滩涂.岛屿等等(需完善) 设施:铁路.公路.桥梁.机场.城市.村庄.岸防炮.要塞.废墟等等( ...
- 基于cocos2d-x的游戏框架设计——李成
视频:http://v.youku.com/v_show/id_XMzc5ODUyMTI4.html?f=17330006 网易科技讯 3月31日,第四届CocoaChina开发者大会暨Cocos2d ...
- 游戏框架设计中的。绑定binding。。。命令 command 和消息message 以及MVVM
游戏框架设计中的.绑定binding...命令 command 和消息message
- 01 Taro_Mall 开源多端小程序框架设计
项目介绍 Taro_Mall是一款多端开源在线商城应用程序,后台是基于litemall基础上进行开发,前端采用Taro框架编写,现已全部完成小程序和h5移动端,后续会对APP,淘宝,头条,百度小程序进 ...
- python3+selenium框架设计05-配置文件和浏览器引擎类
python3配置文件的增删改查等操作可以使用内置的ConfigParser模块,可以自行百度学习,也可以看Python3学习笔记27-ConfigParser模块 配置文件一般存放着环境信息,比如u ...
- 【读书笔记《Android游戏编程之从零开始》】16.游戏开发基础(动画)
1. Animation动画 在Android 中,系统提供了动画类 Animation ,其中又分为四种动画效果: ● AlphaAnimation:透明度渐变动画 ● ScaleAnimati ...
- 【读书笔记《Android游戏编程之从零开始》】15.游戏开发基础(剪切区域)
剪切区域也称为可视区域,是由画布进行设置的:它指的是在画布上设置一块区域,当画布一旦设置了可视区域,那么除此区域外,绘制的任何内容都将看不到:可视区域可以是圆形.矩形等等. 画布提供了三种设置可视区域 ...
- 【读书笔记《Android游戏编程之从零开始》】14.游戏开发基础(Bitmap 位图的渲染与操作)
Bitmap 是图形类,Android 系统支持的图片格式有 png.jpg.bmp 等. 对位图操作在游戏中是很重要的知识点,比如游戏中需要两张除了大小之外其他完全相同的图,那么如果会对位图进行缩放 ...
- 【读书笔记《Android游戏编程之从零开始》】13.游戏开发基础(Paint 画笔)
1.Paint画笔 Panit(画笔)是绘图额辅助类,其类中包含文字和位图额样式.颜色等属性信息.Paint 的常用方法如下: setAntiAlias(boolean aa) 作用:设置画笔是否无锯 ...
随机推荐
- 2.4使用属性在 ASP.NET Web API 2 路由创建一个 REST API
Web API 2 支持一种新型的路由,称为属性路由.属性路由的一般概述,请参阅属性路由 Web API 2 中.在本教程中,您将使用属性路由创建一个 REST API 集合的书.API 将支持以下操 ...
- Matlab学习笔记(一)—— 三维图形绘制
这学期公选课选的是MATLAB,所以准备把这学期所学习的整理到博客上,作为记录,哇咔咔~ 一.三维函数图: x=cos(t), y=sin(t), z=t %≤t ≤*pi t=:*pi; %t的取值 ...
- php换行符
1.需求 统一php换行符 2.实践 使用PHP_EOL替换换行符,保证平台的兼容性. 类似的有DIRECTORY_SEPARATOR 参考文档:http://www.cnblogs.com/code ...
- 字符串专题:map POJ 1002
第一次用到是在‘校内赛总结’扫地那道题里面,大同小异 map<string,int>str 可以专用做做字符串的匹配之类的处理 string donser; str [donser]++ ...
- linux c 笔记-3 c语言基础知识
关键字 数据类型: 简单(7):int long short float double char enum 复杂(2):struct union 类型修饰符(8):auto unsigned sign ...
- 解决Can't connect to MySQL server on 'localhost' (10048)
解决Can't connect to MySQL server on 'localhost' (10048) 您使用的是Windows操作系统,此错误与一个注册表键值TcpTimedWaitDelay ...
- destoon二次开发基础代码
标签调用规则 http://help.destoon.com/develop/22.html 数据字典 http://help.destoon.com/dict.php destoon各类调用汇总 h ...
- java中集合的使用
集合使用: 先说数组:array :用来存同一种数组类型的容器 eg:现在想把班上所有人的信息存起来 1.每一个人的信息可以用一个对象存起来 2.可以用一个数组来接受(现在数组中要接受的是对象) ob ...
- Entity Framework 中的in操作实例
var listimportDataEOIResoults = importDataEOIResoults.Select(i => i.ProductSelectionId).ToList(); ...
- ajax表单提交
HTML代码: <form id="formCity" action="/SiteMap/Search" method="get" o ...