什么是可以“赢得翅膀”的好游戏?[关闭]


306

我相信,要成为一名优秀的游戏开发人员,您需要制作游戏。

程序员的角度来看,有什么好的入门级游戏可以弄脏您的手?这些游戏中的每一个都教给您什么技能和挑战?

Answers:


217

爆发

轻松进行游戏,因为您无需担心太多状态(这是一堆砖值-如果您只有一种砖颜色,则是一串标志),没有任何AI,因此您可以一点物理原理就能使球正确反弹。

纸牌

规则比Breakout复杂一点,并且与它的接口也有很大不同。它迫使您考虑实现游戏的不同方法。也就是说,在一种游戏中起作用的不一定是在另一种游戏中使用的。

吃豆人

这很不错,因为您可以从事一点点AI的研究。让幽灵跟随玩家(但不是太好-您希望玩家有机会)可以很快实施,并且您将拥有一个有趣的小游戏,您可以对其进行调整并向朋友和家人炫耀(总是会有积极的反馈)一开始就是一件好事)。

我发现,如果您在早期的视频游戏中寻求灵感,就会发现大量相对容易实现的想法。另外,因为您仍在复制如此简单的内容,所以您可以摆脱超简单的图稿和声音。这使您可以首先专注于基础知识-启动并运行游戏,弄清楚如何将像素显示在屏幕上,播放声音,保持得分,并让玩家输入到游戏中。

首先选择哪种游戏几乎没有关系-只需确保选择简单的内容即可快速获得结果,这样您就可以在第二天继续前进并制作另一个。还有一个。还有一个-您制作的越多,您就会越努力,最终您将在不知不觉中制作复杂的游戏。


49
突破+1。我曾经有很多PRO游戏开发人员告诉我,每当他们获得一项新技术时,他们都会首先制作Breakout来学习它。
杰夫

2
+1 Breakout是我做的第一场比赛=)。另外,我同意尝试重新创建早期的视频游戏(需要您自己来改变!)。专注于概念,而不是资产。
user384918 2010年

16
@PhillC,不,这不值得拆分
Simurr

13
您忘了俄罗斯方块:这是我在高中时实施的第二款游戏:)
Emiliano

2
你们所有人都可以提供指向突破的链接吗?我喜欢这个游戏,想尝试所有的重拍
fent

256

我强烈建议新手程序员应该从他们实际想写的最简单的游戏开始。正如马特·里克斯(Matt Rix)所提到的,编写游戏与演示的过程很大一部分将可恶的事情推向了完成-积分,菜单,游戏测试,高分,暂停,游戏测试,难度,干净的游戏状态转换,游戏测试等。这些东西至少要花一半的时间,而且不好玩。不是。因此,除非您喜欢这个概念并且真正有动力,否则您将在游戏成为游戏之前放弃并继续前进。

如果你想编写一个RPG游戏,找出最简单,最易于管理的RPG概念,你可以拿出你想做的事,做它。如果您想做一个科幻射击游戏,或一个恐怖主题的平台游戏,或者其他任何事情,都可以。选择您将要完成的事情,在完成所有乐趣之后您仍然希望完成,但是您仍然需要花费数十个小时才能真正完成。

最好的游戏来“赢得翅膀”?您完成了一个。我不在乎您编写了多少半PONG / Breakout / Galaga / Tetris演示,在发布实际完成的游戏之前,您不是游戏开发者。

另外,没有人愿意再玩那些已有40年历史的游戏,至少编写游戏的某些要点是让人玩的,对吧?


3
我要三倍投票这个答案!
伊恩

2
+1表示有关实际发布游戏的评论。IMO大约只有30%的时间启动并运行游戏。不断重复其机制,完善所有东西以使其看起来可表现,追逐那些仅在非常特定的情况下才会出现的讨厌的bug,而实际上能够专注于需要完成的工作则是另外70%。
丹尼斯·蒙西

1
+1说我想说的话。我的第一场比赛是palmgadget.com/palmgo.html它可以做,因为我喜欢围棋,我真的用它来记录的俱乐部赛事。首先“抓痒”。
哦,2010年

