Build libnoise on iOS!

 • 

libnoise 是一个 Cpp 的噪声库 写了一个简易的教程 怎么把这个东西做成一个可以 iOS 用的 lib

1.Download libnoise from http://libnoise.sourceforge.net/
2.Navigate to libnoisesrc-1.0.0/noise/src, and select files like this:

No makefile, just .h and .cpp files, and don't select win32 folder, you are building in Xcode.

3.On your current Xcode project menu, Select File/New/Target/iOS/Frameworks & Library/Cocoa Touch Static Library, hit next and name it "libnoise" or whatever :-)
4.Now, Drag files you selected in Finder to Xcode like this:

Things to remember to check:

  • Copy items if needed
  • Create Groups
  • Add to targets, just select the new library we have created.

And now our project will looks like this: (I made a group from these files so you will see a top folder named libnoise)

5.Switch your target to libnoise (or whatever you named it when creating library target), we will check something.

6.Navigate to Build Phases/Compile Sources, see if all .cpp files are in there.

7.Jump back the target to your app, make sure Build Phases/Compile Sources have these:

  • Xcode's target are on your app
  • Target Dependencies have libnoise
  • Link Binary With Libraries have libnoise.a

8.Add libc++.tbd in General Tab, or in Build Phases.
9.Create a UIViewController (like NoiseDebuggerViewController), and change NoiseDebuggerViewController.m to NoiseDebuggerViewController.mm
10.In NoiseDebuggerViewController.mm:

  • import "noise.h"

  • paste these codes to viewDidLoad():
noise::module::Perlin myModule;
double value = myModule.GetValue(1.25, 0.75, 0.5);
NSLog(@"Value : %f",value);

and Press Run, make sure you have real iDevice plugged in instead of Simulator.
See the Log!

Value : 0.686347

Now you have libnoise on iOS! We are ready to use it for procedural planet generation on iOS!

Epoch Dev Blog 4

 • 


👆用来提交崩溃的 Bug Report 都崩溃

Unity 关于 PrepareShadowMaps 还有 Occlusion Culling 崩溃的 bug 在5.3的最新 Patch 版本上仍然存在 让我的进度延缓了不少 因为没办法实时 Editor 预览了 只能自己写一堆东西 试着 build 到 iPhone 上看
所以最近没做什么事情 大致有这几个
1.加了God Ray(Sun Shafts)

2.让游戏根据不同机型调整分辨率 比如 iPad mini 2 这种 A7+大屏Retina 的组合 就运行在 0.75倍率原始分辨率上 然后更老的机型就使用Non-Retina
3.改进了SpeedTree的树木,准备了很多花花草草还有大树

4.研究了下 Noise 图生成 HeightMap 后怎么在 Runtime 生成 Splatmap 留给地面贴图用
5.试着重写树木生成的脚本(但失败了),等脑子清醒并且 Unity 不会那么容易崩溃的时候再试着重写一遍 主要是准备直接从 HeightMap 中 GetPixels 后 把根据 Alpha 值随机出的树木样式数据固化到某个地方 然后做一个 Pool Manager 来管理 Spawn 和 Destroy

多说几句 因为 Unity 工作不正常的原因 最近又看了会 WWDC 学习用了下 ModelIO里面的 Voxel 感觉可以试着用 ModelIO 和 SceneKit 写一个类似的东西(根据噪声的过程星球生成) 如果能写出来的话倒是有个东西可以提交 WWDC 奖学金了

晚安

2016.3.1

 • 

二月底开学 回到了长沙 热得冒汗 感觉都要到了夏天
EPOCH 放在电脑里面总觉得不放心 而且现在两台电脑也不好协作 于是想着用 git 传到服务器上去 但是文件数目太多 即使是用 git shell 也会在 commmit 的时候卡死 于是作罢 改为买 Dropbox 空间 扔到上面自动同步 好处是全自动 坏处是没办法做特定文件的同步规则 以及潜在的被墙风险
生日也过去了 19岁 早晨醒来看到 Twitter 客户端上飘着满屏幕的生日气球 觉得挺好玩 于是多按了几次
Fin GameWorks 算是有了一个小小的网站 http://fingameworks.github.io/ 花了一晚上乱改模板 CSS 做出来的 惨不忍睹 看来有必要学习下前端
最近在看 Vimeo 上面的一些 VFX 视频 比如特效的 breakdown 或者 工作室的 ShowReel 当然也有一些惊人的 SpeedArt 看的人心痒痒 于是跑去申请 Octane Render 的学生证书 但是 OTOY 并不支持国内教育邮箱 对方也一直没有回复

