CodeGym/Java 博客/随机的/一开始,有...
John Squirrels
第 41 级
San Francisco

一开始,有...

已在 随机的 群组中发布
个会员
一开始,有... - 1 第一份工作的试用期3年前就结束了,现在才抽出时间来写一篇文章。我在大学的不同系度过了一年:第一个学期,我学习管理,第二个学期,我转向软件工程。我希望他们能教我如何编程,但我错了。于是,我搜集资料,决定一切自学。我感谢我的老师的唯一原因是他推荐我从 Stephen Pratt 的电子书“The C Programming Language”开始。这确实是一本带有大量实践练习的好书。我花了大约 2 个月的时间在这本书上,之后我在一个朋友的小组中偶然发现了这个在线 Java 课程,然后就开始了。 起初,我打算成为一名 Android 开发者,但随着我学习的进步,后端对我来说似乎更有趣。顺便说一下,我花了 3 个月的时间学习才达到 20 级,之后我决定尝试找一份工作。首要任务是搬到另一个城市因为我的职位没有任何初级 Java 开发人员的职位空缺。找了一家公司,申请了,接到了一个测试任务,给了我一周的时间完成。我必须使用 Hibernate、Servlet/JSP 和 MySQL 编写一个简单的 Web 应用程序。看到这些术语,我只知道MySQL是一个数据库。起初,我非常失望。我什至决定去肯德基找工作机会,但后来我决定尝试一下测试任务。毕竟,我总能在肯德基找到一份工作。我整个星期都在不停地工作,并设法完成了测试。我提交了我的解决方案,但它“不漂亮”,所以我又修改了 4 次。我的最后一个解决方案被证明是正确的,但是职位已经被填补,并且在 3 个月内不会接受额外的申请。你要做什么,对吗?在接下来的 3 个月里,我学习了 HTML、CSS、JS、SQL 和 PHP。为什么是PHP?我需要一种服务器语言来响应请求等。当时,servlets和jsp似乎太复杂了。最后,我制作了一个界面糟糕的成熟 Web 应用程序。我在 GitHub 上发布了我的投资组合的代码。此时,3 个月过去了,同一家公司再次联系我并邀请我参加面试,并给了我另一个简单的任务来测试我的 SQL 知识,我在几个小时内设法完成了。与我谈论就业的人暗示他们会问算法和数据结构——我还没有时间掌握的主题。也就是说,距离面试还有 15 天。我懂了!Robert Lafore 的书“Java 中的数据结构和算法”对我有所帮助。我没有' 两周内没有时间阅读和理解所有内容,但我仍然学到了很多东西。然后面试的日子到了。我在约定的时间到了。两个人向我打招呼,采访开始了。说我很担心是一种轻描淡写的说法。我的声音在颤抖。除了算法和数据结构,他们什么都问。他们询问了 Spring、DI、IoC、Hibernate、JVM 是如何工作的、垃圾收集器是如何工作的——我无法回答这些问题中的一个。我只成功回答了有关 Java Core 的问题(集合、异常、OOP 等)。还在面试的时候,我就知道我失败了,但是没有收到任何反馈我还是很失望。相反,我发现了我的知识差距,并开始努力工作以弥补它们。然后面试的日子到了。我在约定的时间到了。两个人向我打招呼,采访开始了。说我很担心是一种轻描淡写的说法。我的声音在颤抖。除了算法和数据结构,他们什么都问。他们询问了 Spring、DI、IoC、Hibernate、JVM 是如何工作的、垃圾收集器是如何工作的——我无法回答这些问题中的一个。我只成功回答了有关 Java Core 的问题(集合、异常、OOP 等)。还在面试的时候,我就知道我失败了,但是没有收到任何反馈我还是很失望。相反,我发现了我的知识差距,并开始努力工作以弥补它们。然后面试的日子到了。我在约定的时间到了。两个人向我打招呼,采访开始了。说我很担心是一种轻描淡写的说法。我的声音在颤抖。除了算法和数据结构,他们什么都问。他们询问了 Spring、DI、IoC、Hibernate、JVM 是如何工作的、垃圾收集器是如何工作的——我无法回答这些问题中的一个。我只成功回答了有关 Java Core 的问题(集合、异常、OOP 等)。还在面试的时候,我就知道我失败了,但是没有收到任何反馈我还是很失望。相反,我发现了我的知识差距,并开始努力工作以弥补它们。说我很担心是一种轻描淡写的说法。我的声音在颤抖。除了算法和数据结构,他们什么都问。他们询问了 Spring、DI、IoC、Hibernate、JVM 是如何工作的、垃圾收集器是如何工作的——我无法回答这些问题中的一个。我只成功回答了有关 Java Core 的问题(集合、异常、OOP 等)。还在面试的时候,我就知道我失败了,但是没有收到任何反馈我还是很失望。相反,我发现了我的知识差距,并开始努力工作以弥补它们。说我很担心是一种轻描淡写的说法。我的声音在颤抖。除了算法和数据结构,他们什么都问。他们询问了 Spring、DI、IoC、Hibernate、JVM 是如何工作的、垃圾收集器是如何工作的——我无法回答这些问题中的一个。我只成功回答了有关 Java Core 的问题(集合、异常、OOP 等)。还在面试的时候,我就知道我失败了,但是没有收到任何反馈我还是很失望。相反,我发现了我的知识差距,并开始努力工作以弥补它们。我只成功回答了有关 Java Core 的问题(集合、异常、OOP 等)。还在面试的时候,我就知道我失败了,但是没有收到任何反馈我还是很失望。相反,我发现了我的知识差距,并开始努力工作以弥补它们。我只成功回答了有关 Java Core 的问题(集合、异常、OOP 等)。还在面试的时候,我就知道我失败了,但是没有收到任何反馈我还是很失望。相反,我发现了我的知识差距,并开始努力工作以弥补它们。我在面试失败一个月后找到了一份工作。顺便说一句,我在 CodeGym 的讨论中找到了职位空缺(CodeGym 是 CodeGym 的俄语版本——编者注). 首先,与招聘人员进行了 Skype 面试(持续了大约 2 小时)。他们询问了 Java 核心、垃圾收集(现在我知道它是如何工作的)、数据库和数据结构。面试官让我分享我的屏幕并写一个计算器。我几乎高兴得哭了,因为我一周前刚刚写了一个计算器。对自己充满信心,我开始了任务。但不知是因为兴奋还是其他原因,我忘记了部分算法。我的屏幕被共享了。我害怕咨询谷歌。幸运的是,我有手机,这救了我的屁股。第二天,他们要求进行面谈,几天后我收到了录取通知书. 这不是官方职位。我的角色是一个独资经营者的学徒。我们为活动策划、售票等写了一个服务。我还记得我第一天上班的情景。我的老板花了 15 分钟来解释需要做什么。“一切都清楚了吗?” 他问。“嗯,不是真的。你能再看一遍吗?” 我关切地问道。老板再次解释了一切。“现在清楚了吗?” “是的,现在是了。” 其实,我什么都不懂。但我不敢要求另一种解释。我想任何受雇的人都能理解这一点。任务归结为从 Thymeleaf 移植到 AngularJS。幸运的是,我找到了一大块已完成的代码,并将其用作该操作的示例。我不明白它是如何工作的,但我完成了任务。随后,我被分配了与后端直接相关的任务。只有在实际体验了 Spring 之后,我才开始理解我在《Spring for Professionals》中读到的内容。我在那里工作了8个月,然后搬到了另一个城市,在那里我很快找到了一份正式工作,工作了2年,一路上我的头衔从“初级”变成了“中级”。然后我面对这样一个事实,即我的工作已成为例行公事,并没有给我带来一丝乐趣。所以我休息了。为了不让我的手指在休息时萎缩,我决定尝试另一个领域:游戏开发。更具体地说,移动游戏开发,选择 Android,因为我已经了解 Java。这就是我现在要详细讨论的内容。只有在实际体验了 Spring 之后,我才开始理解我在《Spring for Professionals》中读到的内容。我在那里工作了8个月,然后搬到了另一个城市,在那里我很快找到了一份正式工作,工作了2年,一路上我的头衔从“初级”变成了“中级”。然后我面对这样一个事实,即我的工作已成为例行公事,并没有给我带来一丝乐趣。所以我休息了。为了不让我的手指在休息时萎缩,我决定尝试另一个领域:游戏开发。更具体地说,移动游戏开发,选择 Android,因为我已经了解 Java。这就是我现在要详细讨论的内容。只有在实际体验了 Spring 之后,我才开始理解我在《Spring for Professionals》中读到的内容。我在那里工作了8个月,然后搬到了另一个城市,在那里我很快找到了一份正式工作,工作了2年,一路上我的头衔从“初级”变成了“中级”。然后我面对这样一个事实,即我的工作已成为例行公事,并没有给我带来一丝乐趣。所以我休息了。为了不让我的手指在休息时萎缩,我决定尝试另一个领域:游戏开发。更具体地说,移动游戏开发,选择 Android,因为我已经了解 Java。这就是我现在要详细讨论的内容。在那里我很快找到了一份正式工作,工作了 2 年,一路上我的头衔从“初级”变成了“中级”。然后我面对这样一个事实,即我的工作已成为例行公事,并没有给我带来一丝乐趣。所以我休息了。为了不让我的手指在休息时萎缩,我决定尝试另一个领域:游戏开发。更具体地说,移动游戏开发,选择 Android,因为我已经了解 Java。这就是我现在要详细讨论的内容。在那里我很快找到了一份正式工作,工作了 2 年,一路上我的头衔从“初级”变成了“中级”。然后我面对这样一个事实,即我的工作已成为例行公事,并没有给我带来一丝乐趣。所以我休息了。为了不让我的手指在休息时萎缩,我决定尝试另一个领域:游戏开发。更具体地说,移动游戏开发,选择 Android,因为我已经了解 Java。这就是我现在要详细讨论的内容。我决定尝试另一个领域:游戏开发。更具体地说,移动游戏开发,选择 Android,因为我已经了解 Java。这就是我现在要详细讨论的内容。我决定尝试另一个领域:游戏开发。更具体地说,移动游戏开发,选择 Android,因为我已经了解 Java。这就是我现在要详细讨论的内容。我的团队。 很快,我就组建了一个 4 人的小团队(包括我):2 名开发人员、1 名游戏设计师和 1 名音响工程师。因为团队里没有人有过游戏开发的经验,再加上我的假期时间有限,所以我们决定实现一个简单的项目,我们肯定能完成。所以我们做到了!最初,截止日期是 11 月 15 日,但如您所知,按时完成项目是错误的。所以,我们晚了两周完成了它。我们的技术栈包括 Java 8 和 libGDX。

