用游戏盘古-GM 打造专业游戏 教程版本：6

用遊戲盤古-GameMaker 打造專業遊戲 教程版本：6.0版（2004-11-12）Edit by liver

（教程中的GM均指GameMaker）

入門篇

目錄

第一章 遊戲夢想從裏開始

第二章 安裝超強利器Gamemaker

第三章 GM最初印象

第四章 看一個例子吧

第五章 用戶介面初探

5.1檔功能表 5.2編輯功能表 5.3添加功能表 5.4視窗功能表 5.5幫助功能表 5.6資源流覽欄

第六章 定義精靈圖像（sprite）

第七章 音效以及背景音樂（sound&music）

第八章 背景圖像（background）

第九章 定義物體物體（object）

第十章 解析“事件”（event）

第十一章 動作（action）集合

11.1物體移動（move） 11.2主要動作集合一 11.3主要動作集合二 11.4控制動作集合 11.5繪製動作集 11.6代碼動作集（draw） 11.7使用變數和運算式

第十二章 場景（room）的設計

12.1增加實體物體（instance） 12.2設定場景 12.3設定場景背景

第十二章 （二）：十年磨一劍 發佈你的遊戲

高級篇

第十三章 精靈圖像sprite高級使用

13.1編輯/修改精靈圖像 13.2strip圖像集合的使用 13.3編輯子圖像13.4 高級圖像設定

第十四章 音效&音樂探析

第十五章 背景高級教程

第十六章 物體物體高級使用

16.1深度 16.2持續存在的物體物體 16.3父物體物體 16.4遮罩的使用mask

第十六章（二） ：動作集合高級使用篇

16．2．1移動 16．2．2 主要集合 16．2．3控制集合 16．2．4繪製集合 16．2．5粒子動作

16．2．6其他動作集合extra

第十七章 場景高級使用

17.1高級設定 17.2增加圖像元件tiles 17.3鏡頭效果views

第十七章（二）字體font

第十八章 路徑path

18.1路徑的設定 18.2把路徑賦予物體 18.3路徑事件

第十九章 時間軸timelines

第十九章（二）腳本

第二十章 完成遊戲

一. 製作遊戲幫助

二. 遊戲選項設定（1.圖形選項 2.解析度 3.其他各選項 4.進度條選項 5.常量 6.獨立運行遊戲中的檔包含 7.糾錯設置 8.設置軟體資訊）

三. 怎樣使你的遊戲運行速度更快

第二十一章 GML遊戲設計語言（高級用戶）

GM完全中文開發教程

第一章　遊戲夢想從裏開始 ——做自己的遊戲

遊戲給了我們第二生命，在遊戲裏我們可是上天入地，飛簷走壁，無所不能。在這些絢麗的世界後面，隱藏著的可能是數個程式師日以兼程的工作加上美工師的精心設計。所以，一個專業的遊戲製作往往讓我們一些遊戲發燒友們望而卻步，特別是談到複雜的令人眼花的代碼，更令一些想自己設計遊戲的初學者/愛好者望而止步。

Gamemaker應運而生。

它極易上手的平民化操作，面向物體的可視設計，高自由度的遊戲語言編輯/控制元件體系，功能強大豐富的函數庫以及不斷更新的大量外置插件讓GM遊戲設計軟體成為當今遊戲製作界的新一代亮點。獨有的運動控制/路徑控制/動畫/字體控制/自動尋徑/眩目的粒子系統/加上最新的3D功能引擎以及全面的底層網路開發和自由語言控制性元件使得GM已經成為當今世界最受歡迎專業遊戲製作工具之一，國外眾多大學遊戲設計專業都以GM作為遊戲設計教材軟體。GM前途無量。

在中國，今天，gamemaker也正以其獨特的魅力迅速俘獲眾多遊戲製作初學者及發燒友的心，國內越來越多的年輕人加入到了這個開發行列中來，Gamemaker無疑為那些想開發專業遊戲而苦於缺乏專業編程知識的各類人士提供了最佳的專業解決方案，不論你是剛跨入電腦門檻的初學菜鳥，還是已經有相當功底的專業同行，我們都以最大的熱情歡迎你們加入到gamemaker這個遊戲製作大家庭中來，讓我們的遊戲製作大眾化吧！我們的口號是：我們的時間不用來學寫代碼的，是用來創作遊戲的！

為了讓大家都可以全面精通個軟體，我們編譯了這套完全教程。

讓我們向遊戲製作向專業化邁步，讓更多的朋友遊戲製作夢想能夠實現！

讓我們共同努力！！

第二章 安裝

你可能已經安裝了GM，但如果還沒有的話，就按照下面的提示進行吧。首先當然是運行gmaker.exe，然後按照螢幕上的指示，選擇你的安裝目錄，儘量把它放在默認的目錄下。當安裝完成時，在你電腦的開始腳本功能表裏將會發現一個新的腳本組。你可以在裏面運行gm以及讀一些相關幫助的文檔。

當你第一次使用的時候軟體會彈出一個資訊框問你是想進入簡易模式還是高級用戶模式，如果你以前並沒有使用過GM，建議你使用簡易模式，即選擇NO不使用高級模式。在簡易模式裏面有些選項沒有完全顯示出來，只有一些常用的初級功可以選項。如果你想進入高級模式的話，你可以從軟體功能表中的檔選項中選擇進入高級模式。

在你安裝GM的目錄裏面，你可以發現以下檔和檔夾：

examples：包含了一些遊戲例子

lib：包含了很多動作集合，如果你想要添加額外的動作你可以拷貝一些動作庫到個目錄裏面，下次GM運行的時候會讀出相應的動作集合。

sprites：包含了一些簡易的圖形資源。你可以從其他的網站得到更多的資源。在GM中國中，你可以找到豐富的各類資源及其相關連接。

background，sound：同樣的放置背景和聲音的資源檔案夾

GameMaker需要奔騰以上的機器，裝有win98/NT/2000/Me/XP等系統才可以運行。顯示器最少可以支援800X600-16位元色以上的解析度。同時需要你的電腦上安裝了DIRECTX。當製作和測試遊戲的時候，所要佔用的記憶體相對來說是比較大的（至少32M或者更多）。當運行已經製作好的遊戲時，所用的記憶體則會大大減少，當然，得看你製作怎樣的遊戲。

第3章 初識GAMEMAKER

在你開始沉浸于使用GM開發之前你最好可以先感受一下GM，找找感覺。使用GM製作的遊戲都是放在一個平面房間room（或說是一個舞臺上）的，房間不是我們常識中的房間，它是一個容器，也就相當於是一個舞臺或者說是場景。在個平面舞臺上你可以放置各種各樣的事先在腳本中定制好遊戲物件，例如背景，前景，遊戲人物，各種道具等。遊戲運行時各種物體就在裏面活動。下面我們就先來瞭解一下有哪些遊戲物體可以放置在房間中。

首先，大多數的遊戲物件必須要有用來表示它們的圖片，比如人物你就要有一張或者一系列的圖片來顯示它的靜止或者動作，些導入或者自製的圖片我們稱它為精靈sprite 。一個精靈通常是一張圖片或者一系列圖片用來製作為動畫。所以它包括靜止的單幀圖片以及各種表單動畫檔。在遊戲中一個物體的精靈圖片是可以更改的，比如當一個魔法把一個人物變成動物時，人物的精靈圖片就變化了，些都可以通過系統方便的調節。你可以使用GM自帶的編輯器製作簡單的精靈或者用其他的軟體製作再導入到GM中。例如GIF動畫檔。

物體身上會有東西發生，些發生的東西稱為事件events，物件可以激發相應的動作當某種事件發生時。一個遊戲物件可以有很多很多的事件也可以有很多很多的動作與事件相對應。比如鍵盤事件，單擊方向向上鍵時是一個事件，於是遊戲人物Y座標減掉1，可以說是一個對應事件的動作。當物體在房間裏被建立時，它就會有一個建立事件〈Creation〉。再舉個例子，當一個球物體剛剛建立時你為它賦予一個運動事件它便一開始就動起來。當兩個物體碰撞時你可以設置一個碰撞事件，樣的話你就可以讓球停下來或者是向相反的方向運動，或者是碰撞到時播放一個聲音，當然你首先要導入一個聲音並設置好才可以使用。

當玩家單擊鍵盤上一個鍵時邊產生了鍵盤事件<keyboard>，物體便可以產生相應的事件，比如說按指定的方向運動，希望通過上面的闡述可以使你明白：對於每一個物體你可以為事件指定很多不同的動作，用種方式為你的遊戲物體定義各種各種樣的動作行為。

