本系列文章由zhmxy555(毛星云)编写,转载请注明出处。

http://blog.csdn.net/zhmxy555/article/details/7672101

作者:毛星云    邮箱: happylifemxy@qq.com    期待着与志同道合的朋友们相互交流

------------------------------------------------------------------------------------------------------------------------------

浅墨历时一年为游戏编程爱好者锻造的著作:《逐梦旅程:Windows游戏编程之从零开始》
如果你喜欢浅墨写的【Visual C++】游戏开发系列博客文章,那么你一定会爱上这本书。
这是浅墨专门为热爱游戏编程的朋友们写的入门级游戏编程宝典。
彩版样章试读下载|配套源代码下载
书本维护页面|当当网|京东商城|亚马逊

------------------------------------------------------------------------------------------------------------------------------

本篇文章讲解游戏开发主题的相关内容,DirectX开发环境的配置以及依旧由《暗黑破坏神3》延展讲解一点游戏开发的知识。

事情繁多很多天之后,今天浅墨开始接着进行专栏的更新。

上篇文章一发出来,就有很多朋友在文章的评论中讲到了很多这个专栏系列的行文走向方方面面的问题,浅墨就在文章开头简要说明一下。

一,关于游戏开发的主题

既然大家都比较关注这个专栏系列的行文走向,就让我们先从单机游戏与网络游戏的联系与区别讲起吧。

我们都知道,游戏编程分为服务器端编程和客户端编程。传统的单机游戏一般都只会用到客户端编程,本系列专栏就注重这方面知识的讲解。

(若有必要,在介绍完游戏客户端编程的知识之后,浅墨也许会再开一个网络游戏开发的专栏,当然这还需要很久的时间,具体事宜到时候再与大家讨论商榷。)

客户端游戏编程需要掌握的主要是Win32编程, 计算机图形学,DirectX,算法与逻辑实现等方面的知识。

PC游戏界的后起之秀网络游戏显然包含了服务器端编程和客户端编程两部分。

服务器端编程需要掌握的主要是网络编程,数据库,多线程编程和Linux编程等知识。

(感谢yuan5531750提供给浅墨的多线程,网络编程等相关知识讲解的思路,但是浅墨觉得目前讲解这方面知识还不太妥当,若浅墨在结束这个专栏之后决定再写一个网络游戏开发的专栏,这方面知识将是重头戏。但多线程和网络编程在这个专栏里目前还不会涉及,浅墨得对yuan5531750暂时说声抱歉了,希望得到他的理解。)

好了,我们继续讲,近10年以来,随着互联网技术的迅猛发展,自从第一款轰动全球的网络游戏《传奇》横空出世以来,网络游戏逐渐代替了单机游戏曾经的霸主地位,成为了PC游戏的中流砥柱。从此之后,很多朋友开始乐此不疲地在魔兽世界,穿越火线,龙之谷,地下城与勇士等网游中消遣着业余的时光,丰富自己的生活。当然网络游戏的出现也催生了5173等网络游戏交易平台,游戏打金工作室,盗号工作室等网络游戏相关的第三方产业。

讲完这个知识点,我们来看下主线的任务,DirectX 11.

二、最简化的DirectX 11开发环境的配置

在编写基于DirectX 11的应用程序之前,我们当然需要在IDE中加入DirectX SDK函数库的支持,让编译器在编译我们的代码时候,认识我们在代码中调用的DirectXSDK中的函数。否则,编译器会报出undefined  XXX等错误,因为如果我们不进行DirectXSDK的配置,编译器是不会聪明到认识这些函数的。

之前浅墨发表过一篇《DirectX开发环境快速配置》的文章,其实那篇文章中把DirectX SDK的配置说复杂了,由于目前是面向Visua Studio 2008以上的版本,配置过程将是非常的简单。

<第一步>下载和安装DirectX SDK

从微软官方网站上下载最新的DirectX SDK,我们选择目前最新的 DirectXSDK_June10 (截止2012年6月16日)。

下载地址是  http://www.microsoft.com/en-us/download/details.aspx?id=6812

下载完成后得到一个名为DXSDK_Jun10.exe的安装包,然后双击此文件进行安装。

安装目录浅墨设定的为 D:\Program Files\Microsoft DirectX SDK (June 2010) ,可以任意设定,但要记好目录,下一步会用到这个安装目录。

<第二步>进行相关的配置

打开Visual Studio(浅墨在这里示例的是Visual Studio 2010),依次点击【工具】(快捷键 Alt+T)->【选项】(快捷键O)->【项目和解决方案】->【VC++目录】

(英文版的为【tools】->【option】->【projects and solutions】->【VC++Directories】)

我们会得到如下窗口:

,需要的只是在【包含目录】和【库目录】中添加相关目录即可,浅墨在图中用方框标出了,添加的具体步骤如下:

