Questions tagged «game-development»

游戏开发是由游戏开发人员进行的,游戏开发人员的范围可能从单人到大型企业。主流游戏通常由发行商提供资金,并且需要几年的时间才能开发出来。独立游戏可以花费更少的时间,并且可以由个人和小型开发商廉价地制作。近年来,随着新的在线发行系统和移动游戏市场的增长,独立游戏行业得到了发展。


13
为什么Java没有更广泛地用于游戏开发?[关闭]
我不是游戏开发者,也不是任何人,但是我知道Java在游戏开发中的使用并不广泛。Java对于大多数游戏来说应该足够快,所以要抓住什么呢?我可以想到一些原因: 缺乏具有Java专业知识的游戏开发人员 缺乏良好的游戏开发框架 程序员不想接受Java作为游戏编程语言。大多数人只接受C ++吗? 不支持游戏机(尽管PC市场仍然存在) 当然可以是其他东西。谁能比我更好地了解这个业务,可以解释一下为什么Java在游戏开发方面没有发展势头吗?

4
开发一项功能的唯一目的是将其删除?[关闭]
各个贡献者(程序员/设计人员)仅出于一种目的而开发工件的模式的名称是用作转移,以便管理层可以在最终产品中删除该功能? 这是我从曾经在一家大型游戏开发公司工作的前同事那里听到的民间传说。在该公司,众所周知,中层管理人员被迫向产品“投入”并“做出更改”,否则他们就有被视为对项目没有贡献的风险。由于这些多余的“管理输入”,这种情况已延迟了许多项目。 在上述公司的一个项目中,艺术家和开发人员创建了一个多余的动画角色,该角色出现在每个过场动画中,并且像拇指一样伸出来。他们设计的方式是可以在游戏发售之前轻松将其删除(当时游戏仍然是通过实体媒体而非可下载的产品出售的)。显然,管理层随后投票决定删除动画。从积极的方面来看,管理层并未进行任何不必要的变更,因为这些变更表明他们为产品提供了建设性的投入,这些变更会延迟项目。 在公司工作的游戏程序员中,这个过程模式有一个名字,但是我忘记了实际的名字。我相信这是duck- 东西。任何人都可以帮助指出名称,以及有关模式如何发展的可靠参考。