一但你定義好遊戲物體後，就下來你就應該設置用來展示物體的房間了。每個房間可以用來製作成為不同的關卡或者是一個遊戲中的不同場景。同樣的GM為房間與房間之間的轉換定義了一系列動作集，用來控制場景與場景之間轉換效果，就象電影畫面裏的畫面轉換特效。一般說來一個房間最先要有個背景，即遊戲背景圖，背景可是是單一的一種顏色或者是一張製作好的背景圖片，設置完成後你把它放在房間裏，然後再把前面設置好的遊戲物體放在房間裏，系統默認會把物體放在背景之上。上面就是製作一個遊戲的大概流程，當你完成以上步驟時，你就可以準備運行遊戲了，第一個房間將會首先顯示出來，所有你放在房間裏的物體將會按照自己的方式去運動因為你在它們的建立事件中定義了各種動作，有的物體將會開始對其他物體產生影響比如說定義了碰撞事件的物體碰到了其他物體，同時，如果定義了滑鼠鍵盤事件它們便會對你的滑鼠鍵盤動作產生相應動作。

小結一下，剛剛所述的幾個遊戲物件在製作中起到決定性的作用，它們分別是：

物體：objects：遊戲中定義有各種事件動作的實體，它們是遊戲的主要表現部分

房間：rooms：放置物體讓它們活動的地方，可以理解為不同的場景

精靈：sprites：用來展示物體的圖片，它只是圖片，無任何屬性行為

聲音：sounds：用在一個遊戲中的背景音樂或者音效。

背景：backgounds：為房間定義背景的圖片。

事實上還有其他很多的各種類型的資源比如說：路徑、腳本、資料檔案、時間條等，它們在更複雜的遊戲中起到了很大的作用。些只有在你的GM運行在高級模式下才可以看得到。如果你覺得有很多細節沒有看懂，沒有關係，在後面的章節中，我們將分門別類的對每一個資源設置項目進行詳細的講解。一節我們只希望可以讓你對GM的運行體系有個大致的瞭解，樣一來，接下去講將會順利的多.下一節中，我們將會以一個實例的講解來讓你對GM有更進一步的認識。

第四章 一個例子

第二節.讓我們來看一個例子吧

學習的首先讓我們看一個簡單例子，我們假設你運行在GM的簡單模式下，第一個步我們先在腦海裏大概的勾畫一下我們要製作的遊戲是什麼樣子的（你最好先做一步工作，當你打算開發大型遊戲時，你就不是簡單的在腦海裏勾畫了，你必須有你的遊戲開發進程表，以及各種有條理的書面規劃，樣可以為你在以後的開發中節省很多時間）。我們現在的個例子時很簡單的：有一個球在幾面牆之間彈跳，玩家可以點擊球，每一次點到會得一分。

那麼首先我們需要兩中不同的遊戲物體：球和牆。於是我們需要兩種精靈圖片來表示兩種物體。最後，我們會聽到一些聲音當我們點球成功時。個簡單的遊戲我們只要為它設置一個房間就可以了。不妨讓我們自己動手來做做吧，在做的過程種如果你碰到什麼地方不會的話可以調出例子來看看。（ball.gmd）

好了開始動手吧，首先我們製作好精靈圖片，從添加（add）功能表功能表裏我們選擇添加精靈（add sprite，你也可以在快捷列裏麵點添加精靈的按鈕），你可以看到一個表單打開了，在名稱（name）選項裏我們輸入“wall”，選擇載入精靈（load sprite）按鈕並選擇一個類似牆的一個小圖片，樣我們就得到了一個牆的精靈圖片，你可以關閉表單了。同樣的方法為球也建立一個精靈圖片。

下面我們添加聲音，從添加功能表裏面選擇添加聲音（add sound），另一個表單將會打開，給聲音取一個容易識別的名字並選擇載入聲音，載入一個聲音資源並試試是否是你想要的效果，如果可以的話，選擇好並關閉表單。

下一步是建立好兩個帶事件的物體，首先讓我們來看看牆物體。再次從添加功能表中選擇添加物體，一個比前面的功能表看起來都複雜一點的功能表將會打開。左邊我們看到是物體一些大概的相關資訊。我們給物體取一個貼切的名字並且從sprite下拉功能表中選擇一個正確的精靈圖片。因為牆是一個固體所以我們在固體（solid）選擇框打上溝。現在所有的就緒了。再次我們我們建立一個新物體，給它取名為球，並且給它一個球的精靈圖片。因為球是運動的所以我們就不要鉤選固體框了，一會我們還要給它施加行為動作。在中間你可以看到一個還沒有添加任何事件的空列表欄，在欄下面是一個名為add event的按鈕，單擊它我們會看到所有的事件都列了出來。選擇物體建立事件（creaion event），你會看到它被添加到了事件列表中。在最右邊你可以看到所有可以用的動作命令，它們已經被分好了組。從運動（move）組裏面我們選擇一個8個紅箭頭圖示的動作拖動到動作欄中，個動作將讓物體朝一個特定的方向運動。一但你完成拖動後一個對話方塊將會顯示出來，在裏面你可以指定物體運動的方向。選擇所有的箭頭以便選擇一個隨機的運動方向。你可以指定速度為8。好，現在關閉對話方塊。現在球從建立開始就運動的事件已經設置好了。下一步我們將看看如果球碰到牆後會怎麼樣，再次按添加事件，在球的事件列表裏選擇碰撞事件（collision）並且在下拉功能表裏面選擇牆物體（和牆相撞）。在個事件裏面我們將要添加一個反彈運動動作。（在動作按鈕上你只要放滑鼠在上面幾秒鐘會有動作功可以說明）最後我們需要定義當用戶在球物體上單擊滑鼠左鍵會有什麼行為發生。添加滑鼠事件並且從下拉功能表中選擇左鍵事件。為個事件我們添加一些新動作：一個用來播放聲音，另外一個用來更改分數值，兩個動作分別可以在main組和score組中找到。還有另外兩個動作是用來給球一個新的隨機位置並且朝一個新的方向運動，用同樣的方法添加好。在聲音動作裏面我們選擇好正確的聲音，在分數動作裏面，我們輸入1並且在relative選項前點鉤，意思是在當前的分數值上加一。

現在我們的物體就準備好了，我們還要做的是設置房間，也即場景。為遊戲添加一個房間，再次選添加功能表，在右邊你可以看到空空的房間還沒有放置任何物體和背景。左邊你可以看到一些TAB功能表選項。一個用來設置背景，一個設置房間的大致屬性，象長寬之類的，還有一個功能表你可以用來開始往房間裏面添加定義好的物體，在底部你可以從從下拉功能表裏選擇物體。通過點擊房間的指定位置你可以將物體放置在房間的指定位置。你可以對物體點右鍵來刪除房間的物體。用牆物體建立一個美觀的方形牆壁，最後把一兩個球物體放置在房間的牆壁圍好的空間裏面，我們的遊戲到此全部準備完畢。

現在是我們將要測試的時候了，單擊run按鈕，看看會有什麼發生。如果在球剛開始運動設置上沒有發生錯誤，那麼你試著點擊它看是否動作無誤。你可以停止遊戲通過單擊ESC鍵。同時你也可以為個小小的例子做更多的變化，比如你學了粒子效果，你可以為球添加運動的軌跡效果，並且當兩球碰撞時產生火星等。

恭喜你，你已經用GM製作好了你的第一個遊戲。好了接下來，就讓我們更深入的到每一個環節去學習吧。

第5章 熟悉軟體操作介面

當你開始製作遊戲GM會顯示出下面的表單(如下圖)：

在左邊你看到不同的資源物體欄， 從上而下分別是：精靈圖像、聲音、背景、路徑、腳本、物體物體、房間/場景和遊戲幫助檔設置、遊戲選項設置等。

5.1檔菜單

在檔功能表中你可以找到常用的命令如打開和儲存遊戲檔，還有一些其他的功能表：·

·New

新建遊戲

選擇玄想，開始製作一個新遊戲，此時若當前有遊戲檔在正在製作，你會被問及是否要儲存當前檔。在工具列上也有一相對應的按鍵(New)。

· Open。

·打開遊戲文件。

打開一遊戲檔，gamemaker6的默認遊戲檔是是*.gm6。同樣地在工具列中也可找到Open圖示，你也可以由滑鼠拖動檔到軟體視窗來打開一個遊戲檔。

· Save。

·保存。

用當前的檔案名儲存當前遊戲製作檔。如果之前沒有指定檔案名，電腦會要求你輸入要一個新檔案名。當遊戲檔被更改之後，你才可以使用個功能表選項。同樣在工具列上也有一相對應的按鍵圖示(Save)。

· Save As 。

·另存為。

用另一不同的檔案名保存遊戲檔，系統要求輸入一個新檔案名。

· Create stand-alone。

·創建獨立運行的EXE檔，為你的遊戲創建一個獨立的遊戲運行檔，因此你可以發佈你的遊戲。

Advance mode