16
我喜欢这个建议,但这可能很危险。毕竟,这种心态正是为什么如此多的人去游戏开发者论坛并说“我以前从未做过游戏,我要开始一个MMORPG”的原因。我想说的是,您应该从有限的优秀入门项目中选择一款喜欢的游戏开始。因此,例如,如果您确实讨厌俄罗斯方块,那就不要这样做。但是,请改用Breakout,而不只是吸引您的任何随机游戏。
2011年

185

不久前,我在TIGsource上发布了此阶梯。它从非常基础到非常复杂。

  • “猜号码” / Hangman(基本界面,从数据库中选择数据)
  • 井字游戏/石头剪刀布(回合制游戏,对手AI)
  • 打砖块/乒乓球(冲突,稳定帧速率,得分,级别)
  • 俄罗斯方块(数据结构及其与游戏的关系)
  • 1942年/射击游戏(敌人,子弹)
  • 简单的平台游戏/弹球游戏(如果您的引擎执行平台游戏)(基于重力的碰撞)
  • 炸弹人/吃豆人(基于方块的动作,复杂的敌人AI)
  • 双人游戏的上述任何类型的(两个播放输入)
  • Roguelike / Diablo(库存管理,多个敌方AI,保存和加载复杂的游戏状态)
  • Faceball / Wolfenstein 3D(基本3D运动和渲染)
  • 基于网络回合的游戏(基本网络)
  • mm头3D第三人称平台游戏(物理,复杂的3D运动)
  • 网络实时游戏(客户端-服务器同步,延迟)
  • MMORPG(永久世界)

7
您最好在这里解释您应该学习什么。您的简洁笔记不是很有描述性/帮助性。
SpoonMeiser

57
尽管这是最后一步,但我认为MMORPG需要走得更远。很棒的清单。+1
はると

6
很棒的清单,尽管我认为在Pacman之后整个阶梯方面都崩溃了。到那时,您已经知道可以进行任何类型的游戏了。我认为在开发Wolfenstein之前不需要先开发Diablo。直到吃豆子,一切都应该按顺序进行。
2011年

5
“持久世界”严重低估了MMORPG与先前选项之间的差异。
马拉巴巴

1
您也可以在非MMORPG中处理“持久性世界”(例如,流氓)。
ashes999 2013年

64

学习游戏编程的最重要规则是:学习编程很难。学习游戏设计很难。学习如何制作出色的游戏美术或音频非常困难。尝试同时做所有这些事情是失败的秘诀。一次学习一件事。

推论:对已经完成设计,美术和声音的游戏进行编程。制作克隆,而不是原始游戏。

在我的课程中,我总是建议开始以下游戏:

1)俄罗斯方块。艺术是彩色矩形,即使是全部klutz都可以在Microsoft Paint中绘制。您不需要声音。编程相对简单,但仍需要一些关键事项:了解内部游戏状态与屏幕上绘制的内容之间的差异;能够在屏幕上绘制周期(可能涉及精灵和斑点);能够实时接受用户输入,而不仅仅是在需要等待它们的地方使用getch()或scanf()。

2)突围/打砖块。艺术品仍然是彩色矩形,您仍然不需要声音。使用了俄罗斯方块的所有基本概念,加上一些基本的碰撞检测和2D物理原理,因为球必须平稳地移动和弹跳。

3)毕业/ R型。您可能可以找到一些免费的tileset来完成此任务。这里的背景是滚动的,因此您必须使用页面翻转和双缓冲以及在可见屏幕边界之外绘制内容等技术,进一步了解图形内存的工作方式。您还往往会产生动态的敌人和子弹,因此您需要学会自己清理(即摆脱掉留在屏幕上的敌人和子弹,以免游戏像筛子那样泄漏内存)。

