免责声明
这是一篇关于我和我的朋友如何编写游戏的文章。 我们添加并出售了它,但并没有给我们带来金钱。 但是,这样做对我们来说非常有趣,也很有趣,因此我决定分享自己的记忆。 本文将只包含最少的技术细节,我不会发布代码,因为从中学习是毫无意义的。 这是粉丝的代码,而不是专业人士的代码,关于错误有错误。 我们没有人接受过IT教育,也没有人专门从事编程工作。 有时我会发布技术细节,因为没有这个,无处不在。 我还请读者不要发表评论,因为这很讨厌阅读。 虽然是真的。
文章的其他部分第二部分第三部分第1章史前事件
很多时间过去了,我不太清楚细节,但是我绝对记得我比平时晚回家,当我看到Fyodor Mikhalych的电话时感到非常疲倦。 错过了
我想,明天再打给您。
Fedor Mikhalych一直是我们项目的核心。 而且,就像大脑一样,这也不是完全正确的。 我猜是我动手了。 当然,我当时是一个后台办公室。 还有Fedor Mikhalych-前线。 因此,他总是充满想法。 而且我总是不礼貌地切断他的想法:
-Fedor Mikhalych,这是不可能的,因为这将有必要重做引擎中的所有内容,并改变一半的资产。 更不用说这个想法本身就是愚蠢的,我不喜欢它-所以我将回答费奥多尔·米哈里奇(Fyodor Mikhalych)的电话,以便在几周内将他的想法转化为代码,给他打电话,并说我想出了并写了Krutetskaya事...但是会晚一点。
在此之前,大约还有一年。 同时,我们认为我们编写了MMORPG。
MMORPG,我们突然开始写某种方式。 我,Fyodor Mikhalych和Dimon都没有从事过编程方面的专业工作,更不用说开发游戏了。 我们所有人都在银行工作,戴蒙用货币进行交易,我用债务进行交易,而费多尔·米哈利奇(Fedor Mikhalych)从事贸易支持。 此外,戴蒙(Dimon)和费多·米哈里奇(Fedor Mikhalych)在一家银行工作,我在另一家银行工作。 但是我们是游戏玩家。 我们想写游戏。 我曾经在学校里“涉足”编程,在Andre Lamot的“ Windows编程游戏”一书的帮助下,我用C语言编写了Wolfenstein游戏的克隆,我从书中写得很清楚,但是我的编译器不知道如何将汇编器嵌入C代码中,因此,与书籍版本不同,我的引擎工作非常缓慢。 然后我很久没有编程了,直到一次在一家书店里,我的眼睛被安德烈·拉莫特(Andre Lamot)的《 Windows 3D游戏编程》一书所吸引。
Deja Vu,我想法语。 由于我在一家法国银行工作,因此有时不得不这样做。
但这是一本完全不同的书。 我翻阅了一下,意识到这就是我们所需要的。 我要她 我想按照它说的做。 我打电话给Fedor Mikhalych,并邀请他编写3D游戏。 他同意了。
我的妻子做了一顿非常美味的晚餐,但是我很累,默默地拿起盘子。 我在考虑为什么代码无法编译。 那是夏天,工作很无聊。 我什至错过了与笔记本电脑一起玩的空闲时间。 在夏季,市场上没有人,而且有很多空闲时间在工作。 由于我中的全局变量在.h文件中声明,并且包含在多个.c文件中,因此未收集代码。 并且编译器在重新定义时发誓。
#ifndef file_h #define file_h
待会再来。 同时,我发明了我的自行车。 我发明了很多。 看完《灯》这本书后,我觉得我可以做任何事。 我开始研究OpenGL,结果发现,一般来说,我什至不需要编写任何东西(是固定的管道,是的。我将学到很多有关着色器如何工作以及需要编写什么内容的知识)。 我从第一人称视角迅速将笨拙的助行器堆放在2D世界的表面上(世界在3D环境中可见,但引擎不知道如何处理高度运动,实际上,就像在Wolf中一样,所有东西都是2D的)。 书中对md2和obj fomats进行了详细的分析,我从第二次Quake和互联网上提取了modelek。 一切都很好,但是由于上述错误,代码在进行细微更改后可能突然停止编译。 他无法停止。 那时,我经常对此感到困惑,并经常发明自行车。
是的,我为MMORPG编写了引擎。 Fedor Mikhalych和Dimon几乎负责其他所有事务。 我感觉像约翰·卡马克(John Carmack)。 我感觉很好。 但是进展缓慢。 Fedor Mikhalych经常打电话。 现在在这里。 他应该回电。
我感谢妻子吃饭,并给自己倒了一些酒。 我们需要与Fedor Mikhalych交谈。 我的妻子把我当狼。 在她看来,我不得不和她交谈。 但是责任至上。
-你好,Fedor Mikhalych,打来了吗?
-帕特,把你写的这个废话丢掉,我们做垃圾!
-???-当然,我回答错了。
-我们需要为iPhone编写游戏。 未来是手机游戏。
我必须说,Fedor Mikhalych并不是第一个提出这个想法的人。 Appstor积极成长。 大型项目开始出现,但市场上有很多地方。 每个人都想去那里。
好的 让我们考虑一下。
-尼赫鲁想。 让我们来做游戏。 只是简单一些,而不是MMORPG,否则我们将不增加任何退休金。 但是我们必须在火车离开之前立即释放。
-好吧,我想用3D编写。 如何在iPhone上播放3D?
“算了,” Fedor Mikhalych非常执着。 -不要写3D。 让我们考虑一下流派。
-考虑一下。 好吧,让我们看看那里有什么。 我把Ikscode放了一下。 当我为自己购买一台Macbook时,我发现磁盘上有免费的hackcode。 看来环境很正常。
太好了 我将您的邮件链接放入有关iPhone编程教程的网站链接中。 我特别喜欢雷·温德利希(Ray Wenderlich)。 看一下
-好
像这样的事情我陷入了移动开发的世界。 没有专门的教育,没有OOP的知识,没有发展的思路。 当我为iPhone打开教育性编程站点时,我的第一个想法是“什么愚蠢的语法”。 用这些话,我仍然描述目标C。
那就更有趣了。 原来我习惯了
GLBegin(GL_TRIANGLES)
他们在iPhone上无法正常工作。 GLTranslatef等也不起作用。 愚蠢的事情。
好的 我读灯并非没有;我想知道它是如何工作的。 他写道。
在几天的某个地方,我弄清楚了顶点数组对象以及如何在着色器中使用它们。 我花了一个星期的时间来创建一个项目,在该项目中您可以在屏幕上移动具有动画纹理的多维数据集。 大部分时间都花在绘制一系列动画纹理上。 精灵。 大约两周后,我准备了一个小平台游戏。 为了纪念我未来的希伯来语老师,我任命他为伊凡特工。

