遊戲裡的編程

遊戲裡的編程可能是因為我就讀藝術學校, 很多人覺得我計算機領域很厲害. 我很幸運在大學裡認識了各行各界的人, 有的是大公司來進修的,有的是從 別的領域過來的. 其中做遊戲的科系很特別,因為遊戲需要的人太雜, 主要 分成三類, 美術, 設計, 程式. 關於遊戲領域我會在特別寫一篇, 在此篇先不討論. 程式一直都是我們學校的弱點, 我們學校美術總是多於程式, 因此我在程式 方面多下了很多功夫, 也因此愛上了計算機的領域. 因為我非本科生, 所以我並不知道我的見解是否完全正確. 我只知道我的一些 計算機領域的朋友以及老師都十分贊同我的想法. 首先, 計算機是很複雜的東西, 所以就算自己有什麼不懂的地方, 那很正常. 計算機是我認為其中一個最難的科 學之一, 因為其精密程度之高. 更重要的是, 人類學習機器的語言本來就比人類 學習人類的語言要難. 這也是為什麼我時常不在我非本科的朋友面前很少提工作 的事情, 因為通常的反應就是沒反應. 時常剛解釋完一個名詞就是接著解釋另一 個名詞. 畢竟是機器的東西, 所以我也不在提了. 由於我是從遊戲領域那邊起家的, 對於一般的程序員來說, 本質上是有很大的不同的. 我只能說我很幸運能夠從遊戲起家, 光是一個單機遊戲就要學我認為最難的程式 語言C++. 接著學遊戲引擎,引擎又分「作業系統層」,「平台層」,「腳本層」, 「資源管理」,「渲染層」,等等.這些層級就算一天寫8小時代碼一個層級的精通 並實現代碼平均也要幾個月的時間. 這也是為什麼遊戲引擎開發時間總是大概落在最 少3年到4年之間, 而且通常可能還很簡陋. 拿個舉例, 資源管理就需要學編碼/密碼學. 然後再齊集封包, 還不提效能, 安全性, 等等. 接著是線上遊戲, 就需要學Socket. 一般是不會用HTTP的, 因為那太慢. 抱歉了 寫web的大大們, 遊戲基本一定從TCP/UDP開始. 從TCP/UDP開始就會碰到基礎的 blocking IO、non-blocking IO、synchronous IO、asynchronous IO. 接著封包處理, 資料序列化, 安全性, 等等. 學完之後就是資料庫, SQL, MySQL, mongoDB, 等等. 資料庫算是整體較為簡單的, 依照遊戲可能還需要學HTML/CSS/PHP來建立官網辦 帳號, 查資料, 等等. ...

November 12, 2019 · 1 分鐘 · 105 字 · Jen-Chieh Shen

API參考模板

Demo: http://www.jcs-profile.com:3000/Manual/index.html GitHub Repo: https://github.com/jcs090218/API-Reference-Template 因為平時很常寫很多的工具, 最常寫的就是API. 為了解決每次寫一個工具就 必須從頭建立檔案的問題, 決定花時間來寫一個專門給別人閱讀API用的網站. 以下是使用的技術資訊. 前端 Basic HTML/CSS Basic JavaScript and jQuery 後端 Express.js 範例 JCSUnity Scripting Reference JCSEgret Scripting Reference

November 12, 2018 · 1 分鐘 · 27 字 · Jen-Chieh Shen

視差網站

Link: MapleStory Survival Kit 這是我學校第一堂網頁設計課所做的網頁. 因為之前是做遊戲的, 所以想挑戰看看 網頁設計能夠做到什麼地步來做到近乎渲染遊戲的方式. 這個網站有以下幾個亮點, 視差 聲音 轉蛋機 👁️ 視差 我看大多範例的視差效果都是一張圖在後面, 身為一個遊戲工程師不經覺得這 樣的設計有些粗糙. 也想要設計看看CSS能夠做到什麼地步. 很幸運地在自己多 方琢磨之後,了解到CSS的動畫機制. 可以有機會的展示CSS的強大動畫效果. 視 差的動畫效果可以由左上方小小的控制板來操作. 🔊 聲音 這是我第一次使用JavaScript裡面的聲效引擎. 在完全不了解的情況下,我選擇 使用第一個出現在我面前的一個函式庫 ion.sound. 這個函式庫非常簡單且強大, 看一下範例就可以清楚知道要怎麼使用. 🎟️ 轉蛋機 如果你有拜訪我的這個作品網站,你會在最左邊的網站看到三台轉蛋機. 當你用鼠標指著他的時候, 他就會開始掉落物品! 這是一個簡單的展示 使用JavaScript, 以每秒30偵的速度去渲染掉落動畫.

August 14, 2018 · 1 分鐘 · 39 字 · Jen-Chieh Shen

