1. 程式人生 > >被正確使用的輪子才是好輪子——使用Construct2製作遊戲的一點感想

被正確使用的輪子才是好輪子——使用Construct2製作遊戲的一點感想

這裡寫圖片描述

自負

  老師最初佈置這個作業的時候,我是對此不以為然的,因為自己有一定的Canvas基礎,並且曾經制作過魔獸爭霸3的地圖,對於這種物件-事件觸發的機制也還算熟悉,因此,當時的我認為,利用這樣一個引擎,要仿製一個和坦克大戰一樣的遊戲,應該只需要兩個小時。

  然而事實上,這份作業花費了我超過三個下午的時間,由於不瞭解許多功能,導致許多預期的效果只能通過繁瑣的方法實現,而對於內部執行機制的不瞭解更是雪上加霜,大量的冗餘事件堆滿了事件表,不僅未能實現預期的效果,還極大地拖累了作品的執行速度。

  在整個作品的製作過程中,這種可怕的狂妄自大幾乎是致命的,它使得我沒有認真閱讀過Construct2的文件便開始工作,這使得我的製作一度陷入巨大的困境。

困境

  最初我的設想是:由於坦克、磚塊、基地是正方形的,那麼就可以將地圖表示為一個m*n的二維陣列,陣列的位置對應物件在地圖上的對應位置,陣列的內容為該位置的物件型別(磚塊、坦克、森林、基地),然後再根據陣列與地圖的對應關係,將單位渲染到地圖上。並依據這個陣列中的資訊,進行坦克的移動,擊毀等判定。

  這個想法看上去有點像Canvas中的繪製:先決定好顏色、線段等資訊,再進行填充或者繪製。看上去這似乎有利於我進行各種判定,但事實上這種想法卻略顯多餘:許多用Construct2製作遊戲的人都知道,地圖資訊可以通過位置選擇、碰撞判定、視野判定等多種方法獲得。更何況,坦克在移動過程中的位置不可能總是恰好對應到陣列上,在這種情況下,陣列的很多計算無法正常進行。

  但這並不是主要的麻煩,更主要的麻煩是:利用陣列進行的多種計算忽略了引擎本身就具有的功能,導致需要大量的事件,但如果不採用這些方法,陣列所帶來的計算上的直觀性的優勢就會蕩然無存(事實上,如果採用了引擎自帶的功能,在陣列上進行的大多數計算是沒有任何必要的)。

  但大量的事件在很多情況下會帶來諸多麻煩:一是和龐大的程式碼一樣,大量的事件使得遊戲本身極難易維護;二是老師推薦使用Construct2社群版,並且我也不希望為一份作業付費,而社群版只允許使用100個事件,這是我後來放棄地圖陣列這一想法的最主要原因。

重構

  在浪費了很長一段時間在大量事件中的掙扎過後,我找到了Scirr a上的手冊,在進行粗略的閱讀過後,我又去看了幾份自帶的樣例,我選擇放棄最初的想法,使用了另一個方案:

  • 首先,在判定碰撞方面,給磚塊和坦克新增Solid行為,避免一些了莫名其妙的動畫重疊。
  • 在地圖生成上,放棄使用並查集判斷隨機生成的地圖的連通性,轉而使用PathFinding行為進行計算,從而進行判定。
  • ……

  這個方案被驗證為是行之有效的,因為它將我的事件表簡化到了只有70個左右的事件,並且在實現效果上不亞於原本的上百個事件。

反思

  這次的作業讓我重新反思了之前的許多觀點:比如使用輪子一定比沒使用輪子來得好,或者是軟體的說明書和樣例不如直接Google方便等,這些觀點曾經影響了我很長一段時間,而我竟對此帶來的不便渾然不覺。

  這次的作業給我帶來的觸動非常深刻,它讓我重新反思了過去的作為,並總結出了以下的經驗:

  • 在使用一種工具之前,要先瀏覽該工具的文件和案例,避免重複造輪子。
  • 在嘗試使用一種功能之前,要先檢視該功能的詳細說明,不可輕信搜尋引擎帶來的結果,這極有可能是你陷入某種困境。
  • 不要總是使用以往的觀點看待某樣工具,每個工具都有其設計者的思想包含在其中,先理解這些思想,再進行設計,會為你帶來眾多設計上的便利,反之,則會使你的構想的實現輯為複雜。