Epoch Dev Blog 3

 • 

最近在做星球的部分东西
昨天和陈叔说 我终于知道我在做什么了
Epoch将会做成一个手机版的 No Man‘s sky,但是并不具备无限的地图过程生成,也没有动物等等,除此以外,Epoch目前在做的功能和No Man‘s sky几乎一样:无缝登陆,过程生成的地表,太空战斗。
无缝登陆这块目前是没有问题,但是在Visual上表现力太差,因为登陆过程要经过一个大气层,这个大气层略高,不好处理地面的物体。No Man Sky的处理方式是加上了一个缓冲用的云层,等云散去,离地表只有一千个单位左右,做大面积的植被也不会有很多性能上的问题。但是我目前没有做这个云层,所以地面树木的生成会被很明显地看到,这个和LOD没有什么关系,就是单纯的突然冒了出来这种效果,因此估计后面我也会做这么一个trick,用云层来阻隔玩家视线,同时生成树木。
地表植被目前只做了树木和草,种类也只有四五种,我也在收集各种SpeedTree,留着后面使用。目前植被生成不是太好,代码也写的很烂,有很多可以优化的地方,主要问题有这几个:
1.草一般是做成billboard,这种模式在第一人称在地面的时候非常有用,可以用很少的物体大面积填充视线。但是这不适用于飞行游戏,飞机是要从天上飞下来的,这个时候billboard的效果就不是很好,因为billboard会让贴图一直面向摄像机所以看上去草角度有问题。解决这个问题我估计只能从改进地面Shader入手,地面贴图先用草,用2K分辨率都不过分,只要能把地面的草给模拟了就好,等到降落后,地面贴图再改成纯泥土,配合很多billboard的草,看起来应该会好些。
2.草不知为什么,并没有被Dynamic Batch掉,结果就是很多draw call,在iPad上运行的效果不是很好。但是我没法做Static Batching,因为我的草并不是真正的静态物体,一旦摄像机掠过草,草就会被移动到前方更远的地方(我还没做pool),保证摄像机看到的是很多草,这样Unity没有办法合并草的mesh,因为都是动态的。
(#Edit : 找到没有 Dynamic Batch 的原因了:我在飞船上加了一个 WindZone 模拟声速飞过的效果,导致 Speed Tree 不能 Batch(对,我的草都是SpeedTree...),关掉风就能看到几乎所有batch都被save了...我一直以为风没有关系)

3.目前树木的生成还不是依据星球的height map,因此是随机分布的,这个其实不难,但我还没写到。
4.海洋的模拟。一般海洋放一个Plane就可以了,但这是星球,是有弧度的,一般的海洋Shader搭配Sphere都会有些问题,我估计解决方式就是,把Sphere拆成一个1/4的弧面,甚至更少,在登陆过程中不断更改mesh,1/4弧面的时候Shader只有反射,保证不是很卡,然后着陆到地平线后再用很小的弧面配合带折射的Shader来做到海洋的效果。
5.天气。这个再说吧,也不是很难做的样子,和树差不多,反正是手机游戏,要求不是很高,没法做很真实,突出风格化就好。

Epoch Dev Blog 02

 • 

回家后战斗力暴跌,基本上是什么也没干。
脑子里有许许多多的计划和项目,但都只存在于我想象中。而每天最多的事情就是发呆,想着这些未竟的计划,真要开始做起来应该用什么方式。
Stillness 的 SpriteKit 重写计划往后推了一段时间 因为我发现 SpriteKit 的光影效果实在是太弱了(当然也有可能是我没有仔细研究 API) 灯光的 FallOff 聊胜于无 而 Stillness 最大的卖点就在于光影,去除光影就没什么了。但我一直在想因为用 SpriteKit 写的话 就可以提交给 WWDC 的奖学金项目,这么一说还是有动力的,只不过我需要花点时间研究下了。
Epoch 倒是开始写起来了,而且进展不错,不过项目一旦发展起来就发现,原来我以前对 Unity 不吃机器的印象也是错的,Unity 是不怎么占用系统资源,但那是相对于虚幻引擎而言。现在每次打开 Unity Editor 都要卡上十秒钟,每次修改完 Script 后预编译也是。
Epoch
而且我遇到了很多奇奇怪怪的问题,比如更新到 5.3.1 后 一个 Shader 彻底不工作,渲染的 Mesh 变粉红色了,我又不会改 Shader 这种东西,只能先替换着。还有各种 Unity 自己的 Bug,以及今天刚遇到的内存泄漏问题(现在 loadLevel 突然就爆内存),然后每次 import assets 漫长的等待(以及假死)让我明白还是不能用 Macbook 做 3D 游戏,等下学期开学还是要买工作站。

先更新到这
放点图






Epoch Dev Blog (1)

 • 

好长时间没有关于 Epoch 的消息了
放寒假后 因为工作站迟迟没有到位 而我的 Mac 性能又不足以坚持去做虚幻引擎 以及一些其他的原因 我就转换回 Unity 工作了 反正整个游戏一直处于原型的状态 两个引擎的原型版本都做过 也没有什么前功尽弃一说
Freelancer 和 Galaxy on Fire 2 这两款游戏都比较好 我在参考他们的游戏模式 顺带一说 GOF2 HD 这款当初给 iPhone 5 的游戏 现在用 iPad 玩 很明显能看出 Skybox 的分辨率不够 而且 后面的星球是一个平面的贴图 甚至都不是一个 Sphere
这两天的工作结果:




修复坚果2.5系统刷第三方Rec变砖

 •  Filed under Smartisan, 坚果

情况如下:
系统挂了 进入不了Recovery
开机黑屏自动进fastboot 自然adb也挂了
不过fastboot devices有显示设备
fastboot flash recovery的时候 出现如下错误:

target reported max download size of 268435456 bytes
sending 'recovery' (16384 KB)...
OKAY [  0.517s]
writing 'recovery'...
FAILED (remote: unknown reason)
finished. total time: 0.522s

解决:

使用fastboot boot 加载一个系统的Recovery 然后进入系统Rec后就简单多了 开启sideload 后刷进去老版本的坚果Smartisan OS

2016.1.11

 • 

现在在北京T2的肯德基里面 吃着第二份餐

swift大会。
见到了KevinZhow,人挺逗,黑人技术和Martin一个级别的,hhhh,其实要不是上学我挺想去他们那写unity。
见到了MartinRGB,把我黑得太惨了。如果暑假Martin还在RavenTech我就去那里实习。
见到了Cee,和菊苣一个房间~。
见到了烧碱,今年估计还有很多机会去杭州hhhh。
此外,见到了梁杰和SwiftGG的很多人,比如爱画画的MMoary,也算是正式加入了很污的翻译组,哈哈哈。
唐巧大大采访了陈叔和Martin(这个过程Martin还不忘黑我,hhh)。
我没买到喵神新书 不过和喵神拍了合照,挺激动的。喵神这次的ppt很有趣 :-) 此外喵神还对stillness提了些建议,感觉可以寒假做个新版本了。
陈叔是作为大会工作人员一直在忙(当然一直和martin互黑),然后今天结束后很早就睡了。