发展

开发于 10 月 17 日开始。我们总共花了 45 天,期间:
  1. 我们学习了如何使用 libGDX。
  2. 我们写了代码。
  3. 我们创建了图形。
  4. 我们创造了音乐。
看过游戏的人可能会问,“为什么这么久?游戏这么简单。” 是的,确实如此,准确地说,开发部分(编写代码)大约花了一个半星期。其余时间分为:
  1. 掌握如何使用游戏引擎。
  2. 绘制和重绘图稿。
  3. 写音乐。
  4. 在https://freesound.org上搜索声音。
  5. 阅读大量关于如何推广游戏的文章。
由于各种原因,我们也有过“停机”的时刻:有人参加考试,其他人进行补考等。我们当然可以将一周半或更长时间归因于停机时间。一些时间也花在了“辩论”上:几乎每天都会出现关于向游戏中添加什么的新想法,所以我们争论:“那是多余的”、“那不合适”等等。我们抛出了很多想法,例如,添加可以被压碎的奔跑的蟑螂以获得加分:在我看来,最困难的事情之一是提前决定游戏中的内容并坚持计划而不是试图添加“再添加一个” “ 特征。这45天就是这样累积起来的。一个半星期后,游戏的原型就准备好了。这期间,我们真的没有任何图形, 一开始,有... - 2游戏在技术意义上非常简单。我们甚至不需要使用 box2d(一种物理引擎)。我们可以自己处理碰撞并计算斜边。我要强调的最有趣的几点是:
  1. 最初,所有游戏元素都是随机生成的。换句话说,我们将提供者(黑洞、剪刀、忍者之星、铅笔芯、红心)放入一个数组中,得到一个随机提供者,得到一个具有随机坐标的元素。很快就很清楚这种方法“真的不是很好”。参与测试的朋友告诉我们同样的事情,推荐使用模板。对于那些参与游戏开发的人来说,这可能是一个显而易见的解决方案。但是因为我们是这个领域的新手,所以这对我们来说是非常实用的建议。

    所以我们创建了几个模板:剪刀谷;铅笔芯 — 超快地收集它们非常酷(用手指嗖嗖、嗖嗖、嗖嗖);还有一个我不知道该叫什么的模板——我只会告诉你我们在代码中给这个类命名的是什么:StraightForwardPattern.

    一开始,有... - 3

    这些模板改进了它,但不知何故它变得太可预测了。这就是为什么我们又添加了一个:一个随机模板。换句话说,我们现在有一些“静态”模板和一个随机模板(在这里插入“完美平衡”模因)。

  2. 这是我们遇到的主要问题。LibGDX 在无限循环中调用 render (float delta) 方法。这是绘制所有元素的地方。铅笔线绘制如下:我们获取手指坐标并在那里绘制纹理。因此,如果我们在屏幕上快速移动手指,那么由于调用 render(delta) 方法之间的毫秒数,该行将有“间隙”。

    解决办法很简单:我们记住上一个绘制纹理的坐标,获取下一个坐标,如果它们之间的距离大于 X 并且手指还没有松开,那么我们就填补这个空隙。起初,我们认为这个选项可能行不通——线条会有棱角。但是我们的担心是没有根据的,一切都在按预期进行。

