美高梅4688.com【Unity3D】3D游戏学习

前面两篇有关小说:

 

Web Api
内部数据思考 和 利用http缓存优化
Api

1.明亮游戏成分,简单回答以下难点:

  1.1简便介绍一款上世纪(19XX)出品的总括机游戏,然后按课件的不二法门描述游戏的三个着力要素。(讲目标、玩法、规则)


 

  1.1.1仙剑奇侠传
《仙剑奇侠传》是由中国黑龙江大宇资讯股份有限集团旗下发行的系统单机电脑游戏,第
一连串产品于1995年三月,在及时堪称旷世奇作。
七个宗旨成分:
1.goal:玩家以从李逍遥的看法切入去体验生动有趣的情节,要求的时候选用一些属
性和大势(只怕造成区其余结局),除去消磨时光之外,收获故事波澜起伏的快感以及
迎来的后果。

2.rules:

美高梅4688.com 1

3.challenge:游戏中有为数不少迷宫和一些情节boss,突破一个个难度越来越大的迷宫以
及战胜boss,得到三番五次前行使人得到极大的情感满意感。
4.policy(meaningful chioce/ limited-rational
chioce):在娱乐情节推进的经过中,有一部分
选拔完全依靠于玩家的无理选择,包涵人物属性的养成,这个拔取将只怕造成不一致的结
局,符合不相同用户的挑三拣四需要。
5.setting&story:(新仙剑奇侠传)依据部分取舍不一样,只怕接触隐藏结局。玩家玩仙剑奇侠传大多是为着谋求结局,情节的卓绝程度不亚于火热的小说。在即时还算新奇的
游戏内部世界观,似身当其境般的剧心绪受,抓住了诸多玩家的心。

6.案例研商
先验条件:玩家的表决会造成发生分裂的故事主线。有无使用攻略
共谋危害:否
一心音信:否
全盘音信:否
对称音信:是(没有拔取攻略等的时候)


 

1.1.2扫雷
扫雷是1992年发行的一款Renault类益智小游戏。
1.游戏对象
在最短的小时内依照点击格子出现的数字找出装有非雷格子,幸免踩到雷区。
2.玩法:
有通过数字指示推理出非雷区,以最快的日子找出装有的非雷区并左键单击。
3.规则:

美高梅4688.com 2

4.challenge
玩家在做到扫雷的进度中,彰显了智慧的竞技,拿到心境满足。
5.policy
分难度自由设置满意了分裂玩家的需求。
6.案例探讨
先验条件:游戏复杂度
共谋危机:否
一齐音信:否
应有尽有新闻:否
对称消息:是


1.2增选一个你以为最值得发展的一日游选取新兴行业(不包含enjoyment,education,sports),描述一个玩耍案例。
看病服务市场。
打闹案例:不难介绍该游戏,给出分类(交互设备与技能、题材、平台… …
…)
Reflexion Health, Inc. ——针对理疗的MS
Kinect。产品名字为Vera,有助于康复治疗的类体感游戏。

1.2.1简短介绍:(介绍游戏的功力)
总部放在迈阿密的Reflexion
Health将其支付的情理治疗练习程序嫁接在微软体感游戏设备上,借用Window操作系统,让物理治疗变得好似游戏。基于微软Kinect的Windows系统,Reflexion
Health提供物理治疗方案,它的产品名称为维拉,具有交互式和娱乐特征,可以借此促使患者持之以恒达成物理治疗训练。维拉提要求患儿陶冶指导摄像和游戏设备,Vera还将病者的练习进程新闻呈报给他俩的大夫。Reflexion期望维拉能协助人们在血液科手术复原上升高功用、下降本钱。

1.2.2分类:
交互技术(interaction):Kinect
难题(genre/type):体感游戏
平台(platform):电视
玩家(players):须要做康复练习的人
视角:无
网络(internet):在线

1.2.3新闻与仲裁
先验条件:是还是不是正常
共谋危害:否
完全音讯:否
应有尽有信息:是
对称音信:是


 