高級軟體介面模式，點擊此選項可以切換普通/高級軟體操作介面。

· Merge Game。

合併遊戲。使用個功可以你可以把兩個不同的遊戲檔的所有資源合併到一個遊戲，實現分塊/分人開發模式

· Import scripts。

·導入腳本。

在後面章中你將獲得更多關於遊戲傳送的資訊，用於從文本/腳本檔引進有用的小代碼。

· Export scripts。

輸出小腳本。

用於把你的小腳本儲存在一檔中，以被其他的人使用。在後面章節中將更詳細地討論。

Preferences。

設置個人偏好的軟體操作方式。

在這裏你可以設定你個人偏好的操作方式。

o Show recently edited games in the file menu。

在檔功能表中顯示最近編輯的遊戲檔，若勾選，則在檔功能表中會顯示最近編輯的四個檔。

o Use compression when saving games。

o 當保存遊戲時使用壓縮方式。

若勾選，則將壓縮遊戲檔中的圖像。將大量減低遊戲檔大小，但是也將稍微增加讀取和存檔時間。

o Keep backup copies of files。

o 保持遊戲檔的備份。

若勾選，則將遊戲腳本儲存一個備份，此備份的副檔名是.gb1。將副檔名改成.gm6，就可再次打開使用。

o Hide the designer and wait while the game is running。

o 當遊戲執行時隱藏設計視窗並等待其結束。

若勾選，則當你執行遊戲，設計視窗將隱藏直到遊戲測試結束。

o Run games in secure mode。

o 在安全模式下執行遊戲。

若勾選，凡在你的電腦上用GM設計的遊戲不允許執行外部腳本，或在遊戲目錄外更改或刪除檔(保護電腦免於被植入特洛伊(木馬)腳本)。但勾選個這個有可能使某些遊戲不能正常運行。

Sprite form

Show the origin and bounding box in the sprite image

在編輯精靈圖像時是否顯示精靈圖像的原點與碰撞框

o In object properties，show hints for actions。

o 在物體屬性中，顯示動作提示資訊。

若勾選，則當你把滑鼠游標停留在object properties表單上的動作圖示上時，會顯示動作描述。

o In room form， when closing，remove instances outside the room。

o 在房間/場景設計中中，移除放在場景範圍外的物體實例（instance）。

若勾選，則當場景外有物體實例或元件時，系統會提示你並讓你刪除。

o Scripts and code。

o 小腳本和代碼，後面有詳細介紹。

o Image editor。

o 選擇內部/外部圖形編輯器：GM預設使用一內置的編輯器來編輯圖像。假如你想使用更好的圖像編輯腳本，可在此指定。

o Recent Files。

·最近的檔：除非不點選，否則最近編輯的四個遊戲檔會顯示出來，使用滑鼠點擊就可以開啟功可以。

o Exit。

·退出：顧名思義，退出軟體，返回到windows。

假如你有更改過當前的的遊戲檔，系統會提示是否要儲存檔。

5.2 Edit menu

5.2編輯

編輯功能表包含一些與當前選擇的資源(物體物體，精靈圖像，聲音，等等)相關的命令，或資源夾相關的命令。

按資源的類型而定資源的可用性。

· Insert resource。

·插入資源：在當前選擇的資源類型中插入一新實例，實例可在之前的資源中選擇(假如你在彈出對話方塊中選擇一組資源，則資源會被增加在資源夾中)。將打開一個表單讓你可以夠更改資源的屬性，下面的章節中將詳細地探討。

· Duplicate。

·副本：複製資源作為一個副本。

· Insert group。

·插入群：資源可以被放在資源夾中以便整理使用，當你製作大型的遊戲時，這樣做非常有用。例如，你可以在一資源夾中放入與特定物體相關的全部聲音，或你可以把特定的關卡中出現的所有物體放在一個制定資源夾。在現有選擇的資源類型中創建一個新的資源夾，系統會要求你輸入一個資源夾名稱，資源夾中又可再創立子資源夾。你可以直接將資源拖放到資源夾中

· Delete。

·刪除：刪除當前選擇的資源(或資源夾資源)。要小心，刪除了不可以復原。

· Rename。

·重新命名：給予資源一個新的名稱。從資源的屬性表單中也可以執行此功能。

· Properties。

屬性：使用命令來編輯資源的屬性。你可以直接在某資源上雙擊滑鼠左鍵來編輯某資源的屬性。

· Show Object Information。

·顯示物體資訊：使用命令你可以獲得在遊戲中這個物體的全部操作及命令和腳本，你也可以通過在一資源或資源夾上按滑鼠右鍵，彈出功能表來實現此功可以。

5.3增加菜單

在功能表中你可以為每一不同類型增加一新的資源，注意每種增加功能表在工具列上和鍵盤快捷方式上皆有一對應的功可以圖示。

5.4視窗功能表

在功能表你可找到一些管理表單的常用命令：

·平鋪：平鋪全部的視窗，這樣每個視窗都部份可見。

· Arrange Icons。

·整理圖示：整理所有的帶圖示表示的視窗。

· Close All。

·關閉全部：關閉所有的屬性視窗，詢問要不要儲存已作的更改。

Contents。

5.5幫助功能表

裏你可找到一些選項來幫助你：

·內容：打開幫助文件。

· How to use help。

·如何使用幫助檔。

· Web site。

·網路：連接到相關的的網頁，在那裏你可以找到GM各類資訊資源。

歡迎訪問：www.gmchina.net

· About Game Maker。

關於GM：提供關於此軟體版本的一些簡短介紹。

5.6資源流覽窗

軟體介面的左邊你可找到資源流覽窗。在裏你將看到你遊戲中全部資源的樹狀結構。假如一個項目之前有一個+號，你可以點選此記號來看它目錄顯的資源。

再點選-記號，些內部資源又會隱藏。滑鼠雙擊編輯資源的屬性。滑鼠右鍵進入編輯功能表(Edit menu)同樣可以編輯屬性。你可以更改資源排列順序，方法為滑鼠點選拖放。但是必須同一種類，你不可以把聲音放在圖像資源裏。

第6章 定義精靈圖像

精靈圖像是在遊戲中全部物體的圖形表示。一精靈圖像可以是一個單獨的圖像，也可以是一組一個接一個播放的動畫，例如，下面四個圖像形成一個朝右的張嘴的動畫角色。

專業遊戲製作組製作遊戲時會讓美工設計好一套各種角色圖形。一般的愛好者可以自己動手，也可以到網路上通過其他途徑尋找現有圖形資源來製作遊戲。打開精靈圖像屬性表單，在上方你可以指定精靈圖像的名稱，全部精靈圖像(和其他全部的資源)都要有一名稱。你最好給予每個精靈圖像一個描述性的名稱，並確定所有資源有不同名稱。即使不是嚴格地需要遵守，但建議你在精靈圖像名稱上只使用文字、數位和底線符號(_) 命名(任一其他的資源也一樣)並以一英文字開始，特別是不要使用空白字元，一旦你開始使用小腳本後將成為非常重要的規則。

要載入一精靈圖像，點選載入精靈圖像(Load Sprite)按鍵。對話方塊將打開，你可以指定精靈圖像。GM可以載入許多不同的圖形檔，當你載入一動畫gif，不同的幀組成精靈圖像(注意被壓縮的動畫gifs檔不可以被載入)。只要精靈圖像被載入，那麼第一個子圖形會被顯示在表單右邊。當精靈圖形是動畫時，你可以使用箭號按鍵來讓它們迴圈依次呈現。透明標籤(Transparent)指定精靈圖像的背景是否要被當成透明來處理，許多精靈圖像是透明的。

背景是由圖像最左下方的圖元顏色來決定。所以要確定圖像要顯示的部分中沒有是透明色的顏色，否則將被透明化而不被顯示。

編輯精靈圖像按鍵(Edit Sprite)你可以編輯精靈圖像，或甚至創建一完全新的精靈圖像。後面章節有詳細介紹。

第7章 聲音和音樂

大部份遊戲有特定的聲音效果和一些背景音樂，在GM中也簡單的提供了一些音效檔案，你可以在網路上搜集更多音效資源。

增加聲音資源到你的遊戲中，可以在增加功能表中使用增加聲音(Add Sound)項目或在工具列中使用相同的按鍵。下面的表單將出現：

在上方你可以更改聲音資源的名稱。標準和高級選項。這裏我們只討論標準選項。後面還會有更詳細的介紹。需要載入一聲音，單擊載入聲音(Load Sound)的按鍵，顯示一選擇檔對話方塊，在其中你可以選擇音效檔案。有兩種類型的音效檔案，wave檔和midi檔 (mp3 檔的資訊後面有介紹)：wave檔通常用於短音效。它們使用許多的記憶體，但是隨即播放完畢，可在你的遊戲中當作音效使用。

