【Virtual C++ 3D游戏开发】前言
2012-11-09 01:29
344 查看
为了方便大家阅读,之前所写的博文已经重新排版。
——Mad.Karl 于 2012.11.14
从底层和网络安全开发转型做游戏已经有一段时间了,这期间我一直是一个人边学边做,同时整合以前的知识,每天12个小时的高强度学习让我最近一直有些精神恍惚。我想,现在是时间放缓脚步了,把之前学习过程中总结出来的文档和问题再次加以整理,以便于自己提高。同时,汇成博文,让和我有类似经历等朋友们能得到点滴的帮助。于我而言,游戏开发毕竟是一个新的方向,接触的时间并不长,随着研究的深入,愈发的感觉到这个领域内知识的浩瀚。毕竟现在我还在校园里,每天还需要上课,或者参与导师的项目,可能写博文的时间并不多。但我还是决定尽自己最大的努力多写一些出来,如果我之前的理解是正确的,那么肯定能为大家提供许些帮助,如果我之前的理解有所偏颇,希望看到我博文的朋友们能够不吝赐教。
——Mad.Karl 于 2012.光棍节前夕
一.3D游戏开发需要掌握的十八般武艺
前面我已经说过,游戏开发是一个需要汇集各种各样的技术才能够使其初具规模的大工程。从我的角度来说,我想把博文分成如下几个部分:
1.前置知识——Win32编程
窗体创建剖析、消息驱动机制(其他的我还要看一下之前总结过些什么,慢慢添加)。
为了照顾小朋友,估计我还会做一些和环境配置相关的内容,看心情吧。
2.DirectX 11入门
这里我会选择使用的是DX11 SDK(Feb 2010)。不可否认现在DX9是主流,但是如果以学习提高或研究为主要目的,那么选择最新的SDK无疑使最好的选择。而且可以预见的是,我更新博文的速度很慢。但愿在我全部写完之前,微软别出更新的SDK,抑或让DX9淘汰(估计不太可能,玩笑而已)。
以上只是玩笑而已,事实的情况是:DirectX10和11只能运行在Vista及以上的Windows平台上,而且DirectX11是DirectX10的一个扩展集。于是就导致了现在9、10、11三个版本并存的情况发生。如果你看过SDK目录下的Include文件夹你会发现,支持DirectX9的头文件依然存在于SDK包中。这就是说,我们也可以在安装Direct11SDK后,使用DirectX9的API进行开发。这样做的好处就是保证在最大程度上对系统的兼容。从实际的角度来看,鬼火和食人魔这样的第三方引擎在今天也是使用的DirectX9的API进行开发的。
DX11 SDK下载地址:http://download.microsoft.com/download/F/1/7/F178BCE4-FA19-428F-BB60-F3DEE1130BFA/DXSDK_Feb10.exe
或者你可以直接访问:http://www.microsoft.com/en-us/download/details.aspx?id=6812
3.空间几何相关知识
其实我刚才输入空间几何这几个字的时候就觉得自己有点不靠谱,虽然说我也曾靠数学制霸全校过。空间几何不难,向量矩阵神马的都不是事。关键是在Direct里面用起来真的很别扭(至少我是这么感觉的)。
4.开源3D引擎源码分析
这里我只选择两个引擎,鬼火和食人魔。原因很简单,因为我目前只研究这两个。
食人魔(OGRE)下载地址:http://www.ogre3d.org/download/sdk
鬼火(Irrlicht)下载地址:http://irrlicht.sourceforge.net/downloads/
5.其他部分
网络模块:这是无需讨论的。我一直相信一件事,不管干什么,起点一定要高。而且,我以前写过很多网络模型,也跟朋友讨论和尝试开发过不同的架构,无论看到博文的朋友是不是做游戏的,我相信都会有帮助的。
音频和动画:最近正在考虑如果入手开始研究。
IO控制和其他:这个肯定要说到,不过时间的话就不一定了。因为个人感觉这部分难度都不大,最没底线的作法就是网上找资料,直接抄。而且直接抄来的很多都能用。
第三方类库:这是不可避免会用到的东西,比如ZLIB。因为这些并不是关键点,简单了解会用就OK了~
6.还在酝酿
这要看我这种12小时的学习状态可以坚持多久。如果一切顺利,我会尝试自己写一些Demo出来晒晒,与喜欢游戏开发的朋友们分享讨论。
PS:以上这些就是我目前的大体思路了,可能我尽量按照顺序写(不一定什么时候突然有兴致去写点什么,这要看我翻箱倒柜整理以前资料的情况了)。
二.一些不错的书籍
//以下内容是给有些基础的人准备的
《C++ Primer》:我就不再替这本书吹牛了。虽然他值得一看,但我还是建议当您已经有了一定基础之后再看它,除非您可以直接看E文原版。这书的翻译实在是太蛋疼了,各种长短句和疑难杂句(和VC打交道太久,难免会出现说都不会话了的情况)。
《Effictive C++》:这本书对我来说,属于神器级别的。虽然本科就是计算机专业的,不过自己在研究过程中难免学了很多野路子,在思维上也有一些瑕疵。一共55个条款,每天认真看一条。俩月读完,收获良多。
《DirectX 9.0 3D游戏开发编程基础》:这本书是另一大神器。它本着为了醒目标题一定要长的原则,带着半生不熟的翻译,让我魂牵梦绕了很久很久。在这里不做具体评论,不过说良心话,我的确受这本书影响很大。
//基础不牢的童鞋别着急
《Virtual C++深入详解》:孙鑫老师的大杀器,据我朋友说,貌似很多人都看这个书的,至少看他的教程。这对于一些想了解Windows的内部机制和理解一些控件之类的童鞋有些帮助的。
《C++全方位学习》:我零起点入门时候看的第一本书,个人感觉不错。当时也是12小时学习,7天之后看完书+视频,基础稳稳的~(范磊老师也不算太火啊现在,学生算是支持您一下吧)
三.在正式开篇之前的一些说明
首先,如果朋友们有耐心看到这里。那么我首先要谢谢您,最近E文+翻译的书看的有些多,说话的时候感觉贼别扭。咱都是玩技术的,语言上面大家多担待吧。
上面介绍的那些书,如果有能力而又没看过的童鞋们可以买来看看。我这里没有写出一大堆书单,挑了几本对自己影响最大的发出来而已。而且这些都是最基础的书了,比如说鬼火和食人魔之类的参考资料,我都是直接看一些半生不熟的E文版本或者中文的电子版。因为到了那个时候,基本上理解起来都不太难。
第三部分的内容是跟数学密切相关的。虽然我很想避开他,但是不懂真的不行啊。
还有一点要说的,虽然是游戏开发相关博文,但是咱毕竟不是搞美工的,以后有什么贴图太丑之类的,请勿吐槽。我的审美观已经在我朋友们的吐槽中崩溃了无数次了,泪奔~
放下代码和书籍,写点博文,心情真是轻松+愉快。这是一个好的开始,希望朋友们能够支持~
——Mad.Karl 于 2012.11.14
从底层和网络安全开发转型做游戏已经有一段时间了,这期间我一直是一个人边学边做,同时整合以前的知识,每天12个小时的高强度学习让我最近一直有些精神恍惚。我想,现在是时间放缓脚步了,把之前学习过程中总结出来的文档和问题再次加以整理,以便于自己提高。同时,汇成博文,让和我有类似经历等朋友们能得到点滴的帮助。于我而言,游戏开发毕竟是一个新的方向,接触的时间并不长,随着研究的深入,愈发的感觉到这个领域内知识的浩瀚。毕竟现在我还在校园里,每天还需要上课,或者参与导师的项目,可能写博文的时间并不多。但我还是决定尽自己最大的努力多写一些出来,如果我之前的理解是正确的,那么肯定能为大家提供许些帮助,如果我之前的理解有所偏颇,希望看到我博文的朋友们能够不吝赐教。
——Mad.Karl 于 2012.光棍节前夕
一.3D游戏开发需要掌握的十八般武艺
前面我已经说过,游戏开发是一个需要汇集各种各样的技术才能够使其初具规模的大工程。从我的角度来说,我想把博文分成如下几个部分:
1.前置知识——Win32编程
窗体创建剖析、消息驱动机制(其他的我还要看一下之前总结过些什么,慢慢添加)。
为了照顾小朋友,估计我还会做一些和环境配置相关的内容,看心情吧。
2.DirectX 11入门
这里我会选择使用的是DX11 SDK(Feb 2010)。不可否认现在DX9是主流,但是如果以学习提高或研究为主要目的,那么选择最新的SDK无疑使最好的选择。而且可以预见的是,我更新博文的速度很慢。但愿在我全部写完之前,微软别出更新的SDK,抑或让DX9淘汰(估计不太可能,玩笑而已)。
以上只是玩笑而已,事实的情况是:DirectX10和11只能运行在Vista及以上的Windows平台上,而且DirectX11是DirectX10的一个扩展集。于是就导致了现在9、10、11三个版本并存的情况发生。如果你看过SDK目录下的Include文件夹你会发现,支持DirectX9的头文件依然存在于SDK包中。这就是说,我们也可以在安装Direct11SDK后,使用DirectX9的API进行开发。这样做的好处就是保证在最大程度上对系统的兼容。从实际的角度来看,鬼火和食人魔这样的第三方引擎在今天也是使用的DirectX9的API进行开发的。
DX11 SDK下载地址:http://download.microsoft.com/download/F/1/7/F178BCE4-FA19-428F-BB60-F3DEE1130BFA/DXSDK_Feb10.exe
或者你可以直接访问:http://www.microsoft.com/en-us/download/details.aspx?id=6812
3.空间几何相关知识
其实我刚才输入空间几何这几个字的时候就觉得自己有点不靠谱,虽然说我也曾靠数学制霸全校过。空间几何不难,向量矩阵神马的都不是事。关键是在Direct里面用起来真的很别扭(至少我是这么感觉的)。
4.开源3D引擎源码分析
这里我只选择两个引擎,鬼火和食人魔。原因很简单,因为我目前只研究这两个。
食人魔(OGRE)下载地址:http://www.ogre3d.org/download/sdk
鬼火(Irrlicht)下载地址:http://irrlicht.sourceforge.net/downloads/
5.其他部分
网络模块:这是无需讨论的。我一直相信一件事,不管干什么,起点一定要高。而且,我以前写过很多网络模型,也跟朋友讨论和尝试开发过不同的架构,无论看到博文的朋友是不是做游戏的,我相信都会有帮助的。
音频和动画:最近正在考虑如果入手开始研究。
IO控制和其他:这个肯定要说到,不过时间的话就不一定了。因为个人感觉这部分难度都不大,最没底线的作法就是网上找资料,直接抄。而且直接抄来的很多都能用。
第三方类库:这是不可避免会用到的东西,比如ZLIB。因为这些并不是关键点,简单了解会用就OK了~
6.还在酝酿
这要看我这种12小时的学习状态可以坚持多久。如果一切顺利,我会尝试自己写一些Demo出来晒晒,与喜欢游戏开发的朋友们分享讨论。
PS:以上这些就是我目前的大体思路了,可能我尽量按照顺序写(不一定什么时候突然有兴致去写点什么,这要看我翻箱倒柜整理以前资料的情况了)。
二.一些不错的书籍
//以下内容是给有些基础的人准备的
《C++ Primer》:我就不再替这本书吹牛了。虽然他值得一看,但我还是建议当您已经有了一定基础之后再看它,除非您可以直接看E文原版。这书的翻译实在是太蛋疼了,各种长短句和疑难杂句(和VC打交道太久,难免会出现说都不会话了的情况)。
《Effictive C++》:这本书对我来说,属于神器级别的。虽然本科就是计算机专业的,不过自己在研究过程中难免学了很多野路子,在思维上也有一些瑕疵。一共55个条款,每天认真看一条。俩月读完,收获良多。
《DirectX 9.0 3D游戏开发编程基础》:这本书是另一大神器。它本着为了醒目标题一定要长的原则,带着半生不熟的翻译,让我魂牵梦绕了很久很久。在这里不做具体评论,不过说良心话,我的确受这本书影响很大。
//基础不牢的童鞋别着急
《Virtual C++深入详解》:孙鑫老师的大杀器,据我朋友说,貌似很多人都看这个书的,至少看他的教程。这对于一些想了解Windows的内部机制和理解一些控件之类的童鞋有些帮助的。
《C++全方位学习》:我零起点入门时候看的第一本书,个人感觉不错。当时也是12小时学习,7天之后看完书+视频,基础稳稳的~(范磊老师也不算太火啊现在,学生算是支持您一下吧)
三.在正式开篇之前的一些说明
首先,如果朋友们有耐心看到这里。那么我首先要谢谢您,最近E文+翻译的书看的有些多,说话的时候感觉贼别扭。咱都是玩技术的,语言上面大家多担待吧。
上面介绍的那些书,如果有能力而又没看过的童鞋们可以买来看看。我这里没有写出一大堆书单,挑了几本对自己影响最大的发出来而已。而且这些都是最基础的书了,比如说鬼火和食人魔之类的参考资料,我都是直接看一些半生不熟的E文版本或者中文的电子版。因为到了那个时候,基本上理解起来都不太难。
第三部分的内容是跟数学密切相关的。虽然我很想避开他,但是不懂真的不行啊。
还有一点要说的,虽然是游戏开发相关博文,但是咱毕竟不是搞美工的,以后有什么贴图太丑之类的,请勿吐槽。我的审美观已经在我朋友们的吐槽中崩溃了无数次了,泪奔~
放下代码和书籍,写点博文,心情真是轻松+愉快。这是一个好的开始,希望朋友们能够支持~
相关文章推荐
- 【Virtual C++ 3D游戏开发】前置知识 三 <Win32窗口程序剖析>
- 【Virtual C++ 3D游戏开发】前置知识 一 <工作环境及Win项目初窥>
- [3D数学基础:图形与游戏开发]专栏前言
- 【Virtual C++ 3D游戏开发】前置知识 二 <Windows环境下的一些重要概念>
- android 3D游戏开发-glPushMatrix() glPopMatrix()
- [Unity3D]手机3D游戏开发:使用UnityRemote开发一个简单的FPS案例
- 3D数学基础 图形与游戏开发的学习 (六)[多坐标系]
- 3D游戏开发步步高系列课程(视频课程讲师:付仲恺)
- Unity 3D - 游戏开发中的Lua
- 【Unity 3D游戏开发学习笔记】粒子光环
- 国内外3D游戏开发流程和职位分类
- 【Unity 3D游戏开发学习笔记】 UI System
- [精华分享][Unity&模型制作&blender]适合独立游戏开发的官方免费3D人物模型软件以及教程合集
- 实战Unity3D开发:从认识界面到游戏demo
- [3D游戏开发]场景管理
- Cocos2dx从零单排游戏开发(前言)
- Silverlight C# 游戏开发:L1 3D世界的建造
- 内置3D对象-Unity3D游戏开发培训
- 3D游戏开发之UE4中的集合:TSet容器
- 毕设开发总结-3D游戏框架及网络对战游戏的开发(1)