认真你就输了

Feed Rss

今天 在qq群里瞎聊,浪费了太多时间。以后不是很欣赏的群里,就不花那么多时间push一些想法了。

我本来是冲着找人一起做游戏去的,又不是因为想找人没有主题的闲聊= =。我还没那么喜欢和没有我欣赏的要素的人交往。

后来又看了一些gltracy写的shader自我激励了一下,平缓了一下心态。好,同志仍需努力,做练习去。

今天把pomelo的helloworld的客户端运行起来了,但是和服务器端的联通测试没通过。

熬夜一整个晚上,就这点战果,真是痛心

这两天做完了7篇一套的那个入门。以前看过一遍笃志写的cocos2dx的介绍,看着概念不多,也都很好理解。这次做练习主要是试一试怎么个跨平台开发法,算是达到目的了吧。

接下来准备看配套资源的生产工具cocostudio,还有我准备负责的网络部分,要看一个pomelo库的cocos2dx聊天室示例。

写UI是一件挺恶心的事,而2D游戏除了UI就没别的了所以,寄希望于cocostudio了。

今天看了教程的第二章,在里面意外地学到了如何让visual studio在每次编译完成之后执行一些后续命令。

教程里要执行的命令是xcopy /Y /E .\Resources\*.* $(OutDir) ,结果编译后执行失败,导致编译被看作失败。

琢磨了一下,应该是xcopy /Y /E ..\Resources\*.* $(OutDir)才对嘛,搞什么搞= = 


我至今没有什么正经的3D编程经验,这让我很着急。不过好处是2D这点东西我搞得很熟,看到接口就能大概想象到它的实现,用起来不会心虚。

欲速则不达,进展缓慢什么的就不要抱怨了,沿着路走下去迟早可以走完的。

今天修改了一下代码,总算是理解一次开发,跨平台打包的模式了。开发果然还是在vs里开发,很好。

ios版一直没弄,先走win32 + android路线了。

看官方教程,官方教我安装visual studio的创建项目模板,可我下载回来的cocos2dx里根没有没有那个安装用bat。

上网查了一下是要用tools/project_creator里的python文件生成空项目。

上网查了一下用法,直接运行那个python文件加适当参数,结果出现了诡异的文件夹权限问题,文件夹删不掉了。用windows的python和cygwin的python都是这个结果。

上网查了一下解决方案,chmod 777 -R cocos2dx目录,解除权限限制。原来删不掉的文件夹也能删了,创建新项目也正常了,开心。

空项目里有各种平台的模板。先看了一个win32的,sln打开直接运行就是游戏画面,很顺利。

再去看android的。把项目导入eclipse,报错找不到cocos2dx的库。

上网查了一下,要把cocos2dx/platform/android/java也导入到eclipse里才能找到库,理由不详,反正不报错就好。

接着是不能运行,说Unable to execute dex: java.nio.BufferOverflowException什么的。

上网查了一下,有说改改配置就能修复的,改了该,没修复。有说下载一个support什么东西的可以修复,下了,也没修复。最后不得已,用了最大动干戈的办法,卸载了build-tool 19,安装了18.1.1,不报错了。

启动虚拟机,运行空项目,GLES崩溃。

上网查了一下,好像模拟器对GLES2.0支持不好,apk自己是没有问题的。于是拿平板来安装空项目的apk文件,正确运行,不过画面不拉伸而是剧中,嘛这个以后慢慢学。

在网上稍微扫了一眼,似乎可以让电脑的模拟器也支持GLES2.0,需要设GPU加速,还是什么x86模拟器啊,没仔细看。我想既然是跨平台,应该可以在win32项目下开发,然后发布到其他平台吧。毕竟用visual studio开发最顺手。

到这里,还不太清楚怎么个开发模式。如果是我在win32的项目里开发,完了把代码复制粘贴到android的空项目里,可那android方面的配置文件什么的怎么办呢。配置还是空壳的,源文件是win32项目里拿来的。如果我用了一些外面的库什么的,这怎么无代价移植到android项目里?

今天太晚了,凌晨3点半了都,就到这儿吧。

明天如果有机会,继续看那个从cocos2d移植过来的教程。

中文版:http://cocos2d.cocoachina.com/resource/show?nid=82

英文版:http://www.cocos2d-x.org/news/18