midi檔使用較少記憶體，但是它們被限制在只作為背景音樂，不支援各種音效。而且任何時間只可以有一個midi聲音播放。當你載入了一音樂檔後，隨即顯示它的種類和長度。你可以使用播放按鍵(play)聽聲音效果。

第8章 背景

第三種基本資源是背景。背景通常是較大的圖像，常用於遊戲發生的場景/房間中做背景(或前景)。通常背景圖像可以是看不出縫隙的元件類圖形用來重複重疊形成。GM也提供了一些簡單的像樣貼磚塊組的背景例圖。

若要增加一背景資源到你的遊戲，在增加功能表中使用Add Background專案或在工具列中使用相對應的按鍵。下面的表單將會出現：

同樣你要取一個名稱，同樣又有標準和高級選項。後面章節同樣有詳細介紹。

單擊Load Background按鍵以載入一背景圖像。GM支援許多圖像表單。背景圖像不可以是動畫！Transparent核取方塊指出背景是否為部份透明，大部份背景不透明的所以預設值為否。

最左下方圖元的顏色被拿來當做透明顏色。你可以使用Edit Background按鍵來更改背景或創建一個新背景，第15章中有更多資訊。

第9章 定義物體

我們可以添加一些漂亮的圖片和聲音到遊戲中，但它們不能產生任何行為。現在我們來瞭解GM中最重要的資源：物件。物體是在遊戲中實際動作的實體，大部分的時候它們會用精靈圖像當作視覺顯示，這樣你就你可看見它們，同樣它們有行為因為，因此它們可以對一定事件作出反應，這就是物體區分于精靈圖像的區別，因為它們有事件，有行為。

在遊戲中你見到的放在場景中的東西都是物體(除了背景之外。更精確地說，它們是物體的實例)。文字、怪物、球、牆壁、等等，全部是物體。也有一些特定物體是你不看到的，因為它沒有設置一個用來顯示它們的精靈圖像，但是它們仍被放在場景中，它們事件在控制遊戲的某部分。

需要瞭解精靈圖像和物體之間的差別。精靈圖像只是(動畫)圖像，而沒有任何行為。通常物體有一個精靈圖像代表它們的外觀，但是物體有行為，沒有物體遊戲就不發生任何事件產生任何效果，也就沒有遊戲！

還要瞭解在物體和實例之間的差別，一個物體描述一特定的實體集合，例如：一個怪物。在遊戲中一個物體是可以有多重實例的。當我們談及到一個實例時代表一個物體中一個特定的有一個ID編號的實例，當我們談到一個物體時代表物體中全部的實例。也就是說一個物體可以有很多個實例用來代表這個物體來使用，物體是所有實例的總稱。物體是一個集合，實例是物體的一個元素。

要增加一個物體到你的遊戲中， 從增加功能表中選擇Add Object。會出現下面的表單：

左邊有關於物體的一般資訊。在中間是物體發生的事件表列，後面章節有更多介紹。

在右邊是物體的可給於問題的多種不同的動作。

同樣你需要給物體一個名稱，然後你要指出用來顯示物體外觀的精靈圖像，在精靈圖像方塊中單擊滑鼠左鍵，或在靠近它的功能表按鍵單擊滑鼠左鍵，一功能表將立即彈出，其中包含了所有可用的已經添加的精靈圖像。選擇一個你想要用來代表物體的精靈圖像，在下面有兩個核取方塊，標示Solid的核取方塊指定物體是否是一個靜止物體(像是牆壁)。和實心物體碰撞與和非-實心物體碰撞效果是不相同的，後面有更多介紹。

Visible表示是否物體的實例在舞臺上是可看見的。一般大部份遊戲在舞臺上物體是可見的，但有時無形的物體是相當有用的，例如，你可以使用它們作為怪物運動的路線。隱形的物體同樣作出事件反應，且其他的實例也會與它們發生碰撞效果。

Show Information提供物體全部資訊的一覽表，可以被列印出來。當你想大致瞭解一下你的動作和事件時，特別地有用。

第10章 事件

GM使用事件驅動物體產生動作，那就是說，物體的實例添加事件和此事件對應動作後，會在發生此事件時產生相應的動作。比如事件滑鼠左鍵單擊這個事件發生，而在這個事件中添加了播放一個聲音的動作，那麼當在物體的一個實例上點了滑鼠左鍵後，會播放一個音效檔案。所以對於每個物體，你必須指定會讓它反應的事件，和它必須執行的動作，非常容易。你可以使用一個非常簡單的拖放方法來指定動作。在物體屬性表單的中央，有事件一覽表，列出物體必須作出的反應。最初是空的，你可以增加事件到其中，由單擊Add Event的按鍵。將出現一個事件列表的小表單。在裏面，你可選擇你想要增加的各種事件。

在右邊有全部的動作，由小圖示來代表。它們已經分好類。在下一個章節我將描述所有的動作和它們能做什麼。

在事件和動作之間有動作列表，列表包含當前事件的動作。要增加動作到列表，用你的滑鼠拖曳它們，從右邊拖到表列，它們將照拖曳順序排列，並有一簡短的描述。對於每個動作，你需要提供一些參數。這些也將會在後面章節有描述。所以在增加一些動作後，看起來如下：

現在你可以開始增加動作到不同的事件裏，用滑鼠左鍵點選要設定的事件來選擇，然後在其右方動作列表中拖拉動作到事件對應的動作功能表裏(注意刪除一個事件時所有的事件裏的動作會被全部刪除。還有如果事件裏動作列表為空，那麼這個事件也會自動被清除)。

你可以更改列表中動作的順序，使用拖曳。當拖曳時假如你按住<Ctrl>鍵，你會複製動作。甚至可以在不同物體中的動作列表之間使用拖曳(將一個動作拖曳到不同物體)。

當你在動作列表中的一個動作上點選滑鼠右鍵時，一個功能表出彈出，其中你可以刪除動作(也可由使用<Del>按鍵來完成)或複製和粘貼動作。當你將你的滑鼠指標放在一動作上方不動，會顯現對動作的一個較長的描述。更多有關動作的資訊後面還有描述。

要刪除事件以及它所有的動作，請單擊Delete的按鍵 。假如你想要指定動作到一不同的事件請單擊標示Change的按鍵，並選擇你想要的新事件(新的事件不能是已經被使用過了的)。

某些事件名稱的旁邊有一功能表符號緊鄰著它表示在裏面為事件的集合，有很多可選事件。

當你在功能表上單擊滑鼠按鍵，或在事件名稱上點滑鼠右鍵，出現功能表讓你可以挑選想要更改的事件。

下面為幾個常用事件介紹：

Create event

創建事件：當物體的一個實例被創建（或者說是放到場景上時）觸發事件，是物體實例的第一個執行的事件，一般用來為實例設定特定變數以及定義物體開始時的運動或者要發生的動作。

Destroy event

銷毀事件： 當實例在場景中被刪除時觸發的事件。更精確地說，它發生在實例被摧毀之前的瞬間，所以當事件在執行時，實例還存在！例如你可以讓一個魔鬼死亡/消失時發出大叫聲（播放一個音效檔案），或者使用它來更改遊戲分數，或者另外創建物體。

Alarm events

時鐘事件：每個實例有8個定時時鐘，可以精確控制物體在某刻發生某個動作，你可以給時鐘設置一定的動作，再給時鐘設置一個倒計時步數，然後時鐘倒數計時直到步數到0，在那個瞬間時鐘事件觸發，時鐘裏的動作執行。要指定動作到一給定的時鐘，首先你需要在功能表中選擇它。時鐘非常有用，你可以使用它們去讓特定的行為不斷發生。例如一個怪物在每20步更改它運動的方向一次(要實現這中效果你可以在時鐘事件裏的動作裏再設定時鐘這樣就會反復被激發)。

Step events

步驟事件：步驟事件發生在遊戲的每一個步驟裏，因此你可放那些需要被連續執行/一直發生的動作，例如，假如一個物體要會跟隨別的物體時，你可以在步驟事件裏把這個物體座標設為要給跟隨物體的座標加減一點。請小心使用這個事件，在有步驟事件的物體中，不要用過多複雜的動作，否則會大大減慢遊戲速度。有三種不同的步驟事件。通常你只需用預設好的step步驟事件的。你也可以選擇開始和結束步驟事件。開始步驟事件是在每個步驟的最起初執行，注意它在發生任何事件之前。正常的步驟事件是物體實例被放到它們的新位置之前執行。結束步驟事件是在步驟的結束時執行，在物體繪製之前。常使用在如按照當前方向來更改精靈圖像。

Collision events

