zoukankan      html  css  js  c++  java
  • 移动终端网页游戏移植研发框架【客户端战斗系统】

         传统网页游戏中的战斗系统无非两种,服务器端请求数据资源后,在游戏中进行配置,然后以动画形式表现出来。诸如十年一剑这类网游,战斗系统就是,靠装备+技能配置+家将辅助。在这里我想说决定一款游戏是否好玩,关键就在2个地方,游戏性【新颖的系统,和各种创新玩法】和交互性。所以我们除了要有研发游戏技术,还要有研发游戏的点子。做出什么样的系统才能吸引玩家?我们的游戏中,战斗系统算是一个小亮点,和大多文字类型游戏一样,通过玩家请求打怪,获得打怪数据,只不过将打怪数据图层化,界面化。

        下面我介绍一下我们游戏里面的战斗系统结构和框架:

        首先是视图:

        由于是在手机界面上,手机的屏幕大小是我们做游戏最大的局限,有非常好的场景和美工,但缺无处施展开来!所以我在做战斗系统的时候将地图背景区域化,局部显示,然后利用android手机滑动特性,让然家自由查看战斗场景中的每一个细节部分!

    这使我们战斗系统中的战斗背景图,很明显中间的竞技台就是玩家们厮杀的战场!我们要将玩家和怪物实体化,将玩家的造型,和怪物的造型实例化出来。简单的看一下游戏中的制作界面,和需求:

         在战斗界面中 需要有

        1人物造型

        2人物属性,包括血条显示,属性值显示

        3人物技能展示

        4战斗信息框

        这4个部分就构成了一个完整的整个战斗系统。

    最后就是详细说一下我们的技能显示,这点也是整个游戏中的一大玩点。首先详细秒速一下绿色背景区域,就是我们的技能显示区域,技能显示展示方法我们不是用andorid的控件和工具,我们是自己做的一套帧动画播放机制,android JAVA里面的Timer 使我们技能发招的大功臣!

     Timer timer ;
        Runnable runanble;
    	private int j = 0;
        //技能播放
        public void onplay(final String nowskillname,final String nowlife,final Boolean nowpkdxflag) {
        	timer = new Timer();
    		timer.scheduleAtFixedRate(new TimerTask() {
    			@Override
    			public void run() {
    				// TODO Auto-generated method stub
    				nowSkillName =nowskillname;
    				nowLife=nowlife;
    				nowPKdxflag = nowpkdxflag;
    				j++;
    				Message mesasge = new Message();
    				mesasge.what = j;
    
    				if(j<=5)
    				{
    					playerhandler.sendMessage(mesasge);	
    					
    				}
    				else
    				{
    					j=0;
    					timer.cancel();
    					close_Skill();
    					playerhandler.removeMessages(j);
    				}
    			}
    		}, 0, 200);
    	}
    	public class DelayThread extends Thread {
    		int milliseconds;
    
    		public DelayThread(int j) {
    			milliseconds = j;
    		}
    
    		public void run() {                                                                                                                                                                                                                                                                                                                 
    			while (true) {
    				try {
    					sleep(milliseconds);
    				} catch (InterruptedException e) {
    					// TODO Auto-generated catch block
    					e.printStackTrace();
    				}
    
    				playerhandler.sendEmptyMessage(0);
    			}
    		}
    	}
    	private Handler playerhandler = new Handler() {
    		@Override
    		public void handleMessage(final Message msg) {
    			TApp.getActivity().runOnUiThread(new Runnable() {
    				@Override
    				public void run() {
    						//释放技能
    				}
    			});
    		}
    	};
    

     然后通过线程来跑技能释放动画,动画取材思路我就不说了,我们的算法就是帧组合,取出不同帧来呈现。

       最后说一下数据结构,通过以上的模块,组合起来的战斗效果只能说达到了高仿实景PK的界面,但是流畅度和画面的展现形式还有待提高的。

       下面展现一下最新的一组战斗图片:

       我们通过山河社稷图找到地图上的练级地图,进入1-10级地图:

       

       之后进入地图场景,场景上面的怪物和NPC都是流畅可见的。怪物和NPC其实目前其实就是精灵系统,现在精灵系统上面的元素还比较少,不过要是做动作,对话,还是可以简单实现的。

       

      最后就是点击怪物,然后弹出战斗提示,进入战斗场景!!开始战斗!!

      

    这就是整个战斗系统的具体流程,及游戏的玩法!!从界面效果上看,基本上是能达到实景界面PK的模式,而且通过局部显示,玩家可以查看战斗中的每一个场景点。

    如果有喜欢我们这款游戏的朋友,可以加群【剑神客栈研发组:45578308】。一起讨论,策划游戏!

  • 相关阅读:
    使用VMware Workstation安装win7镜像文件时遇见的错误
    每次启动懂maven项目都必须关闭javaw.exe进程
    laravel excel导出调节列宽度,对某列中数据颜色处理
    三个<li>元素放一行
    php中bootstrap框架.popover弹出框,鼠标移动到上面自动显示,离开自动消失
    锚点,自动跳转到某处
    WdatePicker控件Javascript取得当前时间、取得减30分钟时间
    (mysql数据库报错)The user specified as a definer ('root'@'%') does not exist
    c# tcp协议发送数据
    c# 键值对的方式post提交
  • 原文地址:https://www.cnblogs.com/zisou/p/jskz5.html
Copyright © 2011-2022 走看看