10
什么时候“适当的”编程不再重要?
我在业余时间一直在开发一款Android游戏。它使用的是libgdx库,因此为我完成了很多繁重的工作。 在开发过程中,我不小心为某些过程选择了数据类型。我使用哈希表是因为我想要一些接近关联数组的东西。可读键值。在其他地方要实现类似的目的,我使用向量。我知道libgdx具有vector2和vector3类,但是我从未使用过它们。 当我遇到奇怪的问题并在Stack Overflow上寻求帮助时,我看到很多人只是在技术上“合适”另一个问题时就对使用某种数据类型的问题进行了讨论。就像使用ArrayList一样,因为它不需要定义的范围,而与使用新的已知边界重新定义int []一样。甚至像这样琐碎的事情: for(int i = 0; i < items.length; i ++) { // do something } 我知道它每次迭代都会评估item.length。但是,我也知道项目永远不会超过15到20个项目。因此,我是否应该在每次迭代中评估items.length? 我进行了一些测试,以查看应用程序使用我刚刚描述的方法相对于正确方法的性能,并按照教程进行操作,并使用社区建议的确切数据类型。结果:一样。平均45 fps。我打开了手机和银河标签上的每个应用程序。没有不同。 所以我想我对您的问题是:是否不再需要适当的门槛?可以说-“只要完成工作,我不在乎?”

8
如何为动态的,大小不受限制的“迷宫”构建数据结构?
我实际上不确定“迷宫”是否是正确的术语。基本上,用户从一个Room具有4个门(N,S,E和W)的单个门开始。它们可以向任何方向移动,每个后续房间都包含另一个房间,该房间的其他任何地方都具有1至4个门口。 “迷宫”的大小应该是无限的,并且随着房间的移动而增长。Rooms可用数量有限,但是可用数量是动态的并且可以更改。 我的问题是,我不确定这种模式的最佳数据结构 我最初想到的只是使用[X] [X] Room对象数组,但我真的宁愿避免这样做,因为该对象应该沿任何方向生长,并且只应构建“已访问”的房间。 另一个想法是让每个Room类包含RoomN,S,E和W的4个链接属性,并且仅链接到前一个Room,但是问题是我不知道如何识别用户是否进入了一个有一个相邻的房间已经“建造” 例如, ------------- | | | | 开始5 4 | | | | ---- ------------- --- --- | | | | | | | 1 2 3 | | | | | | --------------- 如果用户从“开始”>“ 1”>“ 2”>“ 3”>“ 4”>“ 5”移动,则Room#5需要知道W包含起始房间,S是房间#2,在这种情况下不可用,N可以是新的Room或一堵墙(一无所有)。 也许我需要混合使用阵列和链接的房间,或者也许我只是看错了方向。 是否有更好的方法为这种“迷宫”构建数据结构?还是我在目前的思维过程中步入正轨,而只是缺少一些信息? (如果您有兴趣,该项目是一个与Munchkin Quest非常相似的游戏)

1
Inglish解析器(适用于《霍比特人》 1982年)
着迷于阅读有关文本冒险游戏《霍比特人》的内容,该游戏的功能强大的解析器名为“ Inglish”: ... Inglish允许输入一些高级句子,例如“向Gandalf询问好奇的地图,然后拿剑并杀死巨魔”。解析器复杂而直观,引入了代词,副词(“恶意攻击地精”),标点符号和介词,并允许玩家以以前无法实现的方式与游戏世界互动。 我想知道是否有人知道Inglish解析器引擎以及开发它的程序员的历史和/或遗产。

3
纸牌游戏AI的最佳技术
我正在尝试为纸牌游戏开发AI,但对于应该使用的技术/算法有些困惑。以下是有关游戏的一些假设: 在将纸牌分发给玩家之后,就没有随机性了。我的意思是,每个玩家都可以选择自己玩的纸牌,但不会像在游戏开始时分发纸牌那样进行随机处理。 已经播放过的纸牌有一定的限制。 赢得花样的玩家先玩。例如,玩家1玩纸牌,玩家2玩纸牌赢。然后玩家2玩纸牌,然后玩家1玩。 我知道很多提示/规则(例如,如果我知道玩家拥有A,B,C卡,那么我应该玩D),这有助于我赢得比赛。因此,我首先想使用贝叶斯网络描述这些规则。问题是我不知道分配任何概率,但是我可以使用玩过的游戏(针对人类)的历史来计算启发式算法。第二个问题是,我很可能不了解所有规则,并且AI需要一些隐式规则才能找到最佳游戏。 我不确定这是否是为此类纸牌游戏开发AI的好方法? 我也想知道是否还有其他最适合该问题的技术。例如,我查看了minimax(也许使用了修剪算法),但是对于这个问题将是一个很好的选择吗?我不确定,因为最重要的比赛是在游戏开始时,未知参数最高(大多数纸牌尚未玩过)。

10
在OOP中似乎需要循环引用的现实活动建模的正确方法是什么?
我一直在努力解决Java项目中有关循环引用的问题。我正在尝试对现实世界中的情况进行建模,在这种情况下,所讨论的对象似乎是相互依赖的,并且需要彼此了解。 该项目是玩棋盘游戏的通用模型。基本类是非特定类,但已扩展为处理国际象棋,西洋双陆棋和其他游戏的特定类。11年前,我用六种不同的游戏将其编码为applet,但问题是它充满了循环引用。那时,我通过将所有相互交织的类填充到一个源文件中来实现它,但是我意识到这在Java中是不好的形式。现在,我想实现与Android应用类似的功能,并且我想正确地执行操作。 这些类是: RuleBook:可以针对诸如棋盘的初始布局,其他初始游戏状态信息(例如谁先移动,可用的移动,可用的移动,提议的移动后游戏状态发生了什么)等问题进行询问的对象。当前或提议的董事会职位。 棋盘:游戏棋盘的简单表示,可以指示其反映移动。 MoveList:移动列表。这是双重目的的:在给定的位置选择可用的动作,或者在游戏中进行的动作列表。它可以分为两个几乎相同的类,但这与我要问的问题无关,并且可能会使它进一步复杂化。 搬家:一招。它以原子列表的形式包含了有关移动的所有内容:从这里拿起一块,放到那里,从那里取出被捕获的一块。 状态:正在进行的游戏的完整状态信息。不仅是董事会的位置,而且还有MoveList以及其他状态信息,例如现在要移动的人。在国际象棋中,将记录每个棋手的国王和乌鸦是否已移动。 例如,循环引用比比皆是:RuleBook需要了解游戏状态以确定给定时间可用的棋步,但是游戏州需要查询RuleBook的初始开始布局以及一次棋步会带来哪些副作用它是制造出来的(例如,下一个移动者)。 我尝试分层组织新的类集,其中RuleBook位于顶部,因为它需要了解所有信息。但这导致必须将许多方法移至RuleBook类中(例如进行移动),从而使其成为整体,并不能特别代表RuleBook应该是什么。 那么组织此活动的正确方法是什么?我应该将RuleBook变成BigClassThatDoesAlmostEverythingInTheGame以避免循环引用,而放弃对真实游戏进行精确建模的尝试吗?还是应该坚持使用相互依赖的类并哄骗编译器以某种方式对其进行编译,同时保留我的实际模型?还是我缺少一些明显的有效结构? 谢谢你提供的所有帮助!


5
用于计算目标最大子弹路径的算法。2 ricochets
对不起,标题很抱歉,但我没有更好的措辞... 因此,任天堂在Wii上开发了一款名为WiiPlay的出色游戏(是!)。里面有9个迷你游戏,而我最喜欢的一个叫做《坦克》!。这是关于销毁COM敌方坦克而又不致使自己遭到破坏的事情。这是一个关卡的屏幕截图: 摧毁坦克的一种方法是发射子弹。有一个石灰绿色的敌方坦克,可以发射高速子弹,两次弹跳(对着墙壁和方块)。您会看到,如果玩家的坦克停在现在的位置,如何立即将其摧毁,因为位于中央的石灰坦克可以按照我在图像上绘制的绿色路径发射子弹。 作为一名业余程序员,我一直想知道石灰罐如何确定朝哪个方向射击以击打玩家罐。 我自己考虑过,但是没有提出任何可能的算法。如果他们启发了某人,我将解释我的结论。为了简单起见,我假设一堵墙是子弹可以弹到的任何表面。因此,一个孤立的矩形块形成了四个墙。 我得出的结论是,子弹跳线始终位于平行四边形的一侧或变成平行四边形的相反顶点的两个点。它瞄准的射击敌方坦克和玩家坦克不一定是其他两个顶点,而是肯定位于与平行四边形的四个边中的任何一个共线的直线上。这是形成平行四边形的4种可能方式的说明: HOR-VER意味着子弹首先撞击水平的墙壁,然后撞击垂直的墙壁。 然后我被卡住了。我曾考虑过绕一条连接敌方坦克和玩家坦克的地图绕线移动,以查看它是否与任何墙面的任何两个击打形成平行四边形,但这并不总是可行的,因为敌方坦克和玩家坦克不是必须与平行四边形的顶点重合。 另外,我不确定算法的一般流程。该算法是否采用以下两种结构中的任何一种,或者我对这两种结构都错了? 不断找出可能的路径,并始终将其标记为最佳路径(可以是最短,最模糊,最不可避免的路径,或者是基于多个标准的组合加权评估),而忽略了其余的路径。毕竟,剩下的一个是最好的选择。 首先确定首先由子弹到达的所有墙壁(子弹不需要弹跳到任何其他墙壁即可到达这些墙壁中的每一个),然后确定这些墙壁中的每个墙壁上的所有可到达范围(有时不可能到达目标上的遥远点)如果您附近还有一堵墙,则没有弹跳的墙),然后再次确定所有带有弹跳的可到达​​墙,以及在这些墙上可到达的所有范围。这4个过程可以通过类似于光线跟踪的方法来完成。在每个过程中,如果玩家的坦克被任何射线击中,请根据该射线找出子弹路径。 我认为该算法很难弄清楚,原因是: 子弹可以向任何方向发射;和 在数学上,每堵墙上都有无数个点,在线上有无数个点。 但是任天堂的人还是成功了,所以...有人有主意吗?