碰撞事件：不論何時當兩物體實例碰撞(亦即為，它們的精靈圖像重迭)時，發生碰撞事件。精確地說是兩個碰撞事件發生：因為每個實例各設置了一個碰撞事件。實例可以對碰撞作出反應。要設置碰撞，先點碰撞事件功能表，再選擇你想要定義碰撞事件的物體，其次你把動作放在動作列表裏。實例與一靜止物體和一非靜止物體碰撞時是有差別的。首先，當在碰撞事件中沒有添加動作時，什麼也不會發生：當前的實例保持原來的運動，即使被碰撞的物體是實心也如此。當碰撞事件包含了動作時，則出現下面的情形：當被碰撞物體是靜止物體，實例先被放回它先前的位置(即在碰撞發生之前的位置)，接著執行碰撞事件。最後，實例被放到它的新位置。當被碰撞物體不是靜止物體時，原先實例不會被放回，實例僅在它當前的位置上執行事件，並且，碰撞不會檢查兩次。稍微想一下就明白這是理所當然的。因為物體不是靜態物體，我們在它上面移動。碰撞事件有許多用處，物體實例可以使用它來實現牆壁的反彈。你可以使用它來銷毀物體假如它們被子彈擊中等等。

Keyboard events

按鍵事件：當遊戲者按下鍵盤上的鍵時，按鍵事件就發生了。每個按鍵，可以設置不同的事件。在功能表中你挑選需要被定義按鍵事件的某一個鍵，再來在那裏拖曳要加的動作。當壓住按鍵不放時，你會在每一個步驟中都執行事件。有兩個特別的按鍵事件，一個稱為<Nokey>，當沒有按下鍵時，事件會發生在每個步驟中；第二個稱為<Anykey> ，當任意鍵被按下時發生。注意在鍵盤右方數位小鍵盤中，要按<NumLock>按鍵啟動數位鍵盤，數位按鍵事件才會有作用。

Mouse events

滑鼠事件：當滑鼠游標停在代表精靈圖像的實例上時，產生了此物體實例的滑鼠事件。按照滑鼠的按鍵情形而定，有不按鍵(no button)，按左鍵(left button)，按右鍵(right button)，或按滑鼠中央鍵(middle button)事件。當遊戲者一直按著滑鼠按鍵不放時，滑鼠按鍵事件會在每一個步驟中產生。按下事件(press events)是當按鍵被壓下時發生，注意只發生一次。釋放事件(release events)是當壓下的按鍵被放開時發生。注意事件只在滑鼠游標移到實例上時才發生。假如在一個沒有物體實例的位置上按滑鼠按鍵，會產生全局滑鼠事件（global press）。還有兩個特別有用的事件，一個為滑鼠移到物體實例上時發生的事件，一個為滑鼠移出物體實例時發生的事件。

還有一些其他的事件在遊戲中也是很有用的。可以在功能表中找到：

· Outside：

場景外(Outside)： 當實例的位置完全在場景的外面時觸發事件。

· Boundary：

·邊界(Boundary)：當實例與場景的邊界相交時觸發事件

· Game start：

·遊戲開始(Game start)： 當遊戲開始時觸發了事件，適用於第一個場景中全部的實例。它在場景開始事件(room start event)之前發生(看下面)甚至在場景中物體實例的創建事件之前發生。它經常用來定義某些背景音樂和初始化某些變數，或載入某些檔資料/遊戲動畫等。

· Game end：

·遊戲結束(Game end)：當遊戲結束時事件發生到全部實例。例如用來在遊戲結束時儲存特定資料。

· Room start：

·場景開始(Room start)： 當場景開始時，初始化場景中全部的實例發生，它在創建事件之前發生。

· Room end：

·場景結束(Room end)： 場景結束時發生。

· No more lives：

·沒有存活者(No more lives)：GM有一嵌入的存活數系統，可用來設置玩家的生命數，有一個動作可設定和更改存活者的數目，當存活者的數目變為小於或等於0，就發生了事件，它通常是在結束，或重新開始遊戲時被使用。

· End of animation：

·動畫的結束(End of animation)：一個動畫由許多圖像輪流顯示而組成，在最後一個顯示的圖像之後，我們又從第一個圖像開始，事件正是在那瞬間發生。例如，可以用於更改動畫，或刪除實例。

· End of path：

·路徑的結束(End of path)：事件發生在當實例沿路徑運動並到達路徑的終點時，後面有更多介紹。

· User defined：

·自定義事件：有八個事件。

它們通常不會發生，你可以從一段代碼中呼叫使用。

Drawing event

繪製事件(Drawing event)：可看見的實例會在每個步驟將把精靈圖像繪製在螢幕上，特別注意當你在繪製事件中設定動作後，物體不會被繪製出，取而代之的是動作被執行，所以一般用一個不用在舞臺上顯示出來的物體添加繪製事件。還要注意繪製事件只有在當物體是可看見時才可以執行。

Key press events

按下鍵盤事件：類似於按鍵事件，但是它只發生一次，只在當按鍵被壓下時，且不是連續的。可在當你想要讓一個動作只發生一次時使用。

Key release events

放開鍵盤事件，發生一次，在當按鍵被放開時，且不是連續的。

清楚GM處理事件的順序是非常重要的，各種行為發生順序如下：

·開始步驟事件，時鐘事件，按鍵，按鍵壓下，和按鍵釋放事件，滑鼠事件，正常的步驟事件，(現在全部實例在它們的新位置上)，碰撞事件，結束步驟事件，繪製事件。當相對應的情形發生時，創建，摧毀，和其他的事件會被執行。

第11章 動作

動作指的是要執行的行為，放置於事件之中。不論何時當事件發生時就執行某些動作。GM中有大量可用的動作，清楚它們用來做什麼是很重要的，本章節中我將說明一下簡易模式下的全部動作。GM默認動作已經分好六組，當你把滑鼠游標固定放在一個動作按鍵上方，會顯示一個小提示來提示它的功能。只要拖曳動作圖示到動作表列就可以把一個動作放在一個事件中，再使用拖曳，你可以更改動作在表列中的次序，拖曳時按住<Ctrl>鍵可以複製動作(在不同物體屬性表單之間你也可以拖曳和複製動作)。當你點選一個動作，通常一個設置視窗將彈出，你可以為動作填入一定的參數。在許多動作都會出現有二種參數：在視窗上方你可以指定動作要用於哪個實例，預設值是自己本身，意思是被選擇的實例執行動作，在一碰撞事件中，你也可以把動作作用到涉及在碰撞中的被碰撞物體，這樣你可以摧毀被碰撞的物體；最後，你可以選擇把動作用到指定的物體裏全部的實例中，比如這樣你就能更改全部的紅色球成為藍色球。第二個參數是標示著” Relative”的核取方塊，意思為當你輸入一個數值時，是相對于現有的數值產生變化的。例如，你可以在當前的分數加減值，而不是把分數直接更改成新的數值。你還可以在動作圖示上雙擊來更改動作參數。

11.1運動動作

第一組的動作是由與物體運動有關的動作集合成。有下列動作：

Start moving in a direction

朝一個方向開始運動：使用此動作使一實例在特定的方向開始運動。使用箭號按鍵來指出方向，使用中央按鍵來停止運動。

可以設定物體運動的速度。速度是用每步驟幾個圖元來給定，預設值是8，速度最好不要使用負值，你可以規定多種方向，例如樣你可以讓一怪物開始往左或右方移動。

Set direction and speed of motion

設定運動的方向和速度：第二種方法是使用藍色箭頭來定義一個運動，這樣你可以指出一個精確的方向，是一個介於0和360度數之間的角度值，0代表右邊，方向是順時針方向，如90度為一朝上的方向。假如你想要一任意的方向，你可鍵入任意方向random (360)（意思為在0-360中任取一小於360的亂數值）。注意”Relative”前的核取方塊，假如你勾選方框，新的運動設定會增加到舊的運動設定上。好比說，假如實例是朝上運動而你增加一點向左的運動，最後新運動將是朝左上方運動。

Set the horizontal speed

設定水平速度：一個實例的速度由一水平和一垂直速度組成。你可以更改水平的速度，速度是正值代表往右運動，是負值代表往左運動，垂直的速度將保持不變。使用”relative”來增加水平的速度(或用一負數減少它)。

Set the vertical speed

設定垂直的速度：更改實例的垂直速度。

Move towards a point

朝指定點移動：用此方法來指定一個運動，你指定一個位置和運動速度，實例用指定速度向位置移動(注意不會停在指定位置！)。例如，你想要子彈朝太空船的位置運動，你可以設定子彈朝向的位置為：spaceship.x，spaceship.y(後面章節有更多關於變數的使用方法)。假如你勾選”Relative”核取方塊，即是在指定相對於當前實例位置的新位置(速度不可以勾選”relative”！)。

Set the gravity

