`
playfish
  • 浏览: 289528 次
  • 性别: Icon_minigender_1
  • 来自: 福州
社区版块
存档分类
最新评论

玩玩webgame开发(4):游戏数据结构设计

阅读更多

很久没做更新了。最近比较忙碌,手头的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开发简明教程

    - **地图结构设计**:地图是Webgame中非常核心的组成部分。一般情况下,会为每个地图设定一个唯一的ID(Map_ID),并通过坐标系统(X, Y)来表示地图上的各个位置。 - **城市模型**:除了地图之外,城市也是游戏中不...

    webgame网页游戏开发设计简明教程中文WORD版

    资源名称:webgame网页游戏开发设计简明教程 中文WORD版本文档是webgame网页游戏开发设计简明教程;webgame程序构成:三大部分。第一是数据流程。第二是程序。第三是美术。其中,数据流程包括了功能。也只有在功能中...

    webgame(最终幻想)源码

    开发Web游戏时,通常需要考虑性能优化、用户交互设计、网络通信以及数据同步等问题。 【压缩包子文件的文件名称列表】只给出了"wog3",这可能是游戏项目的简称或者是某个版本号。通常,一个Web游戏项目会包含多个...

    PHP5网页游戏开发入门教程(webgame+design)

    文档的核心内容涵盖网页游戏开发的各个基础部分,包括数据流程、程序构成和美术设计。 2. 网页游戏的数据流程:网页游戏的数据流程是指在游戏中各种数据的流动和处理方式。它包括游戏的各种功能,如角色升级、物品...

    webgame asp javascript在线游戏源代码

    【标题】"Webgame ASP JavaScript在线游戏源代码"揭示了这是一个使用ASP(Active Server Pages)技术和JavaScript编程语言构建的在线游戏平台的源码资源。ASP是微软开发的一种服务器端脚本环境,常用于动态网页的...

    webgame开发简明教程(经典)

    - **数据库设计**:合理的数据库设计对于Webgame来说至关重要,需要考虑到性能优化、数据安全等因素。 - **前端技术**: - **AJAX**:异步JavaScript和XML的缩写,可以实现局部刷新页面,提升用户体验。 - **...

    一个js的webgame引擎

    【一个js的webgame引擎】是一个在2007年夏天研发的JavaScript游戏开发框架,专为构建Web游戏提供基础支持。尽管这个引擎在当时可能处于不完整状态,特别是其人工智能(AI)部分尚未实现,但我们可以从这个项目中探讨...

    网页游戏开发入门教程(webgame design)

    ### 网页游戏开发入门教程(webgame design) #### 一、基础知识点概述 本教程旨在为初学者提供一个简单易懂的网页游戏开发入门指南,并为有经验的开发者提供一些新的启发。通过本教程,您将了解网页游戏开发的...

    webgame网页游戏斗地主源码

    5. **后端开发**:后端服务器处理游戏逻辑、用户认证、数据存储等任务。比如,PHP或Node.js可以创建API接口,接收前端的请求,执行游戏规则计算,并将结果返回给前端。 6. **数据库设计**:游戏需要存储用户信息、...

    webgame网页游戏源码

    它是面向对象的,支持类、接口和命名空间,使得游戏开发更加高效和结构化。 3. **Webgame源码**: 这个源码包含了开发网页游戏所需的核心组件,例如人物行走模块和地图动态加载。这些模块是游戏交互性和可玩性的重要...

    网页游戏开发设计简明教程

    1. **数据结构设计**:合理地规划游戏中的各种数据类型及其之间的关系,例如玩家信息、物品属性等。 2. **数据库交互**:通过SQL语句与数据库进行交互,实现数据的增删改查操作。比如,使用PHP+MySQL的方式进行数据...

    Unity开发的飞机游戏(WebGame)

    "Unity开发的飞机游戏(WebGame)"这个项目表明,游戏是利用Unity3D引擎进行开发的,并且设计成可以在网页上运行的形式。WebGL是一种基于JavaScript的开放标准,允许在任何兼容的浏览器中直接运行3D图形,无需插件。...

    FLASH WEBGame 多人游戏社区(源码+服务端)

    《FLASH WEBGame 多人游戏社区:源码与服务端详解》 在互联网技术日新月异的今天,WebGame已经成为了人们休闲娱乐的重要方式之一。本资源提供了一个基于FLASH技术的多人在线游戏社区的完整源码和服务端,旨在帮助...

    使用Flex框架开发WebGame

    Flex提供了一些性能调优的技巧,比如减少不必要的重绘、优化数据结构、合理使用缓存等,开发者需要根据游戏的具体需求来应用这些技巧。 10. **游戏架构设计**:使用Flex开发游戏,还需要考虑如何组织游戏的架构,...

    WebGame大型游戏架构书

    该文档描述部分重复了标题内容,没有提供额外的信息,但从整体来看,我们可以推断出此文档旨在深入解析WebGame大型游戏的设计与开发过程。 #### 二、故事情节与背景设定 **故事背景**:文档中提到了一个富有传奇...

    最终幻想webgame(access)

    《最终幻想webgame(access)》是一款基于网页的在线游戏,其源码可供学习和研究。这款游戏使用了big5编码,这是一种繁体中文字符编码,主要用于处理台湾、香港等地的中文文本。通过分析这款网页游戏的源码,我们...

    侠域网页游戏WebGame源代码

    【标题】"侠域网页游戏WebGame源代码" 涉及的知识点主要集中在网页游戏开发、PHP编程语言以及Web应用程序架构上。侠域网页游戏是一款基于Web平台的游戏,其源代码的公开提供了深入理解此类游戏开发过程和技术实现的...

    js(HTML RPG WEBGAME,纯网页游戏,完整版

    同时,利用Web Storage和IndexedDB等技术,游戏可以将玩家数据存储在本地,实现进度保存和加载,增加了游戏的可玩性和用户体验。 JavaScript作为网页的脚本语言,在这个项目中起到了至关重要的作用。它负责游戏逻辑...

    网页游戏开发入门教程II(webgame游戏模式)

    同时,创新和改良现有模式是区分竞争的关键,无论是通过添加新元素、改进现有机制,还是探索全新的游戏玩法。 总之,网页游戏开发是一门融合多种技术的艺术,开发者需要深入理解游戏模式,掌握关键系统的设计,并...

Global site tag (gtag.js) - Google Analytics