4
RPG棋盘游戏规则的通用规则解析器-怎么做?
我想为笔和纸风格的RPG系统构建一个通用的规则解析器。规则通常可以包含1到N个实体,一个骰子的1个到N个角色,并基于一个实体的多个属性来计算值。 例如: 玩家拥有STR 18,他目前装备的武器使他获得+1 STR的加值,但获得了DEX -1的恶意。他攻击一个怪物实体,并且现在需要运行游戏逻辑来运行一组规则或动作: 玩家掷骰子,如果他获得例如8或更高(他需要传递的基本攻击值是其基本属性之一!),则攻击成功。然后,怪物掷骰子以计算攻击是否通过了它的装甲。如果是,则造成伤害,否则攻击将被阻止。 除了简单的数学规则外,还可能存在一些限制,例如仅适用于特定类别的用户(例如,战士还是向导)或任何其他属性。因此,这不仅限于数学运算。 如果您熟悉诸如Dungeon和Dragons之类的RPG系统,您会知道我在做什么。 我的问题是,现在我不知道如何以最佳方式准确地构建它。我希望人们能够设置任何种类的规则,之后再简单地执行一个操作,例如选择一个玩家和一个怪物,然后执行一个操作(一组规则,例如攻击)。 在数据库方面,我寻求的帮助较少,但更多地是关于如何提出结构和解析器的要求,以保持规则的灵活性。顺便说一下,为此选择的语言是php。 编辑我: 让我完善我的目标:我想创建一个用户友好的界面(不需要别人学习编程语言)来构建或多或少的复杂游戏规则。原因很简单:个人使用并不需要一直记住所有规则,我们只是没有那么频繁地玩,每次查看它们都是一个障碍。另外:做和学习东西看起来很有趣。:) 到目前为止,我已经尝试过:只考虑一个概念,而不是浪费时间构建错误的体系结构。到目前为止,我的想法是允许用户创建所需数量的属性,然后将所需数量的属性分配给任何类型的实体。实体可以是玩家,怪物,物品或其他任何东西。现在,当计算某些内容时,数据将可用于规则解析器,以便规则解析器应能够执行以下操作,例如Player.base_attack + dice(1x6)> Monster.armor_check然后Monster.health-1; 这里的问题是关于如何创建该解析器的。 编辑二: 这是一个非常基本的值的示例,但是要正确地计算它,需要考虑很多不同的事物和变量: 基本攻击加成(期限)您的基本攻击加成(通常由d20社区称为BAB)是从角色等级和等级获得的攻击掷骰加成。不同角色类别的基础攻击加成会以不同的速率增加。角色的基本攻击加值达到+6时,每回合会获得第二次攻击;基本攻击加成为+11或更高的角色获得三分之一;基本攻击加成为+16或更高的角色获得第四点。从不同类别获得的基础攻击加成,例如,针对多类别角色的叠加。角色的基本攻击加成在达到+16后不再给予任何更多攻击,不能小于+0,并且在角色等级达到20后不会由于职业等级而增加。某些专长需要最低基础攻击加成。 您可以在这里http://www.dandwiki.com/wiki/Base_Attack_Bonus_(Term)上阅读它,包括指向类和专长的链接,这些类和专长又具有自己的规则来计算基础攻击所需的值。 我开始认为,使其尽可能地通用将使完成良好的规则解析器变得相当困难。

