七六启网

用c++编写游戏需要哪些软件,另求基本相关的好书推荐,c++3d游戏开发

admin

本文目录一览

如何使用C++编写游戏

使用C++编写游戏:
这个在百度上看到的一个贪吃蛇游戏
#includeiostream.h
#includewindows.h
#includetime.h
#includestdlib.h
#includeconio.h
#define N 21
void gotoxy(int x,int y)//位置函数
{
COORD pos;
pos.X=2*x;
pos.Y=y;
SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),pos);
}
void color(int a)//颜色函数
{
SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a);
}
void init(int apple[2])//初始化函数(初始化围墙、显示信息、苹果)
{
int i,j;//初始化围墙
int wall[N+2][N+2]={{0}};
for(i=1;i=N;i++)
{
for(j=1;j=N;j++)
wall[i][j]=1;
}
color(11);
for(i=0;iN+2;i++)
{
for(j=0;jN+2;j++)
{
if(wall[i][j])
cout"■";
else cout"□" ;
}
coutendl;
}
gotoxy(N+3,1);//显示信息
color(20);
cout"按 W S A D 移动方向"endl;
gotoxy(N+3,2);
color(20);
cout"按任意键暂停"endl;
gotoxy(N+3,3);
color(20);
cout"得分:"endl;
apple[0]=rand()%N+1;//苹果
apple[1]=rand()%N+1;
gotoxy(apple[0],apple[1]);
color(12);
cout"●"endl;
}
int main()
{
int i,j;
int** snake=NULL;
int apple[2];
int score=0;
int tail[2];
int len=3;
char ch='p';
srand((unsigned)time(NULL));
init(apple);
snake=(int**)realloc(snake,sizeof(int*)*len);
for(i=0;ilen;i++)
snake[i]=(int*)malloc(sizeof(int)*2);
for(i=0;ilen;i++)
{
snake[i][0]=N/2;
snake[i][1]=N/2+i;
gotoxy(snake[i][0],snake[i][1]);
color(14);
cout"★"endl;
}
while(1)//进入消息循环
{
tail[0]=snake[len-1][0];
tail[1]=snake[len-1][1];
gotoxy(tail[0],tail[1]);
color(11);
cout"■"endl;
for(i=len-1;i0;i--)
{
snake[i][0]=snake[i-1][0];
snake[i][1]=snake[i-1][1];
gotoxy(snake[i][0],snake[i][1]);
color(14);
cout"★"endl;
}
if(kbhit())
{
gotoxy(0,N+2);
ch=getche();
}
switch(ch)
{
case 'w':snake[0][1]--;break;
case 's':snake[0][1]++;break;
case 'a':snake[0][0]--;break;
case 'd':snake[0][0]++;break;
default: break;
}
gotoxy(snake[0][0],snake[0][1]);
color(14);
cout"★"endl;
Sleep(abs(200-0.5*score));
if(snake[0][0]==apple[0]snake[0][1]==apple[1])//吃掉苹果后蛇分数加1,蛇长加1
{
score++;
len++;
snake=(int**)realloc(snake,sizeof(int*)*len);
snake[len-1]=(int*)malloc(sizeof(int)*2);
apple[0]=rand()%N+1;
apple[1]=rand()%N+1;
gotoxy(apple[0],apple[1]);
color(12);
cout"●"endl;
gotoxy(N+5,3);
color(20);
coutscoreendl;
}
if(snake[0][1]==0||snake[0][1]==N||snake[0][0]==0||snake[0][0]==N)//撞到围墙后失败
{
gotoxy(N/2,N/2);
color(30);
cout"Game over"endl;
for(i=0;ilen;i++)
free(snake[i]);
Sleep(INFINITE);
exit(0);
}
}
return 0;
}

用c++编写游戏需要哪些软件,另求基本相关的好书推荐

看你要编写多复杂的游戏了,一般一些大型的游戏不是一个人变得出来的。但编写游戏会用到下面一些东西:
AI——人工智能。看看电脑是怎么和你对战的,如果没有AI,人简直没法和电脑玩
美术。你看看那些游戏精美的画面,没有一般的美术功底是做不出来的。
几何。尤其一些3D游戏,如果不懂几何,怎么能算清楚那些物体的相对位置?
物理。加入了物理知识,会使游戏运行起来更真实。
设计模式。一个稍稍大型一点的程序,没有好的设计模式基本是做不出来的。
算法和数据结构。不懂算法和数据结构,很难想象游戏中的数据是怎么保存和处理的。