<1>    在【包含目录】中加入安装的DirectX SDK目录下的include文件夹的路径,根据DirectX SDK的安装路径,即添加D:\ProgramFiles\Microsoft DirectX SDK (June 2010)\Include

这里如果是不同的安装路径需要部分进行修改,示意图如下:

<2> 在【库目录】中加入安装的DirectX SDK目录下的Lib文件夹的路径,根据DirectX SDK的安装路径,即添加 D:\Program Files\MicrosoftDirectX SDK (June 2010)\Lib\X86

这里如果是不同的安装路径依然需要部分进行修改,示意图如下:

添加完这两个目录,DirectX开发环境的配置就成功了,我们就可以在Visual Studio中运行基于DirectX的运用程序了.

PS: 如果在执行第二步的时候,也许会出现“VC++ 目录编辑功能已被否决”的情况。我们可以不采用上述的方案进入VC++Directories,转而采用如下方案:

执行菜单栏中的<视图>--<属性管理器>,在新出现的“属性管理器”工作区中,点击项目->Debug|Win32->Microsoft.Cpp.Win32.userDirectories即可打开vc++Directories

三、由《暗黑破坏神3》的衍生讲解

今天的讲解是基于浅墨在NGA上看过的一篇帖子,个人感觉写得很中肯,在这里感谢帖主精彩的行文,原文链接是:

http://bbs.ngacn.cc/read.php?tid=5264899&_fp=1

如下是精彩部分的摘要:

“每个程序都会有bug,哪怕它仅仅是个helloworld,如果程序没有bug,操作系统就会有bug,如果连操作系统都没有bug,世界就会毁灭。”

引用这句话是想告诉大家,游戏是个大型软件,是超越所有软件研发行业研发难度的系统工程,集“通信”“图形”“audio” “物理” “字符集”等难点于一身,这些东西光是分散开来形成一个单独学科都够任何一个人研究一辈子,而在游戏研发中,要把这些难点全部做到淋漓尽致,实在是对研发者的重大考验,更何况是暗黑3这样的大型项目,你们看看光是开发者列表有多少人,要协同这么多人一起工作更是一件非常具有难度的事情。而bug本身具有如下分类:

A类bug: 导致程序崩溃、死循环、系统当机、通讯断开、存储错误、流程无法继续等

B类bug: 主体逻辑正确,但分支逻辑不完善或缺失无法形成体系

C类bug: 设计不恰当、造成影响游戏体验

D类bug: UI排版、文字、图形的错误

F类bug: 术语及语言表达不当

目前看来,卡进度这个归结于B类bug,属于分支逻辑不完善,白话一些就是程序员没想完善所有可能的操作,而踢馆子这种事只能算做C类bug导致的游戏平衡性问题,说到这里,想起对不平衡的定义:让玩家产生单一或唯一选择就是不平衡。

怎么说呢?比如一个机枪兵造价50 攻击力10 一个坦克造价50 攻击力20 就让玩家产生了唯一选择 我想傻子才会去造机枪兵吧。踢馆子属于这类,在权衡了难度,成本,产量后,踢罐子成为大多数人的唯一选择,那么暴雪修掉这样的“bug”是非常正确的选择。

我们再来看看卡进度这个事情,很显然是因为负责这块逻辑的程序员没考虑到退出公共游戏后的进度保存问题,和之前的正常逻辑冲突了导致了所谓卡进度的“bug”。

接着我们来看看大家喷的最多的登录问题37,12,108,33,3007,3014等:

大家应该能看出这是我对一些数值的宏定义,那么为什么需要他们呢?

比如我在写代码,要创建一个1024×768的窗口,那么简单的填上1024×768就可以了吗?不,虽然可行,但不是最优的解决办法也不利于同事来读懂我的代码,如果我定义一个宽为1024 再定义一个高为768 那么我在代码中只需要写宽和高 而不用写具体的数值,这样一来,同事既可方便读懂,又可以非常快捷的修改这些参数,无论代码里引用了多少次我只需要在定义的地方修改数字就可以了,不是很方便么。同理37,12,108,33,3007,3014这些只是对状态的一种定义,比方说:

37:服务器满员

34200:维护中

315300:多国语言问题

以及等等。

以上就是本文的全部内容,谢谢欣赏。

另外,近期留过邮箱需要浅墨发送游戏开发入门到深入学习资料的数百位读者会在近三天内收到浅墨的邮件,前段时间由于事情繁多,没有及时发送,请见谅。

感谢一直支持【Visual C++】游戏开发笔记系列专栏的朋友们。

【Visual C++】游戏开发 系列文章才刚刚展开一点而已,因为游戏世界实在是太博大精深了~

但我们不能着急,得慢慢打好基础。做学问最忌好高骛远,不是吗?