19
免费的游戏开发语言?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意测验或进一步的讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 6年前关闭。 已锁定。该问题及其答案被锁定,因为该问题是题外话,但具有历史意义。它目前不接受新的答案或互动。 因此,我正在尝试向我的堂兄传授一些编程方面的知识。我最初的想法是像Scratch或Alice之类的,但是有一些缺点。 每个人似乎都非常喜欢游戏编程和开发视频游戏(因为每个人都喜欢玩视频游戏,而且就玩视频游戏而言,玩自己的游戏可能是最有意义的)-但是Alice和Scratch似乎都不能适应游戏发展 爱丽丝(Alice)和斯克拉奇(Scratch)似乎太幼稚了,虽然我敢肯定我的表弟会喜欢它,但我想他会很快厌倦它的 我想要一种可以用来开发非常酷的东西的语言,以打动他的朋友们。我记得那天回写BASIC并邀请我所有的朋友来炫耀我的创作,我觉得Alice和Scratch不会以同样的方式吸引人 我想要一种需要我堂兄编写代码的语言。现在,这不仅是因为我认为输入代码是其他编程语言的良好准备,而且还因为它使他有机会实际练习打字,并且可能习惯了键盘上一些较深奥的字符 现在,这就是为什么我不想选择Alice或Scratch。 我也不想为此选择一种语言,例如C或Java,甚至Python或Ruby。我的堂兄已经向我表明,他喜欢玩视频游戏,想自己做,他喜欢使用计算机。在我看来,即使是像Python或Ruby这样的简单语言,也要花费很长时间才能构建出色的东西。理想情况下,他会坐下来,花费大约一两天(甚至可能长达一周的时间,但希望少于一周),并拥有一个可以正常工作的二维游戏。我并不是说您无法在Python或Ruby中做到这一点,而是对新手程序员来说很难。另外,我不想让他沉迷于所有计算机科学知识,因为以后可能会出现。我只想帮助他制造火花,然后让他继续进行其余的工作。 我研究过类似Lua的语言,虽然在游戏编程中似乎很常见,但我不确定这是否是最佳选择-但是如果你们认为不是,请告诉我。 我也看过像Blitz这样的语言,它看起来非常有前途(再加上,几年前我尝试过,确实很棒)。缺点是我必须付钱,这是我绝对反对的。 我已经看过SmallBasic,它看起来很有前途,我将继续研究。但是我并没有做很多事情(实际上,我在输入安装程序时正在运行安装程序,因此我将在短期内报告我的想法)。 更新:我快速尝试了SmallBasic,它似乎很有趣,但是与某些其他语言相比,它似乎也有很大不同-这不是一件坏事,但这是不寻常的。从我看过的东西中,闪电战仍然是我的最爱,但由于费用原因,我拒绝去那里。 但是基本上,你们如何看待我到目前为止所说的话,以及我所看过的语言,您是否知道其他任何不错的选择? 更新:这是我选择要做的... 我已经意识到,尽管我很想帮助我的表弟,但我不能一直和他在一起,并且每次他需要帮助时我都无法帮助他。因此,我想选择具有良好文档说明,良好社区和他可以遵循的好书的东西。 无论如何,我选择了Python和Pygame。Python是我相当熟悉的一种语言,而且我知道Python周围有一个相当不错的社区(而且很大)。此外,我知道Python文档相当完整且易于浏览。Pygame还提供了出色的文档和教程集。我还让他使用/跟随使用Python发明自己的计算机游戏,这似乎是一本非常不错的书,我给他买了一份印刷版作为圣诞节礼物,而且我知道他的显示器并不大,而且不方便在文本和编辑器之间不断切换。 我认为应该顺利! 编辑:我不想暗示我的选择是最终的或正确的。我只是认为这是最适合这种情况的方法。我认为每个想要教年轻人的人都应该浏览选择内容,并考虑到年龄,技能水平和兴趣等因素,为每个人找到最佳解决方案。