相關推薦

正確使用的輪子輪子——使用Construct2製作遊戲一點感想

自負   老師最初佈置這個作業的時候,我是對此不以為然的,因為自己有一定的Canvas基礎,並且曾經制作過魔獸爭霸3的地圖,對於這種物件-事件觸發的機制也還算熟悉,因此,當時的我認為,利用這樣一個引擎,要仿製一個和坦克大戰一樣的遊戲,應該只需要兩個小時

每日站會怎麼開?——你的站會姿勢正確嗎?

今天我們講講如何利用站會,更好地實現促進團隊有效協作和聚焦,促進價值順暢流動和交付,同時及時的暴露問題和風險。 注:精益看板方法視訊教程請前往:https://yq.aliyun.com/live/717 站會的目標 說到站會,人們最熟悉的Scrum站會,典型的形式是團隊圍成一圈,依次回

推薦輪子【Echarts資料視覺化】圖表外掛 相容ie6、7、8

前幾天在網上找一些圖表外掛,無意間發現的一個外掛,開源來自百度商業前端資料視覺化團隊。簡單的貼一些他的簡介:官網:http://echarts.baidu.com/echarts2/index.html介紹ppt:http://echarts.baidu.com/echart

PDF格式怎麼編輯?掌握這個方法可以很省事

很多朋友經常惆悵PDF檔案要怎麼編輯。很多學術類文章都是通過轉換成PDF檔案之後才上載到各個平臺。一般的電腦只支援通過瀏覽器檢視PDF檔案,無法進行編輯。那麼PDF檔案要如何編輯呢?只要藉助PDF編輯器就沒問題了。PDF編輯器是PDF文件處理工具,除了支援PDF檔案的閱讀、還可以原內容修改、插入多媒

Construct2遊戲製作體驗及新手指南

Construct2小遊戲製作體驗及新手指南 遊戲展示 遊戲策劃 遊戲設計&製作 下載安裝遊戲 建立專案 佈局、背景及人物圖層等的建立 人物屬性行為等 建立事件

健身教練入門的基礎知識你都知道嗎?怎麽學習

html follow 知識 趣味 計劃 市場 解剖 實力 指導 眾所周知,無論在什麽行業,都沒有不勞而獲的天才,必須遵循我們俗稱的“一萬個小時定律”,即在一個行業中堅持工作一萬個小時,才能可能成為該方面的專家。 對於許多有意願從事健身行業的人士來說,成為專家尚且言之過早,

考健身教練的要求有哪些?應該怎麼做

隨著經濟的發展,今時今日,人們越來越注重自身的健康狀況與外形美觀。所以,健身這門職業,也越發成為大家關注的焦點。 對於想要從事健身教練的人群來說,通往職業道路上的障礙,除了需要學習本職業的技能外,相關的證書也是必不可少的。其中,健身教練資格證又是重中之重。 既然是這樣,考取健身教練

如何用construct2製作一個遊戲

首先,要前往官網下載construct2。 然後就是在電腦上安裝construct2。 下面就要開始製作遊戲了。 第一次先嚐試一下官網教程上給出的一個射擊類小遊戲。 首先要新建一個新的空專案。 然後要在layout上新增背景以及各種物件。 例如這些子彈、爆炸、

陽臺防水如何處理_陽臺防水應該怎麼做

陽臺作為室內設計中能夠經常接觸到室外的場所,不僅是因為其獨特的向光性,在防水性的護理上也應該要求使用者進行深層次的補漏操作,同時對於陽臺來說如何進行防水性的操作以及補漏方法的選擇都是要具有合理的的策略和規劃的,當我們把握好這幾方面,那麼陽臺防水處理的困擾也就迎刃而解了。

快東員天然向ffEkW行易

搗裳幻XDD炒紋靡吮賈痴C2B3氐埠磐倮牌肚毒壯倮氐 聳率棧AII憂沽08C炒U故W沃5b烈瞎胖澈瞬凶永脊迅科 忍壩曝FMY率隙治ARN甘氐奶襯交0園5宦刃奄媚亂倮啃奶到瀾乃 值俏未UID襯讕e7skBEh9X購OY啡較啃脹未巖只壇沽品崗 餡未疽HJA犯狀1甘Z0登庸8Gr醇