后面的事情。
再过四个小时飞回长沙。
再过一天去补考大物。
再过几天回到北京参加Uber的hackathon。
然后应该是回家。不过也有可能去厦门,某些外包方面的事宜。
还有很多计划中的,个人或团队的Project。
有趣的生活。

坚果手机使用记

 • 

型号: 坚果手机 (标准版)32G 红色背壳
订购时间: 2015年最后一天
价格: ¥799

使用了一个星期 简单谈下坚果手机的优缺点
为了避免不必要的麻烦 我说下 我这个体验更多地是以一个 喜欢折腾的 视角来写的 因此并不一定适合所有人


TL;DR. :

如果你和我一样 身份是开发者 是想看下锤子的 额 怎么说 设计风格吧 那么请买台 Nexus 后自己安装锤子桌面 看腻了就可以随时卸载 干净利索

如果你是设计师 没有像我一样奇奇怪怪的手机用法 只是想体验下 Smartisan 我觉得很适合

如果你是打算买一台给父母/老年人 那么你可以在红米和坚果之间选一个 坚果给老年人用的好处很明显 界面拟物风格 学习成本很低 而且如果你还凑巧有另一台锤子 可以用远程遥控


Pros:

  • : 锤子桌面 算是坚果手机最具有溢价的内容了 使用体验不错 主要体现在桌面的交互和重新绘制的图标上
  • : 背壳设计 漂亮的设计 而且并没有不耐脏一说 虽然我用的时间很短 但是我用电子产品以不爱惜著称 以我的使用风格来看 并不会变脏或者纳垢 因为本身纹路就非常浅
  • : 相机 满足需求 甚至锐度有些出乎我的意料 当然我估计是因为我用惯我那个相机进水后自带柔光滤镜的 iPhone 了 所以看其他手机相机都很清晰 因此这点不是很确定

