射击游戏项目开发笔记 (五)

字符屏蔽似乎是在我朝才有的东西.这屏蔽那屏蔽的,干脆彻底把Internet变成Local Area Network得了(虽然现在对大部分人来说已经是Local Area Network了).如果说我有什么职业梦想的话,The Great Wall崩塌估计是我唯一的梦想了.

在目前国内游戏的字符屏蔽中,主要是分为:聊天屏蔽(过滤词语) 和 命名屏蔽(过滤词语+过滤特殊标点符号)

过滤词语

首先看以下趣图:

继续阅读

射击游戏项目开发笔记 (四)

项目可用目录说明:(android为例)

一般的android程序可读的目录有

  • 包本身的外部资源目录,资源不参与签名(APK的Assets文件夹下,实际位置 data/app/包ID.apk) 仅可读
  • 包本身的内部自由目录,资源参与签名(APK的res文件夹下) 仅可读
  • 系统分配的用户目录(实际位置一般是 data/data/包ID/files) 可读写
  • 手机存储 / SD卡内 可读写

资源加载规则

0.从包内文件中加载
1.资源加载模块直接提供从包内文件和从用户目录(或者SD卡某目录)两种加载路径
2.游戏第一次启动时,将包内文件全部copy到用户目录,或者SD卡目录,下载文件也下载到这个目录,然后统一在这个目录加载(这是我之前的项目的方式,现在看来是有问题的)

继续阅读

射击游戏项目开发笔记 (三)

定时器是游戏中必备的支持之一,而且也属于代码运行频率比较高的部分.所以一个设计精良的定时器绝对是地基里的一块好砖头.

在Unity中有很多种方式可以使用定时器.

Update中计算时间

最简单的可能就是在Update中获取deltaTime,然后累计时间触发了,如果要隔一秒调用某个函数,使用Update代码类似如下

private float m_fTimeTotal = 0.0f;
void Update () 
{
    m_fTimeTotal += Time.deltaTime;
    if (m_fTimeTotal > 1000f)
    {
        m_fTimeTotal = 0.0f;
        // do something
    }
}

继续阅读

射击游戏项目开发笔记 (二)

由于很多的因素,项目改用U3D开发,而项目组目前为止没资深的Unity开发程序员,只能摸着石头过河了.我们网络通信数据使用protobuf的格式,(关于这protobuf的格式分析在上一篇笔记中已经分析得很详细了).简单说明一下目前项目的开发环境与插件的使用情况:

开发脚本: C# (.Net 2.0) 由于我与另一位同事均无C#功底,所以业余时间学习C#必不可少,本人而言已经有了基本的计划.(为什么不是JS 或者BOO,详细翻了一下Assets Unity 基本上大多插件都是用C#写的,Boo更加是第一次听)

开发工具:抛弃官方的Mono 使用VS2012,主要使用了UnityVS插件,注意这个插件现在已经免费了.传送门

GUI:有UGUI与NGUI和GUI三个选择,目前选的是NGUI,主要原因是NGUI的教材网上一抓一大把,由于换引擎的突发性,已经没太多时间给我去看那个比较好用了.(很多事情总是充满无奈)

网络模块:Unity5 提供了一套Net组件,在我花了两天时间去看了它的几个组件之后,发现根本不足以满足我们项目的要求.所以决定使用.Net自带的Socket自己实现.(约莫花了三天的时间)

继续阅读