設定重力：用此動作你可以創建物體的重力效果。你指定一方向(角度在0到360度之間)和一個重力加速度值，指定方向的重力速度值會添加在物體實例當前的運動中，通常你設定小的速度增加量(如0.01)，設定方向為向下(270度)。假如你勾選”Relative”核取方塊你將增加重力的速度和方向。注意，與實際生活中不同，你可以設定不為朝下的重力方向。

Set the friction

設定摩擦力：摩擦使實例在運動之時速度緩慢減下來。在每個步驟中數值會與速度相減，直到速度變為0，通常摩擦力值設的比較小，（如0.01）。

Jump to a given position

跳到一指定位置：使用此動作將實例置放在一特殊的位置，你只要指定x-和y-座標。假如你勾選”Relative”核取方塊，位置是相對於實例的當前位置來放置。

Jump to the start position

跳到開始位置：此動作把實例放回剛開始它被創建的位置。

Jump to a random position

跳到一隨機位置：動作把實例放置到場景中的一個隨機位置，這些位置沒有其他靜止物體。你可以指定使用網格。如果你指定正數，則被選擇的座標將是指定數值的整數倍，例如，可以被使用讓在你的遊戲中的實例保持對齊。可以指定水平定位與垂直定位。

Reverse horizontal direction

倒置水平方向：使得實例的水平運動反向進行，例如當物體撞到一直立牆壁，方向變反。

Reverse vertical direction

倒置垂直方向：使得實例的垂直運動反向進行。例如當物體撞到一堵水平牆壁。

Bounce against objects

碰到物件反彈：當你在碰撞事件放入這個動作，實例會自然的從物體上反彈開。假如你設定” precise”參數為”false”，只有水平的和垂直的牆壁才會被正確處理。當你設定” precise”參數為”true”時，傾斜(甚至彎曲的)牆壁也可得到令人滿意的處理結果(但是速度稍慢)。你也可以指定是否是從靜止物體，或是從所有物體上反彈。注意彈跳的路徑有時不是完全正確的，。但在大部分情況下效果是很好的。

Snap to grid

定位到網格：使得你可以把一實例的位置定位到網格上。你可以指定水平和垂直兩者的定格數值(就是網格的最小單位的尺寸)，對製作智慧定位遊戲是很有幫助的，比如炸彈人系列。

Set a path for the instance

設定實例的不規則運動路徑：你可以指定實例以一特別的路徑移動，在路徑的起始點指定路徑、速度和位置(0=開始，1=結束)。後面有更多介紹。

Move to contact position
用這個動作你可以為一個實例指定方向運動到一個有物體的座標位置。 如果在當前的位置上已經有碰撞了那麼這個實例

不會移動， 否則物體會移動直到碰撞發生。 你可以指定一個方向以及一個移動的最大距離。比如說一個物體正在下落你可以指定它在碰撞到另一個實例之前運動的最大距離。 還可以指定這種效應發生是只針對碰撞到固體物體還是全部物體。. 很典型的你可以把這個動作放在碰撞事件中用來讓實例產生朝一個特定位置運動，當在中途中遇到其他物體就停下來的效果。

11.2第一套動作

以下的動作與物體實例創建、變化、和清除有關。

Create an instance of an object

創建一物體的實例：創建一物體的實例。可指定創建哪個物體及創建實例的位置，假如你勾選”Relative”核取方塊，則位置是相對於當前實例的位置。在遊戲中創建實例是相當有用的：如一艘太空船可以創建子彈、一炸彈可以創建一個爆炸、等等。在一些遊戲中你還將要不時地創建怪物或其他的物體，在新的實例被創建時，會執行被創建物體的建立事件。

Create an instance of an object with a speed and direction

GM6新功能，即建立一個新實例並賦予實例一個運動方向和速度值，使之開始運動

Change the instance

更改實例：更改當前實例到別的物體的實例。例如，你可以更改一炸彈實例到一爆炸實例。更改後全部的設定值，如運動或是相關變數的數值，保持相同。你可以指定是否在當前物體上執行清除事件及為新物體執行創建事件。

Destroy the instance

摧毀實例：用此動作讓你摧毀當前實例。

Destroy instances at a position

銷毀一個位置上實例：用此動作讓你摧毀所有進入到某一位置的實例。例如當你使用一個爆炸時相當有用，當你勾選”Relative”核取方塊則位置是相對於當前實例的位置

Change the sprite

更改精靈圖像：用樣使得你更改實例的精靈圖像。你指定新的精靈圖像，同時可以指定一縮放係數，係數大小為1表示精靈圖像尺寸不變，縮放係數必定得大於0，注意精靈圖像縮放尺寸將使遊戲速度變慢。更改精靈圖像是一重要功能。例如，你常常想按實例走動的方向來設定不同的精靈圖像，可為角色在每一方向(四個方向)做一不同精靈圖像。在鍵盤事件內用箭號按鍵來指定運動的方向和更改精靈圖像。

Transform the sprite

使用此動作用來更改實例精靈圖像的大小和旋轉度數。使用縮放值來放大和縮小圖形，使用度數值來使圖形產生逆時針旋轉。同時可以指定圖像水平或者豎直鏡象。

Set sprite blending
使用這個動作你可以改變精靈圖形的顏色.你定義的這個顏色和當前精靈圖像混合顯示，如果你想在遊戲中用不同的顏色 來顯示一個精靈圖像你最好把精靈圖形製作為一個黑白的圖像並用混合顏色來改變它的顏色。同時你也可以指定精靈圖像的顯示透明度。數值1為完全不透明。0為完全透明。中間值用來設置部分透明效果。這個動作用來製作爆炸效果時非常好的。

Play a sound

播放聲音：使用這個動作你可以播放一個先前增加到你的遊戲中的聲音。你可以指定播放聲音的方式，播放一次(預設值)或迴圈播放。多個聲音是可以同時播放的。如果你使用midi檔那麼一個時間內你只能播放一個檔，其他的midi會停止。

Stop a sound

停止聲音：停止播放指定的聲音，假如多個實例的聲音正播放，則全部停止。

If a sound is playing
如果有一個指定的聲音正在播放那麼執行下一個動作. 否則就跳過執行下個動作而執行後面的動作.你可以勾選NOT得到相反的效果。比如你可以用這個動作來測試是否有背景音樂正在播放，沒有的話就播放一個新的背景音樂。

Go to the previous room

到先前的場景：移到先前的場景，你可以指定在不同場景中轉變效果的類型，假如你在第一個場景中得到一個不好的效果，用試驗決定怎麼做最好。

Go to the next room

下一個場景：移到下一個場景，你也可以指定換場景效果。

Restart the current room

重新開始當前場景：當前場景會重新開始，你可以指定換場景效果。

Go to a different room

到不同場景：使用動作使得你可以去一個特別的場景，你可以指定場景和換場景效果。

If previous room exists
這個動作測試是否有上一個房間/舞臺。如果有下一個動作就被執行，你可以使用這個動作測試是否有上一個房間。

If next room exists
這個動作測試是否有下一個房間/舞臺。如果有下一個動作就被執行，你可以使用這個動作測試是否有下一個房間。

第二套動作

Set an alarm clock

設定一時鐘：使用這個動作你可以為實例設定八個時鐘中的任一個時鐘，你指定步驟數和時鐘編號。在經過指定步驟的數目之後，實例將接收到相對應的時鐘事件，你也可以由勾選”Relative”核取方塊來增減數值。假如你設定步驟的數目到小於或等於0就是關閉時鐘，則指定的事件不會發生。

Sleep for a while

暫停：使用這個動作使得你可以使場景暫停一段特定時間，通常用在開始或結束一個關卡時，或當你要給遊戲者某些訊息時，你可以指定的數值（以毫秒當單位）來暫停遊戲。你也可以指定是否螢幕一開始重繪來顯示遊戲最後一幕暫停時的場景。

Display a message

顯示一消息：使你可以在一對話方塊中顯示一消息，只要輸入消息。在訊息本文中假如你使用#符號則它將會跳行。若消息文本以引號或雙引號符號開始時，則此訊息代表一個運算式。關於運算式，後面有更多介紹(注意當你的遊戲在排斥模式下執行時，不可以使用消息功能)。

Show the game information

顯示遊戲資訊：用此動作你可彈出遊戲資訊視窗，後面有專門章節介紹。

Restart the game

重新開始：用此動作重新開始遊戲。

End the game

結束：用此動作退出遊戲。

Save the game

儲存：用此動作你可以保存當前遊戲，你鍵入檔案名來存檔(遊戲文件會被存在遊戲工作目錄中)。之後可以讀取。

Load the game

載入遊戲：從檔中載入遊戲。你指定檔案名。確認將載入的存檔遊戲是與當前相同的遊戲用相同版本的GM製作的。不然將發生錯誤。

控制組