代码:https://github.com/flyingpacer/Cocos2dxSimpleGame

10月末考完托业,昨天考完日语,心里总算没什么担子了。

无事一身轻,于是开一个系列学android开发,为接下来的cocos2dx入门做个准备。

android的SDK和NDK我以前都过过一遍hello world的,可惜只有hello world是没有意义的,你看,这不都忘了么,结果还得再来一遍。

顺便吐槽一下android官方网站上的教程都跟不上自己的版本了,看得我一愣一愣的——怎么你说的界面就跟我的不一样呢= =

还好创建项目有eclipse插件,下载更新API有Manager,我跟着走就行了。

刚入门,尽量不贪多求快了。一步一步努着走吧。

今晚看了这个教程,把NDK的自带sample自己在eclipse里面重做了一遍。

我发现,博客园里的程序方面的文章,靠谱的比较多。不相关的废话不多,也不跟你客套,上来就是干货,我喜欢。

在家断网1个多月了,挣扎了几次,现在也渐渐平静下来了。

虽然浪费在网上的时间现在都用到了睡眠上,学习进度还是没有进展,但每天的精神明显好多了,在公司亢奋工作到晚上8点左右都不会疲倦。

嗯,但是学习没有进展这个有点苦恼啊。这样下去不就和高中时代的周末一样了么——虽然没有电脑没有网没有手机没电视,但也没有做事。

这个月重构做得太过火,导致后期加班严重,另外加班其实也不太出活,人少了就开始聊天了。每天到家11、2点,磨蹭磨蹭一两点钟睡觉,睡到9点多也没睡满8小时嘛。

人家柳比歇夫一天睡10小时还是能保持超高的效率,我也觉得问题不在睡眠时间过长上面。

慢慢想吧,想到想通为止,想到能说服自己行动为止。

最近没网,脑子闲下来的时候多了,感觉在家的时候也没那么忙,生活开始变得安静起来了(虽然我在家时都是放音乐的= =)。

网费照付是有点心疼啊。初步预计断网状态会持续到12月初,还有一个多月。为了缓解心疼的症状,我准备把NAS也运到亲戚家里去,和我的WiMax团聚。然后把那个3G卡退了?如果感觉自制力够强了,也可以拿回来用,毕竟不能给家人朋友打skype是有点不舒服的。

NAS和WiMax团聚意味着我可以远程控制NAS重新下载东西和传文件什么的,还有私有云。嗯,要是有时间折腾的话也想设一个git什么的,但是鉴于我的NAS有过1500G硬盘资料全毁的恶劣事迹,而我现在手头又没有双仓NAS可以组raid,代码仓库什么的还是算了吧。我生产的数据和我下载的数据的重要度可是完全不同的,丢了我承受不了。

其实真想玩linux的话,本地可以自己装,远程可以用D-Horse和hacklu的服务器甚至VPS,自己折腾NAS实在是没什么意义。但是,其实,咳咳,我有一个梦想。

I have a DREAM.

事情是这样的。我家长辈的电子设备以前都是由我维护的,现在我不在身边,跟他们的联系变得很不方便。我希望给每家配一个NAS,这样有什么想给他们推荐的电影电视剧什么的不用每次都远程协助,可以直接下进他们的硬盘里了。还有一些家族照片,可以用NAS在关机后慢慢同步,这样再大的数据也可以同步到各家的电脑里。关键是这些都可以由我代劳,这个非常重要。对长辈来说,把照片从SD卡移动到电脑里都是一个没有远程协助就难以完成的艰巨的挑战。我认为,与其现在要长辈们去学习电脑的用法,我宁可全部为他们代劳,他们只要会看就好,可以享受到科技带来的好处就可以了。本来回国那一次我还想教会他们用微信,为此还录了高清操作讲解视频,但是姥姥的听力已经下降,听不清我视频里的话了,我走了以后他们就再没用过微信(我是不是应该去学一下后期制作,给视频再配个字幕??)。

总之,用NAS抹去各家电脑的操作难度就是我的梦想。不过这需要一些自动化的辅助,还有姥爷家的网通网络在NAT后面,要连上NAT后面的NAS,需要一些穿透内网的办法。至少要让我能ssh登陆内网的NAS,最好是能访问NAS的http管理页面。这个我在我订阅的一个叫做“依云”的博客上见到过,当时没仔细看,等有机会尝试的时候试试看,好象是写个脚本就可以了。