一直以来,Fedor Mikhalych都在认真思考。 在他看来,事实是,平台游戏者写起来毫无意义。 这是原始的。
他说:“这很原始。” -那会更严重。 顺便说一句,您是否听说过要在计算机上重新发行UFO?
-X-Com?
-是的
-是时候了 很酷的游戏了。 顺便说一句,它将完全适合触摸界面。 他们会在iPhone上放她吗?
Fedor Mikhalych想了一下。
-加油
现在我想。
-我们来做X-com吗? 我们没有权利。
-好吧,克隆人。 不是X-com本身。 它们将在计算机上发布,而我们将在iPhone上安静。
那很有趣。 我们俩都很喜欢X-com。 在我看来,创建X-com的克隆并不困难。 当然,比平台游戏程序更难,但是难度不大。 六个月应该应付。 如果幸运的话,让我们先在iPhone上直播,然后在PC上进行翻拍。 会很酷的。 会很有趣。 而且,最重要的是,这不是一个大项目。 如果我在3周内从头开始制作平台游戏,那么Ikskoy就是6个月了,我们立即乘以2,以免总分-一年。 好酷
第二章时代的开始
我们着火了。 我编写了代码,Dimon制作了地板纹理,并与以md2格式制作模型的自由职业者一起工作。 我与之合作的自由职业者除了负责士兵本身外,还负责。 好吧,Fedor Mikhalych在考虑游戏的结构,情节,武器,关卡的结构,平衡,而这一切都在这里。
但是,最重要的是,我可以根据需要在OpenGL上编写引擎。
起初很难。 大多数时候,我学会了用Objective-C和OpenGL进行编写。 较小-编写游戏本身。 但是随着时间的流逝,我参与进来,大约一个月后,我的手指越过方形纹理区域(我们的模型尚未准备好),iPhone模拟器中的Quake 2中的动画怪物就跑了起来。 Fedor Mikhalych为游戏定制了故事:
-将会有一个未来,但并不遥远。 世界由公司主导。 突然之间,到处都是袭击,整个世界都在袭击之中。
我回答说:“恐怖袭击是有害的。”
-当然,这就是重点。 您将与他们战斗。
“打架很好,”我回答。 -但是无聊。 这不是您要在Elies拍摄的。
-那怎么了 我们可以并且依靠Elien。 我们将按照自己的意愿去做,这就是我们的游戏。
-Elien认为我们做不到; 对于人们来说,这并不有趣。
“来吧动物,”费奥多·米哈里奇(Fyodor Mikhalych)丝毫不放松。 他只需要烧掉一个人。
“可怜的动物,”我回答。
-好吧,加油吧。
-也许他们的灵魂很好?
-在这里,您认为正确。 但是,如果灵魂中这些可爱的动物是邪恶的呢?
-我的意思是? -我当时真的不明白。
-好吧,带绿色和平组织。 他保护企鹅免于灭绝。
我有些吃惊:
-企鹅什么时候开始消亡的? -我什至爬了维基百科。 不,一切都井井有条,不要死。 “他们不会消亡,”我大声说,在屏幕上戳了一下手指。
-是的,冷静一下--费多·米哈里奇回答,-有必要,他们将开始消亡。 你明白这个主意。 通过与人一起创造一只变异的企鹅,以便为它们增加理由,从而使它们免于灭绝,从而使它们免于灭绝。
我反驳说:“没有人的实验。”
“是的,” Fedor Mikhalych没有松懈。 假设有人闻了闻然后杀死了他。 并上演了恐怖袭击。 有人猜测,他也被杀害,就像恐怖袭击一样。 然后,在绿色和平组织的主持下,与恐怖分子的交易开始了,武器交易,人口贩运以及所有这一切隐藏了对企鹅人的实验。
“很深,”我说。
-好吧,整个恐怖欺骗的机器正在发展,并且自我维持的反应已经开始,你知道我的意思吗?
“ Sekou”,我真的很高兴。 我还在尖叫。
太好了 因此,事实证明,您是那种在拍人物的人,后面有突变的企鹅,仅此而已。 这有趣吗? -Fedor Mikhalych说服了我。 在我看来,这真的很有趣。
我将项目的下一个版本称为“ pinguin”,并着手编写代码。 戴蒙扔了大约一百种不同质地的地板,草,混凝土和其他东西。 Fedor Mikhalych也从事纹理。 在代码中,我生成了一个由正方形组成的地板模型。 每个正方形都有其自己的纹理。 我将一堆模型加载到内存中,并向Fedor Mikhalych展示了如何轻松地用手指指着屏幕。 同时,我们的第一个士兵模型是由自由职业者及时到达的,我添加了它,而不是雷神之锤2(Quake 2)中的怪物。