有一些動作可以測試一些問題，例如一個位置是否是空的，當答案是對的時候(真)則執行下一個動作，不然動作被跳過不執行。假如你想要執行多種動作(或跳過，視結果而定)則需要由在動作兩邊放置起始及結束區塊（三角形符號那種，在C語言中相當於用來指定區域的大括弧”{}”），你可以將它們放在一個區塊結構。當答案是”否”時也可以執行另一部分指定加上區塊的動作。通常大致如下：

這裏問題是問是否當前實例在一位置上是沒有碰撞的。如果是的話，實例在一特定方向開始移動；假如不是的話，實例跳到一個特定位置。在指定動作時表單中有一選項標示著” NOT”，假如你勾選該選項，則問題結果與它的運算式是相反的，就是說，假如問題運算式是真，則結果為假；若運算式是假，則結果為真。

If a position is collision free

假如實例在一位置沒有發生碰撞：若當前的實例在指定位置不與物體產生碰撞，則問題的返回值“真”。你可以以相對或絕對位置來指定位置，你也可以指出是否只有考慮碰撞固態物體或是碰撞全部的物體都算，此動作通常使用於檢查實例是否可以移到一特殊的位置上而不和其他物體重疊或者碰撞。

If there is a collision at a position

假如在一位置上有碰撞：是先前動作(If a position is collision free)的相反動作。

If there is an object at a position

在一位置上是否有一個物體：若在指定的位置上存在一指定的物體，則其返回值為真。

If the number of instances is a value

假如實例的數量為某一數值：你可指定一物體和一數值。假如當前實例的數量等於數值，則問題的返回值為真。不然的話它返回假。通常用來檢查一個物體在舞臺上有多少個實例。

If a dice lands on one

假如一骰子的點數為一：你指定骰子有幾面。然後若骰子的點數為一，則結果為真且執行下一個動作。可以使用於在你的遊戲中產生一個亂數控制功能，指定的骰子面數越大，得到返回值真的機會越小。骰子的面數可使用實數指定。例如假如你設定骰子的面數為1.5則下一個動作預期在三次中執行二次。使用比1小的數值時沒有意義。

If a sound is playing

假如有個一聲音正在播放：假如指定的聲音正在播放中，則返回真。

If the user answers yes to a question

假如使用者對一問題的答案為是：你指定一個問題，一個對話方塊顯示給遊戲者，上面有是和否的按鍵，當遊戲者解答為是時此動作的結果是真。此動作不可以使用於排斥（exclude）的模式。

If an expression is true

假如一個運算式為真：你可以輸入一個運算式，(物體的實例數量為5)如果在場景中物體實例數量真的為5，則將執行下一個動作，後面有更多有關說明。

If a mouse button is pressed

假如按下滑鼠鍵：假如指定的滑鼠按鍵被按下則返回值為真。通常使用在步驟（step）事件，例如：你可以檢查是有按壓下一個滑鼠鍵，如果是，則移到滑鼠位置(使用跳到一點動作，輸入座標數值mouse_x 和mouse_y)。

If instance is aligned with grid

假如實例對齊網格：假如實例的位置是在一網格上，則返回真。你可指定水平的和垂直的格線距離。在某些特定的動作中，例如當實例被指定在網格上旋轉之時，是非常有用的。

If a variable has a value

假如一變數為一個指定值：GM中有許多內建的變數，你也可以定義一些你自己的變數，用此動作你可以檢查一特殊變數，其值為什麼。假如變數的值等於指定的值則問題返回值為真，反之返回假。你也可以指定變數檢查，是小於或大於給定的值

Else

其他：當問題的結果為假時，執行在其他(else)動作後面跟著的動作。

Start of block

區塊的開始：指出動作區塊的開始位置。相當於C語言中的{

End of block

區塊的結束：指出動作區塊的結束位置。相當於C語言中的}

Repeat next action

重複下一個動作：此動作用於重複下一個動作(或區塊動作)一次，你只要指定重複次數。

Exit the current event

退出/跳出當前事件：當遇到此動作時，原先在此事件的動作不再進一步執行，通常使用於一個問題之後，例如，當一個位置是空的，什麼也不需要被執行，所以我們跳出事件。

Draw the value of a variable

畫出一變數的數值：在GM中有許多嵌入變數，你也可以創建屬於你自己的變數。使用此一動作使得你可以在螢幕指定的位置上畫出變數的數值，此一功可以最常用於在螢幕上畫出當前分數。

遊戲得分相關動作

Set the score

設定得分值，GM自身有一套得分機制，你可以自己添減及得分機制。

If score has a value
如果玩家得分為一個數值，通常用來測試玩家是否得到多少分以上給予獎勵什麼的。

Draw the value of score
把得分繪製出來。你指定顯示位置以及放在得分數值前的內容。動作只能放在繪製事件中。

Display the highscore table
顯示得分排行榜。對於一些積分類的遊戲都會有得分排行榜。這個動作就是顯示這個排行榜，如果當前玩家的得分在前10名內，系統會自動要求你輸入你的名字並記錄。你可以指定榜的背景如象，表單是否顯示邊框，以及各種顏色參數等。Clear the highscore table
這個動作清除積分排行榜的積分清單。

Draw the lives as image
這個動作以圖形的方式來顯示可玩次數。（就是相當於有幾次玩的機會，一般遊戲中會顯示X5這樣的字樣表示你還有五次機會可以玩，死一次減一個人）你可以使用小圖形來顯示（比如一個桃心代表一個人，五次機會就繪製五個桃心），你指定顯示圖形的位置以及用來顯示的圖形，這個動作必須放在繪製事件中。

Set the health

設置生命值，GM有一套自己的生命值系統，當數值為100時為滿，為0時物體會被清除出房間。你也可以自己指定這個生命值數值。

If health is a value
如果生命值為一個數值，為一個問題，當生命值為一個你指定的數值時，返回真。執行下面的動作。

Draw the health bar
使用這個動作你可以圖形方式繪製生命條，當生命值為100時生命條完全填充繪製，為0的時候時就是空的。你可以指定生命條的大小和顏色等。

Set the window caption information
一般你可以用遊戲的表單來顯示遊戲得分等。使用這個動作你可以自己設定視窗的標題內容。

Switch fullscreen mode

切換全螢幕模式：用此動作你可以更改螢幕模式從視窗到全螢幕，或切換回來。你可以指定是否去切換模式或是直接到視窗(全螢幕)模式(此動作在排外的模式中無效！)。

11.5繪製動作

繪製動作只有在繪製事件中才有意義，基本上在其他的地方它們是被忽視的。請記得繪製不比精靈圖像和背景圖像，它的執行速度是相當地緩慢，所以只有在一定需要時才使用。

Draw a sprite image

繪製一精靈圖像：你指定精靈圖像位置(以當前實例位置為原點，可指定相對或絕對位置)及精靈圖像的子圖像(子圖像數值是從0往上加)。如果你只想要畫第一幀子圖像，使用數值-1。

Draw a background image

畫一背景圖像：你指定背景圖像位置(絕對或相對)和圖像在場景中要不要背景迴圈顯示。

Draw a text

