很久没做更新了。最近比较忙碌,手头的webgame也都放下。最近很想念我的小webgame了,回来继续写。
上篇玩玩webgame开发(3):自动战斗实现以及一些游戏细节(下)http://playfish.iteye.com/blog/267275
在高峰期时候发表的,结果被火速沉底了。。。汗
好了,不小心有说了好多废话,言归正传。
=============
数据结构设计是门高深的学问,而游戏的数据结构设计,那显然,也是一门很高深的学问(--||好废话。。),数据结构应该是整个游戏的骨架所在,而游戏数据平衡,(另一门高深的学问。。)跟这游戏的数据结构息息相关。本文只是从自己做的一个小游戏出发,简要的介绍一下我的一个简单的游戏的数据结构设计思路。
一个游戏几个基本的要素:
先从地图说起
游戏都在地图上进行的。地图的基本要素包括:地图元素(即每一个地图坐标格子上的元素),不可进入的位置等。其他的还包括一些基本信息。我的地图数据结构设计如下:
var defaultMap = {
mapName : '迷雾森林',
mapLevel: 1,
mapData : [
['f','t','t','t','t','t','w','f','r','f','w','f','r','f','r','f','t','t','r','f','r','t','t'],
['g','f','f','w','f','r','f','w','f','r','f','f','r','f','r','f','t','t','r','f','r','t','t'],
['g','f','f','f','f','w','f','r','f','w','f','r','f','r','f','r','t','t','r','f','r','t','t'],
['g','g','g','g','f','f','w','f','f','w','f','r','f','r','f','r','t','t','r','f','r','t','t'],
['g','f','f','f','r','f','w','f','r','f','w','f','r','f','f','r','t','t','r','f','r','t','t'],
['g','f','f','f','r','f','w','f','r','f','w','f','r','f','r','f','t','t','r','f','r','t','t'],
['g','f','f','f','r','r','f','w','f','f','w','f','r','f','r','f','t','t','r','f','r','t','t'],
['g','f','f','f','r','f','w','f','r','f','w','f','r','f','f','r','t','t','r','f','r','t','t'],
['g','f','f','f','f','w','f','r','f','w','f','r','f','r','f','r','t','t','r','f','r','t','t'],
['g','g','g','g','f','f','w','f','f','w','f','r','f','r','f','r','f','f','f','f','r','t','t'],
['g','f','f','f','r','f','w','f','r','f','w','f','f','f','f','f','f','f','f','f','r','t','t'],
['g','f','f','f','r','f','w','f','r','f','w','f','f','f','r','f','t','t','f','f','r','t','t'],
['g','f','f','f','r','r','f','w','f','f','w','f','r','f','r','f','t','t','r','f','r','t','t'],
['g','f','f','f','r','f','w','f','r','f','w','f','r','f','f','r','t','t','r','f','r','t','t'],
['g','f','f','f','f','w','f','r','f','w','f','r','f','r','f','r','t','t','r','f','r','t','t'],
['g','g','g','g','f','f','w','f','f','w','f','r','f','r','f','r','t','t','r','f','r','t','t'],
['g','f','f','f','r','f','w','f','r','f','w','f','r','f','f','r','t','t','r','f','r','t','t'],
['g','f','f','f','r','f','w','f','r','f','w','f','r','f','r','f','t','t','r','f','r','t','t'],
['g','f','f','f','r','r','f','w','f','f','w','f','r','f','r','f','t','t','r','f','r','t','t'],
['g','f','f','f','r','f','w','f','r','f','w','f','r','f','f','r','t','t','r','f','r','t','t'],
['g','f','f','f','r','f','w','f','f','w','f','r','f','r','f','r','t','t','r','f','r','t','t']
],
immovable: ['t','r']
};
这是个很简单的地图结构,包括的几个信息:地图名称,地图等级,地图元素,不可移动的位置。最后生成的展示效果如下(实际界面大很多,这里只是部分):
关于地图生成以及战争迷雾的部分,可以参看这个系列文章的前2篇。至于在地图上出现的物品,角色,怪物,建筑,并没有放在地图的数据里面,因为我觉得这是属于不同角色的数据,是应该分开的。这样的数据结构可以满足这样的需求:地图按照数据显示,对于指定的地图元素,角色不能进入。
接下来是游戏角色
var bobo = {
pos : {X:1, Y:1},
name : '拉拉',
money : 0, //新增加金钱
hp : 100, //full hp
curHp : 100, //current hp
level : 0,
exp : 19,
ap : 15, //attack power
def : 1, //defence
speed : 3,
luck : 15,
eyeshot : 2, //视野
type : 'bobo',
file : 'baozi',
img : $('<img class="bobo" title="拉拉" src="images/bobo/baozi/lv0/common.gif" />')
};
pos指角色在地图上的坐标,其它的就是一些常见的数据了,包括名称,金钱,满血hp,当前的hp,等级,经验,攻击,防御,速度,幸运,视野,其它的类型,文件,img属于我自己定义的一些结构,用于获得特定状态下的包子的图片。
设计一个这样的数据结构并不难,自己爱怎么设定就怎么设定,呵呵。不过关键的问题在于数据平衡,设置得很bt的数据可以开始玩的时候很爽,但是一结束玩家马上就会失去兴趣,所以,合适的数值以及成长曲线才会保证耐玩度。我个人是喜欢很小的数据,这样玩家自己计算的时候简单,而且数据平衡比较好做。我平时很经常玩一些war3的rpg,只要进去里面的人物或者是物品设定数字都是按百的,alt+q。顺便废话一下我喜欢的元素魔法之战这个。
怪物的数据设计
var monsters = [
{
id : 0,
name : '青蛙',
hp : 30,
curHp : 30, //记录怪物当前血量,战斗结束后自动回复为hp
level : 0,
exp : 5,
ap : 10,
def : 0,
speed : 5,
luck : 15,
type : 'monster',
file : 'qingwa',
items : [ //掉落物品
{id:0,drop:0.4}
],
img : $('<img class="monster" title="青蛙" src="images/monster/qingwa/lv0/common.gif" />')
}
];
和游戏角色的数据结构不同,它有额外添加1个id以及一个items数组,id表示怪物类型,因为怪物会在地图上出现很多不同种类的怪物,通过id来区分不同的怪物。items数组,表示这个怪物身上有多大的概率会掉那种类型物品。items数组内的id表示物品的id。
一个怪物需要分布在地图上的各个位置,我目前觉得最简单的方式就是:
var mapMonsters = [
{
pos : { X:1, Y:8 },
id : 0
},
{
pos : { X:5, Y:5 },
id : 0
},
{
pos : { X:4, Y:5 },
id : 0
}
];
哪个位置上哪个怪物,简单明了。
====未完待续,明晚继续
- 大小: 86.2 KB
- 大小: 5.1 KB
分享到:
相关推荐
- **地图结构设计**:地图是Webgame中非常核心的组成部分。一般情况下,会为每个地图设定一个唯一的ID(Map_ID),并通过坐标系统(X, Y)来表示地图上的各个位置。 - **城市模型**:除了地图之外,城市也是游戏中不...
资源名称:webgame网页游戏开发设计简明教程 中文WORD版本文档是webgame网页游戏开发设计简明教程;webgame程序构成:三大部分。第一是数据流程。第二是程序。第三是美术。其中,数据流程包括了功能。也只有在功能中...
开发Web游戏时,通常需要考虑性能优化、用户交互设计、网络通信以及数据同步等问题。 【压缩包子文件的文件名称列表】只给出了"wog3",这可能是游戏项目的简称或者是某个版本号。通常,一个Web游戏项目会包含多个...
文档的核心内容涵盖网页游戏开发的各个基础部分,包括数据流程、程序构成和美术设计。 2. 网页游戏的数据流程:网页游戏的数据流程是指在游戏中各种数据的流动和处理方式。它包括游戏的各种功能,如角色升级、物品...
【标题】"Webgame ASP JavaScript在线游戏源代码"揭示了这是一个使用ASP(Active Server Pages)技术和JavaScript编程语言构建的在线游戏平台的源码资源。ASP是微软开发的一种服务器端脚本环境,常用于动态网页的...
- **数据库设计**:合理的数据库设计对于Webgame来说至关重要,需要考虑到性能优化、数据安全等因素。 - **前端技术**: - **AJAX**:异步JavaScript和XML的缩写,可以实现局部刷新页面,提升用户体验。 - **...
【一个js的webgame引擎】是一个在2007年夏天研发的JavaScript游戏开发框架,专为构建Web游戏提供基础支持。尽管这个引擎在当时可能处于不完整状态,特别是其人工智能(AI)部分尚未实现,但我们可以从这个项目中探讨...
### 网页游戏开发入门教程(webgame design) #### 一、基础知识点概述 本教程旨在为初学者提供一个简单易懂的网页游戏开发入门指南,并为有经验的开发者提供一些新的启发。通过本教程,您将了解网页游戏开发的...
5. **后端开发**:后端服务器处理游戏逻辑、用户认证、数据存储等任务。比如,PHP或Node.js可以创建API接口,接收前端的请求,执行游戏规则计算,并将结果返回给前端。 6. **数据库设计**:游戏需要存储用户信息、...
它是面向对象的,支持类、接口和命名空间,使得游戏开发更加高效和结构化。 3. **Webgame源码**: 这个源码包含了开发网页游戏所需的核心组件,例如人物行走模块和地图动态加载。这些模块是游戏交互性和可玩性的重要...
1. **数据结构设计**:合理地规划游戏中的各种数据类型及其之间的关系,例如玩家信息、物品属性等。 2. **数据库交互**:通过SQL语句与数据库进行交互,实现数据的增删改查操作。比如,使用PHP+MySQL的方式进行数据...
"Unity开发的飞机游戏(WebGame)"这个项目表明,游戏是利用Unity3D引擎进行开发的,并且设计成可以在网页上运行的形式。WebGL是一种基于JavaScript的开放标准,允许在任何兼容的浏览器中直接运行3D图形,无需插件。...
《FLASH WEBGame 多人游戏社区:源码与服务端详解》 在互联网技术日新月异的今天,WebGame已经成为了人们休闲娱乐的重要方式之一。本资源提供了一个基于FLASH技术的多人在线游戏社区的完整源码和服务端,旨在帮助...
Flex提供了一些性能调优的技巧,比如减少不必要的重绘、优化数据结构、合理使用缓存等,开发者需要根据游戏的具体需求来应用这些技巧。 10. **游戏架构设计**:使用Flex开发游戏,还需要考虑如何组织游戏的架构,...
该文档描述部分重复了标题内容,没有提供额外的信息,但从整体来看,我们可以推断出此文档旨在深入解析WebGame大型游戏的设计与开发过程。 #### 二、故事情节与背景设定 **故事背景**:文档中提到了一个富有传奇...
《最终幻想webgame(access)》是一款基于网页的在线游戏,其源码可供学习和研究。这款游戏使用了big5编码,这是一种繁体中文字符编码,主要用于处理台湾、香港等地的中文文本。通过分析这款网页游戏的源码,我们...
【标题】"侠域网页游戏WebGame源代码" 涉及的知识点主要集中在网页游戏开发、PHP编程语言以及Web应用程序架构上。侠域网页游戏是一款基于Web平台的游戏,其源代码的公开提供了深入理解此类游戏开发过程和技术实现的...
同时,利用Web Storage和IndexedDB等技术,游戏可以将玩家数据存储在本地,实现进度保存和加载,增加了游戏的可玩性和用户体验。 JavaScript作为网页的脚本语言,在这个项目中起到了至关重要的作用。它负责游戏逻辑...
同时,创新和改良现有模式是区分竞争的关键,无论是通过添加新元素、改进现有机制,还是探索全新的游戏玩法。 总之,网页游戏开发是一门融合多种技术的艺术,开发者需要深入理解游戏模式,掌握关键系统的设计,并...