现代软件开发,包括游戏,都很少使用单一语言开发的,例如你看魔兽世界,好庞大的游戏,他用纯c++开发的话,可能还要跳票,编译语言开发业务的效率,真的没办法和脚本语言相比,只要你的游戏核心部分,语需要强大的计算效率部分都用c或者c++写好,脚本调用就好了,无论是python还是lua,js,c#都可以用,普通业务效率基本没区别。
总结一下就是,需要高效率运算的部分,就用c/c++,例如渲染。
游戏玩法部分,就用脚本语言就行了。
开发流程是什么样的?
游戏开发是一个复杂的工程,但看题主的意图是想独立开发一款游戏。
那么一个人能不能开发一款游戏呢?答案当然是肯定的。
游戏的范畴很大,从上百G的3A大作,到仅仅64K的超级马里奥,都是游戏,并且游戏获得市场的认可跟自身的体积没有半毛钱的关系,所以大家没必要对着3A大作望洋兴叹!什么都没做就先否定自己。
对于游戏开发的流程、分工、以及各种必要元素很多答主都分析的井井有条,在这里没有必要过多累赘,仅仅分析一下,对于一个新入门的游戏开发者应该具备哪些素养:
前提:
1,如果题主想要开发一款类似于《使命召唤:战区》、亦或是《刺客信条:奥德赛》这类的超大型的3A巨制,那么基本就不需要往下看了,因为以现在的技术很难一个人独立完成这样的游戏,这些游戏都是用上千人的队伍花费数年制作的。
2,如果题主有大量的资金(上不封顶),可以直接找专业公司做,以下也可以忽视。
如果以上都是否定,那么题主就可以继续往下看了~
学游戏先学编程,这步必不可少
现在游戏的开发技术五花八门,但最重要的一环就是编程,如果把一款游戏比作一个人的话,那么编程就比作人的大脑,编程的重要性由此可见一斑。
那么编程要学哪些语言呢?这里只推荐两门语言:C#和swift。这两门语言都是现代化的面向对象编程语言,功能强大,且简洁易掌握。那么这两种语言要怎么选择呢?
1,C#是首选的。它所依附的Unity 3D是现在最受欢迎游戏开发平台,依靠他基本可以开发出现在市面上所有类型的游戏(PS:《王者荣耀》也是它开发的哦~)。并且支持跨平台,一个游戏工程,可以发布在所有游戏平台:如PC、PS4、Xbox、iOS、Android等,省去了用户跨平台移植的麻烦
2,swift仅仅是针对iOS平台,苹果利用它开发了自己的游戏引擎:SpriteKit、SceneKit等,因为她比较简单,已经有80岁的老奶奶和6岁的小朋友利用它开发出了游戏并深受好评!当然缺点也比较明显,只能运行于苹果设备,如:iPhone,iPad,Mac等,无法运行在PC或安卓设备。
具体选择就看题主的意愿了,偶的建议是直接C#省事!
美术和音乐,虽跨度巨大,但有折中方法
如果把编程比作人的大脑,那么美术就是人的骨肉或衣服,音乐就是人的灵魂。
美术的功夫深不见底,如果想要研究,一辈子的时间也不够充裕,音乐亦是如此。对于一款小型的独立游戏,美术可能就是几张图片,如《Flappy Bird》就是几张小鸟的动作分解图和背景,音效就是一段简单的循环播放音乐和死亡的音乐,一个人完全可以搞定,但是阻挡不了它的风靡!
关卡设计、战斗平衡等
这些也是游戏中特别注意的点,也是体现设计者巧妙心思的点,做好了可能就是游戏的核心玩法,做不好就会被用户骂成翔!
以上几点浅薄的认识希望对题主有所帮助~
以后想学游戏开发要报什么专业?
考计算机专业或者软件工程专业
电脑IT编程就像是泥瓦匠;软件开发就像是建筑队;软件开发包含编程,但不只是编程,他是一个工程,还涉及到架构,分析,功能设计,数据库等等,编程只是里面最底层的体力工作;
有时间去电脑学校看看也行
写一个游戏编程?
#include<iostream>
#include<iomanip>
#include<cstring>
using namespace std;
const int X = 21;
const int Y = 21;
char p[X][Y];
int m=0;
int n=0;
void display()
{
for(int i=0; i<X; i++)
cout<<setw(3)<<setfill(‘ ‘)<<i;
cout<<endl;
for(int i=1; i<Y; i++)
{
cout<<setw(3)<<setfill(‘ ‘)<<i;
for(int j=1;j<X;j++)
cout<<setw(3)<<setfill(‘ ‘)<<p[i][j];
cout<<endl;
}
}
void black()
{
cout<<“请黑方输入bai落子位置du:\n”
<<“请输入落子的行数:zhi”;
cin>>m;
cout<<“请输入落子的列数:”;
cin>>n;
if(m<=0||m>=X||n>=Y||n<=0)
{
cout<<“超出棋盘范围,请重新输入正确坐标!\n”;
black();
}
else if((p[m][n]==1)||p[m][n]==2)
{
cout<<“该点已有棋子,请重新选取落子点!\n”;
black();
}
else
p[m][n]=1;
system(“cls”);
display();
}
void red()
{
cout<<“请红方输入落子位置:\n”
<<“请输入落子的行数:”;
cin>>m;
cout<<“请输入落子的列数:”;
cin>>n;
if(m>=X||m<=0||n<=0||n>=Y)
{
cout<<“超出棋盘范围,请重新输入正确坐标!\n”;
red();
}
else if((p[m][n]==1)||p[m][n]==2)
{
cout<<“该点已有棋子,请重新选取落子点!\n”;
red();
}
else
p[m][n]=2;
system(“cls”);
display();
}
int evalue()
{
int k = 0,r = 0;
for(k=3;k<X-2;k++)
{
for(r=3;r<Y-2;r++)
{
if(p[k][r]!=’-‘&&p[k-2][r-2]==p[k][r]&&p[k-1][r-1]==p[k][r]&&p[k+1][r+1]==p[k][r]&&p[k+2][r+2]==p[k][r])
return 1;
else if(p[k][r]!=’-‘&&p[k+2][r-2]==p[k][r]&&p[k+1][r-1]==p[k][r]&&p[k-1][r+1]==p[k][r]&&p[k-2][r+2]==p[k][r])
return 1;
}
}
for(k=1;k<X;k++)
for(r=3;r<Y-2;r++)
if(p[k][r]!=’-‘&&p[k][r-2]==p[k][r]&&p[k][r-1]==p[k][r]&&p[k][r+1]==p[k][r]&&p[k][r+2]==p[k][r])
return 1;
for(k=3;k<X-2;k++)
for(r=1;r<Y;r++)
if(p[k][r]!=’-‘&&p[k-2][r]==p[k][r]&&p[k-1][r]==p[k][r]&&p[k+1][r]==p[k][r]&&p[k+2][r]==p[k][r])
return 1;
return 0;
}
int main()
{
memset(p,’-‘,441);
cout<<“欢迎使用简易双人对战五子棋游戏\n”
<<“五子棋棋谱如下:\n”;
display();
while(1)
{
red();
if(evalue())
{
cout<<“红方赢!\n”;
break;
}
black();
if(evalue())
{
cout<<“黑方赢!\n”;
break;
}
}
return 0;
}
游戏开发需要具备哪些技术?
很多,页面的,动画的,html,数据库,等