JCSUnity - 儲存機制

這是一個簡易介紹給予展示 JCSUnity 是如何做到遊戲儲存機制. 在Unity Engine裡面, 有三個主要方式做遊戲資料儲存使用C#語言. JCS_BinGameData - 二進制格式 JCS_XMLGameData - XML格式 JCS_JSONGameData - JSON格式

July 3, 2018 · 1 分鐘 · 15 字 · Jen-Chieh Shen

JCSUnity概要

JCSUnity Repo: https://github.com/jcs090218/JCSUnity 前言 這裡要介紹什麼其實真的不好說, 這是我已經開發將近3年的框架. 這個是我在大三的時候開發的框架, 也算是比較完整的框架. 在閱讀此篇之前,讀者最好要先了解框架,工具箱,圖書館,等等類似的東西的差別, 在這裡就不多贅述. 在我寫這個工具的時候, 我已經使用Unity大約兩年的時間. 從中做了不少的遊戲,畢竟課業需求,做遊戲如同家常便飯一樣. 寫程式也已經邁入第三年, 那時候的我才剛學完"資料結構",“演算法”,“設計模式”. 特別是設計模式, 對於遊戲開發是特別有用的. 因為大多軟體架構都 是非常小的, 不然就是已經被前人給包好了. 例如, .NET框架, Visual BASIC/C++/C#, NetBean Graphic, 等等. 但是遊戲不同, 遊戲的架構通常再怎麼包都是非常大且複雜的. 了解底層運作更是十八般武藝… 在這些基礎之上,這個已經是我搭建的第三個框架,前面兩個我已經記不起來了. 我只記得其中一個是用AS3跟Starling框架配合. 對於寫API函式我已經算是有一定程度上的了解, 但是對於遊戲引擎的架構就有點顯得無知了. 在寫這個的時候我已經研究完了基 礎的遊戲引擎結構, 但是依然對於Unity Engine專門設計的API以及操作並不是很了解. 這使得我的工具顯得有點不是非常一致. 但是在我寫這個文章的時候, 這個工具已經大到非常難以管理的地步. 裡面的我自己寫的腳本大約400到500個. 每個腳本都是可以 獨立運行的,所以變化上由想可知是非常多的,同時也帶來了可能不必要的效能. 介紹 JCSUnity是一個可快速搭建自己遊戲成品的高完成度框架. 由於框架的設計符合 Unity引擎遊戲設計師的設計理念, 版本相容度是非常高的, 基本上每次的Unity 版本升級都不會有問題. 這個框架更是完美呈現了框架的用意, 框架能提升開發者 的產能(productivity). 本人原本需要開發15周的時間能壓縮到3周, 因為這個 框架擁有了大多數遊戲都需要的設置, 但是Unity引擎本身並沒有提供的設置. 例 如, 慢慢地切換場景, 切換背景音樂, 銀幕等比例相容, 等等. 這個框架能讓遊戲 開發者高度集中在遊戲核心上的開發, 進而發展更多好玩的遊戲. ...

July 2, 2018 · 2 分鐘 · 226 字 · Jen-Chieh Shen

Emacs vs Vim

實際上,我並不是個Emacs或Vim專家.我只是單純剛好在這兩個編輯器上面都有些了解. 如果你查看我的兩個 Emacs 和 Vim 的repo,那可能是最糟的經驗. 我秉持著一個想法, 那就是編輯器對我只是個工具. 在我對於我的工具不滿意的時候我才會選擇去修改我的工具. 不是很必要的我就不會 特地去強求. 畢竟我不是要再造一個輪子,也沒打算讓Emacs或Vim分個高下. 先說結論,我是Emacs的使用者. 但為什麼我是Emacs使用者不是Vim使用者對我來講是 有一套根據的. 首先我對於開發者的理念以及角度做了一個簡單的對比. 依照我的個人 經驗以及橫跨世界的開發者角度來看,使用Emacs的通常都是開發軟體(Software Engineering)的較多. 則使用Vim的大多是駭客(Hacker)或者從事資訊安全(Cyber Security). 其實這個道理很簡單,相信可能已經很多人都發現了. 身為軟體工程的我 會更喜歡Emacs本身設計師的理念, 他讓了軟體設計師有了強大的韌性以及空間去做最 大幅度上的修改. 因為軟體工程師的工作大多都需要在一個軟體待得很久, 這樣聽起來 是不是對某個東西很熟悉呢? 沒錯, 那就是一個Integrated Development Environment (IDE). 當然一定會有人開始要爭論Vim也做得到, 但是那並不是Vim 本身的設計理念. Vim本身是為了快速地能夠在終端修改文本而產生的編輯器. 他是為了 快速而生的, 所以在建造這個Vim的時候並沒有在修改上有其專門性. 在這方面在Emacs 面前較會略為遜色, 相反的Vim在速度以及需要跨足到其他軟體的行業來講是非常受到 歡迎的,以及近年來改的版本也越來越傾向於Emacs那樣的設計了! 但同時也衍生了一 個問題,如果Vim是為了快速修改文本,再增加每一個插件的同時,也帶來了效能上的消耗. 打開文本的速度會越來越慢. 這樣的衝突實在讓我百思不得其解… 至於Emacs本身設計 的同時就打算在這上面有所顧忌了,所以他一開始就沒打算跟Vim去比速度. 這也是為什麼 大多Vim使用者覺得Emacs太肥,因為Emacs本身的設計就不是為了速度. 他是選擇夾在類 Vim跟大多的IDE中間. 這剛好滿足了軟體工程師討厭的肥大的IDE,以及同時保留了IDE大 多數或者更棒的功能! 但是這麼棒的東西為什麼還是這麼少人用? 原因很簡單, 我個人學Emacs的時候是學 Raw Emacs, 也就是什麼都沒有開始建起來. 我特別能夠感受到Emacs它的獨特性以 及它的不友善性… 它官方的文檔我覺得做的不算好,教學視頻也不是很多, 也沒有 Vim口令那樣的設計巧思. 根本就是一塊石頭. 在這樣的情況下,有誰會想用它? 在 學習曲線這麼陡的道路上,以及大多數的功能還要自己去寫,寫之前還得要去學Emacs 它們搭建的腳本層的語言/語法(Emacs Lisp),這些都是不少的工程以及時間上的花費. 我學到現在第四年了,我依然還沒辦法很精通它. 也沒打算精通了,畢竟平時開發上我 認為比較重要. ...

