独立游戏的数据分享

个人游戏杂谈(一)

今天,我的第二款游戏装机用户已经突破1000,这里统计的是启动并玩过的用户,只下载不启动的不算,在没有任何推广策略。没有任何商业运营手段的情况下,我觉得已经非常惊喜了。特别是锤子,从锤子商店过来的用户让我大大吃了一惊,看来我要把几年来黑过老罗的话收回去了。以后尽量不黑他了Orz。

以下是我后台收集的自然用户来源比率:

这张图让我大吃一惊,从平台用户基数(平台的总用户量)来讲。锤子商店是图中最少的。从锤子科技发布的锤子手机销售情况判断,注意 市面上并没有锤子商店这个APP 也就是说只有用锤子系统的用户才能够进入锤子商店APP,才能从锤子渠道下载到我的游戏,作为一个用户基数最少的平台 竟然是游戏里用户最大的来源渠道,真猜不透这是为何。按照一般的来说,在不买量不推广的情况下,上图的比率应该是各自平台用户基数比率才对。

继续阅读“独立游戏的数据分享”

Unity中根据资源搜索其在prefab中的引用

项目开发笔记 (九)

今天第二款业余独立游戏终于成功在GooglePlay上发布了,共计花了约1个月多的业余时间(每天下班后)。代码行数刚好1W出头。第一次以付费下载的模式上线,不管能不能卖出去但整个过程都非常有趣 每天都非常高效,思绪缠绕。对比公司的项目,真是效率低下。查看我最近三月的日志 关于公司项目的每天就2-3条信息,真是忍无可忍啊。废话说到这里,最近写了一个Unity中根据资源反查在prefab中引用的工具,今天我扯扯其中的原理。

prefab

预设,类似各种UI编辑器编辑后的输出文件,Unity中几乎任何事物都可以打包成预设,然后通过外部文件的形式再加载进程序里。不过是PNG/JPG等图片图集资源; GameObject Chartater之类的对象资源。

Unity中提供的搜索选项

Unity本身提供了一个资源引用搜索的选项,不过是针对当前Scene进行逐个资源搜索的,使用如图

这个选项并不能满足我们的需求,除了搜索某个资源在那个prefab被引用之外,在项目后期 我们还可能需要删除尚未被引用过的资源。

继续阅读“Unity中根据资源搜索其在prefab中的引用”

Unity中使用Shader裁剪图片

项目开发笔记 (八) – 依旧是一个重复的轮子

之前说我参与了一个比较 “不一样” 的应用开发,我主要负责其中很多涉及Unity调用原生功能的部分,例如个人用户头像需要调用手机相册摄像头获取,GPS,指南针,内嵌浏览器,包括一些流氓功能(天呀)等等。偶尔还会写几个Unity小模块,其中个人用户头像在显示上,产品要求与各种社交软件一样显示为圆形图片。之前已经实现了如何类似很多社交软件一样获取手机照片 – 传送门

Unity加载显示一张图片,然后使用Shader显示为圆形,这是一个重复的轮子了,但是看了大家的分享之后 发现不是在 Android无法正常裁剪 就是在iOS上显示为白板。所以决定把目前项目中用的分享出来。主要原理就是计算指定范围的像素,然后把像素点的alpha设置为0 (每个像素点都有 RGBA 四个属性值)

如图所示,左下角为UV原点,当纹理uv在 1 区域的时候,也就是满足

uv.x < _Radius && uv.y < _Radius

的时候,当点距离中点的长度大于设定的半径的时候,设置像素透明度为0.其他三个小块以此类推。

继续阅读“Unity中使用Shader裁剪图片”

把程序员修炼之道读薄

这是一篇技术书籍读后感

早在2014年的时候我就已经购入《程序员的修炼之道》.还是由于慵懒一直没有翻开,最近才把它从书柜里翻出来看完。

老实说这本书相比CodeComplete2来说,还是差那么点味道,但是它依旧是一本好书。本书通篇都在向读者灌输一种做一个注重实效的程序员的概念,这句话出现了不下几百次,200页的书这句话都够填10页了Orz。为了阐明作者观点,书中从以下几个方面进行了自我论证:

为何要注重实效

作者举了温水煮青蛙曳光弹等 去论证注重实效在软件开发中的作用之大。在这过程中 还把如果做好一个程序员等问题 进行了自我解答。更有趣的是,读完这部分我发现全世界的程序员都应该有一个共性 — 沟通能力普遍不足,因为作者甚至在如何沟通这个问题上 进行了大篇幅的教学,如何和程序员沟通,如何和用户沟通,如何和产品经理沟通,如何减少沟通 等等。

如果觉得自己工作过程中 无法流畅的和其他人沟通 不妨多读一读这本书。

如何注重实效

DRY

