
游戏开发
文章平均质量分 91
水果先生
Tencent AI
展开
-
编程游戏
编程游戏(不是游戏编程,也不是编游戏……),也叫代码游戏,代表着市面上一类特别的游戏。它在游戏中加入了编程的特性(或许反过来说也对)。本文意在梳理市面上的一些编程游戏,并对其玩法进行介绍和评价。选择标准项目必须是在时间上是较新的,或者有一定的知名度。不包括年代久远且不活跃的、知名度过低的。是电子游戏而不是实体游戏(如桌游)。能在线游戏,或者可以获得可运行的程序。转载 2016-10-23 15:01:34 · 670 阅读 · 0 评论 -
WINDOWS游戏编程学习笔记(二):完整创建一个窗口
//-----------------------------------【程序说明】----------------------------------------------// 程序名称::GameCore// 2013年3月 Create by 浅墨// 描述:用代码勾勒出游戏开发所需的程序框架//---------------------------------------原创 2016-12-05 16:34:46 · 634 阅读 · 0 评论 -
游戏程序员养成路径
与玩游戏相比,写游戏要复杂上千万倍,除了需要掌握通用的编程技巧以外,还要有相当的图形学,物理,数学基础,特别是在国内,由于相关资料的缺乏,更是让初学者无从下手。下面总结了一些入门方法和比较容易入手的资料。 首先你要精通一门高级语言,pc上游戏的首选语言就是C++。其次,要有良好的英文阅读能力。对游戏开发者来说英文阅读能力是最重要也是最基本的工具之一,因为你遇到的大部分资源都转载 2016-11-28 15:12:01 · 810 阅读 · 0 评论 -
摸爬滚打DirectX11_day06——光照模型与光源类型
在Direct3D中巧妙的运用光照可以增强3D场景的真实感。光照模型1.环境光 环境光没有位置或者方向上的特征,只有一个颜色亮度值,并且不会衰减,所以在所有方向和所有物体表面上投射的环境光的数量是恒定不变,所以环境光一般用于较低代价和开销的模拟光照。pd3dDevice->SetRenderState(D3DRS_AMBIENT,D3DCOLOR_XRGB(36,36,36));2.漫反射光太阳的原创 2016-12-16 22:34:34 · 763 阅读 · 0 评论 -
摸爬滚打DirectX11_day06——材质与顶点法线
材质对于光照计算来说,光照和材质两者缺一不可,物体表面的材质属性决定了它能反射什么颜色的光线以及反射多少光线。顶点法线使用光照绘制3D场景时,计算物体顶点的颜色值除了需要知道光源和物体的材质信息外,好需要知道每个顶点的法向量,根据光线的入射方向与法向量的夹角,计算发射光线的最终颜色值。顶点法线和面法线面法线就是垂直于三角形平面的一条法线。 从法线的定义来看,顶点是不存在法线的。那么顶点法线究竟是什原创 2016-12-16 22:46:25 · 518 阅读 · 0 评论 -
摸爬滚打DirectX11_day05——索引缓存
关于顶点缓存,如果想要绘制一个正方形,那么就需要两个三角形,即顶点缓存中存储6个顶点,在实际情况中,如果要绘制多边形,使用顶点缓存存可能会浪费大量内存存储不必要存储的顶点,而Direct3D绘制图形时,查找这些顶点也会浪费时间,那么,此时产生了索引缓存。索引缓存其实就是顶点缓存中某一个顶点位置的索引。索引缓存可以提高使用顶点缓存绘制3D图像的效率。使用顶点缓存和索引缓存的方法在绘制正方形时可以只需要原创 2016-12-14 13:25:00 · 463 阅读 · 0 评论 -
摸爬滚打DirectX11_day05——三维世界中的四大变换
四大变换:世界变换 在指定位置绘制图形取景变换 从不同视角观察图形投影变换 较劲较远的图形在同一个平面显示可以呈现出近大远小的效果视口变换 控制显示图形的窗口大小,比例以及深度前三个变换都与矩阵变换有关世界变换世界坐标系与局部坐标系 世界变换就是可以将物体模型从自己的局部坐标系转换到时间坐标系中,将所有的物体组织成同一个场景。世界变换包括平移,旋转和缩放变换对应在D3DX API中原创 2016-12-14 13:52:11 · 817 阅读 · 0 评论 -
摸爬滚打DirectX11_day08——纹理映射
纹理映射其实就是将创建好的3D模型用2D图像贴图,从而实现更好的显示效果,使三维模型更加逼真。纹理绘制是三维渲染中的中流砥柱。为了提高纹理贴图的效率,通常使用2的N次方(128*128,256*256)的正方形图片。原创 2016-12-19 17:35:16 · 345 阅读 · 0 评论 -
摸爬滚打DirectX11_day08——.X文件的导入
.X文件是微软定义的3D模式文件格式,可以由3DMAX和MAYA生成的.obj,.max,.mb通过插件转换得到。在DirecX中,通过网络模型接口ID3DXMESH载入.X文件。这个接口实际上是三维物体的顶点缓存的集合,他将创建顶点缓存,定义灵活顶点格式和绘制顶点缓冲区等功能封装在一个COM对象中,这样复杂的三维物体绘制就变得更加简便了。ID3DXMESH接口中的D3DXCreateMesh()可原创 2016-12-22 17:16:49 · 966 阅读 · 0 评论 -
摸爬滚打DirectX11_day08——Alpha混合技术
Alpha通道是计算机中存储一张图片的透明和半透明度信息的通道。它是一个8位的灰度通道,用256级灰度来记录图像中的透明度信息,第一透明、不透明和半透明区域,黑表示全透明,白表示不透明,灰度表示半透明。混合(Blending)是计算机图形学中的常用技术,即混合像素,我们通常用已经光栅化的像素光栅化同一位置的娴熟,或者说是在某图元上混合图元。Alpha混合其实作用就是实现一种半透明的效果,设B的透明度原创 2016-12-22 18:46:04 · 1334 阅读 · 1 评论 -
摸爬滚打DirectX11_day08——深度测试与Z缓存(深度缓存)
微软提供了深度缓存(Z缓存)配套着深度测试技术,来实现物体之间相互的遮挡关系。深度测试类似于一口井,每个物体都被赋予了一个深度值,深度越深的物体离井口越远,深度越浅,离井口就越近。深度浅的物体会把深度深的物体遮挡。 井口的深度也就是物体在世界坐标中矩阵的Z坐标值。深度缓冲区(Z缓存),Direct3D中用来存储(只存储深度信息)绘制到屏幕上的每个像素点的深度信息的一块内存缓冲区,如果屏幕分辨率为8原创 2016-12-22 19:22:22 · 1861 阅读 · 0 评论 -
摸爬滚打DirectX11_day07——DirectInput接口
在普通的Windows程序中,用户通过键盘或者鼠标输入的消息并不是通过应用程序直接处理的,二十通过Windows的消息机制转发Windows操作系统对这些消息进行响应后,通过回调应用程序的窗口过程函数进行消息处理。但是这显然满足不了对于性能要求更高的游戏程序,在DirectX中,微软为我们提供了名为DirectInput接口对象来实现用户输入的。DirectInput直接和硬件驱动打交道,因此处理起原创 2016-12-18 14:14:28 · 1882 阅读 · 0 评论 -
摸爬滚打DirectX11_day10——三维地形的构建
以上三幅图概括了三微地形模拟的大体走向与思路。图1描绘的是在同一平面上的三角形网格组成的一个大的矩形区域。显然他是一个二维的平面,图中的每一个顶点都可以用一个二维的坐标(x,y)来唯一表示。图2我们为每个顶点赋予了一个高度,那么图1就变成了一个三维图形,对于每个顶点可以用一个三维坐标(x,y,z)来唯一表示。图3我们为其镀上纹理,其实也就是一个纹理包装的过程。高度图高度图说白了就是一组连续的数组,这原创 2017-01-31 12:25:15 · 768 阅读 · 0 评论 -
摸爬滚打DirectX11_day_09——模板技术
模板缓存是一个专门用于制作特效的离屏缓存。模板缓存可以用于实现镜面特效。模板测试对于特效的绘制需要精确到每个像素。先对娴熟进行检查,最后得出是否需要绘制的结论,从而实现特效。模板测试就是这个检查的过程。模板测试过程1.创建模板缓冲区与深度缓冲区同时创建,把深度缓冲区的一部分作为模板缓冲区使用。2.清除模板缓冲区 在使用模板测试渲染每一帧之前,都需要先清除上一帧保存在模板缓冲区中的模板值。镜面特效的原创 2017-01-17 18:48:58 · 308 阅读 · 0 评论 -
WINDOWS游戏编程学习笔记(一):Hello Game!
#include<windows.h>#pragma comment(lib,"winmm.lib")using namespace std;//句柄:每个Windows资源都有且独特的身份证 //需要对某个窗口进行操作的话,首先应该得到这个窗口的句柄 //系统创建Windows程序的时候会创建各种各样的资源,给这些资源分配内存的时候返回这些资源的标识号,这些标识号就是句柄。原创 2016-12-04 15:50:49 · 1662 阅读 · 0 评论 -
游戏开发完整学习路线
在软件开发中,游戏开发这个方向看起来目标很明确,但其实是个领域很广的方向,入门的时候如果得不到指点一二,很容易误入歧途,相反,如果走这条路之前能得到前人的一些指路,是可以事半功倍的。平台与编程语言选择首先,游戏开发的平台就有很多类型: 个人主机平台:Windows、Linux、Mac OC;移动平台:iOS、Android、Windows Phone、BlackBerryOS、Symbian;专业主转载 2016-10-24 19:12:31 · 735 阅读 · 0 评论 -
游戏脚本语言比较
Game脚本语言比较这些东西是平时遇到的, 觉得有一定的价值, 所以记录下来, 以后遇到类似的问题可以查阅, 同时分享出来也能方便需要的人, 转载请注明来自RingOfTheC[ring.of.the.c@gmail.com] 发现一篇很好的比较常见脚本语言的文章, 翻译过来 :) 我很熟悉Lua, 也了解一些GameMonkey, 最近正在翻译Game转载 2016-10-20 11:21:59 · 21644 阅读 · 0 评论 -
学习游戏要学习编程语言吗?十大主流编程语言解析
计算机的发展,促使了一个新的职业的出现,程序员是近些年出现的并且得到了广泛关注的一个职业,相信这也是很多莘莘学子的职业梦想。但程序员也有很多种,并不是每一个程序员能够精通所有的编程语言。所谓术业有专攻,如果将来志在编程世界的网友就要注意了,今天给大家推荐一下2014年最流行的编程语言,他们可以说是未来程序员们生存的工具。1.JavaScriptJavaScript在Web应用上有着非常大的转载 2016-10-20 11:24:47 · 4946 阅读 · 0 评论 -
摸爬滚打DirectX11_day03——关于COM接口对象的一些介绍
目前Windows平台下的开发,主要是以C++与COM接口配DirectX为主要方案。COM(Component Object Model,组件对象模型)是一项能够使DirectX独立于编程语言并向下兼容的技术。我们常称COM对象为接口,可将其视为一个C++的类来使用。在以C++语言和COM接口方式开发的DirectX应用程序中,可以直接访问COM接口和对象。COM接口对象说白了就是一组具有特定功能原创 2016-12-11 10:30:49 · 757 阅读 · 0 评论 -
摸爬滚打DirectX11_day03——Direct3d程序流程分析
3D游戏编程其实就是一门渲染的艺术。从上图可以得知,Direct3d程序的基本结构主要可以分为以下5个部分。创建一个Windows窗口Direct3d的初始化消息循环渲染图形结束应用程序,消除在初始化阶段所创建的COM对象,并退出程序DirectX程序的开发过程就是一个基于SDK包开发的过程。和普通的WIN32程序开发没有很大的区别,首先创建一个具有主窗口的应用程序,并在显示和更新窗口之原创 2016-12-11 09:57:27 · 687 阅读 · 0 评论 -
摸爬滚打DirectX11_day03——Direct3D的初始化
Direct3D的初始化分为四步创建Direct3D接口对象(注意区别Direct3D设备接口)获取设备的硬件信息填充D3DPRESENT_PARAMETERS结构体创建Direct3D设备接口1.创建Direct3D接口对象LPDIRECT3D pD3D=NULL;if(NULL==(pD3D=Direct3DCreate9(D3D_SDK_VERSION))) return原创 2016-12-11 11:12:53 · 848 阅读 · 0 评论 -
摸爬滚打DirectX11_day03——DirectX9中的固定功能渲染流水线体系(已移除,了解)
DirectX9中的固定功能渲染流水线体系空间中的物体是用三维坐标来表示的,但是由于我们的显示器是二维的,那么想要实现三维场景的渲染,首先要将三维坐标在退回到二维坐标的表示(也就是世界坐标到屏幕坐标的转换,这也是Direct3D中的顶点坐标交换,也就是摄像机将三维场景拍摄到二维相片上的一种转换,通常用矩阵来表示)。在固定功能渲染流水线体系中,主要分为两个阶段第一阶段:坐标转换以及光照处理(T&L阶段原创 2016-12-11 13:59:27 · 608 阅读 · 0 评论 -
摸爬滚打DirectX11_day03——Direct3D(DX9)中二维文本的绘制
在DX11中已经移除了这两个函数,所以DX11很难绘制中文文字(只能通过第三方库和软件),所以DX11可能很难再国内普及,不知道DX12中的绘制文字有没有方便一些,此处留下疑问。1.D3DXCreateFont函数 2.DrawText函数原创 2016-12-11 14:09:45 · 2234 阅读 · 0 评论 -
摸爬滚打DirectX11_day03——Direct3D中的渲染五部曲
对于Direct3D中的渲染函数,我们每秒钟都要调用成千上万次。渲染五部曲清屏操作开始场景正式绘制结束场景翻转显示注意:每一步的操作的需要Direct3D初始化过程中创建的设备接口来实现。1.清屏操作IDirect3DDevice9::Clear//g_pd3dDevice表示的是设备对象g_pd3dDevice->Clear(0,NULL,D3DCLEAR_TARGET,D3DCOL原创 2016-12-11 14:29:06 · 856 阅读 · 0 评论 -
摸爬滚打DirectX11_day03——如何获取每秒帧数(FPS)
通过静态变量来实现原创 2016-12-11 14:33:41 · 2279 阅读 · 0 评论 -
DirectX11与游戏编程学习路线自拟
最近学习了龙书(DX11版本)简要的翻了翻,对于初学者还是有很大的难度。 因此,制定了下关于学习游戏编程以及游戏引擎的路线。学习使用游戏引擎学习游戏引擎之前需要了解一下如何使用游戏引擎我打算从Unity3d入手,先了解游戏引擎所具备的功能,对于游戏引擎有初步的了解。 目标:实现demo,可以做出一个小项目。进一步的了解游戏引擎可以按照如下列出的书单由浅入深的进行学习。1.逐梦旅程 : Windo原创 2016-12-02 18:46:23 · 6578 阅读 · 0 评论 -
摸爬滚打DirectX11_day04——顶点缓存介绍
在计算机所描绘的3D世界中,所有的物体模型都是通过多边形网格(三角形,四边形)来逼近表示的,之后在这些网格轮廓的表面贴上相应的图片。任何物体都可以用三角形网格来逼近表示。(这里的多边形不仅仅有顶点的坐标位置,还含有颜色等其他属性)顶点缓存如果想在Direct3D中创建物体,那么首先就要创建可以构成物体的所有顶点结构。而这些顶点的数据保存在顶点缓存中(某一块内存空间或显卡的显存中)。使用顶点缓存设计顶原创 2016-12-12 17:21:39 · 734 阅读 · 0 评论 -
摸爬滚打DirectX11_day04——关于D3D中的AGP内存,系统内存和显存
AGP内存(非本地显存)很久以前,显卡的内存十分小,所以要想运行纹理较多的3D程序,就需要想系统内存借点用用了,这就时AGP内存的由来。通常我们可以在BIOS中的AGP Aperture中设置显卡可以使用系统内存的最大值,通常是64M。系统内存其实就是我们平时插在电脑主机上的内存条。关于速度,系统内存对于CPU的读写速度最快,但是当显卡要用系统内存的话就会慢很多。AGP内存在显卡使用时的速度一般,没原创 2016-12-12 17:22:23 · 573 阅读 · 0 评论 -
摸爬滚打DirectX11_day10——游戏摄像机
摄像机类的设计右分量,上分量,观察分量和位置分量,可以确定一个摄像机相对于世界坐标系的位置和朝向。(这几个分量都是用向量表示的,实际上来说是为摄像机定义了一个局部坐标系)左分量,上分量和观察分量定义了摄像机在世界坐标系中的朝向,即方向向量。他们之间两两之间相互垂直,且都是单位向量,可以将这3个向量完全理解为三维坐标系的X,Y,Z轴。关于向量计算的函数讲解D3DXVec3Normalize函数用来对向原创 2017-01-29 12:57:02 · 546 阅读 · 0 评论