但是,一旦Fedor Mikhalych说我们应该了解设备上的所有功能。 我买了一个开发者订阅。 配置所有证书花费了一些时间。 对我来说,那是一片黑暗的森林,但费多尔·米哈利奇(Fedor Mikhalych)很快就做到了。 我们将项目上传到手机上,启动它,开始下载...,该应用程序崩溃了。
误会了。
我在模拟器中启动了构建-它可以正常工作。
在真实设备上的相同构建会崩溃。
现在该转向调试器了。
当时,使用ikskod中的调试代码,一切都相对不错。 我启动了探查器并开始查看该应用程序。
-不知何故,Fedor Mikhalych看了很多记忆。 我们在一个方形的场地中有20个怪胎,她已经吃了150 MB ... 200 ... 250 ... 300 ...掉下来了。 -我想。 -算吧。 我们创建地板。 它是128x128正方形。 每个都有4个峰,这是1.6万个峰。 每个都包含3个坐标和2个纹理坐标,它们都是浮点数。 总计82,000辆彩车。 每个浮点数为4个字节。 总计320 Kb。 一点吧
“不多,” Fedor Mikhalych同意。
-接下来,我们将与Dimon一起运送您的纹理。 现在我们有20个。 每种512x512和32位颜色。 每个纹理总计1 MB,输出20 MB。 一点吧
“不多,” Fedor Mikhalych同意。
-接下来,我们加载士兵的模型。 我会寄给他们20件。 每2 000个多边形,每个多边形具有3个顶点,每个多边形具有5个浮点,每个浮点具有4个字节。 总计... 2.35 MB 笨吗
“不多,” Fedor Mikhalych同意。
“虽然不是。” 每个模型有95帧。 总计220 MB。
“是的,” Fedor Mikhalych同意,“以及上面的纹理。” 1024x1024 32位。 总计80 MB。 仅300 MB。 这只是一个平坦的场地和20个怪胎。 在游戏中,关卡上会出现更多敌人。 还有各种各样的物体。 在模拟器中,对内存量没有限制。 而在iPhone中,则为512 MB。 系统占了一部分,你必须炫耀。
我被毁了。 以这种速度,为了加载该级别,您将不得不等待发布5-10 GB内存的iPhone。 但是如何? 卡马克如何做地震?