最后就是一些基础性的东西了,比如C++,Java,Python之类的语言还有一些3D计算的平台,比如OpenGL或directX.
我看过曾经泄漏出来的hl2(半条命2)的源代码(40M左右的纯文本源代码),里面主要是C++和Python。至于它的算法的确看不懂,太高深了。非一个两个人做得出来的。

仅仅学点DirectX或OpenGL+VC就像编游戏?就算编出来也就是扫雷之类的简单游戏,复杂的就不要想了。这种想法是很幼稚的

关于用C++制作游戏引擎 和3D模型 剧本的关系

3d引擎就是实现处理场景,人物模型,等一系列底层的方法,然后调用这些方法来实现你的整个游戏,有了引擎就可以提高你制作游戏的效率,不用考虑如何实现,就比如说开车司机不用会汽车发动机怎么工作的. 不过引擎很复杂= =,可以看看orge,openGL,DX等等

有个好的引擎,就可以实现剧本啦,所谓剧本就是逻辑的实现啦

这些游戏引擎,你都知道吗?

用c++编写游戏需要哪些软件,另求基本相关的好书推荐,c++3d游戏开发-第1张-游戏相关-七六启网

游戏引擎之争就像编程语言之争一样,在游戏开发圈永远是一个火爆的话题,目前市面上主流的一些游戏引擎,我们来给他们做一些比较,了解他们的历史,特点,目前国内主流在用的游戏引擎有,Unity,Cocos,Laya,UE4,白鹭,接下来我们一起来分析这些引擎的特点。

1、国民3D引擎Unity

Unity,使用C#或Lua语言开发。国民3D引擎,这个称号说明了Unity在3D引擎的市场地位,中小型的游戏公司做3D游戏,基本是用Unity,很多大公司的游戏也用Unity,比如《王者荣耀》,国外什么情形呢?AppStore上面80%的3D游戏都使用Unity游戏引擎开发。为什么Unity打败了众多高手,成为国民游戏引擎,我们也好好的说一下。

时间回到2010年左右,当时页游比较火,Unity那个时候引擎的定位是能开发PC端游和页游的游戏引擎。随着手游时代来临,市场急需一个3D游戏引擎,能一次开发多平台发布到Android与iOS,而Unity成为当时唯一的3D游戏引擎解决方案。

和手游市场一起,Unity实现快速增长。Unity能成为国民引擎还有一个很重要的原因,就是对初学者很友好,很方便就可以上手,极大的降低了3D游戏开发难度,Unity引擎的市场份额越来越大,技术人才,SDK,第三方插件,技术资料等也越来越完整。总结一下Unity的特点:

(1)能制作精美的3D游戏画面,和定制渲染管线,画面效果不如UE4。

(2)能制作各种类型的3D游戏上线,每种类型的游戏都被商业项目验证过。

(3)完整的生态,一次开发多,平台发布(PC,android,iOS,xBox)。

(4)Unity不开源,需要支付授权费才可以修改引擎代码,发布后也要付授权费。

(5)Unity开发2D游戏相对包体过大。

(6)Unity 3D H5支持比较薄弱,不支持微信/抖音/华为/Facebook等H5小游戏平台。

2、国民2D游戏引擎Cocos,3D引擎的新贵

Cocos Creator使用JavanScript/TypeScript开发。回到2010年,手游刚刚兴起的时候,如果没有听过Cocos,那么你一定不是手游行业的。2010年的时候,能跨平台开发的游戏引擎只有Cocos(Unity还不能支持手机平台),2010年的时候手机硬件性能还有限,大部分都是2D游戏为主,Cocos成为国民手机移动端游戏引擎,那时,很多手机游戏,都是基于Cocos开发,也让它迅速了占领了开发者的市场。

后来随着手机硬件的发展,3D游戏越来越多,手游市场份额慢慢的被Unity取代。Cocos引擎完全免费,包体小,做2D游戏技术成熟,Cocos Creator开发工具与Unity的易用性一样,极易上手。H5技术成熟,最近2年,全新引擎全面支持3D,一次开发能发布到PC端,Android,iOS,微信抖音华为等各大H5小游戏平台。总结一下Cocos Creator特点:

