合金弹头技术文案

news/2024/11/18 13:54:30/

 合金弹头技术文案

平台:
利用System.getProperty("microedition.platform")来判断平台类型

I/O
建立流连接的方式很奇怪,经过讨论初步猜测是遇到了什么技术问题因而写出了这么乱七八糟的代码(源引Gameloft Lyman)
protected final InputStream stream_create(String filename){
  InputStream in = getClass().getResourceAsStream(filename);
  while(in == null) in = getClass().getResourceAsStream(filename);
  return in;
}

图片利用GIF89a这种文件格式,下列代码说明一定有图片数据转换工具可以随意转换图片格式
    byte[] gifdata = new byte[readWord(in)];
    in.read(gifdata, 6, gifdata.length - 6);
    System.arraycopy("GIF89a".getBytes(), 0, gifdata, 0, 6);
    tank_face = Image.createImage(gifdata,0, gifdata.length);

动画:
已经有了动作,帧和Module的概念,也有了碰撞盒子和攻击盒子,但Module数量是写死的,看来动画工具还不够完善

架构
process_set用来关闭状态,转状态和初始化状态,而且调用灵活,这种方式不错
refresh分散在各函数调用,使得游戏结构分散不统一
按键处理在keyPressed直接处理,造成程序结构中有三处switch状态处理,结构比较臃肿。有了key_Statuse把按键部分提出的做法,但还不彻底
mainmenu_execute的命名不错,过去我都写作chooseMenu,呵呵
没有引擎类做支持
process_lock用来控制paint和run是否处理,个人认为没有这个必要

声音:
用诺基亚的声音,处理方式一般

游戏部分:
图像动画:
drawFace是游戏的主要图像显示函数,用alpha_draw里用drawPixels来做淡入淡出是图像显示的亮点
已经有了hero_setaction的概念,但是因为架构在数组上的缘故,所以无法完全将所有Actor统一为setAction接口
在游戏中经常直接操作帧数据,未将动画层完全分离
利用movi_create来创建动画播放是一个比较好的做法

背景:
三层卷动,未用缓冲。back_draw用来画天空背景,fact_draw_back用来画底层地表Tile,fact_draw_fore用做遮挡主角的那部分Tile

关卡
游戏中人为将关卡分段,用plat_next来判断读取存储在plat.bin中的关卡数据,这样可以有效的降低关卡在内存占用量

碰撞检测:
与地形的碰撞主要是采用grid_cellvalue函数来获得,然后做判定、调整,例如:
  if(((grid_cellvalue(x, y - 1) == 1) || (grid_cellvalue(x, y - 1) == 2)) &&
    (grid_cellvalue(x, y - 2) == 0)) hero_pos_y -= 8;
主角未与敌人做碰撞检测,敌人间也可以互相穿梭,未作碰撞检测,大大降低了游戏复杂度和碰撞检测的花费
与道具的碰撞可能是为了加快速度,游戏中未使用统一碰撞函数,而是直接写在各函数内,比如
    if((prop[PROP_POS_X] + (PROP_POS_W >> 1) > hero_pos_x - hero_frectw) &&
      (prop[PROP_POS_Y] > hero_pos_y - hero_frectt) &&
      (hero_pos_x + hero_frectw > prop[PROP_POS_X] - (PROP_POS_W >> 1)) &&
      (hero_pos_y + 11 > prop[PROP_POS_Y] - PROP_POS_H))
利用hero_nexus来做主角于子弹的碰撞检测(为什么不做个统一的碰撞检测函数)
将各种类Actor分类写在各Vector里可以有效减少碰撞判定次数

AI:
敌人根据预先设好的模式属性来做相应的AI,有主角靠近逃跑模式,来回移动等待攻击模式,来回飞行攻击模式等。根据自身模式属性,大体依据与主角距离来产生相应动作。模式是游戏AI较常使用的方式。

技巧:
主角状态常数,分两部分,字节低位大状态,高位字节小状态。然后用&来与大状态做运算,取小状态的做法比较新颖
changeCRC和updateCRC用来计算图片CRC校验码的方式比较实用

架构:
整个架构架构在数组之上,使用常量做标识,各个Actor更像是C语言里的结构类型。


总的来讲合金弹头这个游戏写的还是不错的,注释清楚,各状态转换明确,代码层次结构清晰。但是由于主角未与敌人做碰撞检测,敌人自身也未做碰撞检测,游戏复杂度不高.与彩虹六号、第一滴血、帝国时代等差距相当明显。目前国内的开发水平也可窥见一斑。


http://www.ppmy.cn/news/392943.html

相关文章

合金弹头7

合金弹头7下载 1口袋妖怪:钻石356602极品飞车10:卡123553合金弹头7122754极品飞车9:最高117905机动战士高达OO94506火影忍者疾风传67457...合金弹头7 更多相关下载 >> 其他站点下载: 推荐使用迅雷下载 迅雷http下载 网际快车下载 下载须知: *部分软件. 合金弹头7下载_ …

Windows 10日语输入法无法输入假名问题

换了个电脑装日语输入法,一直只能输英文字母打不了字,记录下解决方法。 选语言首选项 日本语 -> 选项 微软输入法 -> 选项 高级设置 将下面的罗马字输入改为假名输入即可 也可以选日英文混合,把下面都勾上,可以日文英文切换…

日语输入法切换-「かな入力」「ローマ字入力」切换方法

常见的日语输入法有两种,一种叫ローマ字入力,跟我们的汉语拼音比较像, 还有一种是かな入力,我感觉跟我们的五笔比较像,这玩意儿在车站售票机,银行ATM上比较常见,平时的话,用的比较多…

Google日文输入法的一个问题

使用了一下最近出来的0.8版,觉得还是很好用的。很多常用的句子、人名,都能直接匹配出来。 下载地址: http://www.google.com/intl/ja/ime/ 唯一感到有些不好的地方就是它的内存占用的有些高,40M ~ 50M左右。

Ubuntu下安装日语输入法

你可以安装ibus-anthy或者fcitx-anthy, 在语言支持项中分布需要 IBus 或者 fcitx. 1 . 命令行安装 sudo apt-get install ibus-anthy 或者 sudo apt-get install fcitx-anthy 然后重启, 重启之后在Text Entry就可以找到anthy的输入法选项了. 2. 在语言支持选项中添加 a…

android 输入日语 外键盘,日语外来语怎么用键盘输入

在日语的学习过程中,为了能更好的使用日语交流,在手机或电脑上安排日文输入法很常见。那么,大家知道日语外来语怎么用键盘输入吗? 举例: 1、怎么打出ウィ? 罗马字输入:uxi 2、怎么打出ァ、ィ、ゥ…

计算机系统是日语,如何在计算机系统中添加日语输入法

如何添加和删除XP的内置输入法 XP系统无法添加日语输入法 如何为每个Windows系统版本修改所需的输入法 如何安装王码五笔输入法 如何为每个国家/地区添加输入法 如何安装王码五笔输入法 首先,在Windows Vista中添加日语输入法 1. 请在开始菜单中选择控制面板&#x…

日语中的长音用输入法怎么打

最近在看一下日语,想学下日语了解下日本这个国家。首先从平假名、片假名看起。大学时候就动过学日语的想法,奈何到最后变成 五十音图这一关都没过,现在则是重新来过,从五十音开始,啃了大概半个月。现在勉强记得五十音。…