4)超级马里奥兄弟(Super Mario Bros)与上一个滚动项目类似,不同之处在于,滚动现在是在播放器控制之下,而不是自动的。您还必须处理重力以及随之而来的所有有趣的碰撞(例如,由于您在上一帧中位于上方几格,并希望在下一帧中移至下方几像素而不会掉落地板) )。还要注意,重力是有条件的:它会影响玩家和一些敌人,但通常不会影响平台或浮动硬币或其他东西,这与现实世界有些不同。

如果您能做到所有这四个,那么您应该几乎可以做任何您想要的2D游戏。所有工具都在那里。如果您想制作3D游戏,请先学习2D,因为它非常容易,您不需要深入地了解数学,也无论如何都需要了解2D内容...然后当您为此,请开始使用一些基本的3D工具(例如Torque或Unity之类的库,或原始Doom和Quake之类的开源游戏)。

祝好运!


39

现在,这是一个实际的好问题。我不知道你在哪里,所以我要飞向天空,并假设你一生中从未编写过任何代码。砍掉鼻子的任何部位,冒犯您的意思。

我想我实际上要回答的问题与您提出的问题略有不同,并且我将举例说明以满足您就地提出的问题。我这样做的原因是轻微的,但我认为观点会有很大的不同:重要的不是特定的游戏,而是这些游戏带给设计师的思维方式。

您知道人们谈论您时应该如何学习各种编程语言,以便吃饱他们的思维方式,内心和肝脏,从而获得强大的力量吗?这是一个真实的事实-在您使用第一门纯净或近乎纯净的编程语言后,即使是在命令式语言中,您也将最终编写很大程度上副作用免费的函数,因为它们的定义要好得多,并且您编写的所有内容即使不是这种形式的语言也会更好。不管是哪种语言,它都没关系-haskell,ml / ocaml / smlnj,FormulaONE,c ++模板,无论如何-您仍将学习如何在不依赖副作用状态的情况下完成许多工作。第一次学习一种坚固的,机器附近的编程语言时,再来学习大小类型抽象。第一次学习声明性或约束性语言时,您将学习作为自由裁量工具的边界。第一次学习回溯搜索语言时,您将学习祈祷Ia!啊!C'thulhu F'tagn Nagn !,然后我们回到吃心和肝脏,人生的圆圆就圆满了。

游戏设计没有什么不同。您不必一定要与某种特定语言并行学习任何特定游戏,而需要学习一些能够处理这种思维方式的象征性代表游戏,例如语言特征家族。另外,有很多吃肝脏和心脏的东西。拿一个胡椒饼干。

这里的难题(至少在我看来是这样)是您要涵盖大量主题。这就像在字符表上勾选熟练程度一样-您正在为自己提供更多机制来处理给定情况。是的,它们是可以升级的,但是要全面掌握一两个点,这意味着当需要使用一个时,您不会从头开始,并且知道可以使用哪些策略供您扩大规模。

所以,看。

首先,您要剪牙。当您正在学习定位新平台或从健忘症中恢复时,这些功能也很有用。这些是指快速而不是令人敬畏的。

为了:

  1. 屏幕控制。进行蓝屏筛选非常有用,因为那样您就有令人信服的理由相信自己正在成为Microsoft。
  2. 输入验证。Fooscreen,其中foo是蓝色的向上键,红色是向下的键,等等。有足够多的颜色,如果您绝对需要将深红色保存起来用于更重要的事情,则可以使用四色地图。
  3. 文本和精灵渲染。由于您还具有输入验证,因此平铺内存游戏不是一个坏主意。
  4. 计时器。是时候克隆马里奥或打砖块了。
  5. 声音和音乐。改善马里奥克隆。虽然不多。

一旦发现了这些问题,您就可以瞄准平台了,学习就可以开始了。

