JNI就是Java Native Interface, 也可以理解为一般脚本语言的C API, 一般情况下这种API的学习都是一种痛苦的精力, 从来如此, 没有太多技术含量, 就是一堆晦涩难以理解的编程模型, 编程接口, 充斥着各种从当前语言到C语言的类型转换. 基本的含义就是用C语言的思维去表示当前的语言, 这个问题在Lua语言中到达了极致. 不管是多么为了效率, 一个纯堆栈操作的编程接口都像汇编语言一样难以使用.
因为最近又开始做Android游戏了, 用的是cocos2d-x, JNI是难以避免了, 以前的使用都是照猫画虎似的写几个函数调用接口, 总感觉有问题, 今天好好的学习学习吧.
阅读全文....
游戏项目可能是所有软件项目中需要在编译时处理资源最多的项目, 一般的项目都有下面几种常见需求:
- 将文本格式的Json, XML等配置换成二进制
- 将Json, XML等配置加密
- 将tga, png的图压缩成压 缩比更高的pvr, webp等格式
- 用texturepacker等工具打包小图
- 将UI编辑器, 动画编辑器的编辑时格式(往往是文本格式)编译成二进制的发布格式.
特别是图片相关的的资源生成, 时间消耗较多, 需要尽量减少重复生成. 此时像makefile这种东西就很有价值了.
阅读全文....
既然选择了C++作为游戏开发的语言, 手动的管理内存是难以避免的, 而Cocos2d-x的仿Objctive-C的内存管理方式, 事实上让问题变得更加复杂(仅仅是移植更加方便了), 因为你需要很好的掌握两种语言的内存管理方式, 并且在使用时头脑清晰, 不能混用, 不然等待你的就是无穷的噩梦, 因为引用计数的原因, 问题比起纯粹的C++内存泄漏还要难以定位的多.
这里统一的整理一下目前在Cocos2d-x中的内存管理相关的方法和问题. 为了让思路更加清晰, 我提及的不仅仅是具体在Cocos2d-x中怎么用, 也包含一些为啥在Cocos2d-x中应该这么用.
并且, 因为以下讲到的每个点要讲的详细了, 其实都可以写一整篇文章了, 没法在短时间内详述, 这篇文章也就仅仅作为一个引子而已.
阅读全文....
NoSQL热了很久了, 很惭愧直到今天我才初次学习NoSQL的东西. 从一开始做C++的后端用了MySQL和SQL Server后, 一直在做游戏客户端, 真是远离数据库相关的东西太久了, 有意思的是, 很久前, 对编程相关知识如饥似渴的时候, 工作中碰到任何相关的知识, 哪怕是一个新领域, 起码都要买一本大部头来学习的, 当时只有数据库是真的点到为止, 没有深入学习, 直到今天我也说不上具体为什么……
阅读全文....
在一般的新脚本语言中, 有REPL是常态, 因为REPL非常的方便, 谁用谁知道. 最近学的语言已经多到几乎超过我的脑容量了, 所以我更加经常的用REPL来验证一些语法, 所以找到了一些传统不存在REPL语言的REPL环境, 在这里记录和分享一下:
阅读全文....
最近语言学习有些疯狂, 从Ruby到Lisp, 然后是C#, 既然已经疯狂了, 就顺便学习一下JavaScript吧. 对JavaScript的印象一直不佳, 从骂脏话最多的使用者, 到使用者平反的世界上最被误解的语言, 从所谓的让人抓狂的特性, 到世界上任何可以用JavaScript实现的东西, 最终都会被JavaScript实现, 并且, 这是最后一个实现. 出处太多, 不一一列举, 知者已知, 不知者也没有必要为了这些无聊的言论特意找出处了.
其实也不是完全没有用过JavaScript, 以前在开发一个Unity项目的时候用过一下Unity里面的JavaScript, 只不过那个JavaScript我甚至都只能称之为UnityScript. 太多太多自己实现的特性, 而又有些不够完整. 现在, 认识一下真正的JavaScript吧.
阅读全文....
Rhino是JavaScript的一个Java实现, 可以直接使用REPL的方式来使用JavaScript, 光是研究语言特性的话, 会比在浏览器里面方便很多. 当然, 现在还有一个新的选择, 那就是node.js. Rhino是Mozilla的实现, node.js用的V8引擎是Google的实现.
阅读全文....
Gyp是一个类似CMake的项目生成工具, 用于管理你的源代码, 在google code主页上唯一的一句slogan是”GYP can Generate Your Projects.”.
目前Gyp的应用没有CMake那么广泛, 但是已经被诸如chromium, Node.js等著名项目使用, 而Gyp本身就是chromium团队觉得CMake不满意, 而自己开发用于替代CMake的.
作为后来者, 自然有更好的地方, 并且具有较大的改进, 才值得开发, 那Gyp比CMake好在什么地方呢?
阅读全文....
很久以前的移动平台开发者很幸运, 因为他们只用关注一个平台(iOS)就够了, 现在随着Android越来越受到关注, 以前统一的平台又开始了分裂.
到目前为止, 我知道可能的, 能够使用一套代码跨平台开发app的方法有:
阅读全文....
最近看晓说, 其中一期提到了卖水理论, 觉得很有意思, 查了下资料, 然后想了想现在的互联网, 就此随便写一点东西吧.
19世纪中叶, 17岁的小农夫亚默尔抱着发财的心理, 随着淘金的人流涌入加利福尼亚州. 山谷里水源奇缺, 寻找金矿的人最痛苦的就是没有水喝. 亚默尔认真思考一番, 觉得在这里也许卖水比挖金更能赚钱. 于是他放弃了找矿, 把手头的铁锨掉了个方向, 由挖掘黄金变为挖掘水渠, 他终于找到了清凉可口的水. 他把水装在桶里、壶里, 卖给淘金者. 结果, 在很短的时间里, 亚默尔卖水赚了不少钱, 成了一个富翁. 他的这种做法被后人推崇, 形成”卖水理论”.
阅读全文....