九天雁翎的博客
如果你想在软件业获得成功,就使用你知道的最强大的语言,用它解决你知道的最难的问题,并且等待竞争对手的经理做出自甘平庸的选择。 -- Paul Graham

回归游戏的世界,简单图形编程学习的开始

回归游戏的世界,简单图形编程学习的开始

write by 九天雁翎(JTianLing) -- www.jtianling.com

讨论新闻组及文件

这个系列是我对游戏开发的重新认识导致的。。。。按《那是飞扬的青春—小评《DOOM启示录》》中所描述过的,以前其实我排斥过游戏开发,所以选择了服务器端程序的开发。但是,慢慢的,从Small Basic画几个图形开始,加上看了《DOOM启示录》。。。。我开始有了新的认识,既然血液中流着游戏的气息,既然到目前为止一辈子就一直和游戏没有办法脱离关系,为啥还要这样强制让自己痛苦呢?必要的时候,还有游戏界开发的宗师的话安慰我,凡是沉迷于游戏的人,那都是家庭原因.......呵呵,说来也是,以前游戏浪费了我很多时间,导致现在感觉时间浪费的不值,但是想想,那时候我不玩游戏我会干什么?真的就会天天耐下心来学习?没有到那一步之前,那是不可能的,起码,那时候,游戏还给了我快乐,那就足够了。人一辈子,快乐的时候又能多少呢?也许那些因为家庭原因的孩子,在没有游戏的时候,会变得比现在更加恶劣。。。起码他们现在还能安静的沉迷在游戏的虚拟世界中-_-!虽然感觉这样的说法实在是有点自欺人。。。。。

既然这样想了,那么就很明确了,真正的游戏开发还是客户端最能体会,服务器这个曾经用来远离游戏的选择就不那么合适了,客户端。。。。从图形编程学起吧。。。。呵呵,又是一个新的领域,我喜欢。

个人学习,总是学习多路并进。。。。对于同一个主题的反复学习,有助于自己的思考,同时也发现了很多不同的思维方式,就像以前学习算法的时候,考虑用C++,python,lua,bash来完成同一个算法一样,现在简单的图形编程学习我还是希望用四种方式来完成。。。。。C++的Windows GDI/GDI+,Python/C++的PyQt/Qt,JAVA的Android,最后,也许在恰当的时候加上small basic,呵呵,之所以加上small basic,纯粹是因为它也算是为我重新发现编程乐趣的语言:)

对了,这里所谓的简单,就是指除了DirectX和OpenGL意外的,系统远程的图形接口绘图的方式完成图形的绘制,DirectX和OpenGL自然是肯定要学的,但是,我希望在学习了这些简单的以后。虽然,我很确定的知道,对于游戏开发来讲,DirectX在Windows下会几乎完全代替GDI的使用,OpenGL的强大功能也足以使Qt,Android的其他绘图方式黯然失色,但是,不知道为啥,我还是想好好的学习一下这些系统/框架的原生绘图方式。其实,从small basic中一些简单,但是让人惊艳的程序中我体会到,其实,最最简单的图形技术,也能产生让人直呼惊艳的程序,重要的是你使用技术的思想。。。。。(参考我以前关于Small basic的文章:《初学编程该怎么学?——对初学者程序设计语言学习的思考(2)

另外,这次不像以前学习数据结构一样了,将3,4种语言的程序同时放在一起,呵呵,那是种自己比较痛快的方式,但是估计不希望了解那么多语言的人看到估计是无用噪音大于有用信息的,就图自己的痛快了,这一次,我虽然还是用几种语言/框架去实现也许一样的功能,但是,我还是为每个单独建立文章 ,然后在文章中建立链接,让有用的人查看吧,这样做,我可能累点,因为也许我的文章中主要的思路都是一样的(我就需要拷贝几份),不一样的仅仅是源代码和截图而已。这样做的好处就是,我不必等几种语言实现的都出来了才可以发文章。

JAVA的Android实现放在这里属于比较大胆的行为,毕竟其实我对JAVA和Android了解的都比较有限,在任何时候我都会实话说,其实本质上我仅仅是一个靠C++吃饭的网络游戏服务器端程序员而已,其实踏足图形编程领域(是不是说的太大了-_-!)都是因为自己的兴趣使然,没有办法。

另外。。。其实,我老是学那么多语言,框架。。。最近甚至因为Android还学了JAVA。。。。。个人感觉,学习C++的人一般不会学JAVA。。。。。就像我学了VIM就不想学Emacs一样。。。呵呵,但是。。。Google的号召力嘛,因为Google app以前只能用Python来开发,我耐心的学习了Python,(其实也不全是,还有当时学习完LUA对脚本语言很感兴趣的原因,但是这也是很大的原因吧),现在Google的Android手机只能用JAVA开发(其实最近用C++开发的NDK也出来了),那么我就学习JAVA。。。。。唉。。。何苦呢。。。。但是,不学点东西也没有啥事干,不是嘛?工作虽然辛苦,但是能学到的新东西毕竟少了,自己不学习,工作后干点啥呢?学习一种新的语言,踏入一个新的领域那是多么让人愉快的事情啊,一路走来,我不就是因为这样才走上了开发程序的道路吗?

学的太多太杂,有很大的贪多嚼不烂的风险,但是作为程序员,多了解几种语言还是有助于开拓思路的,并且,我能够在正确的时候,选择我认为最正确的语言去做一件事情。举例而言,没有学bash之前,在Linux下我用Python作批量运行程序的脚本语言用(其实也没有什么不好),但是学了bash后,可以用更简洁的代码,更快的完成同样的事情。(虽然再复杂点的程序bash就是噩梦),学过bash的时候,回头来回看到makefile文件的语言是何其的亲切,再也不是以前认为的 $乱飞了,即便是看到VS2005中的工程定义,那些宏$()的样子也是如此的熟悉。Python中发现的很多有趣性质,我感觉的C++想做但是不敢做的事情,在学习JAVA的时候再次碰到,也就习以为常了,等等等等,太多太多,即便是Windows API中以前很多看起来非常古怪的使用方式,在开发多了程序后都能感觉正常了(也理解了MS的苦衷,很多时候其实是实现手段的限制),同时也能想到,假如这个接口是Python实现的,那就该怎样简单啊。。。呵呵,其实说了那么多,都仅仅是为自己辩护而已,其实我认为总有一天我会在某个领域深入的学习下去,但是,那一天还没有到来之前,多学点东西,不是能让我更早的发现那样一个领域吗?毕竟我还只工作一年多一点,太早盲目的为自己定下方向,也许不见的会多么正确,就像我直到大学毕业后,才发现我真的是准备走上程序开发的道路,一共用了20多年,那么我又怎么能在仅仅进行程序开发1年多就能发现我准备在程序开发中选择什么样的道路呢?呵呵,在自己还没有老去的时候,随性而去吧,趁自己还对那么多新鲜事物感兴趣并且精力比较旺盛的时候去多学点东西吧,哪怕以后我不会再用到。。。。当你学习你感兴趣的事情时,学习过程,本身也是一件很愉快的事情,不是吗?

 

 

write by 九天雁翎(JTianLing) -- www.jtianling.com

分类:  游戏开发 
标签: 

Posted By 九天雁翎 at 九天雁翎的博客 on 2009年08月08日

前一篇: OPhone/Android的学习(3)—再熟悉几个常用的Widget 后一篇: 简单图形编程的学习(1)---文字 (small basic实现)