这些没有特别的顺序。您可以根据需要重新排列它们。每个例子我都会举几个例子,但是它们不是规范性的。如果不同的游戏可以为您带来相同的体验,并且足够小,可以作为一系列课程的一部分,则可以随时将其交换。出于实际原因,精通屏幕渲染和相对快速地输入是很好的;您将大量使用它们。在尝试编写抽象类之前,请等待几局。你希望在一个天真的抽象被抓获。

  • 动画。您所做的几乎任何事情都需要动画精灵。即使您是程序员,也可以使用独立的动画引擎。制作一个简单的益智游戏,其瓷砖就足够了。
  • 复杂的得分。让所有五个敌人进入机翼?奖金。连续降落三拳?奖金。通过整个级别而不会遗漏子弹?巨额奖金。
  • 寻找路径。很多游戏都需要这个,但是塔防游戏最简单。如果您以前从未做过,则可以从广度优先和深度优先开始,但是直到至少从头开始实施A *(未复制代码)后,您才能开始。
  • 敌对行为。愚蠢的自动行为将被您的马里奥覆盖,但反应性行为也很重要。这是构建战术游戏或无赖游戏的好借口。(警告:您将在余生中从事无赖工作。)
  • 动态2D照明。这也是写流氓的好理由。基于弧的阴影投射是查看带区和分离区的重要方法,这反过来对于整个数据结构也很重要。
  • 2d物理。这在很多游戏中,在很多细节层面上都有体现。尝试可以超级简化的平台游戏(mario-ish);可以同样简化的坦克游戏(焦土游戏);最终,像《 N忍者》这样的游戏可以使您应付在角度,动量等条件下的奔跑(您可以使用直接与轴对齐的边界框碰撞系统来完成该任务。)物理和碰撞之间有着密切的联系。
  • 碰撞检测。有一些非常简单的案例,例如网格Arkanoids和Mario克隆,有一些中等复杂的案例,例如N Ninja,还有一些真正复杂的案例,例如沙盒物理游戏(令人难以置信的机器,诸如BreakQuest等现代的Arkanoid,等等)。在许多情况下,像AABB之类的东西,但是如果您对数学很感兴趣,那么实际实现一些完整的东西可能会很有用。至少要熟悉完整的库,例如APE或Box2D。
  • 游戏满意度中的风险/回报关系。简单的骰子游戏(从50年代开始挖掘“臭鼬”之类的东西)和冒险路径的(生命,糖果之乡)棋盘游戏就是通过学习来学习这一点的简单快速方法的绝佳示例。
  • 力学表现力丰富。将自己钉在少量规则上,然后学习从中获取很多变化。自定义套牌游戏是一种很好的解决方案。看看Dvorak牌组,以及Mille Bornes,Rage和Uno等现实世界的游戏,然后自己制作一些。他们不会变得相似。
  • 生成的内容。简单的基于地图的策略游戏,roguelike游戏和某些益智游戏是学习此方法的好方法。如果它是一种通常不以生成内容而闻名的游戏,则可以获得加分。
  • 样式。不要拧紧:这很重要。制作一个游戏,然后将它变成四个完全不同的游戏。 真的不同。甚至是一个儿童游戏。(考虑一下:《 Mega Man》非常适合作为进入地狱的巫师冒险,或者作为来自X战警的Rogue或...)现在,让四组人为您的每场比赛得分。之后,让他们在逆时针,绕圈的情况下得分下一局。请注意,他们的得分会根据主题和先前的期望发生根本性的变化。
  • 制定玩家计划顺序。益智游戏是解决此问题的最干净的方法。
  • 资源管理
  • 升级版
  • 启动时间压力

嗯 我无聊。


11
极好的答案。真令人失望的结束。如果您可以重新审视并以某种方式将其绑在一起以取得连贯的结局,那将是惊人的。
里奇

1
最后,一些肝脏烹饪说明如何?Giantitp.com/comics/oots0738.html
独眼巨人

4
这是一本关于游戏编程的帖子,真是令人难以置信的人生课。
sdasdadas 2014年

30

俄罗斯方块

这是非常常见的游戏,如果您遇到困难,很多开放源代码克隆会在那里撕裂。教2D图形,输入处理,评分等基础知识。

然后采纳这个原始想法并将其旋转。我通过为大学计算机图形课编写3D版本的Tetris来学习3D图形/ opengl的基础知识。


