首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Java和LWJGL开发简单游戏

用Java和LWJGL开发简单游戏
EN

Stack Overflow用户
提问于 2014-06-20 11:27:11
回答 1查看 606关注 0票数 0

当然,我不是第一个开发这样一个游戏的人。但是我想在未来的几年内成为职业球员。我想实现一个射击游戏。这不是我的第一次。我在1998年用TurboPascal6.0开发了一个。但不使用OOP。这个游戏将是我第二次在Java拍摄他们,但第一次使用LWJGL。它将在2D中实现。

我想把它保持得很简单。但我想实现一些特性。我计划做10级。玩家有一艘宇宙飞船,他可以向四个方向移动(上、下、左、右)。这艘船有双激光,只能朝上射.这艘船只能移动,我不打算旋转。

一个等级有几个同类的敌人。敌人也是宇宙飞船。最简单的船只会向下移动。他们也在发射单发或双激光子弹。激光有一分钟。还有麦克斯。频率。我想要定义一个数学函数,它定义了有一个频率(在最小和最大之间)的可能性。

在敌人(和水平)内,船的速度是恒定的。在以后的等级中,敌人获得双倍或2.5倍的速度。稍后等级的敌人拥有激光来寻找玩家的飞船。我计划有一个有激光子弹的敌人。

在每一级都没有其他障碍。每个级别都有一些恒星作为背景。首先,我想实现一个静态背景,然后我计划制造3种不同速度的恒星。

玩家的激光会造成单点或双倍的伤害,这取决于一到两颗子弹是否击中。敌人有一些命中点,直到他们死去。玩家的飞船也有一些命中点,直到它死亡。

我想有两种爆炸(包括一些自负的椭圆,颜色从黄色到红色)。激光撞击的小爆炸。以及一次大爆炸,冯·斯泰尔被毁。

我的朋友告诉我,有一个函数被称为每秒60次,它呈现图形对象。因此,我认为在这个函数中,我画出了所有的对象,并且不再做任何事情。当然,飞船和激光的坐标也会改变。

所以我认为我是否应该使用线程。

如果我使用线程,我将分配每艘同时出现在一个线程上的船只,并为每一个激光和随后的动态背景创建线程。在另一个线程中,我会等待键盘输入。

当然,在使用线程和不使用线程之间是有权衡的。

使用线程利兹现实平行,可能是必要的有一个流动的游戏。但是,避免线程将导致更简单的编程,而不是对数据的并发访问。所以我问你们所有有经验的游戏开发人员。你用不用线程?如果你愿意用的话,我的概念好还是不好。为什么?我也很高兴看到其他实用的提示。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-06-20 11:51:33

任何游戏都可以使用单个线程和事件侦听器来制作。这将使用update循环来更新每个对象的每个帧。用最简单的术语来说,这可以是一个包含Thread.sleep的循环,尽管摆动计时器是一种更高级的技术。

代码语言:javascript
复制
int framesPerSecond=60;
double frameTime=1000.0/framesPerSecond; 

while(running){
    for(Updatable updatable:updatables){
         //should actually measure the frame time since it would actually be 
         //exactly this. System.nanoTime() can be used for this
         updatable.update(frameTime); 

         //depending on your graphics library each updatable object may be given
         //the opportunity to render itself here

    }

    renderFrame(); //render frame as appropriate for your graphics library
    Thread.sleep(frameTime); 
}

有一件事,你批判性的,不一定有很多自由的线程,每一个做自己的事情,没有协调。在没有bug的情况下,这几乎是不可能的(而且无论如何都是非常低效的)。

使用适当数目的线程

在update循环中,通常可以将更新分解为不相互影响的独立部分。在这种情况下,您可以将每个部分分配给一个线程(线程池非常适合简化这个过程)。烦恼,线程的好处是准备的东西,将需要的游戏很快,但不是现在,例如生成下一个级别。

然而,多线程的规则是没有比内核有更多的线程。每个线程都有不小的开销,但是一旦线程数量超过核心,执行速度(通常)就不会提高。因此,例如,对决核心上的程序最多应该有4个线程进行重要的工作。一个四核最多应该有8个等等。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24326235

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档