CodeGym/Java Blog/Toto sisi/一開始,有...
John Squirrels
等級 41
San Francisco

一開始,有...

在 Toto sisi 群組發布
個成員
一開始,有... - 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
留言
  • 受歡迎
你必須登入才能留言
此頁面尚無留言