java能做什么单机游戏(为什么Java不适合游戏开发)
其实java能做什么单机游戏的问题并不复杂,但是又很多的朋友都不太了解为什么Java不适合游戏开发,因此呢,今天小编就来为大家分享java能做什么单机游戏的一些知识,希望可以帮助到大家,下面我们一起来看看这个问题的分析吧!
做单机游戏需要学什么
问题一:想制作单机游戏应该学习什么首先得由底层程序开发人员来编写底层程序,这些人员一般都是和数字打交道,很枯燥,但是就属这些人员的技术能力强,因为他们是项目的基础,他们负责研发一个游戏引擎,用来统筹规划以后制作出来的人物,音效,脚本之类的游戏的各个部分.这个是非常重要的......底层程序编写的同时,美工人员就要开始根据策划人的游戏风格,来创建游戏的任务了,大到主角和城堡,小到初级怪和武器上的小饰品,都要一一画出2D草图,然后还要不断的交到主制作人那里去不停修改,直到全部通过审查之后,交由3D建模师来构建3D模型.这里包括了人物和场景,也是一项相当浩大的工程.......人物模型和场景模型全部建立完成之后,就袄开始根据游戏的剧本来编写游戏程序了,还得制作各个人物的各个动作,已经人物在各个场景中的各个镜头的分镜头剧本,这也相当复杂.视角不能让玩家观起来有头晕和不适的样子,还要突出场景的漂亮和人物的魄力........关于人物动作的录制,现在大公司基本都采用动作捕获技术,这样的好处就是人物的动作都非常真实,因为都是请的专业演员来描绘的,不会给人生硬的感觉....游戏画面制作的同时,各种音效和背景音乐也要同时开始录制,根据不同的情节,不同的场景,表现各种情绪的音乐也要非常丰富才可以........在制作过程中,还要搭建游戏庞大的数据库,包括HP啊,攻击力啊,道具数值等等等等.......非常非常复杂的......折腾了两三年,差不多已经完成了,之后就要开始请测试人员对游戏进行测试,没问题的话就交审批了,审批通过之后,再经历一段广告宣传攻势,最后等一个吉日,就发售了~~~~~~~~~至于仁兄问的软件........各个公司都不一样,一般3D建模大多数都用3DS,速度比较快,MAYA也用的比较多,一般人物建模都用MAYA,建筑物和场景都用3DS,画2D草图一般都是手绘,然后扫进电脑里之后,用Photo Shop和Painter来上色和加工....别的软件就比较自由了,用什么的都有,好多大型公司用的都是公司内部自主开发的引擎和软件......详细的游戏开发套件,根据游戏的类型不同而不同
问题二:做单机游戏需要学习什么单机啊....还大型...
C++,C#,photoshop,或许吧...然后....呃.不过你自己最好还是用.RPG maker xp....那个就是给你们这种人用的....
问题三:如果我现在要做一个大型的单机电脑游戏有哪些需要注意学习的必不可少的做大型单机游戏要美工建模数据导入等等,一个人不可能完成。还有资金问题,仙剑奇侠传国产单机游戏耗资600万以上,国外的GAT5看门狗什么的这些游戏都是5 6亿人民币!
问题四:一般单机游戏制作人要学什么专业要所有学吗?独立游戏制作人确实要学很多东西的
编程是必须的,美术不一定要很好,但美术要用到的软件要学会,不然你想描绘一个人物用什么来描。
如果是选择专业的话,最好选择动画类的专业,或者与编程有关的专业,如果你只是想做监制之类的,编程和美术会请人来搞,就要去学一下策划类的专业了
问题五:做单机游戏需要学c语言吗?建议选一个成熟的游戏引擎入手,比如虚幻寒霜什么的,Unity也可以,但是不用C。
做程序学什么都不浪费时间,早晚会用到。
问题六:请问做游戏需要学习什么软件了解哪些知识不谈别的,最低要求你的会美工,没有构思何谈游戏,这是最基本的,剩下的相关知识,编程语言推荐 C/C++英语,策划,程序,测试,要是没有相关的知识积累,想做游戏,可以说是千难万难,直接用软件的话,,你是做不出来的,因为有很多东西,是要你想出来,做出来,在添加到软件里,光靠软件是没用的,在软件上也学不到什么的,建议你先去选择一门语言会一些基础的东西之后然后你就可以通过编程语言绘制一些人物图啊怪物的图啊,再通过编程语言控制那些人物图片或者怪物图片行走啊站立啊。基本的就是先学VB编程的工具,以及PHOTOSHOP等图片处理。不过要是现在这方面发展还是建议你去学一些正规学院学一些专业知识。
问题七:想从事游戏开发,现在需要学什么建议学XNA吧,微软出的未来游戏开发框架,用C#开发,适合你的
学C++做游戏比较难,自学能坚持下来的不多,毕竟要学的知识太多,而且C++本身就是一门相对比较难以掌握的语言
不能说C++是王道吧,感觉现在C++除了在比较低层的开发上处于老大哥的偿位,其它一些中高层的应用都在减少,不过,C++的效率确实不是另我高级语言能比的,但在电脑性能高速发展的现今,我认为C#的性能完全可以开发出不错的游戏
我也在研究XNA,相对来说真的把游戏开发困难度降低了很多
问题八:学游戏开发要学些什么?跟楼主说一下常用的游戏编辑软件吧:
3dsMAX:大多数游戏开发公司美工使用,效率较高,可以独立制作游戏中所有美术相关资源。
MAYA:跟3dsMAX差不多的软件,因个人喜好而定, MAYA在制作动作的方面较MAX稍差,不过在很多方面这两款软件都是可以兼容的。
Maya和3dmax的区别:
MAX优势在于模型和插件,有丰富的模型库,快速的建模方式和优良的渲染插件及较快的渲染速度,能够在游戏模型、建筑巡游、广告效果图等领域广泛使用。 MAYA优势在于动画及其特效,在模型方面与MAX无太大差异,但建模速度较慢。MAYA的动画块较MAX有显著优势,现阶段的动画电影及长片动画都是用 MAYA来制作完成,并且《变形金刚》《蜘蛛侠》这类科幻电影的动画及特效也是有MAYA来制作完成,所以MAYA的侧重点在于动画电影的制作。
Photoshop与Panter:配合MAX或MAYA来绘制各种模型需要用的贴图。
ZBrush:美工制作超高模用的,然后可以生成法线贴图,在MAYA或MAX中使用。
Deeppaint3D:可以直接打开3维模型文件,在上面绘制贴图。
C++:程序使用,用来实现游戏中的各种功能,调试BUG等。
Alienbrain:文件管理软件。游戏团队不是一个两个人在工作,一大群人的工作成果怎样才能有效的管理并使用?这时就需要一款文件管理软件
问题九:制作游戏应该学什么编程语言企业级的游戏开发的话,一般C++多一些,大型游戏要求足够高的运行效率,而JAVA,C#在这一方面是短项,而用C的话又没有类,所以C++开发的游戏比较多,如果是想进游戏公司的话,多学学C++。
但是如果是个人开发小型游戏的话,建议用C#,小型游戏不需要考虑效率问题,C#足以应付,微软有个东西叫XNA,专为业余的程序员开发小型游戏而设计,上手简单,微软提供了大量的类库,用起来很便捷。
如果是开发android的游戏的话,没得选,只能用JAVA。
貌似也有用delphi开发的游戏,不过听说不是主流。
其实语言不是重点,任何语言都可以做游戏,只是各个语言各有特点,根据需求的不同选择最适合的语言。关键在于算法要理解,理解程序的构架,研究透算法,才是最重要的。
学习的时候建议以C++来学习,用JAVA或者C#的话学不到指针,用C的话学不到面向对象的思想。不过如果没有任何语言基础的话,建议还是从C学起,先学会最基础的东西再学C++。VB现在已经很少用了,实在没学的必要。
推荐教材《Visual C++游戏编程基础》
如果只是想做个小的东西玩玩的话,有很多方便的软件,比如《RPG maker》,用这些东西不需要什么编程的基础就能做一些小的东西,玩玩足以。
纯粹手打,求采纳。
问题十:做游戏应该学什么专业游戏设计是设计游戏内容和规则的一个过程,创建能激起玩家通关热情的目标,以及玩家在追求这些目标时做出的有意义的决定需遵循的规则。这个术语同时也可以表示游戏实际设计中的具体实现和描述设计细节的文档。游戏设计者常常专攻于某一种特定的游戏类型,例如桌面游戏、卡片游戏或者视频游戏等。尽管这些游戏类型看上去很不一样,可是它们却共同拥有很多潜在的概念上或者逻辑上的相似性。
游戏设计方法的作用从本质上来说是用一系列的约束来指导游戏作品的创作。这些约束因被设计的游戏的类型不同而有所不同。约束的种类有很多,例如:
技术上的约束
产品的约束
特定用户群的约束
民族方面的约束
政治上的约束
与其他设计学科的交互
一些类型的游戏设计综合了其他多种设计科目。用视频游戏举例来说,需要借助以下学科的知识:
游戏机制
视觉艺术
设计方法
游戏策划也可称为创意策划,创意分为两种:原创性创意和综合性创意,但人们通常把前一种称为创意,把后一种称为“抄”,这其实是一个误区,两者没有高下之分。
在自然科学领域,原创性创意出现率比较高一些,很多发明和发现都属于原创性创意,但是,也有不少发明和发现是站在巨人肩膀上捅破了一层窗户纸,并非原创性创意而是综合性创意。
综合性创意其实是一个选择――融和的过程。首先是选择,去模仿借鉴其他游戏。而融合的过程,为我所用,浑然天成方为上品。要做到从其他游戏中拿来的设计,放在我的游戏中比它原来的游戏更合适,更恰当。要做到所有的选择能够有机结合为一个整体,增一分则多,减一分则少,这才是综合性创意的精髓。
想学游戏制作,可以到dogame游戏兵工厂教育培训中心看看,他们就是专业教授这个的
学校网站上有很多这方面的信息,还有免费的游戏制作教学视频,楼主可以多去看看,对学习肯定会很有帮助的。
此方向可以参考的专业就是计算机科学与软件工程这两个。
但是开发软件游戏并不是你想象的那样有趣,你需要十足的耐心和过硬的素质。大学中你需要学习各种算法,各种编程语言。如果你不是对这个方向特别感兴趣,建议不要轻易选择,因为这个行业真正出彩的也就是几家公司,大部分毕业生都是程序员,做各种软件调试工作。你需要耐得住寂寞。
为什么Java不适合游戏开发
作为一个多年游戏服务端开发者,我来回答一下这个问题。只要你仔细去招聘网站看,会发现游戏招java的非常少(我希望杠精不要抬杠,我说的少,而且非常少,并不是说没有)。那么为什么在其他领域的霸主在游戏行业连喝口汤的资格都没有呢?其实主要有两个原因,而且这两个原因都和程序员最关心的效率有关系,一个是开发效率,一个是运行效率。很遗憾的作为一个不上不下的java两个都占不了。
首先是开发效率,在几年前手机游戏开始火爆,游戏公司多,产品相似度高,那么如何能以最快的速度开发完游戏并且上线运营,在快速迭代中试错,降低开发周期就是减少开发成本。在这种环境下,很多脚本语言成了首选,比如nodejs、php甚至还有lua和python(这里多说一句,别看lua语言本身简单,其实lua在游戏领域的使用成本是非常高的,至少在这四种脚本语言中是最高的,因为他只是一个胶水语言,要依附于c/c++,作为游戏周边的库都要自己造轮子或找轮子,同时对于引擎部分来说,对核心开发人员要求也非常高,如果公司没有经验丰富的c/c++程序员,lua基本玩不转)。在这些脚本语言面前,java毫无优势。nodejs开箱即用,用js可以前后端一起写(html5的流行让这种情况更是越来越多)。而php上手容易,开发简单,而且像一些用http的弱交互游戏,热更新简直不要太爽,无感知修bug。一些简单的休闲游戏,用这些脚本语言完全可以很快速的完成,就拿之前比较火的刀塔传奇来说,用这些脚本语言一点压力都没有,还有特别是棋牌类游戏,脚本语言更是首选。
其次再来说说运行效率,在一些密集型计算的游戏中,c++是首选,一些大型游戏,对计算要求很高,业务逻辑复杂的情况下,提升效率就能多容纳在线人数,也是成本的减少。同时对内存要求也高,使用c++可以数着内存写代码(手法过于夸张[捂脸]),对象啥时候申请,啥时候释放都是程序员说了算,gc消耗不存在的。而java生成的都是字节码,代码执行都要经过jvm来跑,这中间的消耗对于那些对性能要求苛刻的程序来说,绝对不能接受。
综合以上两点,java处于运行效率和开发效率中间的语言,在游戏这个行业自然是不会受到青睐。
做游戏引擎,当然还是看性能啦,c的性能最好。java性能其实也很好了,看谁出个简单快速的框架呗
JAVA可以做游戏服务端的开发,也就是网络游戏的开发,网络游戏的实时性高,对高并发,数据的一致性处理要求较高,并且因为是自身JVM的垃圾回收机制对服务器的内核性能要求高,会占用一定的资源去处理这部分数据,游戏的实时性代表了大量数据会经常被更改替换。
JAVA不是不能做,而是对开发人员的能力要求高!如果能够充分利用JAVA的并发优势,那是可以做到的,并且这已经被有些小公司当做网络游戏服务端的开发语言了。
PC端,移动端的单机游戏就不用再考虑JAVA了,显然JAVA的2D3D处理效果没有一些主流的游戏开发语言好!语言具有其使用场景,抓住其优点去利用之,而不是拿它的缺点如何别的语言优点相比!如今JAVA是做服务端开发的不二人选,因为他的帝国大厦已经很完善,开发人员也多!
因为java中间多出来一个jvm,效率低,游戏实时性很重要。
看一个语言适合开发什么,主要有三点
1.效率问题,包括开发效率和执行效率。
2.生态圈,有人家提供好的成套解决方案,为什么不用呢?
3.产品的侧重点。
就拿java和c++来说,java主要用于web开发,但是c++通过cgi也可以写web,而且c++的执行效率甩java几条街,但是为什么不用c++写web呢,因为c++的开发web的效率太低,而java有各种web方面的框架,开发效率高。
如果产品是游戏,游戏实时性很重要,你玩个游戏反应慢半拍那肯定很恼火。游戏这个产品的实时性就注定了要采用高效率的语言开发,那c,c++自然就跑不掉了。
Java何来不适合游戏开发一说的呢?
毕竟游戏有分类,而且游戏也分客户端,服务端
很多游戏的服务端就是Java的
而且实时性要求不高的游戏客户端,也可以用Java开发,例如我的世界
我想题主想问为什么3A大作没有用Java开发的吧
这其实是一个路径绑定问题,目前大作基本上都是用游戏引擎做的,而且这些游戏引擎都是发展多年的,如果用Java做,可能要用没经过业内验证的新东西,大公司不想冒险,还有Java的垃圾回收机制本身也是个难点,不适合做实时性非常强的游戏。
java开发游戏性能和效率差,开发一些小游戏还可以,java面向对象,所有方法都是封装在类里的,要调用方法就得实例类,而游戏主要侧重的是逻辑
对象就像是很多功能的机器,但是我的游戏逻辑只要每台机器的其中一个功能,但要用的话必须把这一整台机器制造出来。这就是面向对象的缺陷吧
而c是面向过程的可以更加灵活地设计过程逻辑,少去很多多余东西,大大提高性能
java的长处就是利用各种现存的类包,达到复用的效果,大大提高开发效率,
当然java也可以只针对逻辑来设计类,但那不是java的长处,没有多大的意义
百度搜索圈T社区()免费视频教程
如果你问我java适合开发游戏吗?我回答肯定是适合的,java开发效率高,运行效率一般,需要运行效率的地方用c或者cxx写就好了,现在市面大多数游戏都不是单一编程语言开发的,不需要在语言方面纠结太久。
很多人说,运行效率也很重要,但实际上,一般逻辑,你是感受不出差异的,普通逻辑使用java或者c#,或者脚本语言等这种开发效率,调试效率高的语言会让你开发更舒服。特别是脚本语言。
c和cxx只在特别需要效率的地方才使用。
哈_,这里子期!java开发游戏性能和效率差,开发一些小游戏还可以,远标老师讲过java面向对象,所有方法都是封装在类里的,要调用方法就得实例类,而游戏主要侧重的是逻辑
对象就像是很多功能的机器,但是我的游戏逻辑只要每台机器的其中一个功能,但要用的话必须把这一整台机器制造出来。这就是面向对象的缺陷吧
而c是面向过程的可以更加灵活地设计过程逻辑,少去很多多余东西,大大提高性能
java的长处就是利用各种现存的类包,达到复用的效果,大大提高开发效率,
当然java也可以只针对逻辑来设计类,但那不是java的长处,没有多大的意义
用java开发小游戏
我给你个华容道的游戏参照下吧。可以自己照着做下。多看例子想想就行了。
找个游戏做的不好,不要笑话啊。
import java.awt.*;
import javax.swing.JApplet.*;
import java.awt.event.*;
import javax.swing.*;
class People extends JButton implements FocusListener
{
Rectangle rect=null;
int left_x,left_y;//按钮左上角坐标.
int width,height;//按钮的宽和高.
String name;
int number;
public People(int number,String s,int x,int y,int w,int h,HuaRongRoad road)
{
super(s);
name=s;
this.number=number;
left_x=x;
left_y=y;
width=w;
height=h;
setBackground(Color.GREEN);
road.add(this);
addKeyListener(road);
setBounds(x,y,w,h);
addFocusListener(this);
rect=new Rectangle(x,y,w,h);
}
public void focusGained(FocusEvent e)
{
setBackground(Color.red);
}
public void focusLost(FocusEvent e)
{
setBackground(Color.GREEN);
}
}
public class HuaRongRoad extends JApplet implements KeyListener,ActionListener
{
People people[]=new People[10];
Rectangle left,right,above,below;//华容道的边界
JButton restart=new JButton("restart");
public void init()
{
getContentPane().setLayout(null);
getContentPane().add(restart);
restart.setBounds(5,5,80,25);
restart.addActionListener(this);
getContentPane().setBackground(Color.white);
people[0]=new People(0,"曹操",154,54,200,200,this);
people[1]=new People(1,"关羽",154,254,200,100,this);
people[2]=new People(2,"张飞",54,254,100,200,this);
people[3]=new People(3,"刘备",354,254,100,200,this);
people[4]=new People(4,"张辽",54,54,100,200,this);
people[5]=new People(5,"曹仁",354,54,100,200,this);
people[6]=new People(6,"兵",54,454,100,100,this);
people[7]=new People(7,"兵",354,454,100,100,this);
people[8]=new People(8,"兵",154,354,100,100,this);
people[9]=new People(9,"兵",254,354,100,100,this);
people[9].requestFocus();
people[0].setForeground(Color.white);
left=new Rectangle(49,49,5,510);
right=new Rectangle(454,49,5,510);
above=new Rectangle(49,49,410,5);
below=new Rectangle(49,554,410,5);
}
public void paint(Graphics g)
{//华容道的边界
super.paint(g);
g.setColor(Color.cyan);
g.fillRect(49,49,5,510);
g.fillRect(454,49,5,510);
g.fillRect(49,49,410,5);
g.fillRect(49,554,410,5);
//
g.drawString("单击,按方向箭头移动",100,20);
g.setColor(Color.red);
g.drawString("曹操到达该位置",110,300);
}
public void keyPressed(KeyEvent e)
{
People man=(People)e.getSource();
man.rect.setLocation(man.getBounds().x,man.getBounds().y);
if(e.getKeyCode()==KeyEvent.VK_DOWN)
{
man.left_y=man.left_y+100;//向下前进50个单位
man.setLocation(man.left_x,man.left_y);
man.rect.setLocation(man.left_x,man.left_y);
//判断是否和其他人或边界重叠,出现就退回50个单位
for(int i=0;i<10;i++)
{
if((man.rect.intersects(people[i].rect))&&(man.number!=i))
{
man.left_y=man.left_y-100;
man.setLocation(man.left_x,man.left_y);
man.rect.setLocation(man.left_x,man.left_y);
}
}
if(man.rect.intersects(below))
{
man.left_y=man.left_y-100;
man.setLocation(man.left_x,man.left_y);
man.rect.setLocation(man.left_x,man.left_y);
}
}
if(e.getKeyCode()==KeyEvent.VK_UP)
{
man.left_y=man.left_y-100;//向上前进50个单位
man.setLocation(man.left_x,man.left_y);
man.rect.setLocation(man.left_x,man.left_y);
//判断是否和其他人或边界重叠,出现就退回50个单位
for(int i=0;i<10;i++)
{
if((man.rect.intersects(people[i].rect))&&(man.number!=i))
{
man.left_y=man.left_y+100;
man.setLocation(man.left_x,man.left_y);
man.rect.setLocation(man.left_x,man.left_y);
}
}
if(man.rect.intersects(above))
{
man.left_y=man.left_y+100;
man.setLocation(man.left_x,man.left_y);
man.rect.setLocation(man.left_x,man.left_y);
}
}
if(e.getKeyCode()==KeyEvent.VK_LEFT)
{
man.left_x=man.left_x-100;//向左前进50个单位
man.setLocation(man.left_x,man.left_y);
man.rect.setLocation(man.left_x,man.left_y);
//判断是否和其他人或边界重叠,出现就退回50个单位
for(int i=0;i<10;i++)
{
if((man.rect.intersects(people[i].rect))&&(man.number!=i))
{
man.left_x=man.left_x+100;
man.setLocation(man.left_x,man.left_y);
man.rect.setLocation(man.left_x,man.left_y);
}
}
if(man.rect.intersects(left))
{
man.left_x=man.left_x+100;
man.setLocation(man.left_x,man.left_y);
man.rect.setLocation(man.left_x,man.left_y);
}
}
if(e.getKeyCode()==KeyEvent.VK_RIGHT)
{
man.left_x=man.left_x+100;//向右进50个单位
man.setLocation(man.left_x,man.left_y);
man.rect.setLocation(man.left_x,man.left_y);
//判断是否和其他人或边界重叠,出现就退回50个单位
for(int i=0;i<10;i++)
{
if((man.rect.intersects(people[i].rect))&&(man.number!=i))
{
man.left_x=man.left_x-100;
man.setLocation(man.left_x,man.left_y);
man.rect.setLocation(man.left_x,man.left_y);
}
}
if(man.rect.intersects(right))
{
man.left_x=man.left_x-100;
man.setLocation(man.left_x,man.left_y);
man.rect.setLocation(man.left_x,man.left_y);
}
}
}
public void keyTyped(KeyEvent e){}
public void keyReleased(KeyEvent e){}
public void actionPerformed(ActionEvent e)
{
getContentPane().removeAll();
this.init();
}
}
java能做什么单机游戏和为什么Java不适合游戏开发的问题分享结束啦,以上的文章解决了您的问题吗?欢迎您下次再来哦!