2
或“专栏”(如果您是世嘉人);)
安德鲁·罗素

提示俄罗斯方块主题音乐...
尼克·贝德福德

3
qntm.org/hatetris(好的,它没有主题音乐,但我只想链接它...)
user384918 2010年

1
@bloots哇,那真是邪恶
Bryan Denny



15

我喜欢以“大富翁”开始我所有的家伙。我通常使用Brett Schuchert的Monopoly“代码kata”作为练习的基础,但我会添加很多内容。我真的很喜欢这样做有几个原因。

  1. 我非常关心良好的编码习惯(设计模式,TDD,SOLID,持续集成等),并在我的开发人员进行此练习时对其施加了很多限制。

  2. 几乎每个人都知道垄断的规则,整个游戏可以在一天内完成。这为新开发人员带来了快速的胜利,并真正吸引了他们的参与。

  3. 最初的要求从键盘控件开始,但后来我又增加了对鼠标控件的要求。这使开发人员可以考虑以下几件事:如何重构现有代码,对系统的更改部分进行编程以代替接口而不是具体的类,更好/适当的抽象,要进行单元测试,不进行单元测试,为什么要进行单元测试以及要做什么进行良好的单元测试。

有时我们插入更复杂的AI,有时却没有。有时,我们会与其他棋盘游戏一起使用,这些游戏的逻辑稍微复杂一些,例如“滑道”和“梯子”之类的东西。有时我们会完全脱离棋盘游戏,而去做扑克游戏或二十一点。

对我而言,真正重要的部分是人们会很快获得胜利,他们会看到遵循良好的编程标准,可以灵活地开发软件。这些练习可以很快建立信心。有时,经验丰富的开发人员喜欢自己完成这些操作,只是为了摆脱更复杂的项目或实践他们刚刚学到的新技术(得墨meter耳法则?)。


6
您如何在一天内实施“垄断”?这似乎是一个更大的项目。
Michael Kristofik

如果您准备好艺术品资源供开发人员使用,并且按照我上面链接的指南进行操作,这很容易。它不包括多种AI策略,也不包括动画和音乐的一些更复杂的方面,但是它是一款完全可玩的游戏,一天之内就可以轻松完成。这确实是可行的,而且确实很有趣。
hokiecsgrad

#3还可以为客户提供现实世界的体验,他们可以在您开始后改变您的要求。
Jarett Millard

遗憾的是,垄断链接已死:(
凯西


15

选择冒险

从一个通过创建游戏开始进行编程的朋友那里获得了这个技巧,与选择冒险书非常相似。这基本上是一个简单的文字冒险游戏,输出如下:

You are standing in a forest clearing in the middle of the night. You hear
some wolves howl in the distance. Should you:
a) make camp for the night
b) go further north
> _

制作此类游戏应教会您制作游戏循环,基本控制台输入和基本脚本。由于您不需要图形引擎来编写游戏,因此实现起来非常简单,并且对于初学者来说也很容易进入。高级初学者可能会编写脚本引擎。


7
+1,但仅当您只是在学习编程时。如果您已经知道编程,那么我不会以此为起点。
杰夫

1
@Jeff:是的,如果您是一个完整的初学者,那么这是一个很好的开始。如果您已经编程了一段时间,那么可以去提到其他项目,这样您就可以玩图形而不是其他东西了。
Spoike 2010年

8
实际上,这是学习脚本和数据驱动开发的一种非常好的方法。为此创建“引擎”,并将其余部分编写为脚本。
尼克·贝德福德

1
@Jeff nah,如果他们是经验丰富的程序员,那么他们将在2个小时内完成。因此,他们添加一些物品,门,老板打架
吗?bobobobo

13

根据我与新手程序员的经验,进度通常看起来像这样:

  1. 俄罗斯方块
  2. 50小时惊人的惊人3D RPG游戏玩法(注意:大多数人在此步骤中放弃了编程)

4. Fantasy MMORPG:P
Nick Bedford 2010年

12