Cons:

  • : 系统稳定性 拿到手后升级 Smartisan 2.5版本(基于 Android 5.1) 结果手机无限重启 这对于我来说不算什么太大的事情 因为我能进recovery刷回 Smartisan 2.1版本 不过对于很多不是熟悉安卓操作的人来说 如果手机出现这类情况就只能送修 刚到手就出毛病这种事情实际上是很打击信心的 我当时也很烦躁 甚至想退掉这款手机
  • : 割裂感 界面的确是漂亮 不过很多时候安卓定制 UI 都会遇到一个情况 你做再多的风格化定制 也是不可能变成 iOS 的 特别是像锤子这种设计风格和谷歌官方完全割裂的东西 就算你重绘了几万个 icon 也只是沧海一粟 而且系统软件和很多 MD 风格的第三方软件虽然图标统一了 进入界面后还是完全不一样的交互逻辑 特别是锤子学 MIUI 改了系统控件的风格 比如 toast 变成了淡黄色背景 在 MD 软件上显示 toast 时这种割裂就更加明显

其他&后续
前面说给父母用不错 为什么不直接推荐父母用 iPhone ?
我推荐过 特别是现在安卓的确不如 iOS 安全 不过我的父母并没有接受
我爸从功能机用到 Windows Mobile 再用到 Android 可以算是父母这辈人里面的 Power User 了
但问题就出现在这个 Power User 的定位上 很多时候 iOS 的使用是傻瓜化的 这反倒让我爸的思维定势没法习惯 比如:我爸习惯于自己动手转码电影 自己刻盘 这些操作都是一个内容产生者的身份 而不是消费者的身份 而内容产生者是强调掌控的 因此我爸在手机上也是习惯于获得对手机的掌控
比如通过 360 的内存加速球来获得掌控感(虽然那个加速球并没有什么用)
我妈接触过 iPad 后其实能看得出挺喜欢 iOS 的操作 不过扁平化的风格让她第一开始也有很多困惑 比如什么可以按 什么没法按 不过在接受程度上比我爸好很多
那么对于我来说 坚果手机就是一个不错的选择:本身是安卓 我爸可以按照自己的喜好装音乐和电影 然后开开加速球 而且风格是拟物 我妈很适合用 她用MIUI的老版本就很顺手 相信Smartisan这个交互反馈更突出的系统也很顺手

我用坚果做什么?(我对坚果的需求定位?)
我 iPhone 的流量不够 买个双卡手机 拿来插卡当随身Wi-Fi
装些奇奇怪怪的 iPhone 上没有的软件
用这个手机听音乐 因为我的 iPhone 实在是没有空间可用了
在我换 iPhone 之前 做一个备用机 当作衔接和过渡

这个手机接下来要怎么用?
我也不太清楚 先用到我寒假回家 然后看父母有没有兴趣接手 不过如果界面对他们不是很吸引的话 他们估计宁愿继续用 Galaxy Note 毕竟手机性能不是一个等级的
我尝试过把坚果当 Nexus 用 不过并不行 光是 root 就有些费劲 首先要刷第三方recovery 然后刷superSU 然后你才能考虑去安装Xposed
不过系统定制(限制)的东西太多 我现在想用Google即时桌面都没有办法 因为按home键并没有出现选择默认Launcher的窗口 只能认为锤子做了一些限制 虽然肯定可以突破 但是太费劲了 我懒得搞
(我是喜欢折腾 不过我对折腾的定义是 按照喜好发挥手机的最大效用 而如果系统做了如此之多限制 那么其实并没有折腾的必要了 因为有这个时间 完全可以买台 Nexus 了 上手即rooted 然后后面的事情才叫折腾)
照这么看 我估计还是需要一台 Nexus

一个奇怪的氛围
另外 记一个很奇怪的事情
锤子论坛里面对root的反应很奇怪
凡是类似的帖子下 都会有人说 没必要root 这个手机不需要root 你root就没保修了 甚至有人说 你不要为了root而root
这和 XDA-developer里面的氛围很不一样 甚至和一般品牌手机论坛都不一样 我只能认为 这里的人不爱折腾
我是不是可以进一步认为 坚果手机原来就是给老年人用的 而不是像宣传里面是给年轻人用的
我用手机是我的自由 你提醒我root后不保修一次就行 我自己知道我在做什么
我需要用Xposed Greenify 甚至偶尔玩下zANTI 这些东西都是要root才能发挥作用的东西 即使这是个老人机 我花了钱买的 我想把它改装成超级计算机都不需要人来管我