关于游戏

游戏玩法并没有声称是独一无二的,但它非常好并且可以吸引用户。你控制一支铅笔,从字面上看是在纸上画画并躲避障碍物——剪刀、忍者之星和黑洞。与此同时,你的铅笔芯快用完了,你需要拿起小铅笔。如果你的铅笔快用完了,你还没有拿起小铅笔,你可以拿起一块镜子。几秒钟后,铅笔芯不会消耗,而是会恢复,但是与此同时,控件会镜像 - 如果您的手指向左移动,则铅笔会向右移动。你也可以捡起一颗心,它会让你撞到障碍一次并保持活力。在不抬起手指的情况下移动铅笔的时间越长,您的连击数就越高,这意味着您会更快地积累分数。 一开始,有... - 4游戏的速度也逐渐增加。唯一缺少的是愤怒的小鸟。最初,我们计划将游戏命名为 Karan Dash(俄语中铅笔的音译是 karandash——哈!明白了吗?),但后来我们改变了主意,选择了 Pencil Dash。我们这样做是因为只有说俄语的观众才能理解这个优雅的双关语。我们几天前发布了这款游戏,现在正在推广它。在这里,团队中也没有人有任何经验。我们从各种文章中获得了有关游戏推广的所有知识。我们在各种网站/论坛上免费发布有关游戏的信息。我们的付费渠道包括在 4pd 上投放广告、通过一位博主投放广告、在 VKontakte 上的公共群组中发布多个帖子以及 AdMob 广告。 顺便说一句,这篇文章也是我们宣传的一部分,所以在网站管理员的许可下,我在这里包含了游戏的链接。您可以在此处的Google Play 上找到该游戏。如果您安装它,我将不胜感激(也许您会喜欢它!),如果您留下评分,我保证会以您的名字命名一个孩子!:) 一开始,有... - 6
评论
  • 受欢迎
你必须先登录才能发表评论
此页面还没有任何评论