突围,傍或小行星。

游戏游戏原型之间存在巨大差异。如果您认真完成梦dream以求的游戏,则应在此过程中完成“入门级”游戏。创建游戏的游戏性部分只是成功的一半。菜单和高分之类的所有其他额外事物通常都会被忽略或忽略,但是它们花费的时间比任何人期望的都要多。


4
+1提及细节的时间比您预期的要多。
mpen 2010年

11

在其他答案中也有一些好的建议,但我只想投赞成票:从似乎太微不足道的事情开始。

乒乓就是一个很好的例子。

目标是:使游戏设计和规则集变得脑筋急转弯,以使您可以将所有精力集中在学习正在学习的新事物(语言,平台,API)上,而不必不断休息一下,了解游戏的运作方式。

一旦开始,您会发现pong实际上比刚开始脸红时稍微复杂一些。(我正在教一个家伙编程,他正在使用pong作为他的学习项目。我们添加了一些功能,现在他通过学习如何做所有这些很酷的功能而从学习转向编程:)

一旦您已经完成了app#1的准备工作,直到可以将它出售/出售给其他人,然后进行一些复杂的事情(俄罗斯方块,冒险或您喜欢的任何事情),但是,要开始学习新技术,您编程的事情简直是脑残。

其他例子:

  • 猜数字(1到1000之间)
  • 策划(高级猜测号码。)
  • 简单画
  • 蛇/蠕虫/随它叫什么。

但是,再次-从太简单的事情开始,以便您实际上可以完成一些事情,然后回头看看所涉及的内容。用语言/平台/ SDK /引擎编写一个应用程序与编写零应用程序之间的区别是巨大的。1和2或2和5之间的差异要小得多,因此您可以采取更大的步骤,但将0到1的步骤设置得很小。它会比您想像的还要大!


2
+1代表“从一些似乎微不足道的东西开始处理”和“编写一个应用程序...与编写零应用程序之间的区别非常巨大”
Luc125 2011

1
2014年更新:另一个不错的“学习语言/技术”应用程序Flappy Bird-alike。作为一个专业的程序员,这是一个下午的工作(嗯,一个周末让它变得“不错”),但是,在教另一个编程人员的同时,我们了解到它实际上有很多小麻烦。同样,一个比远更多的经验为零,一旦你有一个,你必须了解如何移动到下一个更好的主意。
奥利2014年

9

查看此网站:12个计算机科学游戏项目的想法

其中一些游戏包括其他人所说的话:

  1. 吃豆子
  2. 俄罗斯方块

但同时也谈到了您可以尝试制作的其他一些游戏,例如:

  1. 井字游戏
  2. 谁愿意成为百万富翁?
  3. 和马里奥克隆。

此外,它还可以让您感觉到您应该首先尝试做什么,因为它可以给每个游戏带来困难感(并因此提供了应对游戏的计划):

  1. 初学者
  2. 中间
  3. 高级
  4. 最好

2
+1,喜欢那个链接。“ RPG –如果您讨厌自己的生活(并且确实如此),那么显然,去年尝试开发视频游戏编程的荣耀可能会很糟糕地结束。游戏引擎本身通常会相当分散(世界旅行,城镇旅行,商店,打架,等等),并且需要付出巨大的努力”
Cyclops 2010年

5

很多人从Breakout开始,因为Breakout具有以下特点:

  • 输入:来回移动桨
  • 简单碰撞:球从桨,砖和墙壁弹起
  • 更改“游戏状态:”当球击中砖块并移除砖块时更新得分,当球击中屏幕底部时球数减少,当球数== 0时输掉比赛,依此类推。
  • 这也是对图形的相当温和的介绍,因为它全都是矩形和圆形

5

编写游戏或任何软件最困难的部分是弄清楚该怎么做。 您绝对需要一个规格! 这是克隆现有游戏的有趣部分:规范已经存在。您的规格是“产品必须做其他产品所能做的一切”,如果您手头有其他游戏的副本,那么很容易验证这一点。