2
多人游戏使用TCP还是UDP?
我经常看到这个问题。多数人说,UDP对于实时游戏总是比TCP更好。我的理解是,TCP会尝试一遍又一遍地重新发送数据包,直到对方得到它们为止,而UDP则不在乎。 我读过的大部分内容是,任何实时游戏都必须使用UDP,而TCP则很糟糕。但问题是,无论如何,大多数人似乎还是在UDP之上实现了某种形式的TCP。而且我还听说,由于我们已经不在80年代了,而且互联网现在相当快速且可靠,因此两者之间的差异可以忽略不计。 我的一般理解是否错误?有人可以帮我清理一下吗?

4
OpenGL,GLX,DRI和Mesa3D之间是什么关系?
我开始在Linux中进行一些底层3D编程。我在使用高级图形API OpenInventor方面有很多经验。 我知道并不一定要知道所有这些东西如何组合在一起,但是我很好奇。我知道OpenGL只是图形应用程序的标准。Mesa3D似乎是此标准的开源实现。 那么GLX和DRI适合哪里呢?在Wikipedia和所有这些网站上进行挖掘时,我还没有找到关于这一切如何结合的确切解释。硬件加速在哪里发生?专有驱动程序与此有什么关系?

4
从概念上讲,人们如何制定游戏的规则/约束(不是图形/物理)引擎
我想制作一个类似于自己选择冒险书籍的简单游戏。向玩家显示一个叙述文字,并从一系列可能性中选择其动作。反过来,这导致了新的叙述性文本无穷大。唯一要注意的是,根据先前的某些决定,可能性列表可能会有所不同。 乍一看,这听起来像是if-else语句的负载,因此暗示规则引擎将就位。但是,对我来说,这听起来也像是一台有限状态机。 我打算用Java或Groovy编写。目前,我对概念性问题更感兴趣,即应该如何在广义上进行操作(无论如何,人们如何实施国际象棋或纸牌游戏?),但也欢迎在特定库中提供一些建议。 显然,标题中的“游戏引擎”不是指碰撞检测或其他物理/图形力学,而是决定玩家给出的情况及其当前状态的选择的逻辑。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.