古代战争

游戏介绍

“古代战争”是一个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游戏-古代战争的更多相关文章

  1. 发布HTML5 2D游戏引擎YEngine2D

    关于YEngine2D YEngine2D是一个开源的.采用HTML5技术和Javscript语言创建的2D游戏框架,用来构建web二维游戏. GitHub地址 最新版本 v0.1.2 浏览器支持 C ...

  2. 25 个超棒的 HTML5 & JavaScript 游戏引擎开发库

    就像在汽车中,引擎完成主要的工作,使汽车看起来不可思议.游戏引擎同理,游戏开发者完成细节的工作,使游戏看起来真实.吸引人眼球.游戏引擎负责其余的事情.早期,游戏开发者通常从草图做起,花费高昂,且不容易 ...

  3. 40个容易上瘾的HTML5网页游戏,总有一款适合你

    我记得姐姐家的孩子在刚刚才学会走路,说话还不能完整的时候就已经能自己用小手点出小游戏的网站来一个人自娱自乐.我一直在想这一代跟着计算机一起茁壮成长的孩子会不会也和美国那一代人一样,出现9岁的黑客和计算 ...

  4. 如何制作一款HTML5 RPG游戏引擎——第五篇,人物&人物特效

    上一次,我们实现了对话类,今天就来做一个游戏中必不可少的——人物类. 当然,你完全是可以自己写一个人物类,但是为了方便起见,还是决定把人物类封装到这个引擎里. 为了使这个类更有意义,我还给人物类加了几 ...

  5. 如何制作一款HTML5 RPG游戏引擎——第一篇,地图类的实现

    一,话说天下大事 前不久看到lufy的博客上,有一位朋友想要一个RPG游戏引擎,出于兴趣准备动手做一做.由于我研究lufylegend有一段时间了,对它有一定的依赖性,因此就准备将这个引擎基于lufy ...

  6. 推荐一些好用的 HTML5 & JavaScript 游戏引擎开发库

    推荐一些好用的 HTML5 & JavaScript 游戏引擎开发库 0. 引言 如果你是一个游戏开发者,并且正在寻找一个可以与 JavaScript 和 HTML5 无缝工作的游戏引擎.那么 ...

  7. 推荐10款超级有趣的HTML5小游戏

    HTML5的发展速度比任何人的都想像都要更快.更加强大有效的和专业的解决方案已经被开发......甚至在游戏世界中!这里跟大家分享有10款超级趣味的HTML5游戏,希望大家能够喜欢! Kern Typ ...

  8. 推荐21款最佳 HTML5 网页游戏

    尽管 HTML5 的完全实现还有很长的路要走,但 HTML5 正在改变 Web,未来 HTML5 将把 Web 带入一个更加成熟和开放的应用平台.现在,越来越多的人尝试用 HTML5 来制作网页游戏等 ...

  9. Skytte:一款令人印象深刻的 HTML5 射击游戏

    Skytte 是一款浏览器里的 2D 射击游戏.使用 Canvas 元素和大量的 JavaScript 代码实现.Skytte 是用我们的开源和现代的前端技术创造的.经典,快节奏的横向滚动射击游戏,探 ...

随机推荐

  1. SAM4E单片机之旅——16、NAND Flash读写

    这次大概介绍了一下NAND Flash,以及在ASF中使用它的方法. 一. 接线 这个开发板搭载了一个256 MB,8位的NAND Flash(MT29F2G08ABAEA).引脚接线如下: 偷个懒, ...

  2. 读书笔记——Windows环境下32位汇编语言程序设计(5)模态对话框

    资源可以用VC之类的生成,然后拷贝出来. 例如:每一个MFC工程都有一个resource.h,没有做任何修改时,这个resource.h文件是原来自带的.当对资源进行过修改添加之类的时,新添加的资源的 ...

  3. Java NIO入门(二):缓冲区内部细节

    Java NIO 入门(二)缓冲区内部细节 概述 本文将介绍 NIO 中两个重要的缓冲区组件:状态变量和访问方法 (accessor). 状态变量是前一文中提到的"内部统计机制"的 ...

  4. hibernate一对一关系实现

    按照主键映射,按照外键映射 Address.hbm.xml: <?xml version="1.0"?><!DOCTYPE hibernate-mapping P ...

  5. 在IT的路上,我在成长

    在IT的路上,我在成长.很荣幸地加入了博客园这个大家庭. 岁月的航船在不断航行,在成长的脚印我要深深留下,回首已往经历,发现自己成长的路上,将来也会有很多美好的回忆,以及丰硕的果实.

  6. A python tool to static sim.log duration time

    When working ALU IMS Patch team, we need to static the SU duration to add it to the patch report, th ...

  7. 边工作边刷题:70天一遍leetcode: day 74

    Binary Tree Upside Down 要点: recursion反转如何做?两个要点,一是在递归之后反转link(因为先要通过原来的link到下一层),二是要一层层把最底层的root返回来. ...

  8. HDU 1850 Being a Good Boy in Spring Festival

    此题先考虑第一种,5 7 9的情况,先手如果想赢,则必定要把异或值变为0,因为随便取,所以此处的异或指的是对堆中的石子数进行异或,而非异或其SG函数. 首先7^9=14,因为要异或为0,则5要变成14 ...

  9. nginx + fastDFS 设置开机自动启动

    由于在服务器上有太多的软件 不可能每次启动都要重新启动服务吧(每晚断电...必须重启电脑) vim /etc/rc.d/rc.local 添加下列脚本 /usr/bin/fdfs_trackerd / ...

  10. .Net Framework 4.0 内部排序探索

    简介 一时好奇心起,想一窥.Net Framework 4.0内部究竟是使用何种算法排序.以前听人说Framework内部是使用的快速排序,但究竟耳听为虚,眼见为实.主要通过JetBrains dot ...