现在的互联网行业从事Windows游戏开发的人实在是太少了。一是因为门槛较高,游戏行业本来就是互联网行业最尖端的领域,要想从事游戏开发,不仅要掌握一门过硬的语言,尤其是对C++的精通,还要对算法非常精通,深刻掌握计算机图形学等知识。熟悉以后还得掌握一些重要的图形库(OpenGL和DirectX)以及一些强大游戏引擎(Unity3D,Cocos2d-X等)。这些书籍光是看完就要花很久的时间,更别说在项目中熟练运用了。这条路漫长而艰辛让许多想从事游戏开发的初学者们望而却步。并且市面上关于游戏开发的好的书籍实在是少之又少,绝大部分又都是外文书籍,这更加阻挡了许多人迈入游戏领域的大门。
但是我相信一定有很多同学和我一样对游戏开发领域无比向往。下面是网上的大神们推荐的一条游戏开发进阶之路,如果你可以将下面的东西全部掌握,想必你在游戏领域也算是登堂入室了。

编程语言类书籍类

1.《C++ Primer》

2.《Effective C++》

3.《More Effective C++》

4.《Exceptional C++》

5.《More Exceptional C++》

6.《Essentional C++》

7.《Advanced C++》

8.《STL 源码剖析》

10.《C# 从入门到精通》 (Unity 3D 需要用到)

11.《Lua》 强大的脚本语言

Windows游戏编程书籍

《Windows 游戏编程之从零开始》 适合初学者入门,我看的就是这本书

《DirectX 9.0 3D 游戏开发编程基础》 红龙书(游戏开发首选)

《Ultimate Game Programming With DirectX》

《Introduction to 3D Game Programming with DirectX9.0c A Shader Approach》

图形类书籍

《计算机图形学》 电子工业出版社

《3D游戏与计算机图形学中的数学方法》

网络书籍

《网络游戏服务器端编程》

《网络游戏客户端编程》

《网络游戏开发》

下面再介绍一下,你应该掌握的一些理论知识:

3.游戏服务器编程
3.1内存管理(游戏服务器24*7运行的,根本容不得内存泄漏)。
3.2对象池,线程池(提高服务器性能)。
3.3异常捕获,堆栈跟踪。(不要指望在VC的工程中一步一步debug来测试服务器程序)
3.4数据结构。(栈,队列等都必须自己实现,这是游戏编程的必须,否则无法做深入的跟踪和调试,以及无法捕获跟踪栈和队列中发生的错误)
3.5高效socket,完成端口的编程

游戏引擎

4.Unity3D,Cocos2d-x

5.对C++的模版的高级用法要了解的比较深入

6.对C++的内存管理的各种解决方案要非常熟悉并亲手实验过

7.对AI的各种算法要有了解:比如博弈论中的极大极小算法,A*算法的优化等等

8.对C++的装载链接过程和Lua的虚拟机的一些底层实现要有了解

9.对VS或者Xcode这两种IDE需要可以熟练的应用

10.对OpenGL或者是DirectX要有了解,做过一些Shader和Renderer

11.了解过一些游戏公司的后端框架,例如网易的Pomelo

哈哈哈,看完你要学的东西以后是不是觉得一阵头大,没关系,慢慢来。学习知识是一个漫长的过程。等你全部掌握以后,你会发现你的世界会与别人大不一样。

介绍完这些以后,下面贴个小程序激励一下大家。

在VS2012上面创建一个完整的窗口(代码来源于Windows游戏编程之从零开始)

#include<Windows.h>#define WINDOW_WIDTH 800 //窗口宽度
#define WINDOW_HEIGHT 600 //窗口高度
#define WINDOW_TITLE L"[致我们永不熄灭的游戏开发梦想]程序核心框架"LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam);//声明窗口过程函数//WinMain函数,Windows应用程序的入口函数,我们程序从这里开始
LRESULT CALLBACK WndProc(HWND hwnd,UINT message,WPARAM wParam,LPARAM lParam)
{switch(message){case WM_PAINT:ValidateRect(hwnd,NULL);break;case WM_KEYDOWN:if(wParam==VK_ESCAPE){DestroyWindow(hwnd);break;}case WM_DESTROY:PostQuitMessage(0);break;default:return DefWindowProc(hwnd,message,wParam,lParam);}return 0;
}int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPreInstance,LPSTR lpCmdLine,int nShowCmd)
{//窗口创建四部曲之一:设计一个完整的窗口类WNDCLASSEX wndClass={0};wndClass.cbSize=sizeof(WNDCLASSEX);wndClass.style=CS_HREDRAW|CS_VREDRAW;wndClass.lpfnWndProc=WndProc;wndClass.cbClsExtra=0;wndClass.cbWndExtra=0;wndClass.hInstance=hInstance;wndClass.hIcon=(HICON)::LoadImage(NULL,L"icon.ico",IMAGE_ICON,0,0,LR_DEFAULTSIZE|LR_LOADFROMFILE);wndClass.hCursor=LoadCursor(NULL,IDC_ARROW);wndClass.hbrBackground=(HBRUSH)GetStockObject(GRAY_BRUSH);wndClass.lpszMenuName=NULL;wndClass.lpszClassName=L"FortheDreamOfGameDevelop";//窗口创建四部曲之二:注册窗口类if(!RegisterClassEx(&wndClass)){return -1;}//窗口创建四部曲之三:创建窗口HWND hwnd=CreateWindow( L"FortheDreamOfGameDevelop",WINDOW_TITLE,WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,WINDOW_WIDTH,WINDOW_HEIGHT,NULL,NULL,hInstance,NULL);//窗口创建四部曲之四:窗口的移动、显示与更新MoveWindow(hwnd,250,80,WINDOW_WIDTH,WINDOW_HEIGHT,true);ShowWindow(hwnd,nShowCmd);//显示窗口UpdateWindow(hwnd);//消息循环过程MSG msg={0};while(msg.message!=WM_QUIT){if(PeekMessage(&msg,0,0,0,PM_REMOVE)){TranslateMessage(&msg);DispatchMessage(&msg);}}//窗口类注销UnregisterClass(L"ForTheDreamOfGameDevelop",wndClass.hInstance);return 0;
}