午休的日志时间结束,回去上工咯~

月初夹带私货,往公司代码库里写了一堆UI基础类的恶果开始显现出来了——我的开发进度落后了。

不过还好,明天的开发截止日期之前可以完成。开发截至后还有一周的缓冲时间修改bug,嗯嗯,这个月就这样吧(汗)。

我主要想说的是,这个月我的工作量(被我自己)变大了,加班到深夜的次数也增多了,也大概搞清楚了每个人都什么时候回家的了。

是的,以前我是尽量不加班的,19点下班我就象征性加1小时左右到20点就走人,如果能走的话。所以我都不太清楚大家每天加班到什么时候。

这个月看来,除了大家都加班到很晚以外,我也知道了坐我旁边一个年轻人每月的加班时间总量之大——每天22点以前基本不会离开,周末出勤很频繁而且周末也是干到22点多才走。看得我那个惭愧啊……

但是,说实话,他给我的印象并不是很强(失礼了…)。

在我接受过场动画以前,他负责过这个部分。

我“把excel改造成脚本语言”的过度设计固然不好,但确实让过场动画的编辑更加灵活了。

他负责时是使用excel数据表格把每一帧的各种数值写入表格内直接取用,这样要编辑和修改起来代价太大了,而且很难直观地修改一些连续变化的数值,角度之类。

加上每一个过场动画都要重新编写专门的一组函数和变量,所有的过场动画用函数和变量都堆积在一个巨大的gamemain类里(gamemain类:高峰期超过1.7w行,管理着进入游戏战斗画面后所有的switch case分支和各种状态的巨兽类,持有数百个变量,超恐怖…)。

这种场合,直觉上应该是把过场动画的处理独立出去,尽量不要再向巨兽体内堆积代码了才对嘛。

……好吧,程序员普遍会高估自己低估别人,我自己也觉得这么写不太好,不是很对头……

我想说的是,这位同学投入了远超别人的时间在工作上,工作也确实都能按时完成,但我还是觉得这样不太对,对自己手艺的提高效率不特别高。

大家都很努力,但每个人的水平还是有差距,而且这种差距肯定是在今后越来越大的。

希望我自己也能注意,拼工作量之于,也要想一想什么样的工作方法可以拉开和过去的自己的差距。

7个月,我留在原地的时间,有点久了呢。

进公司以前我也算是也过一点程序,也跟人合作写过游戏,但都是我一个人负责全部程序部分,程序的读者和作者都只有我一个人。

我当然知道代码是写给别人看的,但至今为止那个别人也就是几天、几周、几个月、至多几年以后的我自己而已。

一些我想出来的框架被用在我的多个程序中,是对我来说印象很深的东西,这些结构放多久我都不会忘。这样每次都建立在之前的基础上进一步添加功能,让这个框架越来越灵活,越来越合理,同时也越来越复杂。

证据是,这个框架我用着是越来越合手,但越来越不知道应该怎么介绍给别人了。写篇文章讲也许还好,只用注释想解释清楚就有点麻烦了。

在公司工作一段时间,免不了要读要用别人的代码。只用它一两个函数的还好说,要我系统地读整个类的设计思想我就犯懒了。这种时候一个常用的借口是“反正理解了也是只能在这家公司用的东西,也不知道设计的好不好,要看也应该看些开源框架,学习在哪里都用得到的知名框架才对”。现在想想,公司别人看我实现的UI框架的时候,大概也是同样的心情吧。

这个心情我倒不觉得有什么不好,毕竟公司很多程序是赶时间做出来的,大量代码是复制粘贴而来,或者是实现目标就好,完全不考虑复用的一次性类,从它们中学到东西的收获很可能抵不上读它花费的代价。

但是我写的是UI框架啊,别人不读不去理解我提供的虚函数的用法那不全白扯了嘛!

怎么办,怎么办。我想继续增加新功能,设计自己的美术资源异步初始化流程,但流程中子类独有的资源要子类理解初始化流程的基础上小心地控制bool flag才行。嗯……先看看这里能不能简化一下吧。

可是如果子类需要两段、三段异步初始化怎么办?简化掉以后这部分就要强行覆盖框架类的一部分函数才能实现了,这个人家更不敢用了啊。

