战棋 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提供了数种控制图像、声音、输出入的函数,让开发者只要用相同或是相似的代码就可以开发出跨多个平台(LinuxWindowsMac 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 WindowsLinuxMac OS XAndroidiOS, 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 游戏框架设计思考(一)简介和游戏引擎的更多相关文章

  1. 开源战棋 SLG 游戏框架设计思考(二)规则系统要考虑的因素

    游戏对象 1. 地块方格 地形:山脉.丘陵.乔木林.灌木林.平原.河流.湖泊.海洋.雪原.沼泽.沙漠.暗礁.滩涂.岛屿等等(需完善) 设施:铁路.公路.桥梁.机场.城市.村庄.岸防炮.要塞.废墟等等( ...

  2. 基于cocos2d-x的游戏框架设计——李成

    视频:http://v.youku.com/v_show/id_XMzc5ODUyMTI4.html?f=17330006 网易科技讯 3月31日,第四届CocoaChina开发者大会暨Cocos2d ...

  3. 游戏框架设计中的。绑定binding。。。命令 command 和消息message 以及MVVM

    游戏框架设计中的.绑定binding...命令 command 和消息message

  4. 01 Taro_Mall 开源多端小程序框架设计

    项目介绍 Taro_Mall是一款多端开源在线商城应用程序,后台是基于litemall基础上进行开发,前端采用Taro框架编写,现已全部完成小程序和h5移动端,后续会对APP,淘宝,头条,百度小程序进 ...

  5. python3+selenium框架设计05-配置文件和浏览器引擎类

    python3配置文件的增删改查等操作可以使用内置的ConfigParser模块,可以自行百度学习,也可以看Python3学习笔记27-ConfigParser模块 配置文件一般存放着环境信息,比如u ...

  6. 【读书笔记《Android游戏编程之从零开始》】16.游戏开发基础(动画)

    1. Animation动画   在Android 中,系统提供了动画类 Animation ,其中又分为四种动画效果: ● AlphaAnimation:透明度渐变动画 ● ScaleAnimati ...

  7. 【读书笔记《Android游戏编程之从零开始》】15.游戏开发基础(剪切区域)

    剪切区域也称为可视区域,是由画布进行设置的:它指的是在画布上设置一块区域,当画布一旦设置了可视区域,那么除此区域外,绘制的任何内容都将看不到:可视区域可以是圆形.矩形等等. 画布提供了三种设置可视区域 ...

  8. 【读书笔记《Android游戏编程之从零开始》】14.游戏开发基础(Bitmap 位图的渲染与操作)

    Bitmap 是图形类,Android 系统支持的图片格式有 png.jpg.bmp 等. 对位图操作在游戏中是很重要的知识点,比如游戏中需要两张除了大小之外其他完全相同的图,那么如果会对位图进行缩放 ...

  9. 【读书笔记《Android游戏编程之从零开始》】13.游戏开发基础(Paint 画笔)

    1.Paint画笔 Panit(画笔)是绘图额辅助类,其类中包含文字和位图额样式.颜色等属性信息.Paint 的常用方法如下: setAntiAlias(boolean aa) 作用:设置画笔是否无锯 ...

随机推荐

  1. 如何 实现PHP多版本的 共存 和 切换?

    编译PHP时指定路径 ./configure --prefix=/opt/php/php-5.6 make && make install 这样可以PHP版本就可以安装到一个特别的路径 ...

  2. Win10安装程序出现error code 2502 2503

    在Win10中,在安装msi安装包的时候常常会出现代码为2502.2503的错误.其实这种错误是由于安装权限不足造成的,可以这种msi的安装包不像其他exe的安装程序,在安装包上点击"右键& ...

  3. 上个项目的一些反思 II

    上个项目需要使用通讯录,我在回顾自己设计的时候,发现自己少设计了cache这一环. 虽然直接用SQLite在初期体验上没什么大损失,不过可以预想通讯录增长到一定数量后势必会影响体验. 单例模式,全局缓 ...

  4. OC编程之道-创建对象之原型模式

    一 什么是原型模式?(what) 有些对象的创建代价过大或过于复杂,要是可以重建相同的对象并作轻微的改动,事情会容易的多(效率变高).典型的例子是复制组合结构(eg树形结构),从零开始构建一个树型组合 ...

  5. K3中间层配置不成功 kdsvrmgr组件不工作 问题 客户端需要检查的设置

    苏州K3刘保平电脑安装的K3装有中间层组件,导致中间层死配都配不成功  以后中间层配置不成功的时候除了检查能否访问K3服务器之外,还要检查一下是否安装了中间层http://wenku.baidu.co ...

  6. PHP获取当前url路径的函数及服务器变量:QUERY_STRING、REQUEST_URI、SCRIPT...

    1,$_SERVER["QUERY_STRING"]说明:查询(query)的字符串 2,$_SERVER["REQUEST_URI"]说明:访问此页面所需的U ...

  7. Android 配置问题

    安装好后需要更新

  8. android:ellipsize的使用(转)

    EidtText和textview中内容过长的话自动换行,使用android:ellipsize与android:singleine可以解决,使只有一行. EditText不支持marquee 用法如 ...

  9. MIT 6.828 JOS学习笔记4. Lab 1 Part 2.1: The Boot Loader

    Part 2: The Boot Loader 对于PC来说,软盘,硬盘都可以被划分为一个个大小为512字节的区域,叫做扇区.一个扇区是一次磁盘操作的最小粒度.每一次读取或者写入操作都必须是一个或多个 ...

  10. 我的c++学习(12)指针作为函数参数

    ◆ 引用调用与指针传值调用C++中函数的参数的基本使用方法是传值.为了弥补单纯传值的不足,以引用作为函数的参数,从逻辑上讲引用是别名,在函数中对参数的操作,就是对实参的操作,而在物理上是传实参的地址. ...