我如何成为手机游戏开发商

关于我如何成为游戏开发人员的一个小故事。我将着重指出我在途中遇到的问题,并分享一些经验。我一直从事程序员工作很长时间,自2001年以来,我从小就开始从事计算机业务,但直到2014年初我才开始玩游戏。而促成这一点的是哈布雷的文章。 2014年初某个地方,在阅读有关Habré的文章时,我发现了一篇有关一个年轻人如何为VK制作简单游戏的文章。一个简单的2D飞机战斗游戏。在关于游戏本身的文章中几乎没有,但我对他被提供以700美元的价格出售游戏这一事实感到很感兴趣。他拒绝并后悔,因为这场比赛只给他带来了损失。这个“成功的故事”以某种方式启发了我。



我想知道我是否不能做这样的游戏?是的,我每个月可以写十几本书。研究了网络开发问题后,我决定选择Flash,尽管该文章的下降已经成定局,但似乎在那篇文章中只是有一个游戏。因此,我开始掌握Flash,在YouTube上观看视频,并尝试重复一些小例子。我对选择我想做的事情并没有太多的想法,我想使用服务器和单元来进行“命令与征服” :)我不会画图,所以我从可以在Internet上找到的原始游戏中拍摄了照片。我以为如果有事情发生,我会从知道如何做的人那里订购游戏的艺术品。解决问题后,我在VK页面上发布了视频和屏幕截图。我不记得我做了多长时间,但是,正如我之前计划的那样,在接下来的几周里,我没能赚到很多游戏。主体工作也花费了很多时间,而且我的动作非常缓慢。不久之后,我的老朋友迪玛(Dima)还是策略游戏的忠实拥护者,向我提供了该项目的帮助。他加快了项目进度。而且,事实证明,他熟悉一位艺术家,该艺术家已经参与了PC的类似项目的创建。因此,他已经有了发展,建筑物和设备的模型。