一旦你想通了什么,你需要做的,搞清楚如何做到这一点真的没有那么困难,如果你是一个称职的程序员。我不是指熟练或有经验的程序员。这意味着您已经知道如何执行大部分尝试要做的事情。但是您需要了解如何以抽象的方式思考,并具有解决问题和逻辑思考的技能,这些技能是编程的基础。如果可以做到,那么您什么都可以做。

话虽如此,我不同意大多数人关于尝试通过写一些非常简单的东西来学习写游戏的说法。奖励与您付出的努力成正比。如果您通过编写一个非常简单的游戏来学习编写游戏,那么最终您将只知道如何编写非常简单的游戏,这对您没有多大好处。

另一方面,如果您从压倒性的东西开始,您将永远无法完成它。因此,从适度的挑战开始,这将使您处理严重的问题。构建2D控制台风格的RPG或侧滚动平台器是学习真实游戏编程概念的非常好的方法。


5

这实际上取决于您当前的能力。如果您是编程的新手,那就去看看人们建议的特定游戏之一。否则,您应该考虑使用哪种游戏才能充分利用自己的体验。

当我开始制作第一款游戏时,我的游戏开发经验为零,但是我从事企业/行业应用程序开发已有几年了。我的第一个游戏项目是回合制策略游戏,从架构上讲,它看起来与企业应用程序没有什么不同。它使用客户端/服务器系统,并且通信通过双工WCF服务通道进行。大多数玩家操作都作为“命令”排队,并在回合结束时分派到服务器。所有回合处理都在服务器上进行,然后将游戏Universe更新发送给每个客户端。

第一个项目让我在熟悉的领域开始工作的同时,也投入了很多精力。随着项目的发展,我学会了更多地像游戏开发人员,而不是企业应用程序开发人员。最终效果很好,并且比Battleship或Tic-Tac-Toe :)更令人印象深刻。


4

蚕食太空侵略者

相对简单的AI,图形,游戏,控件,除非您要添加声音或音乐,否则它们不必具有声音效果或音乐。在学习如何在QBasic中为MS-DOS编程时,我从这两个开始,我认为它们是伟大的第一场比赛。吃豆人是我的另一选择。


我以前从未听说过蚕食,但对太空侵略者有绝对的支持。
2011年

3

Moonlander风格的游戏很棒(您的飞船受重力影响,玩家控制方向和推力,使用推力时燃料有限)。获得实施非常简单的物理学的经验,并且碰撞系统可能是非常原始的。无需担心AI,最重要的是它的有趣和令人上瘾的:)


2
商定的推力/月球着陆器风格的游戏是早期的伟大项目。处理旋转,速度/加速度将揭示正弦/余弦的奥秘(对于暂时不使用它们的任何人)。您可以使用静态或滚动平铺地图,并且可以使用碰撞检测而无需太多复杂的碰撞响应(触摸某物->爆炸)。这也是考虑控制系统调整的好方法-很好地平衡推力,重力和旋转速度,以使其感觉正确
bluescrn

@bluscrn实际上多数民众赞成在一个很好的评论。在让人们测试我的Flash版本后,我注意到人们对它的感觉有不同的看法。其中一些归因于用户以前体验过的游戏。在开发它之前,我并没有特别考虑它。
艾伦2010年

2

像Galaga这样的自上而下的太空射击游戏非常容易,并且可以很好地教授碰撞检测!它的难度也可以变化,从具有固定敌人的级别到武器升级和以特殊模式移动的敌人的多个级别。


1

像Gauntlet之类的东西,因为您需要一个实体系统,敌方AI,拾取,平铺地图,碰撞检测,计分等。这一切都可以了,但是并不需要压倒一切。


我想说的是,如果您几乎没有经验或者没有经验,尤其是考虑到您还必须做的物理操作(玩家与地面之间的摩擦等),那么使用任意布局的瓷砖进行敌方AI和碰撞检测将变得无所适从。然而,经过几场比赛之后的挑战
肖恩·詹姆斯

