/xyz

a xyz demo

Primary LanguageJavaScript

开发日志

需求池

  • 开发中
    • 添加音乐、音效(doing)
    • 铺量完成第一关(doing)
      • 回合进度条
      • 结束回合按钮
      • 反击
      • 双击
      • 会心一击
      • 防御
  • 重构
    • 行动菜单的UI和逻辑
      • 一开始是否需要弹出菜单
      • 菜单的样式与展现
    • 将View从Scene的代码中分离出来
      • battle的流程控制逻辑和画面显示逻辑分开
      • 移动范围阴影和攻击范围阴影放在Map中?
    • 图片资源atlas
    • 重新整理坐标系相关代码
    • 动画系统用状态机重构
      • 每个动画分为 xxxStart xxx xxxComplete三部分
  • 新功能
    • 当前鼠标所在格子表示
    • 存档/读档
      • 存档格式
      • 读写逻辑
    • 剧情条件判定逻辑
      • 位置判定
      • 血量判定
      • 胜败判定
    • 对话系统
    • 地图
      • 小地图
      • 地图编辑器
      • 战役编辑器
      • 地形InfoBox
    • 战斗动画
      • 防御动画
      • 反击流程
      • 伤害计算公式
      • 法术攻击
    • 其他可能的操作方式的处理
      • 长按
      • 双击
      • 缩放

BUG

  • 动画帧速不稳定,有时候有点卡导致衔接不畅
  • MAP.focus bug
    • 有时候shade表示位置不正确

Note

  • touchend事件的坐标是以touchstart被触发时的坐标为准的
  • action的time比实际播放的帧数长会有助于解决动画不稳定的问题?
    • 用Chrome一帧一帧的debug
  • 用链式回调的方法处理组合动画

20130706

  • 部分se, bgm因为文件大暂不添加
  • 加入了反击,并调整了攻击动画流程
  • 调整了动画
  • 重构了shade,添加了移动终端用的UI

20130702

  • MAP.focus功能
  • 重新开始按钮
  • 可以攻击友军单位(fixed)
  • 点击事件死循环bug(fixed)
    • 注意enchant.js中的设定是, 子节点的事件会自动传递到父节点上。 所以从父节点向子节点传递事件时要小心。
  • AI遇到不可移动的情况会卡住(fixed)
  • 有时候单位边框有黑线(fixed)

20130701

  • 移动攻击AI

20130630

  • 添加了一些基本音效
  • 地图移动时,InfoBox的位置不对(fixed)
  • 地图拖拽操作需要限制其只在某些状态下可用(fixed)
  • 战斗状态控制
    • 完善点击事件状态机(fixed)
    • 防止多重点击(fixed)

20130629

  • 修正了bug若干
  • 开始制作第一关
  • “取消移动”功能(done)
  • 回合切换过场动画(done)

20130628

  • 回合切换过场动画
  • 升级数值变化
  • 升级动画动作有异常(fixed)
  • 一次获得经验值超过100时经验条表现异常(fixed)

20130626

  • AI框架
  • 敌人AI
    • Dummy
    • Hold Position

20130624

  • 新增Grid类,抽象出Map中的部分逻辑
    • 改写了getAvailAtkGrid的逻辑
    • 改写了getAvailGrid的逻辑
  • 可移动地形判定有异常(fixed)

20130623

  • 初步AI框架
  • header的通用函数调试
  • 在Map中的getAvailGrids用i, j代替x, y以便计算
  • 整合了stats.js

20130621

  • 完整的关卡逻辑(done)
    • 回合开始
    • 行动->行动完毕
    • 敌方回合

20130616

  • 完成了升级和死亡动画

20130615

  • 将攻击动画和InfoBox动画串联起来
    • 需要追加死亡、防御、升级等等情况

20130613

  • 将地图逻辑分离出来
    • 移动范围和攻击范围逻辑分开
    • 是否在地图上的判断
    • 可否移动判断
    • 消耗移动力判断
  • 将一部分单位动画整合到Unit中
    • 包含多个角色的动画比如attack仍然在battle中

20130612

  • InfoBox
  • 地图拖动

20130608

  • 完成了攻击、受伤动画

20130603

  • 修正了地图格子错乱的问题
  • 还需要解决攻击格子的listner覆盖了移动格子的listner的问题

20130531

  • 考虑了一下,UI还是最好将代码与配置分开。
    • View单独配置在一个文件里
    • 考虑到现在UI的量不大,这个工程相对比较复杂,留到以后再实现
    • 做完了大概是这个感觉

{ class: "InfoBox", frame: [x, y, w, h], children: [ ] }

20130530

  • 看了一下ui.enchant.js感觉有一些还是可以用的。可以直接移植过来。
  • 现在的主要工作是把battle.js里的UI操作抽象成单独的类。为以后InfoBox的工作做准备
  • 在Canvas层实现UI,理由
    • 有整体感
    • 不用适配不同浏览器的差异
    • 快(未验证)

20130529

  • 将大文件拆分成小文件。

  • 整理所有常数和配置,放于const.js和config.js

  • 关于UI可以先看一下enchant.js的相关插件

  • 改动了原来的部分逻辑,没有进行整体调试

  • 对于基本属性的操作最好也改成enchant.js中的get/set写法,例如:

    text: { get: function() { return this._text; },
    set: function(text) { this._text = text; if (!enchant.CanvasLayer) { this._element.innerHTML = text; }
    }
    },

20130528

  • 重写了原来的移动阴影相关逻辑。现在会更简洁一些。(未debug)
  • 程序开始变大,最终需要至少拆分成如下几个部分
    • config.js 包括读入配置文件,初始化全局变量等等
    • battle.js 战斗主逻辑
    • chara.js 任务基本逻辑,属性计算逻辑

20130525

  • 使用enchant.js重写了基础类。包括Battle类和Chara类。
    • Battle类管辖战斗中所有操作。
    • Chara类主要是各单位的基本操作,包括基本动画的设定
  • 重新组织了架构。新的架构中:
    • Battle类在战斗中统管全局,包含一个Map类和多个Chara类。
    • 需要涉及超过单个类的方法都放到Battle类中去解决。
  • 目前完成的部分:人物的基本动画
  • 接下来的要完成的部分:
    • 地图相关函数。需要首先理解enchant.js中地图的实现和用法。
    • 状态显示框的构建及相关动画。
    • 基本的组合动画。移动->攻击->受伤->行动完毕
    • 基本的框架逻辑。我方行动->敌方行动->回合结束->下一回合...->战斗结束。