我们进行了交谈,并决定一起做游戏。我们只有一个程序员,我是艺术家Sashka和编剧Dima。我们就如何分割一只未灭绝的熊的皮肤达成了共识,为该项目想出了一个名字,然后开始工作。一段时间后,我们放弃了VK,开始制作手机游戏。由于我已经在Flash中开发了项目的一部分,因此决定不使用Adobe AIR保留它,因此几乎可以为任何平台编写。 (小题外话,我在写Flash,好像在找借口,说实话,我并不真正了解这种技术的所有攻击,每个人似乎都被Flash冒犯了,并把它放在一起。我通常喜欢Flash,所以没有更多借口了。



由于我没有游戏开发经验,并且Flash社区已经开始分散,所以我发明了各种自行车,从某种程度上来说,我的一些决定引起了争议。我决定不保留时间顺序的叙事,记住发生了什么,对我来说这已经很困难,所以我将选择一个主题并尝试告诉您游戏方向的发展。



该游戏在某些功能上没有不同,所有游戏机制都是从90年代末-2000年代初的各种策略游戏中借用的。



由于游戏是按照等轴测样式制作的,因此所有使用的对象均包含预渲染的图像。现在有8000多个.Sasha经常重画它们并给我设置背景,经常更改图片的名称,这导致必须编辑代码这一事实,在某个时刻我不得不编写一个单独的程序来组织图片并编写代码。以便可以轻松使用这些套件。这样节省了很多时间。最初,没有战争迷雾,然后我用黑色图片制作了一个拐杖,然后用椭圆形“打孔”,然后监视了在层状引擎中绘制雾的算法。游戏中的景观图本身是用一张图片绘制的。该地图预先指示了无法移动的地方。为此,我编写了某个编辑器,可以用某些矩形标记这些地方。而且已经在游戏中,我将它们加载到数组中,并不断地迭代该单元是否遇到此矩形。出乎意料的是,它非常快,并且使用最少的给定位置来编译地图。我不知道找到路径的任何算法,出于某种令人惊讶的原因,我决定发明自己的算法,尽管事实上在Internet上可以在AS3上搜索现成的算法。当一个单元偶然碰到一个看不见的矩形,表示某种障碍物(例如岩石)时,它开始顺时针旋转(实际上,我不记得它开始旋转的方向了,但是不再重要了),我检查了是否可以去那里继续前进,或者再次转身。单位是否偶然碰到了给定的矩形。出乎意料的是,它的速度非常快,并且使用最少的给定位置来编译地图。我不知道找到路径的任何算法,出于某种令人惊讶的原因,我决定发明自己的算法,尽管事实上在Internet上可以在AS3上搜索现成的算法。当一个单元偶然发现一个看不见的矩形时,它指示某种障碍物,例如一块岩石,它开始顺时针旋转(实际上,我不记得它开始旋转的方向了,但是不再重要了),我检查了是否可以去那里继续前进,或者再次转身。单位是否偶然碰到了给定的矩形。出乎意料的是,它的速度非常快,并且使用最少的给定位置来编译地图。我不知道找到路径的任何算法,出于某种令人惊讶的原因,我决定发明自己的算法,尽管事实上在Internet上可以在AS3上搜索现成的算法。当一个单元偶然发现一个看不见的矩形时,它指示某种障碍物,例如一块岩石,它开始顺时针旋转(实际上,我不记得它开始旋转的方向了,但是不再重要了),我检查了是否可以去那里继续前进,或者再次转身。尽管事实上在Internet上可以在AS3上搜索现成的产品。当一个单元偶然碰到一个看不见的矩形,表示某种障碍物(例如岩石)时,它开始顺时针旋转(实际上,我不记得它开始旋转的方向了,但是不再重要了),我检查了是否可以去那里继续前进,或者再次转身。尽管事实上在Internet上可以在AS3上搜索现成的产品。当一个单元偶然发现一个看不见的矩形时,它指示某种障碍物,例如一块岩石,它开始顺时针旋转(实际上,我不记得它开始旋转的方向了,但是不再重要了),我检查了是否可以去那里继续前进,或者再次转身。



好吧,我又去了那门课程。实际上,他可以根据情况转向不同的方向。而且,为了防止玩家由于收藏家和开发商的愚蠢而蒙受损失,这看起来很可怕,我们使用飞行的货运直升机进行了资源收集,他们不需要绕过障碍。如此出色的解决方案几乎无处不在。我从服务器下载了内容。为此,我在家里制作了一台服务器,并且每周一小时都无法使用该服务器,而且数小时之久,这根本不允许新用户启动游戏。我们决定在Google应用商店中发布这样的奇迹。根据统计,11月的某个地方,该游戏于2014年16日在android上发布。游戏包含很多错误,在某些设备上可能根本无法启动,如果启动了,由于无法下载地图集和任务而无法启动,但令人惊讶的是,她受到了热烈欢迎。许多玩家发表了积极的评论,并要求修复各种故障。



图片



渐渐地,我放弃了家庭服务器,作为游戏内容的存储库,为网站租用了空间,购买了域名,并解决了下载问题。艺术家开始描绘冲突的新方面,迪玛开始从事竞选剧本的创作。我决定制造一台用于通过Internet播放的服务器。游戏中的获利是通过烦人的广告来完成的,但没有带来任何收益,每月50-100美元。我们把所有这些“收入”都交给了艺术家。



图片

这就是第一个月的收入



游戏服务器



我有使用C ++编写服务器的经验,这是一个非常简单的使用套接字的客户端服务器应用程序,其中有2-3个客户端,但是后来我需要发明一款更好的自行车。我之所以选择C#,是因为那时我已经在其中进行了很长时间的编程,并且选择了Microsoft SQL Server来存储统计信息。谷歌搜索了一个用C#编写的服务器示例,开始了解AS3上套接字的实现(以后我会写有关flash的文章)。这个想法很简单,我的单元已经有一个命令队列,然后将其执行,您只需要在一个设备上的一个单元上添加命令,将其发送到服务器,然后服务器会将这个命令发送到第二个设备,然后返回即可。还有一些服务功能,服务器上的授权,创建房间,控制游戏的版本,经常更新游戏,向其中添加新单元,错误已得到修复,这要求玩家使用相同的版本,等等。我能够相对快速地编写生产服务器。而且,瞧瞧!我们可以互相玩!我在很晚以后就搞定了房间的创建,起初玩家只能选择一张地图来创建游戏,第二位玩家必须单击加入服务器,然后他们就可以连接并在创建游戏的玩家选择的地图上进行游戏。并且该服务器再次位于我的公寓中。渐渐地,我使多人游戏或多或少看起来不错。现在,多达8个玩家可以在一张地图上玩不同版本的地图,最多可以有3个团队。另外,我可以在ASP.net上写的游戏网站上查看游戏统计信息和某些功能。服务器上发生的所有游戏都保存在xml文件中,可以使用多种速度模式在客户端上下载和查看。我将重放存储在磁盘上,而不是存储在数据库中,并且已经有很多重放了。我不确定这是否是个好主意,但是也没有希望将超过100 gig的重播推送到数据库中。为了赢得比赛,系统会授予等级(略有变化),这是由ELO系统计算得出的等级。我不时遇到各种优化问题,需要处理异步技巧,缺少服务器空间等等。我最终租了一个普通的服务器。首先是虚拟的,然后是真实的。稍有变化,这就是ELO等级。我不时遇到各种优化问题,需要处理异步技术,缺少服务器空间等等。我最终租了一个普通的服务器。首先是虚拟的,然后是真实的。稍有变化,这就是ELO等级。我不时遇到各种优化问题,需要处理异步技巧,缺少服务器空间等等。我最终租了一个普通的服务器。首先是虚拟的,然后是真实的。





一旦游戏变得有趣,就会出现想用不诚实方法获胜的人们。我们必须对此做些事情,因为它吓跑了普通玩家。因此,我将有关已收集和消耗的资源,收集者对基地的访问次数等数据传输到服务器。将有关单价等的数据添加到数据库,以便您可以计算播放器已转移到服务器并在其中进行了分析的资源数量。如果数据不一致,他将作弊者扔出游戏,并计算出对手的胜利。但是球员们的创造力经常使我感到惊讶。我发现的另一种方法是加快游戏速度。我不知道玩家是如何做到的,总的来说,整个游戏对他们来说运作更快,收割者的收集速度更快,单位的释放速度也更快。我必须计算服务器上单元的释放速率,并还要惩罚这种狡猾的单元。但是,如果不模拟游戏,就不可能完全防止服务器上的犯规行为。但是由于该游戏不受欢迎,因此我会解决可用的问题。我会定期与一些常规播放器进行交流,以解决故障,有时在周末,我会在自己的频道上播放视频流。您始终可以加载游戏并查看其中发生了什么。



图片





服务器上没有很多玩家。一些人害怕失去他们的等级,因此没有参加比赛。有必要添加一个不会冒犯输球并且可以娱乐玩家的非个人玩家。我们需要一个机器人。要编写一个机器人,必须解决许多问题。如果很容易为建筑物编写施工队列,那么在地图上寻找合适的施工位置已经变得更加困难。例如,在离线任务中,我为AI预先分配了可以建造建筑物的地方。但是,如果敌人根据给定的计划建造所有建筑物并将建筑物放置在相同的地方,那就不会很有趣了,还需要其他措施。我想出了如何在这里作弊。我被服务器存储所有游戏的想法所困扰,它们拥有玩家已经建造的所有场所,彼此进行比赛。您只需将这些信息系统化并使用...因此,停止。但是,如果我完全使用构建策略并释放曾经在此地图上玩过并且与机器人现在所在的位置相同的真实玩家的单位,该怎么办?有人会注意到这样的替代吗?老实说,我也将通过他赚多少钱来控制单位的释放。游戏本身并未在服务器上进行仿真,而是完全在创建游戏的客户端上运行,有些观点很难理解。例如,服务器无法知道移动单元在地图上的确切位置,有关该位置的信息只是在该单元完成执行去向命令的那一刻,服务器仍然不知道很多信息。但是我认为它们并不那么重要,有时有必要将命令传送给客户到部队,以便他们攻击最近的对手。在我看来,这足够了。我还向机器人添加了一些代币,这是一种能力,如果有人由工程师捕获了建筑物并且没有时间出售它们,则可以将建筑物捕获回来,如果建筑物被破坏则需要恢复建筑物,以及在战场上生存所必需的许多其他功能。令人惊讶的是,该机器人扎根了。玩家很乐意和他一起玩。即使是实力稍强的玩家,有时也会有些失落,他们有时会在一个月前与同一个机器人或真实玩家对战时失去自己的战术,但我们仍然必须承认,他并没有成为一名优秀的玩家。现在,该机器人已经玩了超过311,000场游戏,并在40%的战斗中赢得了胜利。在战场上生存所必需的。令人惊讶的是,该机器人扎根了。玩家很乐意和他一起玩。即使是实力稍强的玩家,有时也会有些失落,他们有时会在一个月前与同一个机器人或真实玩家对战时失去自己的战术,但我们仍然必须承认,他并没有成为一名优秀的玩家。现在,该机器人已经玩了超过311,000场游戏,并在40%的战斗中赢得了胜利。在战场上生存所必需的。令人惊讶的是,该机器人扎根了。玩家很乐意和他一起玩。即使是实力稍强的玩家,有时也会有些失落,他们有时也会在一个月前与同一个机器人或真实玩家对战时失去自己的战术,但尽管如此,我们必须承认,他并没有成为一名优秀的玩家。现在,该机器人已经玩了超过311,000场游戏,并在40%的战斗中赢得了胜利。



付费版本的游戏



当艺术家完全描绘了苏联冲突的第二面时,在此之前,我们只有一个-联盟,我们想尝试出售它。我不记得确切出现在什么时候购买出现在游戏中,但我们还决定制作付费版本的游戏,其中没有广告,而第二面没有购买。许多故障已修复,甚至出现了常规的寻路算法。图片地图已替换为平铺地图,这些地图是使用标准工具绘制的。该活动已由普通翻译人员(而不是我们自己的努力)翻译成英语。



图片



现在该游戏可以玩日本游戏了,最近我们又增加了另一场比赛“ Aliens”,这是一个独立的方面,您可以为甲壳虫状的单元玩,直到平衡完全调整,并且坦率地说它们很弱。



图片



2015年6月,我们推出了付费版的策略,而且还算不错。长期以来,这款游戏一直是俄罗斯和其他一些国家/地区中付费策略中的佼佼者。她第一个月就带了1000美元。这是游戏的第一笔正常收入,我相信这可以赚到一些钱。一直以来,Android上的付费版本带来了约22K美元(已经减去Google)。



图片



这些尖峰从图像的中心开始就是销售。以前,它们工作得更好,现在,正如您所看到的,销售意义不像以前那样,至少对于我的游戏而言。



本土化



翻译值得一提。游戏现在有7种俄语之外的语言。大多数转账是由来自不同国家的玩家免费或以很小的报酬由我完成的。这是一个非常有趣的时刻。进入多人游戏服务器后,有一次我注意到玩家数量急剧增加,实际上是10倍。一方面,这让我感到高兴。



我查看了广告展示统计信息,但没有发现那里有任何变化。看着一些IP播放器,他们都是中国人。我在Google上搜索并找到了完全本地化的游戏。有人将其倒掉,将所有内容翻译成图片,然后进行布局。此外,广告已在游戏中删除,各种付费功能已解锁等。我可以利用这一点,从那里获取中文翻译,并将其放入我的游戏中!从我偷来的游戏中偷了翻译。更新了版本并禁用了旧版本播放功能。出人意料的是,该游戏在泰国非常受欢迎,尽管它在泰国的本地化下载量为130万,而下载量则为25万,其次是俄罗斯,其次为16万。我将在稍后显示此图。



图片



游戏配音



最初,我们在各种免费的声音库中寻找免费的声音,然后在菜单中使用语音生成器生成了一些提示。这些主要是仅英语的短语。现在有俄语和英语配音。有时,对于VK版本,我们要求俄语母语人员的单位的声音表演有所帮助。然后我们遇到了阿列克谢,阿列克谢在以后的所有比赛中都发表了意见。为其中一款游戏配音的过程游戏中的



音乐是由我们的艺术家亚历山大创作的,有些作品是由尤里(GraYaSDF)给我们创作的。



广告



尽管该游戏除了带来乐趣外没有带来任何其他好处,但没有想到要进行广告宣传。然后我决定尝试一下。邮件中充斥着各种博客的建议,以将游戏推入其频道的热门评论中。我尝试过几次这种类型的广告,完全感到失望。从这样的评论来看,我没有任何意义,有些人要求的钱比一个月内带来的游戏还要多。唯一真正获得回报的是在w3bsit3-dns.com上投放广告。有一些针对开发人员的程序,您可以在其中编写有关游戏的文章。这是唯一真正为我带来回报的广告。但也很可能取决于游戏。我没有购买任何装置。



图片



这就是游戏设置图的外观。由于下载量可能会上升或下降,我无法确定模式。增长可能发生在不良估值增加而下降的情况下-收入增加而ANR下降。有一次,当切换到新的android sdk编号时,我没有尝试将游戏安装在新设备上进行测试,并且后来证明,禁止在该设备上写入文档文件夹,或者需要用户的特殊许可。我猜想,游戏将持续几天,但不会在新设备上启动。尽管如此,该游戏的下载量却大大增加了,不幸的是我没有这张图表,但是我们在我们的小型团队中进行了讨论。有时跌倒似乎是人为的,这在2018年初尤为明显。它们似乎被切成一定数量。顺便说说,许多开发人员在今年秋天都经历过。



其他平台



我也在iOS上发布了游戏,然后在Steam上发布了游戏。使用Adobe Air技术非常容易。有一段时间,我什至在VK中拥有游戏的浏览器版本。但是,Android上的下载量甚至还没有接近。因此,对我来说主要的平台是android。



我的其他游戏



我写了一个游戏。实际上,已经有三个。实际上,它们是一体的,因为它们是在同一台发动机上制造的,并且已经在魔兽世界中了-Warage and dune-Expanse。



图片



结论



我注意到在第一款游戏之后已经发行的后续游戏已经是小菜一碟,并且具有更高的准备程度,我注意到进入2014年末的第一款游戏并不容易进入Google商店的榜首。策略有很多内容,但是我注意到添加内容不会导致安装量的增长。因此,我尚未决定是改进现有游戏还是启动新项目,是否研究新技术以及是否总体上继续游戏。无论如何,甚至没有意识到发布许多小型游戏的想法,在我看来,我能够在过去的7年中受益匪浅,掌握了一个新的方向。还要感谢飞机上的那篇小文章。我希望我的文章对某人有用,或者可能会激发某人开发游戏。



All Articles