從遊戲開發到應用開發的轉變
從2011年大學畢業到2014年年底,這段時間我的軟體開發生涯是在遊戲圈子裡渡過的,雖然終究並沒有做出什麼名堂來,但是至少也是混到了伺服器主程的位置;遊戲開發的那些日子,大概也是進步最快的日子,回憶起來自己的部落格裡面比較有質量的文章都是那段時間寫的,尤其是面對上線和大併發的時候,對於軟體和程式碼的理解有了不同於剛畢業那會的理解,我想大概也是專案推動成長吧!
時間來到了2014年年底,隨著自己對於遊戲開發的興趣驟減和於策劃方案衝突的急劇加深,慢慢產生了離開這個行業的想法,於是就在那個契機,自己放下了一切切入到了應用的開發!
記得第一個應用是一個手機端的應用,大概是一個類似於微博那樣的應用,當然功能要弱化的多;簡單被帶著入門app端之後,發現伺服器端的邏輯完全無法入手;最後也是在網上抄了一個redis的微博的例子;在這個例子的基礎之上開做起來了。那個應用的資料庫沒有使用mysql,而是直接使用的redis,現在無論如何我也不會這樣了吧。沒有用mysql也主要是因為自己對於mysql的不熟悉,做遊戲的時候對於資料庫的使用處於全部nosql或者簡單mysql的狀態。比如我們只會設計一個玩家表,可能很多人要說玩家不是很多屬性嗎?一個表怎麼夠用,其實我們是把很多玩家的資料全部封裝成json,base64轉換,zip壓縮,已text形式儲存到mysql的表中。這樣幾乎mysql中兩三個表就能儲存遊戲中所有的資料;可是到了應用層則就不一樣了,一個微商城都幾乎使用近一百個表,還要處理個個表之間的關係,試圖等等。
做遊戲伺服器的時候,寫邏輯幾乎不與資料庫打交道,而現在寫應用卻幾乎很難離開資料庫。寫遊戲的時候,比如做一個幫戰系統,進入到幫戰裡面所有的人,都是登入玩家,玩家資料已經全部載入到記憶體中,和他互動或者的其他玩家都是這個場景內的其他的玩家,資料也早已經載入到記憶體中,任何一個打鬥,互動,移動等邏輯處理,都是處理記憶體中資料和邏輯。做應用就不一樣了,應用中使用者之間互動的載體變成了資料庫,而不再是記憶體,如果使用者A想要得到使用者B的行為,那麼使用者B的行為首要要被儲存到資料庫中。這一點是在從遊戲伺服器轉向webapp的過程中最痛苦的也是最難理解的,至少我個人是這個情況。記得自己第一個php小應用,把MySQL的連線做成了全域性變數;以為這樣每個連線都能共享;知道後來發生了mysql連線不夠用的情況。
對於遊戲來講,資料庫只是一個玩家下線暫存玩家資料的地方;也就是說並不是重中之重;而對於應用來講則不一樣了;資料庫除了儲存著應用所有的資料,還可以用來驅動邏輯,比如觸發器,遊標,等等。比如排行使用order等。所以這造就了遊戲程式設計師看到一個業務或者模組,首先想到使用怎麼樣的資料結構。而對於應用程式設計師看到了一個業務和模組首先想到了是如何設計資料庫;我現在看到了很多應用開發者再處理一個邏輯的時候,首先想到的並不是從資料結構上做文章;而是首先改變資料表設計。
在做遊戲開發的時候,是把nosql作為主資料庫設計的,在我開發遊戲的前兩年,都是用mongo作為主要的資料庫;但是到了應用上,nosql還是用來作為一些特定模組的解決方案,或者是為了快取一些常用資料。比如商城系統,對於經常遊覽的商品,我們就把它儲存到redis中,對於首頁,我們也直接將首頁的html+css資料儲存到redis中;但是在應用中把nosql作為主資料庫,遇到複雜的邏輯,比如商品銷量統計或者訂單統計之類的需求,用redis就勉為其難了。
軟體開發是一個行業,可是這個行業內不同應用層之間也似乎像是隔山似的,有著不同的開發原則和準繩;我們從一個應用層到另一個應用層,也應該抱著謙卑的姿態,首先做到融入,再熟悉,然後再想著發揮自己的才能才好!
相關文章
- 從做遊戲到開發VR,FPS之父的“彪悍”人生遊戲VR
- 軟體開發流變史:從瀑布開發到敏捷開發再到DevOps敏捷dev
- 從傳媒到開發,Peter Willington轉身跨界進遊戲的經驗分享遊戲
- Serverless 工程實踐 | Serverless 應用開發觀念的轉變Server
- Supercell開發分享:從創意到最佳遊戲設計遊戲設計
- 作為遊戲開發商,應該怎樣去提升遊戲的變現能力?遊戲開發
- 遊戲開發入門(一)遊戲開發概述遊戲開發
- iOS應用轉讓到其他開發者賬號步驟iOS
- PS5首發遊戲《麻布仔大冒險》從2.5D轉變成3D的開發故事遊戲3D
- 漸凍人馮錦源的“遊戲人生”:從翻譯到開發遊戲,學無止境開發遊戲
- 【轉載】App Inventor 開發BLE應用APP
- NFT遊戲系統開發/遊戲開發技術遊戲開發
- 從react轉職到vue開發的專案準備ReactVue
- 開發者談音效在遊戲中的8種基本應用遊戲
- Python遊戲開發工程師的起步,幾款遊戲開發案例Python遊戲開發工程師
- python專案開發例項-Python專案案例開發從入門到實戰——爬蟲、遊戲Python爬蟲遊戲
- 角色扮演遊戲:從開發到營銷,一路“沉浸”到底遊戲
- epic遊戲怎麼轉到steam epic遊戲怎麼用steam開啟遊戲
- 使用Xamarin開發移動應用示例——數獨遊戲(二)建立遊戲介面遊戲
- 使用Xamarin開發移動應用示例——數獨遊戲(七)新增新遊戲遊戲
- RabbitMQ的開發應用MQ
- 遊戲開發流程遊戲開發
- [譯] 安卓應用和遊戲的無障礙開發介紹安卓遊戲
- 機器學習將在遊戲開發中的6種應用機器學習遊戲開發
- 聚焦遊戲開發速度與成本,穩定引擎基礎助力開發者快速整合應用遊戲開發
- 從VR遊戲開發到綜合遊戲研發商,「Ifgames」將持續擴充內容產品線VR遊戲開發GAM
- 從零到一,用 Electron 開發桌面效率工具
- 敏捷開發中如何從容應對需求變更?敏捷
- 從零到一開發vscode外掛變數翻譯VSCode變數
- 如何讓軟體開發從功能測試轉入應用測試?
- 開發者思考:從超執刀到Loop Hero,下一屆遊歌的變遷路OOP
- AI 聊天應用開發實戰:從構思到上線的全棧開發指南AI全棧
- 從 JavaScript 到 Vue 元件的快速開發JavaScriptVue元件
- Linux開發:快速開發遊戲的9個關鍵!Linux開發遊戲
- Unity遊戲示例來了,用Unity開源遊戲資源做遊戲,遊戲開發不再難!Unity遊戲開發
- 賽博之龍NFT遊戲系統開發應用詳解丨賽博之龍NFT遊戲開發原始碼流程遊戲開發原始碼
- 遊戲開發原理——手遊開發團隊與成本遊戲開發
- HTML5遊戲開發(三):使用webpack構建TypeScript應用HTML遊戲開發WebTypeScript
- 從腦洞到責任,去年銅獎遊戲開發者帶著新遊戲又來了遊戲開發