发布HTML5 RTS游戏-古代战争
古代战争
游戏介绍
“古代战争”是一个2.5D即时战略游戏,使用了帝国时代2的素材,并参考了它的游戏设计和玩法。
游戏基于YEngine2D引擎开发,具备生产、建造、资源采集、战斗、地图迷雾等RTS核心要素。
GitHub地址
最新版本
v0.2
游戏演示
请在Chrome或Firefox浏览器中运行
演示地址
功能介绍
1、地图
a)背景地图
背景地图大小为90×90,地形方块有草原、沙漠、河流、道路四种类型,其中精灵不能通过河流方块,可以通过其它三种方块。
游戏中通过拼接菱形方块,来即时生成菱形背景地图。
b)小地图
游戏右下方有小地图,玩家可直接在小地图上移动视口、下达框选单位的移动和移动攻击的命令。
c)视口移动
玩家可以通过鼠标移动来使当前视口移动,从而显示背景地图的不同区域,即进行地图滚动。
因为背景地图为菱形,为了防止玩家滚动到地图外,当玩家在地图边缘滚动时,视口会与菱形地图平行移动。
2、加入实体
游戏中精灵实体分为地形、资源、建筑和单位这四种类型。其中“山”为地形类型,“肉”为资源类型,“基地”、“射击场”和“箭塔”为建筑类型,“农民”和“弓箭手”为单位类型。
a)显示
地图上可以显示实体和实体的精灵动画。选中建筑或单位实体时,会在地图上显示它们的血条和菱形方框,并在游戏面板上显示实体信息。
b)操作
可以对资源、建筑和单位实体进行操作。操作分为单个实体操作和多个实体操作。
玩家通过鼠标可以对单个建筑或单位实体下达命令,从而实现实体操作。如玩家可以选中单个建筑,进行生产操作;也可以选中单个单位,然后使用鼠标右击地图,使单位移动到该处;还可以选中己方单位,然后右击一个敌方单位,使其攻击敌方单位。
玩家可以通过拖动鼠标来框选多个单位,进行移动、攻击操作;还可以使用shift键,来选中或取消建筑或单位实体。
3、关卡
游戏有1个关卡,关卡有通关条件和失败条件,关卡通过或失败都直接结束游戏。
a)关卡设计
可在levelData.js脚本中编辑关卡有哪些精灵实体、关卡加载的资源、调用的触发器等,可在trigger.js中编辑关卡的触发器。
b)资源加载与管理
在开始每个关卡时,游戏会首先加载当前关卡所需的资源,并将加载的资源保存在引擎容器中。
c)触发器
触发器是通过游戏事件的机制来实现在特定时间或特定条件下,触发特定的动作。游戏通过触发器机制实现基本的关卡AI。
4、移动
单位实体可以在地图中移动,其采用A Star算法来静态寻路,采用Steer算法和A Star算法来动态寻路
5、采集资源
玩家需要通过农民采集资源树并运送到基地来增加“肉”这个资源。每个资源树总数有限,农民一次只能采集有限的资源,运送到基地后玩家才能获得资源。建造和生产实体都需要花费资源。
6、建造
农民可以建造建筑,玩家选中农民建造时会有建造框提示,不能建造在不可通过的地形上或迷雾中。
多个农民可以建造同一个建筑,这会使建造速度加快。建造时游戏面板中会显示建造进度信息,并且不同的建造进度会在地图上显示不同的建造效果图片。
7、生产
基地可以生产农民,射击场可以生产弓箭手。
玩家可以点击建筑生产多个单位。同一时间建筑只能生产一个单位,其余单位会排队等待生产。
生产时会在游戏面板中显示进度信息。
8、战斗
游戏中实体分为蓝色实体和红色实体,其中蓝色实体属于玩家所在的阵营,红色实体属于敌方阵营。玩家可控制己方单位攻击敌方单位。
攻击类型分为远程攻击和近战攻击,其中弓箭手为远程攻击,农民为近战攻击。
弓箭手发出的弓箭轨迹为抛物线,游戏会根据目标的前进方向和速度计算弓箭的目的地。
9、迷雾
游戏中玩家己方单位和建筑有一定的视线范围,在视线范围内是可见的,可以看到所有的实体;而在视线范围外,则只能看到背景地图,不能看到敌方实体。
游戏地图区域分为可视区域、已探索区域、未探索区域,其中位于玩家单位和建筑视线范围内的区域为可视区域,可以看到玩家和敌人的单位和建筑;玩家单位探索过的地图区域为已探索区域,可以看到地形、敌人建筑;其余地图区域为未探索区域,为一片黑色,什么都看不到。
10、声音
开始关卡前会加载单位和建筑的音效。
这里值得说明的是有些音效是局部的,只有当发出该音效的单位或建筑位于视口中时才会播放;有些音效是全局的,会直接播放。
关卡介绍
目前只有一关,玩家需要消灭地图上所有的敌人。
升级计划
- 修复游戏bug
- 改进游戏功能、用户体验,优化游戏性能
- 增加游戏可玩性,增加更多的单位、建筑和关卡
- 优化地形,增加每种地形的方块种类,实现相邻地形的自动拼接
- 实现多人联网
- 开发移动版,可在安卓和ios上运行
- 重构代码,优化性能
发布HTML5 RTS游戏-古代战争的更多相关文章
- 发布HTML5 2D游戏引擎YEngine2D
关于YEngine2D YEngine2D是一个开源的.采用HTML5技术和Javscript语言创建的2D游戏框架,用来构建web二维游戏. GitHub地址 最新版本 v0.1.2 浏览器支持 C ...
- 25 个超棒的 HTML5 & JavaScript 游戏引擎开发库
就像在汽车中,引擎完成主要的工作,使汽车看起来不可思议.游戏引擎同理,游戏开发者完成细节的工作,使游戏看起来真实.吸引人眼球.游戏引擎负责其余的事情.早期,游戏开发者通常从草图做起,花费高昂,且不容易 ...
- 40个容易上瘾的HTML5网页游戏,总有一款适合你
我记得姐姐家的孩子在刚刚才学会走路,说话还不能完整的时候就已经能自己用小手点出小游戏的网站来一个人自娱自乐.我一直在想这一代跟着计算机一起茁壮成长的孩子会不会也和美国那一代人一样,出现9岁的黑客和计算 ...
- 如何制作一款HTML5 RPG游戏引擎——第五篇,人物&人物特效
上一次,我们实现了对话类,今天就来做一个游戏中必不可少的——人物类. 当然,你完全是可以自己写一个人物类,但是为了方便起见,还是决定把人物类封装到这个引擎里. 为了使这个类更有意义,我还给人物类加了几 ...
- 如何制作一款HTML5 RPG游戏引擎——第一篇,地图类的实现
一,话说天下大事 前不久看到lufy的博客上,有一位朋友想要一个RPG游戏引擎,出于兴趣准备动手做一做.由于我研究lufylegend有一段时间了,对它有一定的依赖性,因此就准备将这个引擎基于lufy ...
- 推荐一些好用的 HTML5 & JavaScript 游戏引擎开发库
推荐一些好用的 HTML5 & JavaScript 游戏引擎开发库 0. 引言 如果你是一个游戏开发者,并且正在寻找一个可以与 JavaScript 和 HTML5 无缝工作的游戏引擎.那么 ...
- 推荐10款超级有趣的HTML5小游戏
HTML5的发展速度比任何人的都想像都要更快.更加强大有效的和专业的解决方案已经被开发......甚至在游戏世界中!这里跟大家分享有10款超级趣味的HTML5游戏,希望大家能够喜欢! Kern Typ ...
- 推荐21款最佳 HTML5 网页游戏
尽管 HTML5 的完全实现还有很长的路要走,但 HTML5 正在改变 Web,未来 HTML5 将把 Web 带入一个更加成熟和开放的应用平台.现在,越来越多的人尝试用 HTML5 来制作网页游戏等 ...
- Skytte:一款令人印象深刻的 HTML5 射击游戏
Skytte 是一款浏览器里的 2D 射击游戏.使用 Canvas 元素和大量的 JavaScript 代码实现.Skytte 是用我们的开源和现代的前端技术创造的.经典,快节奏的横向滚动射击游戏,探 ...
随机推荐
- cocos2d-x基础元素之显示对象
bool HelloWorld::init() { if ( !Layer::init() ) { return false; } Size visibleSize = Director::getIn ...
- CentOS 7 安装Redis 2.8.7
1.下载软件: wget wget http://download.redis.io/releases/redis-2.8.7.tar.gz 2.解压软件并编译安装: tar -zxvf redis- ...
- 该怎样提高ZBrush的创作效率
ZBrush是一款数字雕刻和绘画软件,以强大的功能和直观的工作流程改变了整个三维行业,相信使用ZBrush的人都希望加快雕刻速度提高ZBrush技能,很多雕刻专家也都试图证明加快雕刻速度是否真的能提 ...
- 边工作边刷题:70天一遍leetcode: day 82
Closest Binary Search Tree Value 要点: https://repl.it/CfhL/1 # Definition for a binary tree node. # c ...
- fontAwesome代替网页icon小图标
引言 奥森图标(Font Awesome)提供丰富的矢量字体图标—通过CSS可以任意控制所有图标的大小 ,颜色,阴影. 网页小图标到处可见,如果一个网页都是干巴巴的文字和图片,而没有小图标,会显得非常 ...
- css让浮动元素水平居中
对于定宽的非浮动元素我们可以用 margin:0 auto; 进行水平居中. 对于不定宽的浮动元素我们也有一个常用的技巧解决它的水平居中问题.如下: HTML 代码: <div class=&q ...
- HDU 4445 Crazy Tank --枚举
题意: n个物体从高H处以相同角度抛下,有各自的初速度,下面[L1,R1]是敌方坦克的范围,[L2,R2]是友方坦克,问从某个角度抛出,在没有一个炮弹碰到友方坦克的情况下,最多的碰到敌方坦克的炮弹数. ...
- JavaScript测试工具
大家都知道Javascript的测试比较麻烦,一般是开发使用一些浏览器的插件比如IE develop bar或是firebug来调试,而测试往往需要通过页面展示后的js错误提示来定位.那么还有其他比较 ...
- Android 属性动画(Property Animation) 完全解析 (上)
转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38067475 1.概述 Android提 供了几种动画类型:View Anima ...
- linux下的缓存机制及清理buffer/cache/swap的方法梳理
(1)缓存机制 为了提高文件系统性能,内核利用一部分物理内存分配出缓冲区,用于缓存系统操作和数据文件,当内核收到读写的请求时,内核先去缓存区找是否有请求的数据,有就直接返回,如果没有则通过驱动程序直接 ...