嗯……总之,午休结束了,下次想到什么以后再写吧

失败一次很正常

10.18.2013, 3 条评论, 未分类, by , 2,110 views.

我有过很多个人项目,但没有一个走到终点= =

流程一般是这样的。

我突然有了一个想法,然后身体里瞬间产生了强烈的实现这个想法的欲望,强烈的欲望,有种体内压强增高,身体紧绷,要向外膨胀的感觉。

我列了一个单子,大概是有哪些技术问题需要克服,有哪些模块需要实现,模块的轻度细分,等等YY的东西

这时,如果我的强欲还没有消退,就可能进入实践步骤,开始编写粗略的框架,然后找一个可以看到的目标,拼命的走到目标实现那一步。我想做的多半是游戏什么的,有界面,所以能“看到”那个东西是一个很清晰的里程碑,这个方向很明确,所以这个步骤的成功率还不错,挺高。

现在,如果我的热情依然有所残存,大概就会系统地计划今后的步骤,还有重构整理之前凭着一股热情快速写成的粗糙原型了吧……好吧,我已经好久没有走到这一步了。


在过程中,如果我的热情消退了,我就认为自己坚持不了一件事,自责一阵,然后把代码搁置,然后,基本上就不会有然后了。

今天看逆向小超人阿姆罗的博客,又被励志了一下。你看,人家大牛不也是冲一轮没能到终点嘛,但是人家还有第二轮、第三轮啊。

嗯,今后朝这个方向多想想吧。

午休结束了,写不了太长= =

代码重构是个很好听的名义,基本上是道德制高点、正义之举的级别,所以每次当重构成为选项之一的时候,我都极其倾向于重度重构,甚至推倒重练。

不过现在我参与的工程规模越来越大,重构难度越来越大,不能随便就搞大重构了,但我还是在尽量寻找机会整理眼前的代码,别人的代码,我的守备范围内的各种代码。代码洁癖已经养成,看到复制粘贴的混乱代码就手痒,真希望我未来媳妇整理房间的热情能有我整理代码热情的至少一半吧(笑)。

不过话说回来,重构真的很花时间,对工作进程影响略大。这个月我在做的一个工作就是这样。

这个月我看我们游戏项目的2D界面至今没有一个UI框架,每次都重新写各种基础逻辑,尤其那种点击一下就消失的半透明蒙版啊、四方形按钮什么的,看着它们被一次又一次的重新实现,我整个人都不好了。

把散乱在一个类中各处的UI逻辑整理成可复用的各种UI组件,这看起来是正确无误的判断吧,于是我就跟着感觉重构下去了。结果越做越开心,基本把自己平时写游戏时用的那套简单的UI基础框架都挪到游戏项目里来了。

动作太大影响范围就会大嘛,所以到框架大概成型后的调错过程就很枯燥,很漫长。

其实公司自己有一套和2D显示相关的框架的,但那个是单个显示单位的框架,比如一个图,一个2D动画过程什么的,属于比UI组件小的单位。那个既有框架里功能还挺多的,但我写自己的框架已经来了兴致,跟没没兴趣去了解那个只有公司内的这一个游戏在用的私有框架。结果我大概了解了一下它的创建读取和释放,显示非显示,位置设定和优先级设定之后,就拿着这东西去拼我的UI组建了。

昨天写道23点多,身边仅剩的几个人已经进入聊天状态,我也累了,就上前炫耀了一下我的战果,说原来那个框架功能不足啊你看我给补上了哈哈哈哈。结果原2D负责人现在我直属上司突然情绪亢奋,凑上来问我哪里功能不足,我说了几个部分,他表示这个有稍微曲折一点但是用既有代码也可以做到的解决方案。我想那套既有代码里有他贡献的一部分代码,说老代码的坏话他肯定不高兴的。不过知道我重复实现了一些已有的功能对我还是有很大打击。回家的路上,我开始想,这次为什么做得不对。

重构是大义,应该做的。这次的问题是出在写出了兴致,开始过度设计了。在我把自己的框架移植过来的时候,其实我已经不是为了解决,而是为了写一个漂亮的框架而在写代码。这对自己学习来说也许有点意义,但是在公司做这种事就比较理亏了。

以后注意吧。在工作领域,快速完成工作是第一优先。


不过这样也无法阻止我继续在工作中寻找提升自己技能的机会的!