December 10, 2017 · 1 分鐘 · 87 字 · Jen-Chieh Shen

最好的編輯器

WIP

November 12, 2017 · 1 分鐘 · 1 字 · Jen-Chieh Shen

生產力

WIP

October 24, 2017 · 1 分鐘 · 1 字 · Jen-Chieh Shen

一直以來製作中的框架

WIP

September 27, 2017 · 1 分鐘 · 1 字 · Jen-Chieh Shen

關於我

我一向不是很喜歡寫作以及談論自己的事情. 所以我一直很排斥去寫關於自己的事情, 更何況我誰也不是,既不是名人, 也從沒上過什麼報章雜誌. 這種情況我實在很難想 像誰會特地來看這「關於我」的文章. 至此, 我不打算寫一個太過沉長的自我介紹. 我現齡24歲, 活得不長也不短,但也足夠讓一個人回顧自己過往的經歷. 故事一開始總是悲慘的, 從小我就是個極度悲觀的人, 既容易放棄, 也不懂的堅持. 不知道失敗跟成功的區別, 從小可能有一定的天資, 以為即使不努力也能拿到好的成績。 等再大一點的時候,不知不覺成績已經是倒數了. 在自己的兄弟姊妹面前總是抬不起頭, 裝得一副無所謂的樣子。直到國中,我的人生才有了劇烈的轉變. 上了國中, 我的成績 平平, 在我爸媽的鼓勵下我決定轉往我比較有興趣的發展, 就是體育方面. 國中第一年 我參加了我們國中的網球班,在教練極端嚴厲的指導下, 再加上我天生的身體不算太好, 我依然克服了種種的考驗. 在第一次充分有了自己的專長後, 讓我了解到了「忍耐」、 「不看重」和「自信」. 最後一年, 我回到了普通的班級, 決定挑戰自己一直逃避的事情, 讀書. 當初真的很不容 易, 挑戰自己沒有興趣的東西真的很困難. 直到我在某種機緣之下了解到「人生不是都是 快樂的」和「某種意義上來說, 沒有人是愛讀書的」. 我才正式的開始了自己的挑戰, 挑戰自己不擅長的事物. 很神奇的是, 我的成績也真的爬上來了. 雖然依然不是前幾名, 但卻讓我體悟的人生最重要的事情. 「努力不會背棄你」和「領悟到成功的美好之後, 會讓自己覺得無所不能」, 這時候是我人生的最高潮. 第三件事情, 則是我人生的最低潮. 我住的是寄宿學校, 並不像國中一樣那麼自由. 我遭受了我人生第一次的霸凌. 有可能是過於自信, 也可能是過於追求完美。 盡是一些讓自己感到人生絕望的事情, 感受到了人生的不完美.更讓我學習到了 「謙虛」和「不要太計較」. 到了大學, 我開始小心的與人接觸. 去學習怎麼與人溝通, 怎麼做人更圓融. 對自己 不需過分要求, 只需要取得心中的平衡便可. 使我更加的成熟面對事情, 大學畢業了, 而我的冒險也將繼續. ...

September 2, 2017 · 1 分鐘 · 81 字 · Jen-Chieh Shen