很简单的程序,这就是我们后面学习GDI和DirectX游戏编程时用到的基本框架。

Windows游戏开发感想一个完整的Windows窗口程序相关推荐

  1. 一个完整的Windows程序框架

    前面我们演示了带界面的Windows程序,但那仅仅是一个弹窗,调用MessageBox函数就可以实现,不是一个真正意义上的窗口.我们通常所说的窗口包含最大化.最小化.关闭按钮,也包含菜单.单选框.图像 ...

  2. 用Windows 8开发第一个Windows应用商店应用

    用Windows 8开发第一个Windows应用商店应用 本节将以一个简单的Windows应用商店应用作为本书的第一个示例,来说明Windows应用商店应用的基本开发步骤.虽然这个示例很简单,但可以帮 ...

  3. DirectX游戏开发之一个API玩转音乐

    DirectX游戏开发之一个API玩转音乐 当你闭上眼睛,打开一款游戏,如刺客信条,英雄联盟,DNF,或者是当有一个人坐在你背后玩一款新游戏,第一时间吸引你的是什么? 没错,就是各种游戏的音效,包括背 ...

  4. 游戏策划入门(4)——为你的游戏建立起一个完整的主框架

    为你的游戏建立起一个完整的主框架 "在游戏制作人或主策划脑海中,游戏应该总是完成时的样子." 在第二部分如何写一个项目建议书中,我们提到了游戏主框架由哪些部分构成.作为一个游戏的设 ...

  5. web策略类游戏开发(四)一个可以承载万人在线的架构

    web策略类游戏开发(四)一个可以承载万人在线的架构 Webgame现在已经开始需要进入大统一服务器时代,每个游戏区域容纳的玩家数量将从现在的几万人发展到几十万人,因此在新的背景下,webgame如何 ...

  6. 小程序云开发从前端到后台实战记录,开发一个完整功能的小程序

    小程序云开发从前端到后台,开发一个完整功能的小程序 一.编程基本知识要求 有vue 或wpf经验者很好理解 有mongodb经验者很好理解云后台 二.理解微信体系 微信有三个平台 1.开放平台 2.公 ...

  7. 一个完整的Installshield安装程序实例

    一个完整的Installshield安装程序实例-艾泽拉斯之海洋女神出品(一)---基本设置一 前言 Installshield可以说是最好的做安装程序的商业软件之一,不过因为功能的太过于强大,以至于 ...

  8. 一个完整的Installshield安装程序实例—艾泽拉斯之海洋女神出品(四) --高级设置二...

    一个完整的Installshield安装程序实例-艾泽拉斯之海洋女神出品(四) --高级设置二 原文:一个完整的Installshield安装程序实例-艾泽拉斯之海洋女神出品(四) --高级设置二 上 ...

  9. 一个完整的Installshield安装程序实例—艾泽拉斯之海洋女神出品(五) --补遗 (已补充第三部分完整版)...

    一个完整的Installshield安装程序实例-艾泽拉斯之海洋女神出品(五) --补遗 (已补充第三部分完整版) 原文:一个完整的Installshield安装程序实例-艾泽拉斯之海洋女神出品(五) ...

最新文章

  1. 一天1300 Star量,GitHub上新官方命令行工具
  2. pandas高级处理-分组与聚合
  3. SAP中各种分摊分配方法
  4. C指针原理(14)-C指针基础
  5. 神经网络 并行预测_研究人员研究了为什么神经网络可以有效地进行预测
  6. 教师计算机网络培训工作总结,教师培训工作的自我总结
  7. Taro+react开发(60) 第三方icon使用
  8. linux裸机安装nginx,linux环境下安装nginx步骤 - 进击的乌龟 - 博客园
  9. GOOGLE HACKING 系列文章 【FreeXploiT整理收集】
  10. 分享一篇关于陌生人社交的竞品分析报告
  11. dubbo中源码之缓存设计
  12. 黑马博客——详细步骤(四)项目功能的实现之数据分页
  13. 万年历插件软件测试,万年历的程序代码
  14. 笔记-软考高项-错题笔记汇总3
  15. 90个外国英文网站强力推荐 (转)
  16. 拯救脂肪肝第一步!以飞桨3D医疗影像分割方案MedicalSeg自主诊断脂肪肝
  17. Linux系统如何下载CityScape/KITTI-STEP数据集
  18. 如何将逻辑地址转换成物理地址
  19. QT--多TCP客户端
  20. 服务器虚拟化书籍,服务器虚拟化解决方案书模板-精选版.doc

热门文章

  1. mysql 8.0.13解压版安装_mysql 8.0.13 解压版安装配置方法图文教程
  2. iOS开发中的Web应用概述
  3. 点阵墨水屏的使用以及图像预处理
  4. js-web前端-多语言切换-data-localize
  5. ansys apdl变量基本操作
  6. 普通话读音 - 平舌音 / 前舌音 / 舌尖前音 - 翘舌音 / 卷舌音 / 舌尖后音
  7. 如何注册网站域名?需要注意哪些事项?
  8. Eclipse中更改tomcat版本
  9. vue+echarts平面地图和飞线
  10. 脑机接口-常用的MATLAB函数