一、基于lufylegend引擎的魔塔游戏开发(设计介绍)

使用的引擎

lufylegend
也是第一次写rpg游戏,主要是兴趣使然
游戏体验地址(未完成)

游戏设计

  1. 游戏图层设计

    var layers = {
      back: null,
      mapview: null,
      things: null,
      effect: null,
      talk: null,
    };

    游戏图层分为了五层。
    分别是底层、地图层、物品层、数据展示层、对话层。

  2. 游戏数据存储

    globalData = {
      mapCol: 11,
      mapRow: 11,
      size: 32,
      floor: 0, 
      playerInfo: {
        HP: 1000,
        ATK: 10,
        DEF: 10,
        money: 0,
        XP: 0,
        status: 'ArrowDown',
        key: {
          yellow: 1,
          blue: 1,
          red: 1
        }
      },
      data: [{
        playerPosition: {
          x: 5,
          y: 10
        },
        map: [
          [1, 2, 2, 2, 2, 0, 2, 2, 2, 2, 1],
          [1, 2, 2, 2, 2, 0, 2, 2, 2, 2, 1],
          [1, 2, 2, 2, 2, 0, 2, 2, 2, 2, 1],
          [1, 2, 2, 2, 2, 0, 2, 2, 2, 2, 1],
          [1, 2, 2, 2, 2, 0, 2, 2, 2, 2, 1],
          [1, 2, 2, 2, 2, 0, 2, 2, 2, 2, 1],
          [1, 1, 2, 2, 2, 0, 2, 2, 2, 1, 1],
          [1, 1, 1, 1, 1, 0, 1, 1, 1, 1, 1],
          [3, 1, 3, 1, 0, 0, 0, 1, 3, 1, 3],
          [3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 3],
          [3, 3, 3, 3, 3, 0, 3, 3, 3, 3, 3]
        ],
        things: [
          [0, 0, 0, 0, 0, "goods_0_1", 0, 0, 0, 0, 0],
          [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
          [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
          [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
          [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
          [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
          [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
          [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
          [0, 0, 0, 0, "npc3", 0, 0, 0, 0, 0, 0],
          [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
          [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        ]
      }]
    }

    将游戏涉及的所有数据存放到一个对象中,可以在后期很方便的做游戏进度保存。
    其中playerInfo为角色的属性信息。
    data为所有地图的信息

  3. 配置文件
    因为物品的功能和怪物的属性是不固定的,所以需要手动编辑怪物的属性以及定义物品拾取的handel方法

    var configGoods = {
      'goods_0_0': {
        x: 0,
        y: 0,
        handel: function() {
          globalData.floor--;
          gameInfo.floor.text = '第' + globalData.floor + '层';
          drawInit();
        }
      }
    }
    
    var configChara = {
      'monster0': {
        y: 6,
        HP: 50,
        ATK: 20,
        DEF: 1,
        money: 1,
        XP: 1
      }
    }
    原文作者:zuank
    原文地址: https://segmentfault.com/a/1190000010667868
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