虽然没有什么项目的经验,但有时候很想和别人一起完成一个项目。尽管自己的水平很低,但喜欢把一些以前想过的东西都记下来吧,作为日后的灵感想法,这个是以前构想
Flash游戏项目
------------------------《XXXXXXXXX》
下载: http://files.cnblogs.com/hero82748274/Flash项目架构书.pdf
故事背景:
500年前,一个村庄里面住了一个很平凡的人,这个人叫平凡。 有一次,平凡在外旅途的时候见到一个村民被欺负,平凡出收相助了这个村民,但是恶龙不服气,心里面要挟村庄里面的村民。这时候,平凡为了拯救这村庄跟恶龙进行激烈的打斗。但是在打斗的时候,被一个村民人暗算了。这个村民叫背叛,平凡和恶龙进行了500回合的打斗,最后牺牲了。恶龙消失了,人们为了感谢纪念这个人,作了一个纪念碑叫勇士,勇士一直收获村庄。
但是恶龙从黑暗中醒来了,村庄也遭受到恶龙的继续破坏,这时候有一群自发组织的人,叫勇者,他们无谓恶龙的邪恶,和这恶龙进行一场激烈的打斗。
主角群:
主角
|
属性 |
|
勇士: 技能:左踢 |
|
勇士: 技能:右踢 |
|
勇士: 技能:一起踢 |
|
|
怪物群:
怪物 |
|
|
黑心的邪恶老板,特点黑色的心,黑色的容貌,黑色的脸, 武器:黑心刀 技能:杀无赦
|
开发项目类型:一款基于多人同时玩的在线大型Flash游戏
开发平台:
Flex builder 3。
基本系统:
消息处理系统、场景显示及行走系统、打斗系统三大主要部分。其中又以消息处理系统为核心模块,其余部分紧紧围绕它运行。
消息系统:处理游戏中不同的状态,游戏根据不同的状态作出不同判断。
场景显示:
行走系统:
打斗系统:打怪物的系统
其他系统:
职业系统,操作系统,世界系统, 角色系统,Ai系统;
职业系统:游戏中有不同的职业选择,会分派不同的技能。这些时候需要我们去考虑到职业系统。
操作系统: 游戏中玩家的操作流程。是玩家与用户交互的一种手段
世界系统:讲述游戏文化内涵
角色系统:玩家操作游戏人物进行游戏的人物;
Ai系统:游戏中的大脑中心;是宏观控制每一个角色进行活动的上帝;
游戏主类(GameMain类):
GameMain是游戏主入口:
1.初始化窗口:设置窗口风格
2.进入系统消息循环
WndProgress(message:int)
{
Switch(messgae)
{
case WM_Init:
//初始化窗口 ;
break
case WM_Paint:
//渲染窗口
break;
case WM_Close:
//退出系统
break;
case WM_KEY_DOWN:
//键盘事件
break;
}
Return 0;
}
项目开发主要类和类库包:
游戏主类(GameMain类):是游戏主程序入口
地图管理(MapManager包):用于加载和卸载地图等
物品管理(ItemManager包):用于管理道具物品,武器,套装等
声音管理(SoundManager包): 用于管理声音,包括加载音乐,设置音乐特效等
角色管理(CharacterManager包): 包括常见用于创建主角和配角
事件管理(EventManager包):每一个情节作为一个类进行管理
对白管理(WordManager包):用于管理语言,读取一些基本通知信息,npc说话
场景管理(SenceManager包):用于场景切换,更新场景,加载场景,卸载场景
通信管理(communionManager 包):socket通信,连接服务器的
操作管理(ControlManager包):用于设定游戏的操作键盘,和鼠标
游戏管理(GameManager包): 包括游戏设定,音乐,背景默认设定。
游戏Ai管理(AiManager包):设定怪物一些Ai,NPC一些行为
游戏效果管理(EffectManager包):管理一些招式效果类以及动画
游戏错误管理(ErrorManager包) 管理一些错误的情况
一 地图管理:(MapManager包)
这个包下有很多的类用于地图上的管理。包括基础类Map,功能加载地图,
Map类下有以下的方法:
实现方案:
方案1.元素构成的地图
将一些地图区分不同图片元件,将它绘制在场景里面。图片切割的大小按实际需要而定。
例如:主窗口是640x480 分辨率,切割每一块单元图片32x32 大小。那么图片单元数目为
20x15=300块。
如下面:
myMap = [ [1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1],
[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1],
[1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1]];
那么在这个数组里面其中 “1”代表图片1.“ 0”代表图片0
同样的话,为了使某一些障碍物和主角进行碰撞,在数组里面myMap 可以进行改变某一项的数值,这样可以用图片单元的隐含的信息进行判断。省去使用hittstobject 带来的计算量。
带来的影响:
优点:
可以重用很多的图片单元模块,减轻内存的占有率。
由于地图上的许多区块是共用的,因此需要另外建立一组资料来些元素的排列顺序,这个排列顺序的资料列,我们通常都将之称为地图资料。重复使用元件,减轻内存占有。
缺点:
切割的图片单元如果过多会对游戏产生一些效率性的问题?至于这些效率性的问题在切割图片的时候需要注意考虑。
基类:
Class Map
{