这部分的章节,我认为是本书最精华的部分,作者在很多地方都提了DRY原则-Don`t Respeat Yourself(不要重复自己),翻译过来 应该就是不要重复造轮子了。关于DRY原则 推荐一篇反DRY原则的经典文章 – DRY原则的误区,作者是一位有着神奇精力的程序员,做程序员做到他这样 估计就算到头了吧?

DRY原则在细微的事情上 并不一定值得推崇,例如我的很多博客分享的小知识点 其实都是重复造轮子,但是我是发现别人造的轮子不够完美的情况下 才会去重复造。虽然可能我的轮子在你那里也转动不起来!

继续阅读“把程序员修炼之道读薄”

Win2012配置Git服务器

重复的轮子也是分好坏

最近朋友买了一台win服务器,准备抛弃svn用git,这个工作就交给我了。网络有一大堆关于在win服务器上配置git服务器的教程,但是如果仅仅靠某一篇,我都没成功过,综合了几篇文章才捣鼓完成。所以虽然是重复造轮子,那应该也是一个好轮子。git是什么相信不用多言。win上配置git一般配置是 Git+Copssh。下面一步一步详细记录

软硬件需求

0.服务器 – Windows server 2012 – 64bit
1.客户端 – Windows 10 – 64bit
2.服务器 – Copssh_4.1.0_Installer(注意,不保证无马)
3.服务器 – Git 1.8(官网,保证无马)
4.客户端 – Cygwin(官网,保证无马)

鉴于Xcode的挂马事件,下载这类软件的时候请大家多找几个链接,找到靠谱的才下。当然如果是局域网服务器 可以无视这句话。

继续阅读“Win2012配置Git服务器”

Unity中获取手机图片

 项目开发笔记 (七)

很多APP中都会有个人信息,或者个人帐号 都会有设置头像功能,国内的很多APP更加是如此(很多人的帐号密码泄密,正是由于到处注册帐号,举个我当年密码泄漏的例子,在很多年的某一天 我在某个网吧的嘟嘟牛系统注册了一个帐号,当时毫无安全意识,直接用个人密码作为嘟嘟牛的密码,很多年后的今天 我在嘟嘟牛的用户数据库里找到了我当年的个人所有信息…嘟嘟牛的数据库怎么会流出来?A.黑客把嘟嘟牛黑掉,把数据库拿到地下交易市场卖,B.嘟嘟牛的某个数据库程序员离职 顺带把数据库带出来,C.公司倒闭,倒卖数据榨干最后一点价值等等..),言归正传,目前我在参与一个类APP项目的优化工作.使用Unity开发.也有这种..设置用户头像的需求

Unity Version: 5.x or 4.x

本文内容非纯干货,如果不想看可以直接下载Sample – 传送门

继续阅读“Unity中获取手机图片”

Android动态加载源码库

很多跨平台实现都避免不了需要加载一个so库,而so库针对不同的芯片还需要不同的编辑版本(ARM和X86).这间接得导致android APP包越来越大.例如目前cocos2d-x的6-8M,Unity5的16-18M,而这都是一张图片 一句具体代码都没写的情况下.做过游戏的都知道:

  1. 资源可以脱离APK包 采用在线更新的方式download到手机上.
  2. 脚本(Lua or Js or C#)也可以采用热更新的方式download到手机上.
  3. 甚至玩家安装了一次APK,以后的新版本APK都可以采用后台download静默安装的方式更新自身.

那现在就剩下最后两个问题:

  1. 我嫌弃更新APK麻烦,只想更新so库,那so库是否可以动态更新?
  2. 或者更变态一点,即使非常必要的时候,我依然不想更新APK,dex是否可以动态更新?

so库:android项目的C++原生拓展编译库,可被加载后执行.
dex文件:android项目中的java代码生成的可执行文件.

下面我们探讨下这第一个问题.

继续阅读“Android动态加载源码库”

Unity项目中的网络封装

项目开发笔记 (六)

Unity中的网络组件难用得要死,于是我自己使用C#自带的socket封装后实现了一个,代码几乎没有用任何C#的高级特性。所以可读性上应该没任何难度的。这个代码本来是项目中不可对外的,不过现在也无所谓了。刚好之前在群里看到有很多朋友找现成的封装,这个就是了哟。

代码结构

简略说明

数据包头设计成6字节,压缩到最小了,其实可以4字节都OK,不过前面两个标识字节感觉还是有点用的,数据包结构如下:

0 1 2,3 4,5 6,buffLenght
8D 8H 数据包长度信息 消息id 具体消息数据

数据包长度只给了2字节,也就是 0~65535byte,我觉得数据包这个范围已经足够,消息ID也给了两个字节,也就是 ID号的范围为 0~65535 一般中型的网络游戏 不会多到有6W种不同的消息吧?

收发数据我使用了两个子线程去处理(也可以把收发数据全部放到一个子线程中)

剩下的和其他语言的网络封装没任何实际性的差别,大家看代码即懂

代码传送门:https://github.com/recter/Unity-Net

京城攻略

这个月给自己放了个假,去京城走了一遭,一周的时间内 我已经在京城暴走超过120公里了,虽然现在国内景点已经非常商业化了,京城的几个景点里的物件也只是复刻品而已,但是从小在教科书 电视剧 中看过那么多京城的地方 总觉得应该走上一走。这个年头在国内旅行绝对不要报团,路上看到很多报团的人无论到了每个景点 都像SB一样跟着导游跑 卡擦卡擦几张照片就算完了,其实很多景点还有很多很多的地方可以去。在我走遍了十几个景点之后 发现 每个景点 80%的旅客都只走20%的区域,剩下80%的地方无人问津,举个例子,这是我正午12点拍摄的天坛,大家都只走中间那条路 登上祈天殿,然后拍照走人。而周围的地方却人迹罕至。

继续阅读“京城攻略”

Unity项目中字符过滤

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

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

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

过滤词语

首先看以下趣图:

继续阅读“Unity项目中字符过滤”