電子相簿製作軟體哪個?快速製作婚禮請柬、旅遊相簿等,超簡單

好多小夥伴都在問電子相簿製作軟體哪個好,實在是因為現在朋友圈、抖音、各大視訊網站上都特別流行這種把照片做成視訊的效果,製作婚禮請柬、旅遊相簿、微信電子書等等主題都是可以的。 那今天就教大家用數碼大師製作一個電子相簿,任何朋友都能快速上手,而且短時間內就能做出精美、火爆的效果。 先看看用

多方位全面解析:如何正確地寫一個介面

寫介面可以說是每位移動應用開發者的基本功,也是一位合格移動應用開發者繞不過去的坎。但就如不是每一位開發者都能夠成為合格的開發者一樣,本人在不同的團隊中發現,甚少有人能夠編寫出合格的UI程式碼;而非常奇怪的是,在很多的開發者論壇上看到我們移動開發者更多關注於某個控制元件或者是動畫

Qt Creator提示"Qt沒有正確安裝,請執行make install"的解決辦法

筆者最近使用Qt在開發一些小程式,覺得這個框架設計確實很好,使用了訊號和槽解決了元件之間的通訊問題,可以說是基於C++語言上一個非常大的創新,大大提高了開發人員的編碼效率,也使整個C++語言更加抽象。筆者很喜歡C++語言的簡單、樸實、高效,不像.NET那樣,即使是一個很小的程式也需要裝個上百兆的執行庫,對於很

Ubuntu啟用root賬戶後,登入root賬戶時報錯:讀取/root/.profile時發現錯誤:mesg:ttyname failed:對裝置不適當的ioctl操作 作為結果,會話不會正確配置

將/root/.profile檔案中的mesg n 替換成tty -s && mesg n 重啟 方法二: 將非root賬戶目錄中的.profile複製到/root/: 例如:cp /home/username/.profile /root/ 重啟

伺服器老攻擊!一個用到爆炸的IP埠掃描工具類!從不怕攻破!

去年伺服器老是被攻擊,每次上線之後,上線的人急急忙忙下班,忘記關閉一些埠。導致有次伺服器被攻破。損失嚴重。注意的是 不同的電腦不同的CPU 每次最多建立的執行緒是不一樣的,可能建立執行緒過多,會報錯,所以如果報錯,自己修改下,每次掃描的個數,再剪成更小的段就可以了,或者再把s

在vue中的js部分匯入圖片後通過webpack無法正確打包的問題

具體描述 在vue元件的js部分匯入圖片要使用require的形式匯入,否則webpack不能正常匯入,因為其路徑不符合其解析規範 原因 在引入圖片的時候的地址資料的時候需要使用requ

“Qt沒有正確安裝, 請執行make install” “無效的Qt版本”的解決方法

具體方法,在qmake.exe同一資料夾下,建立一個qt.conf檔案(ANSI格式)內容為[paths]Prefix = D:/Qt/5.0.1-rel-static(路徑根據實際情況設)注意,編碼一定要ANSI格式,不能用UTF-8。路徑分隔符要"/"或"\\"

Construct2 製作遊戲

用Construct2製作簡單小遊戲 射擊小遊戲 懷著激動與惶恐,開始試著用Construct2製作簡單射擊小遊戲。 第一步 當然是先下載並安裝Constru2啦。(蠢蠢的我困在這裡好長時間,因為很慢很懶現在才弄好) 第二步 在l

construct2製作童年經典的彈珠遊戲粗略說明

想製作一款遊戲,首先我們要找到素材,或者大觸可以自己畫。 解決了素材問題,我們就可以開始著手製作(苦逼的我,手畫到一半就放棄了) 首先,讓我們新建一個檔。設定好圖層數,大小之類的。 然後我們就可以開始往game層瘋狂新增素材(自畫↓)了

construct2製作打怪遊戲-第二次嘗試

construct2適合新手小菜鳥(比如我)進行遊戲製作,上一個遊戲Kill Bill就是由它製成。 這次我要再做一個同類型的遊戲,會在上次的基礎上完善一些細節。 製作步驟依舊是如下幾步。 尋找素材,新建工程並插入物件對遊戲物件新增行為構建事件以完成對遊戲規則的設定完善細節 尋找素材,新建工程並插入