1.3简介一个你认为最非凡的游玩,并交付1-3条吸引你的理由。
比较美丽的娱乐有方今酷暑的MOBA手游之一——王者荣耀。
理由1:人物设计美丽,形形色色的天职切合群众的审美;人物组成、人物自己的技能的例外应用和装备符文等差距、玩家的默契程度、操作以及政策等驱动游戏风云变幻。

美高梅4688.com 3

理由2:玩法上虽与MOBA类游戏黄石小异,但入门相比较不难、有1V1,3V3,5V5以及打闹形式,设备须求简单,考虑到手游的特殊性,简化了好多操作,时间上比端游少了广大,使得在大哥大上可见好好运转玩耍。
理由3:音效顺耳,特效良心,画面卓殊细致精美,人物原型和轶事设定大多接近历史,排位赛,段位机制照顾了不一样玩家的操作等技能差距,无论最后胜负,双方都有MVP可评,避免弱势一方懈怠游戏。


 

2.用简单的语言和一些图片表达游戏的创意。
名称:楚汉之争
表明:首要图片来源王者荣耀,游戏改编自王者荣耀,不雷同的玩法。
2.1玩耍背景(setting)
秦政权终结,意味着西楚霸王、汉高帝等起义的尾声胜利。由于汉太祖超过入关,依照约定应为关中王,但反秦功劳最大的项王自主分封十八诸侯王,因分封导致不可胜言将领不满,因而拉开了楚汉之争的大门。楚汉之争,从公元前206年2月至公元前203年十十一月,紧要由西楚霸王、好记星汉高帝主导争夺政权,集结能人异士在此时期举行了累累广阔的战事。历史上的霸王楚霸王成为政治的旧货,自刎于江东,引人无限扼腕。近来,历史流转,时光再次出现,作为楚汉之争的一员,你会什么挑选?冲锋陷阵支持将帅夺得胜利亦或引导全军直取敌军防线。

2.2玩法
玩家分段位,段位相同者之间进行任意匹配只怕独立组队参预。红黑相争,5V5英豪+兵线战,一共分上中下三路。身处草地视野不可见,河流减速减防,中间为狩猎区,青黄野怪为法术加成,水晶绿野怪为生命加成,击杀黑蛇全队升格攻击10%,击杀红蛇全队升格生命10%。
两边各有一人为管事人,红方将领为大校,黑方将领为新秀,有对应的属性加成。将领离开营地应战之后,全军视野均不可知。将领在本部时,可以考察到有小编军一定范围内的战斗景况。将领可以分配一些小兵去差其余途径,可供分配的数目与武将的领导力相关,领导力为5,则一波小兵出现后可分配数量为5。

2.3迎战场景示例(大多数图改编自王者荣耀):

美高梅4688.com 4

2.4玩法图解

美高梅4688.com 5

2.5人选分类
人选:(每一个人物都有协调越发的技巧,以及作为将领亲上战场后获取的例外技能)
谋士:张良、范增、刘邦
上将:项羽、英布、钟离眛、季布
战士:章邯、彭越、灌婴、周勃、仓海君
刺客:田儋、田荣、田横、韩信
守卫:樊哙、龙且、虞子期
说客:萧何、项伯

2.5.1部分人物示例:上校楚霸王  领导力:8
——当作为将领时,冲出营地攻击+25%,周围士兵攻击+15%,己方豪杰生命最大值+10%,得到破斧沉舟(全军指挥技能,可将有所兵线和己方铁汉弹指移集合于自个儿周围)

 

美高梅4688.com 6

2.8游玩特色
1.玩法较古板5V5铁汉战升级不少,考验作为将领者对时局的辨析以及团体英豪调度合作,不一致的两肋插刀有着差其余技艺与玩法。
2.人员设计可以、技能设置紧贴历史。
3.角色成千成万,场景设置可以,画面细腻,不难上手。
4.玩家分支位匹配,符合不一致能力玩家的要求
5.足以组队玩耍,增添了集团默契度。

 