(1)引擎完全免费,开源,包体小,定制灵活。

(2)引擎开发2D游戏经过大量验证,非常适合2D游戏开发。

(3)全新的3D引擎,能开发3D游戏,但是还有提升空间。

(4)一次开发,多平台发布,与传统引擎不同的是,可以发布H5的平台。(微信/抖音、华为小游戏平台)

(5)Creator 3D引擎生态还不够丰富,如第三方插件等。

(6)Cocos Creator开发2D游戏得到大量验证,3D还需产品验证。

(7)Cocos H5游戏runtime内核在行业做的非常好,可以提供高效的H5游戏运行方案。

3、Laya游戏引擎,H5上大规模跑3D游戏的游戏引擎

Laya游戏引擎,使用AS,JS,TS开发。H5刚兴起时,H5跑3D游戏,很多公司都不看好,认为以H5的性能,不足以跑效果好的3D游戏,但是H5游戏有普通游戏无法比拟的优点就是不用安装,点开就可以玩。那个时候PC页游已经发展成熟,同时手机页游大规模兴起,页游依靠FlashPlayer,而到手机上,就没有FlashPlayer这个东西,随之取代的就是H5。

对于是页游的开发者,想要把游戏跑到手机网页上,就需要将Flash开发的游戏,转成H5游戏。Laya最开始就是完成这件事情的。所以Laya支持的开发语言有AS,JS,TS,就是这么来的。Flash转H5,商业尚不上太成功,后来随着h5的发展,直接转为H5 3D游戏引擎,是最早在H5上跑出大型商业3D游戏的H5 3D引擎。

在H5 3D这块积累了很多经验和成熟上线的产品案例,现在80%左右的3D微信抖音oppo,vivo小游戏都是laya引擎做的。Laya是先做H5平台,然后再做的native平台(PC,iOS,Android)。总结一下Laya的特点:

(1)最早的被大规模商业项目验证的H5?3D游戏引擎,发布微信抖音等小游戏平台非常成熟。

(2)借用强大易用的Unity编辑器可兼容3D资源,如果一个游戏是Unity开发,你要移植到H5,那么Laya一定是首选。

4、UE4游戏引擎,3A游戏的首选引擎

UE4,开发语言C++和蓝图。UE4是3A游戏开发者引擎的首选,它以逼真的渲染效果著称。很多大型的3A游戏都采用UE4来开发,比如腾讯的《和平精英》等。UE4采用C++开发,虽然有蓝图,但是很多公司正式项目都去蓝图化,采用C++开发游戏,与C#和Js/Ts相比,开发难度大,当然C++可以获得更好的性能。UE4不支持H5,但是可以发布到主流的游戏平台,PC,iOS,Android等,但无法发布到H5游戏平台。总结一下UE4的特点:

(1)画面效果好,3A游戏的首选。

(2)C++开发难度相对较大,所以爱她的程序员和恨她的一样多。

(3)开发3A级游戏技术成熟,画面效果好。

(4)不支持H5。

5、白鹭游戏引擎

白鹭引擎,开发语言是Js/Ts。白鹭游戏引擎对于H5游戏是有着不可磨灭的贡献,它是最早的H5游戏引擎,它里面的很多工具非常好用,到现在还被其他的引擎使用,比如骨骼动画工具,DragonBones被广泛应用到游戏开发中。最早一批的H5游戏开发者一定都是使用白鹭。白鹭引擎在H5游戏这个领域有着不可磨灭的贡献。后来白鹭也推出了Native平台。总结一下白鹭的特点:

(1)H5游戏的先驱,为H5游戏做了不可磨灭的贡献。

(2)H5?2D游戏技术成熟,经过很多商业游戏验证。

(3)3D功能有,但是商业项目3D游戏用的比较少。

好了总结了身边的一些游戏引擎,到底哪个最强?其实学习游戏开发过程中,最终把原理原则搞懂,引擎是工具,开发者学习开始于工具,但不止于某个工具。

标签: #用c编写游戏需要哪些软件#另求基本相关的好书推荐#c3d游戏开发