同意,对于刚起步的人来说有点不知所措。一次有太多概念。从得分和输入开始。然后制作一个可以做1或2个新事物的游戏,例如碰撞检测和敌人。继续挑选基于您知道的概念但引入一些您不了解的概念的游戏;如果您不知道,则不要尝试。把事情简单化。
user384918 2010年

老实说,我认为Gauntlet克隆中发生了太多事情,无法算作“入门级”游戏。
PhillC

老实说,我认为编写Gauntlet的代码要比Tetris容易,因为弄清楚块之间如何堆叠,行是否完整以及如何删除行是相当棘手的抽象问题。在任何现代2D平台中,Gauntlet都可以用少于1000行的代码进行编码,如果不能在您使用的平台中编码,则建议您另找一个。无论如何,我之所以提出这个建议正是因为它需要学习构成现代游戏的所有部分。
伊恩

您会因正确地发出声音而获得加分:“精灵射中食物!” “巫师快要死了!” 或我的最爱:“您找到了我的TRAY-sure机房!”
rtperson 2010年

1

迷你的《塞尔达传说》克隆人很好,并且锻炼了一些这里没有提到的技巧。滚动一张大的地图和简单的8向运动控件是很好的了解。如果您可以打敌人,将获得加分,但我对此不必太担心。


1

我已经制作了多个俄罗斯方块克隆。每次我做的时候,我都会做些不同。如今,我通常会克隆一些小行星。我还取得了许多导弹司令部的附带利益。

我从基本的游戏开始,然后开始添加更多的东西,加电等。


1

我以前总是从Tanks / Gorillas / Worms游戏开始。它使您可以在简单的图形显示中进行锻炼,并读取用户输入,以及将重力施加到弹丸上并进行碰撞检测测试的游戏循环。

之后,将出现一个非常简单的平台游戏或射击游戏,您需要实时读取用户输入,而不是适用于Gorillas的INPUT语句:)


1

纸牌(或实际上是任何纸牌游戏)是一款很好的游戏,可以让您使用新的UI系统,因为它可以练习许多您需要使用的小部件和控制器交互反馈机制。加上它的逻辑是简单明了的,因此您可以专注于学习而不是游戏设计。

对于实时仿真游戏,我总是建议将Pong作为一个很好的简单起点,这也是因为设计很简单,以及控制器接口,因此您可以深入了解系统-物理仿真。


1

我一直断言如果你是一个游戏程序员,你应该可以做一些太空侵略者的形式。哎呀,游戏非常简单,您也应该可以自己制作图形。

在您的投资组合中选择一些小型游戏作为非常有用的附加好处,例如,如果我在学习一种新的编程语言或框架,我通常会移植我的一个简单游戏,以了解新的开发方式做事与原始写作方式相符。


1

这实际上取决于您已经具备的普通程序员技能。您的数学需要工作吗?您的图形知识?你们两个都有吗?

虽然总的来说,我认为《俄罗斯方块》和《突破》也是我的两个首发。任何比这更简单的方法都无法提供足够的刺激。俄罗斯方块是一个很好的测试算法,可以很好地布局数据,突破是一个很好的数学例子。我总是告诉人们要有更高的目标,目标是陷入困境并提出解决方案。

在那之后,天空才是极限。再次,瞄准高。尝试使用具有倾斜地形和视差的平台游戏机,您会得到一个方便的2d技术包。添加弹球(准备沮丧),您的数学会提高。

从那里转到第三维,学习核心技能(动画,渲染),您应该相对有能力应付各种游戏。


0

我想说的是塔防游戏是最好的起点。您也可以先修改现有的游戏/引擎(WarCraft III / HalfLife2 SDK /等),以了解所需的总体逻辑,然后继续使用自己的代码库。


0

我的第一场比赛是《超级马里奥》。

四处走动,避开障碍物,跳跃。所有这些任务都可以轻松完成,而无需进行任何物理计算。

采取简单的2D事物的理想选择,因为您不会过多依赖特定的实现/框架/引擎。

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.