Web Api 端点设计 与
Oauth

 

1.绽放的接口

诸如此类的接口我们时刻都在触发,例如查快递,你查天气预告,你查飞机,轻轨车次等,那些都以有集体的接口。

诸如腾讯的开放平台:

<?php

/**
 * OpenAPI V3 SDK 示例代码,适用于大部分OpenAPI。如果是上传文件类OpenAPI,请参考本SDK包中的“Test_UploadFile.php”文件中的示例代码。
 *
 * @version 3.0.4
 * @author open.qq.com
 * @copyright © 2012, Tencent Corporation. All rights reserved.
 * @History:
 *               3.0.4 | coolinchen | 2012-09-07 10:20:12 | initialization
 */


require_once 'OpenApiV3.php';

// 应用基本信息
$appid = 100657839;
$appkey = 'b96b85196a04ff2ef08707f43979db15';

// OpenAPI的服务器IP 
// 最新的API服务器地址请参考wiki文档: http://wiki.open.qq.com/wiki/API3.0%E6%96%87%E6%A1%A3 
$server_name = '119.147.19.43';


// 用户的OpenID/OpenKey
$openid = 'E098C1E975A2459E534B48FB3224CFB6';
$openkey = '05219DB6D7C04CA0B3F01A51D32635E3';

// 所要访问的平台, pf的其他取值参考wiki文档: http://wiki.open.qq.com/wiki/API3.0%E6%96%87%E6%A1%A3 
$pf = 'qzone';


$sdk = new OpenApiV3($appid, $appkey);
$sdk->setServerName($server_name);

$ret = get_user_info($sdk, $openid, $openkey, $pf);
print_r("===========================\n");
print_r($ret);

/**
 * 获取好友资料
 *
 * @param object $sdk OpenApiV3 Object
 * @param string $openid openid
 * @param string $openkey openkey
 * @param string $pf 平台
 * @return array 好友资料数组
 */
function get_user_info($sdk, $openid, $openkey, $pf)
{
    $params = array(
        'openid' => $openid,
        'openkey' => $openkey,
        'pf' => $pf,
    );

    $script_name = '/v3/user/get_info';
    return $sdk->api($script_name, $params,'post');
}

 

2.接口参数加密(基础加密)

表明互相约定好的key,验证通过,即可调用api。

  /**
      * 签名验证
      * 
      * @version 2017-08-14 
      */    
     function checkSign( $dataAry )
     {
        if(GAME_KEY == $dataAry['sign']) {   //GAME_KEY为 项目中的key , sign 为传递过来的签名,简单的验证是否对等,便通过
            return true;
        }

        return false;
     }

   //验证签名 不通过直接返回
     if(!checkSign($paramsAry)) {
        $retCode = 105;
        echo makeReturn($paramsAry,$retCode);
        exit();
     }

 

那规范做的毛病如下:

1
假使不小心把key走漏,那么很不难被客人调用接口

2
开发者平常把sign附带于URAV4L中展开呼吁,那样子简单被获取到UEnclaveL请求参数,进而得到sign

狠抓艺术:

1
把U本田CR-VL请求参数举行base64为加密后再请求,或其余加密方法,将呼吁参数举行加密后,再请求

2 限制可伸手接口的ip
【一般用来充值等高防备的接口中】

 

3.变换的接口参数加密【较为安全】

key
不会永远皆以安全的,也有或然被泄漏,那么大家可以怎么办吧?我们得以变动变换的签署sign,且救助其他参数举办排序变化加密

例如对持有的参数(加上岁月戳),依照首字母进行排序后,进行md5或sha加密,那时候每便变更的sign都是生成的,其余人尽管拿到了key,如若不了然排序格局与加密方法,那么是心有余而力不足算出sign的。

例如:

/**
     * 生成签名
     * 
     * @param $params 参数列表 数组 array('param1'=>'value1','param2'=>'value3',...)
     * @param $key 密钥 默认从配置文件取(GAME_KEY)
     */
    function genSign($params,$key='')
    {
        if($key == '') {
            $key = GAME_KEY;
        }    
        //过滤空值
        $paraFilter = array();
        while (list ($k, $v) = each ($params)) {
            if($k == 'sign' || $v == '')continue;
            else    $paraFilter[$k] = $params[$k];
        }

        //升序排列数
        ksort($paraFilter);
        reset($paraFilter);

        //生成参数字符串
        $paramsString  = "";
        while (list ($k, $v) = each ($paraFilter)) {
            $paramsString.=$k."=".$v."&";
        }
        //去掉最后一个&字符
        $paramsString = substr($paramsString,0,count($paramsString)-2);        
        //如果存在转义字符,那么去掉转义
        if(get_magic_quotes_gpc()){$paramsString = stripslashes($paramsString);}

        //加上key,进行md5
        $paramsString .='&key='.$key;
        $sign = md5($paramsString);

        return $sign;
    }

可抓牢点:

1
尾巴带上双方约定好的key,再拓展md5与sha同时加密

2
url参数同时也要举行base64恐怕其余加密,例如最终能看出的伸手url为:

http://www.example.com/pay.php?data = SDDLKFKDKFLDHOIDHSALFSALDJALDSSALKJLDJSALDMSA

3
不要肯定的提示紧缺什么参数,而且规范的施用错误码。

 

4 .
变换的接口参数加密 + ip验证【非必须】 + 时效性检查 + https
【安全性高】

只有一定的ip,才同意请求这些接口:

/**
 * 获取客户端IP地址
 *
 */
function getIp()
{
    $realip='';
    if (isset($_SERVER)){
        if (isset($_SERVER["HTTP_X_FORWARDED_FOR"])){
            $realip = $_SERVER["HTTP_X_FORWARDED_FOR"];
        } else if (isset($_SERVER["HTTP_CLIENT_IP"])) {
            $realip = $_SERVER["HTTP_CLIENT_IP"];
        } else {
            $realip = $_SERVER["REMOTE_ADDR"];
        }
    } else {
        if (getenv("HTTP_X_FORWARDED_FOR")){
            $realip = getenv("HTTP_X_FORWARDED_FOR");
        } else if (getenv("HTTP_CLIENT_IP")) {
            $realip = getenv("HTTP_CLIENT_IP");
        } else {
            $realip = getenv("REMOTE_ADDR");
        }
    }

    return $realip;
}

if(getIp() != '特定的ip'){
  echo makeReturn($paramsAry,$retCode);
    exit();
}

开展时效性检查:

    /**
     * 检查是否url过期
     * @param int $ts 时间戳
     * @param int $limitTime 有效期:默认为5分钟
     * @return string or boolean 成功且对方有返回值则返回
     */
    function checkTime($ts, $limitTime='300')  // 5分钟的有效期
    {
        $sencond = abs(time()-$ts);
        if ($sencond<=$limitTime)
        {
            return true;
        }
        return false;
    }

HTTPS那块相对比较费心,我们项目所用的是免费版本的,所以经常弹出验证框。前面终于买了个收费版本,用起来挺好。

4 .
总结

在安康的同时,要基于工作拓展接口的调整,例如:

1
API版本的迭代规范,版本分支(例手游项目接口迭代相比重大),开发规范,模块管理(例如页游对接平台较多,模块管理比较关键)。

2
客户端与服务端的双向验证,很多时候半数以上都以服务端验证,然后回来错误码,客户端举办错误码验证是还是不是科学,某些景况下,我们也可以服务端验证通过后,客户端同时也展开认证服务端再次回到的情节。

3
可以在限制ip下,请求唯一入口api来赢得其余接口的key,那也是一个不易的艺术。key能够任由更改且不要打招呼接入方。

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注