战棋 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. JSON.parse和eval的区别

    JSON.parse和eval的区别 JSON(JavaScript Object Notation)是一种轻量级的数据格式,采用完全独立于语言的文本格式,是理想的数据交换格式.同时,JSON是Jav ...

  2. Python转码问题的解决方法:UnicodeDecodeError:‘gbk' codec can't decode bytes in position

    在开发过程中遇到了错误:UnicodeDecodeError: ‘gbk' codec can't decode bytes in position 678-679...这是因为遇到了非法字符, 解决 ...

  3. LINQ for XML简单示例

    LINQ,语言集成查询(Language Integrated Query)是一组用于c#和Visual Basic语言的扩展.它允许开发人员以与查询数据库相同的方式操作内存数据.从技术角度而言,LI ...

  4. LRU算法

    LRU,Least recently used[最近最少使用算法],该算法[或变种]被广泛用于缓存管理中,其设计思想是基于:经常被访问的数据在未来一段时间也会被访问,最近最少被访问的数据在未来一段时间 ...

  5. 开放封闭原则(Open Closed Principle)

    在面向对象的设计中有很多流行的思想,比如说 "所有的成员变量都应该设置为私有(Private)","要避免使用全局变量(Global Variables)",& ...

  6. C语言全局变量那些事儿

    转自:http://blog.csdn.net/bingqingsuimeng/article/details/9405743 作为一名程序员,如果说沉迷一门编程语言算作一种乐趣的话,那么与此同时反过 ...

  7. 第十六篇:SWindow的布局属性pos2type及offset

    当窗口大小需要根据内容来确定时,使用XML布局可能需要做一些特殊的处理. 例如:不管窗口多大,我需要将该窗口相对于父窗口居中在XML中应该怎么处理? 如果窗口大小是固定的(如, 100 *100),这 ...

  8. [perl]字符串转拼音首字母(支持多音字)

    实现的思路是,查表找到该字的所有读音,然后取首字母. 代码: while (<DATA>) { chomp; })(.*)$/; $all =~ s/^\s+//; ### 只保留无音标号 ...

  9. android tab选项卡的使用

    项目做完了,写写博客,在项目中遇到的一些问题,或者是自己觉得很不错的东西.这一篇主要是想和大家分享一下我在项目中封装的一个东西,就是tab选项卡.先看看效果图: 我在网上看了很多有关选项卡的demo, ...

  10. C# 五、谈扩展方法的理解

    http://www.cnblogs.com/zhaopei/p/5678842.html