繪製文字：你指定文字和位置。(#)符號在文字中是被解釋為跳行，如此你可以繪製多行文字。假如文字以引號或雙引號開始，則它是被解釋成一運算式句，例如，你可以使用‘Score：’+String(Score)來顯示分數的數值。 (分數變數(Score)貯存現有分數，函數String()將分數(score)數值轉成字串形式，+用來結合二字串)用類似方法你可以繪製顯示任何其他的變數。

Draw a text transformed
和上一個動作有類似但是這個動作你可以指定在水平以及素豎直方向上的拉伸比例值來改變文字大小，還可以指定文字旋轉角度。

Draw a rectangle

畫一矩形：你設定矩形二個對角的座標，使用絕對座標或相對於當前實例位置的相對座標。

Draw a horizontal gradient
使用從左到右的漸變顏色來繪製一個矩形，你指定矩形的漸變顏色以及座標。

Draw a vertical gradient
和上面動作相同，這裏漸變是從上往下漸變。同樣你指定漸變顏色以及矩形座標。

Draw an ellipse

畫一橢圓：你設定橢圓外接四邊形的對角座標，使用絕對座標或相對於當前實例位置的相對座標。

Draw a gradient ellipse
同上但是這個動作中你指定由中心向外漸變的漸變顏色。

Draw a line

畫一條線：你用線段兩端點的座標設定繪製一條線，使用絕對座標或相對於當前實例位置的相對座標。

Set the color

設定顏色：讓你設定顏色用來繪製各種形狀/文字等（但是設定顏色對繪製精靈圖像及背景無任何影響）

Draw an arrow
繪製箭頭，你指定兩個結束點的座標以及箭頭的大小尺寸。

Change fullscreen mode
使用這個動作來把視窗狀態轉變到全螢幕狀態或者將全螢幕狀態換回視窗狀態。

Take a snapshot image of the game
使用這個動作可以截下遊戲視窗當前的圖像並保存為圖像。

11.7使用運算式和變數

在許多動作你需要為參數提供數值。除了輸入一數位，你也可以輸入一公式，例如32 *12，但事實上，你可以輸入更加複雜的運算式，例如，假如你想要將水平的速度加速到兩倍，你可以設定它成為2*hspeed，在這裏hspeed 是可以設定實例當前的水平速度的一個變數。你可以使用許多其他的變數，最重要的一些變數是：

x ：實例的x-座標值，y：

實例的y-座標值，

hspeed：水平的速度(每個步驟多少圖元)，

vspeed：垂直速度(每個步驟多少圖元)，

direction：當前運動的方向，以度數(0-360)表示，

Speed：當前在direction方向上的速度，

visible：是否物體是可看見visible(1)，的或不可見的visible(0)，

image_scale：圖像放大縮小的係數(1=等比例)，

image_single，變數指定當前精靈圖像中哪個子幀必須顯示，假如你設定它到-1 (預設)就讓幀形成迴圈，不然的話始終只有顯示指定的幀(開始的號碼為0)。

Score：當前的分數

lives，當前的存活數，

mouse_x：滑鼠的x-座標，

mouse_y：滑鼠的y-座標。

大部份的這些變數你可以使用改變及設定變數的動作來更改，你也可以指定一個數值來定義屬於自己的變數(不要勾選relative，因為”相對”這種屬性在變數定義前是不存在的，沒有相對性的)。然後你可以在運算式句中使用這些變數。

對當前的實例而言，你創建了局部變數。那就是，每個物體有它們自己的變數。要創建一總體變數，輸入global並在變數名之前加入一點 (.)。你也可以參照其他的物體變數的數值，在物體名稱之前輸入一圓點，例如，假如你想要一顆球移到硬幣(coin)座標那裏，你可以設定球的位置成(coin.x，coin.y)；在一碰撞事件中你可以得到其他的物體的x-座標，使用other.x。在有條件運算式你可以使用比較，如<(小於)，> (大於)，等等。在你的運算式中你也可以使用函數。例如，變數函數random(10)可得到10以下的一任意隨機實數值，如此你可以設定例如速度大小或運動的方向值為一任意的數值，更多功能及使用方法高級教程中會有詳細說明。

第12章 創建場景/房間

你已經在事件和動作的表單中定義了物體和它們的行為，緊接下來就是創建在遊戲中的場景或關卡了。任何遊戲都需要至少一個場景，在這些場景中我們放置物體的實例。遊戲開始時一般顯示第一個場景，（除非你設置了跳場景的物體），其中的實例會依照創建事件中的動作執行各種動作。創建場景時有許多的可選和變化性，除了添加物體實例你還可以增加背景，定義視角和增加圖形重複等。大部份的些選項會在高級教程中討論，這章我們將只討論一些基本設定--增加物體實例，和背景圖像的設定。

要創建一場景， 從增加功能表中選擇增加場景，則將出現下面表單：

在左邊你將看到五個標籤：在物體標籤中你可增加物體實例到場景；在設定標籤中你可以為了場景指定許多設定；在背景標籤中你可以為場景設定背景圖像；在視角標籤中你可以定義視角，就是可以限定視窗只顯示場景一某部份的區域；在元件組標籤你可以增加元件圖形組到場景中。

12.1增加實例

在場景設計表單右邊顯示場景，起初它是空的，有一灰色背景。要增加實例到場景中，第一是選擇想要增加的物體，由功能表圖示上的按鍵點選(或在左邊的圖像區域中點一下)，物體的圖像出現在左邊(注意在圖像上有一十字形。十字形指定實例將是如何對齊網格)。現在在右邊場景區域中點選你的滑鼠按鍵左鍵，一個物體實例出現了，而它將定位到指定的網格(你可以在設定中更改網格，看下文，假如當置放實例時按住<Alt>鍵不放則此實例不會對齊到網格)。

用滑鼠右鍵按鍵你可以移除實例，麼來你可以定義場景的內容。在場景上假如你單擊滑鼠按鍵且拖拉，則多個實例會被增加或移除。你會注意到，假如你在原來的實例上面置放(按滑鼠左鍵)一實例，原來的實例會不見，通常是你想要的，但是有時未必如此。實例的重迭而刪除可以由不勾選在左下方標示著Delete underlying的核取方塊來避免。使用右鍵滑鼠按鍵可執行其他三種動作：當你按<Ctrl>鍵並用右鍵滑鼠按鍵點選在一實例上，則在位置上的最底層實例會被帶到最上層來；按住<Alt>鍵將把最上層實例帶到最底層來─使用於更改重迭實例的層別順序；最後，當點選滑鼠右鍵按鍵時按住<Shift>鍵將移動位置上的所有實例，而不是只有最上層實例而已。

在標籤的左邊有四個有用的按鍵。當你單擊清除(Clear)按鍵則場景中所有的實例會被移除，當你單擊移動(Shift)按鍵你可以輸入以圖元為單位的數值來移動所有的實例，使用負數來讓它們往左或往上移動，例如，當你決定要擴大場景時，是十分有用的 (你也可以使用功可以在場景外面置放實例，有時十分有用)。最後二個按鍵(sort the instances)依X， Y座標來排列實例，當實例有部份重迭時，是非常有用的。

12.2場景設定

每個場景有一些設定,你可以由在設定標籤上點選來更改的。裏我們將只考慮最重要的一些。

每個場景都有一名字，最好取一個有意義的名字，也有一個字幕，當遊戲執行時字幕會顯示在視窗字幕。你可以設定場景的寬度和高度(以圖元為單位)，你也可以設定遊戲的速度，速度是每秒執行的步驟(step)數，速度越高，運動效果越平滑，但是你將需要一相當快速的電腦來執行。在設定標籤的底部你可以指定用於對齊物體的網格方塊尺寸，由點選標籤按鍵(Show)，你可以指定是否要顯示格線(你也可以在裏指定是否顯示背景，等等。有時會有用到來暫時隱藏場景的某一部分)。

12.3設定背景

用背景標籤你可以為場景設定背景圖像，事實上，你可以設定多重背景，標籤頁看起來如下：在標籤頁上面你會看到背景顏色，在上面用滑鼠點選來更改它。只有當你不使用一個背景圖像覆蓋整個場景時，背景顏色才有用，不然的話，你最好不要勾選描畫背景顏色(Draw background color)核取方塊標籤，因為將浪費時間。在上面你可看到8個背景的一覽表，你可以一一地定義它們，但通常你只須要定義一或兩個。要定義一個背景，第一步在列表中選擇它，下一步當場景開始時，勾選核取方塊Visible標籤，不然的話你將看不見它。背景名稱在定義後將成為粗體，現在在功能表中指定一背景圖像，你可以更改許多設定。

首先你可以指定背景圖像將會水平並排地或垂直並排地貼在場景上，你也可以指定場景中的背景位置(也會影響到貼磚塊組)，最後由給予它一水平的或垂直速度(每步驟多少圖元)你可以製作捲動背景。還有一核取方塊標示著前景圖像，當你勾選核取方塊，背景變成一前景，此前景將畫在每個東西上而非在每個東西後面，顯然若要使用樣的前景圖像，應是部份透明的。

# 發佈你的遊戲

好了，現在到了發佈你的遊戲了，當你的遊戲製作完成了，很明顯你要讓很多人來玩你的

遊戲，當然，你可以直接把你的gm6原始檔案直接給你的玩家，前提是他也裝有GM，但是一般來說不是你並不想這樣，一來不是每個人都有GM，而且還要安裝比較麻煩，二來你的

原始檔案是你的辛苦結晶，如果用在商業遊戲上的話那麼你的遊戲原始檔案更是不能隨意公佈。

因此你需要建立一個可單獨執行檔（exe檔），在GM中你可以很簡單的就創立你的遊

戲文件。，在檔功能表file中你選擇create executable項，系統將詢問你將要將遊戲保存的檔案名，輸入一個檔案名字，按OK系統將為你自動生成一個可執行的遊戲檔，你可以更改遊戲檔生成後可執行檔的圖示，在Global Game Settings. 設置選項中可以設置這個圖示。一旦你用上述的方法建立了你的遊戲檔後，你就可以把它發送給你的朋友或者玩家了，或者把它發到網路上等，你甚至可以出售使用GM製作的遊戲。當然這樣的話你的精靈圖形，音樂聲音等必須要是原創，或者在經得相關許可後發佈。一般來說你需要把你製作的遊戲檔打包成zip等壓縮格式檔，你可以使用很多免費的壓縮工具來實現，並且在壓縮包中放如讀我檔案等。到此為止，你得遊戲製作流程完成。我們的初級教程也就告一段落。