浅墨希望看到大家的留言,希望与大家共同交流,希望得到睿智的评论(即使是批评)。

你们的支持是我写下去的动力~

精通游戏开发的路还很长很长,非常希望能和大家一起交流,共同学习,共同进步。

大家看过后觉得值得一看的话,可以顶一下这篇文章,你们的支持是我继续写下去的动力~

如果文章中有什么疏漏的地方,也请大家指正。也希望大家可以多留言来和我探讨相关的问题。

最后,谢谢你们一直的支持~~~

——————————浅墨于2012年6月17日

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

【Visual C++】游戏开发笔记二十五 最简化的DirectX开发环境的配置相关推荐

  1. 【Visual C++】游戏开发笔记二十五 最简化的DirectX 11开发环境的配置

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. http://blog.csdn.net/zhmxy555/article/details/7672101 作者:毛星云 邮箱: happ ...

  2. JVM 学习笔记二十五、JVM监控及诊断工具-命令行篇

    二十五.JVM监控及诊断工具-命令行篇 1.概述 性能诊断是软件工程师在日常工作中经常面对和解决的问题,在用户体验至上的今天,解决好应用软件的性能问题能带来非常大的收益. Java作为最流行的编程语言 ...

  3. 开发指南专题十五 JEECG微云快速开发平台EXCEL导入导出

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴!  开 ...

  4. 【Visual C++】游戏开发笔记四十五 浅墨DirectX教程十三 深度测试和Z缓存专场

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. 文章链接: http://blog.csdn.net/zhmxy555/article/details/8607864 作者:毛星云(浅墨 ...

  5. 【Visual C++】游戏开发笔记二十四 由DirectX的几个版本说开去

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 本系列文 ...

  6. 【Visual C++】游戏开发笔记二十 游戏基础物理建模(二) 重力系统的模拟

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. http://blog.csdn.net/zhmxy555/article/details/7496200 作者:毛星云    邮箱: h ...

  7. 【Visual C++】游戏开发笔记三十五 站在巨人的肩膀上:游戏引擎导论

    看到在留言中很多朋友提到不太清楚DirectX与游戏引擎的区别的问题,在这里浅墨就专门把自己对游戏引擎的一些理解写成一篇文章,作为我们<Visual C++游戏开发>专栏的游戏引擎导论,也 ...

  8. 【Visual C++】游戏开发笔记二十六 DirectX 11各组件的介绍 第一个DirectX 11 Demo的创建

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 本系列文 ...

  9. 【Visual C++】游戏开发笔记二十六 DirectX 11各组件的介绍第一个DirectX 11 Demo的创建

    本系列文章由zhmxy555(毛星云)编写,转载请注明出处. http://blog.csdn.net/zhmxy555/article/details/7688515 作者:毛星云    邮箱: h ...

最新文章

  1. 寄存器(CPU工作原理)04 - 零基础入门学习汇编语言09
  2. 循序渐进看Java web日志跟踪(2)-Java日志API认识
  3. 【渝粤题库】陕西师范大学209010 现代教育战略 作业 (专升本)
  4. C语言代码规范(七)#define
  5. Django基础—— 19.Form
  6. mysql数据库学习——5,数据类型,字符集和校对
  7. axure html尺寸,Axure 原型 | 教你使用自适应视图构建界面
  8. [msi]获取msi安装包的ProductCode
  9. .NET图像处理包 DotImage
  10. 我叫金三顺的经典爱情名言
  11. Linux下的压缩和解压缩命令——compress/uncompress
  12. 软件需求工程与UML建模——第九组第六周工作总结
  13. 有关于Java中JFrame方法的基本操作
  14. 试看5分钟视频python_清华学姐推荐的Python视频400集,拿走不谢!
  15. 16家上市银行股票代码
  16. 对讲机的单工、双工介绍
  17. python绘制彩色地震剖面断层解释_地震剖面上断层的识别标志主要有哪些
  18. Groovy简介与使用
  19. 商品订单管理系统(参考答案)
  20. android 开游艇游戏,游艇狂飙游戏-游艇狂飙安卓版预约_第一手游网

热门文章

  1. 给定一个字符串 s ,请你找出其中不含有重复字符的 最长子串 的长度
  2. sr550服务器配置硬盘,【联想SR550配置】联想SR5502颗服务器配置-ZOL中关村在线
  3. DirectX12的初始化
  4. 第二届天府大地艺术季(春)——唐昌镇战旗村分会场“红色记忆”系列主题活动开启
  5. 反爬机制之验证setcookie
  6. 国科大学习资料--最优化计算方法(王晓)--第七次作业答案
  7. [转载]李开复针对马加爵事件写给中国学生的一封信
  8. 从十亿光年到0.1飞米
  9. 红尘烟火,在等谁的相濡以沫?
  10. windows命令行下通过cl命令编译动态链接库示例