game maker n.
Download
Skip this Video
Loading SlideShow in 5 Seconds..
Game Maker PowerPoint Presentation
Download Presentation
Game Maker

Loading in 2 Seconds...

play fullscreen
1 / 57

Game Maker - PowerPoint PPT Presentation


  • 477 Views
  • Uploaded on

Game Maker. 原始程式撰寫 Mark Overmars. Game maker 簡介. Game Maker 是一套容易使用的程式,你可以用來創造你自己的電腦遊戲,它並內建了程式語言 GML 。 它是為降低遊戲設計的難度而寫,不需要寫程式,用簡單直覺的拖放滑鼠介面立即設計自己的遊戲。 你可以輸入或設計影像、子圖形(會動的影像)、聲音並使用他們。你可以很容易地定義遊戲中的物件以及他們的行為表現,你可以設計有捲動背景的華麗場景。萬一你想要對程式全面控管,遊戲製作者中內建了程式語言,讓你可以對遊戲當中的所有元件做控制。. Game maker 簡介.

loader
I am the owner, or an agent authorized to act on behalf of the owner, of the copyrighted work described.
capcha
Download Presentation

PowerPoint Slideshow about 'Game Maker' - nate


An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -
Presentation Transcript
game maker

Game Maker

原始程式撰寫 Mark Overmars

game maker1
Game maker簡介

Game Maker 是一套容易使用的程式,你可以用來創造你自己的電腦遊戲,它並內建了程式語言GML。

它是為降低遊戲設計的難度而寫,不需要寫程式,用簡單直覺的拖放滑鼠介面立即設計自己的遊戲。

你可以輸入或設計影像、子圖形(會動的影像)、聲音並使用他們。你可以很容易地定義遊戲中的物件以及他們的行為表現,你可以設計有捲動背景的華麗場景。萬一你想要對程式全面控管,遊戲製作者中內建了程式語言,讓你可以對遊戲當中的所有元件做控制。

game maker2
Game maker簡介

遊戲製作者著眼於2-D遊戲的設計,沒有3-D的效果,但是不要失望,許多經典遊戲,如世紀帝國等都是利用2-D動畫特效,使他們看起來像3-D,設計2-D遊戲比3-D要來的簡單、快速。

也許遊戲製作者最棒的部分是免費,你可以沒有限制的創造遊戲,沒有糾纏不休的付費螢幕畫面,喜歡的話甚至你可以賣遊戲,詳細情形請看許可協議文件。

game maker3
Game maker簡介

Game Maker was written by Mark Overmars. He is a full professor at the Institute of Information and Computing Sciences at Utrecht University in the Netherlands. Here he heads the Center for Advanced Gaming and Simulation, that performs research in areas such as 3D modelling, animation, virtual characters, simulation, human-computer interaction, adaptive game play, and artistic aspects of games.

The first public release was version 1.1. It was released on november 15, 1999.

game maker4
Game maker簡介

Game Maker is written in Delphi (version 7 at the moment). Almost all the code was written by Mark Overmars except for a few freeware components to read different image formats and to compress the data.

The Game Maker source code is over 40.000 lines of code. The source code for the runner part is similar in size.

The maker part is heavily based on the Windows API. The runner part is based on DirectX (version 8.0 at the moment to keep it compatible with most older computers). Again, this makes it difficult to port it to other platforms.

delphi
關於Delphi

Borland/Inprise 公司的 Delphi 是一個組合了現代程式語言、整合式開發環境(IDE)和視覺化元件庫(VCL )等功能的強大程式語言。Delphi 的 IDE 很容易為任何使用過相似工具的人所熟悉。例如,你可以在一個所見即所得的表單編輯器中簡單地進行拖放操作,來視覺化地設計一個視窗。更重要的是,由於 Delphi 程式語言的強大和彈性,其架構是物件導向的、可擴展的及可自訂的。

Delphi 的核心是 Delphi Pascal 程式語言。它具有一個現代物件導向語言的所有能力,同時保持了 Pascal 的優雅和簡易。

Delphi 一開始就是作為一個 Windows 程式語言和環境的,而且很多 Delphi 程式設計師認為 Delphi 是所有 Windows 開發工具之中最好的。

slide7
安裝

執行gmaker.exe,安裝8.1版主程式。(2012)

接下來安裝res01.exe、 res02.exe 、 res03.exe 及res04.exe,以增加額外的子圖組、背景及聲音。

rooms objects
場景(Rooms)和物件(Objects)

遊戲製作者設計的遊戲發生在一個或多個場景中(場景是平的,不是3-D立體,但可以包含立體圖樣)。

在這些場景中你可以置放被程式定義的物件,典型的物件有牆壁、移動的球、主角、怪獸等等。有些物件,比如牆壁,固定在那裏,不用做任何事情。

其他的物件,比如主角,會來回移動以及根據玩家由鍵盤、滑鼠或操縱桿輸入的資料來作反應。舉例而言,當主角遇到怪獸可能會死掉。物件是遊戲製作者設計遊戲時最重要的元素。

sprites
子圖組(Sprites)

所有的物件需要用可見的圖像呈現在螢幕上,這些圖像稱為子圖組。

子圖組通常不只一個而是由多個圖像組成。這樣他看來像是主角在走路,球在滾動,爆炸的太空船等等。

遊戲過程中經由特別的物件可以變換子圖組(所以當主角走到左邊與走到右邊看起來可以是不一樣的),你可以用遊戲製作者設計子圖組,或由檔案中讀取。

events
事件(Events)

有一些事情會發生在物件上,稱之為事件。當事件發生時,物件可以有一些動作(Actions)。遊戲進行時大量的事件伴隨發生,以致於你可以讓物件有不同的動作。

舉例來說,當物件被創造(更精確的說,當物件圖例被創造時,一個物件可以有許多不同的圖例組成)時產生了創造事件。舉例來說,一個球物件被創造時可以設定一些運動動作,比如開始運動。當兩個物件相遇時產生了碰撞事件,在這一種情況下你可以讓球停止或轉向,並加入音效。當玩家按了一個按鍵,產生了鍵盤事件,物件可以有適當的動作,像是朝指示的方向移動。每一個物件可由不同的事件帶出動作,用這一種方式來定義物件的行為表現。

slide11
下列的東西(通常稱為資源)扮演了決定性的角色

物件:遊戲當中的實體。

場景:物件存在的區域(關卡)。

子圖組:用來表現物件的影像。

聲音:當作背景音樂或是某種影響而被用於遊戲中。

背景:在場景中使用影像當成背景。

進階模式中的資源:paths, scripts, fonts, and time lines。scripts是一段程式碼,能延伸遊戲製作者的可能性。

slide13
例子一:反彈球

若干顆球在一密閉房間內各自任意移動,球碰到牆壁或別的球時會反彈,玩家用滑鼠點某到顆球時,可得一分,並且此球跳至隨機位置。

需要兩個不同物件:球及牆壁。另外也需要兩個不同子圖組:一個給球物件,一個給牆壁物件。

接著在滑鼠成功點選到球時發出某種聲音。此遊戲中僅使用一個場景。

slide14
反彈球

(1)做牆壁與球的子圖組,從增加(Add)選單中選增加子圖組(Add Sprite)

(2)製作物件碰撞的聲音,從增加(Add)選單中選增加聲音(Add Sound)

(3)下一步是創造兩個物件,先做牆壁物件。同樣從選擇增加物件(Add Object),會出現一個較複雜的表單。表單左邊是有關於物件的整體資訊,給物件取一個適當的名字(填在Name:)如 “wall”,並從Sprite下拉式選單選擇正確的代表wall的子圖組。由於牆壁是實心,在核取方塊Solid上打勾。(4)再創造一個新物件(Add Object),稱它"ball",給它ball子圖組。

slide16
反彈球
  • (6)定義場景。從增加選單中增加一個新的room場景到這遊戲中。在視窗右邊你會看到空著的場景。在左邊有三種功能選單,分別是objects(物件), setting(設定)與 backgrounds(背景)。他們的功用如下。
    • objects(物件) :
      • 左下方用彈出選單來選擇物件。
      • 在場景中,用按滑鼠左鍵的方式把物件圖例放在那裡。你能用滑鼠右鍵移除此圖例。+ <shift> 多物件, +<ctrl> 移動或複製物件
      • 在場景周圍,使用牆壁物件做成邊界。最後,在場景中放置2個球物件。
slide17
反彈球
    • setting(設定):可改變的場景屬性,像是width和height(寬度和高度)。
    • backgrounds(背景):也可在左側中央處選擇漂亮的背景圖
    • SnapX(水平格線的距離),SnapY(垂直格線的距離) ,需配合子圖組的大小。
  • (7)按下執行(Run game)按鍵。如果正確的話,可以看到球開始四處移動。你能按下<Esc>鍵停止遊戲。
slide18

創造事件

滑鼠事件

鍵盤事件

摧毀事件

其他事件

碰撞事件

計時事件

繪圖事件

離鍵事件

步進事件

按鍵事件

常用事件與動作圖示

事件

other: 其他事件

slide19

摧毀物件實例

建立物件實例

重玩此場景

設定移動方向

反彈

向某點移動

改變物件實例

改變子圖組

到另一場景

跳躍至預定位置

跳躍至任意位置

移動到接觸點

播放聲音

停止播放聲音

到前一場景

反轉水平方向

反轉垂直方向

設定運動方向速度

建立物件實例(含速度與方向設定)

摧毀某位置上的物件實例

到下一場景

設定垂直速度

設定垂直速度

踫躍至起始位置

Move actions

Main actions, set 1

slide20

重新開始

設定得分

假如得分為某數

結束遊戲

設定時間軸位置

以圖像顯示生命數

設定計時器

顯示得分

清除高分表

顯示訊息

設定健康值

顯示遊戲資訊

儲存遊戲設定

顯示高分表

載入遊戲設定

設定生命數

設定時間軸

假如健康值為某數

假如生命數為某數

暫停

顯示生命數

顯示健康值條柱

Main actions, set 2

Score

slide21

假如條件式成立

假如滑鼠鍵被按

否則

假如在某位置無碰撞發生

假如在某位置發生碰撞

區塊開始

假如在某位置有一物件存在

假如某物件實例的數目為某數時

區塊結束

假如骰子的點數為1時

假如使用者回答是

重覆下一動作

離開目前的事件

If instance is aligned with grid

Call the inherited event

Execute a script

Execute a piece of code

Set the value of a variable

If a variable has a value

Draw the value of a variable

Comment

Control

Code & Variables

slide22

Draw a sprite image

Draw a background image

Draw a rectangle

Draw an ellipse

Draw a line

Draw a text

Set the colors

Set a font for drawing text

Change fullscreen mode

Draw

scripts
Scripts
  • 在GM中Scripts等同於procedures和 functions.
  • 以下的scripts等同於procedures:

Some_script (arg0, arg1, … , arg9);

//And declaring that script:

{

for (x = argument0; x > argument1; x += argument2) { … }

scripts1
Scripts
  • 以下是functions,有傳回值:

Ans = some_other_script (arg0, arg1, … , arg9);

//And in the script itself:

{

x = argument0 * argument1;

return x;

}

the game maker language gml
The Game Maker Language (GML)

提供將近1000個函式及變數來控制遊戲的進行。

有四個地方可以使用程式:定義Scripts、在事件中設定一個code action、在整個場景創造時、在動作中設定一個數值。

全部的資源(子圖組,物件,聲音,等等)命名時,名稱必須以字母開始並僅包括字母,數字和底線‘_’符號的組合。禁用一些有特別意義的字像是本身(self)、其他(other)、整體(all)、global或所有的資源,以及一些關鍵字。

variables
Variables變數

就像任何一個程式語言,GML 包含變數,變數能貯存實數數值或者是字串,變數不需要宣告,有許多內建的變數。

全域變數,如mouse_x 和mouse_y 能夠指定目前滑鼠位置。

區域變數,針對我們執行這程式時的物件圖例,如x 和y 能夠指定這目前這圖例的位置。一變數有一名稱,這名稱必須以一字母開始並只能包含字母,數字,和底線符號'_'。(最大的長度是64個符號) 。當你使用一個新的變數時,他是針對目前圖例(區域性的),並不被程式中其他的圖例所知道(甚至物件相同時也不知道)

assignments
Assignments

指定一個式子的數值到一個變數中,格式如下:<variable>=<expression>;

設計者能使用+=增加它, 使用-=減去它, 使用*=乘它或使用/=除它

expressions
Expressions

運算式可以是實數(例如3.4), 在單引號或雙引號之間的字串(例如‘hello’或“hello ”)或更複雜的運算。以下面的二進位操作模式運作(依照優先順序安排):

&&、||:結合布林(Boolean)數值(&&代表”和”,|| 代表”或”)。

<、<=、==、!=、>、>=:比較,結果是真(1)或假(0)。

+、-:加、減。*、/:乘,除。div、mod:整數除、和餘數。

expressions1
Expressions

{

x = 23;

color = $FFAA00;

str = 'hello world';

y += 5;

x *= y;

x = y << 2;

x = 23*((2+4) / sin(y));

str = 'hello' + " world";

b = (x < 5) && !(x==2 || x==4);

}

extra variables
Extra variables
  • 在物件名稱後輸入一圓點,並接著這變數名稱,可以在其他物件中設定和讀取該變數。如:ball.speed=0;
  • 創造整體變數,該變數對全部物件圖例是可見的,在變數前輸入”global”以及一圓點。

{

if (global.doit)

{

// do something

global.doit = false;

}

}

addressing variables in other instances
Addressing variables in other instances
  • self:目前執行動作時的圖例。
  • other:在一碰撞事件中涉及的其他圖例。
  • all:全部圖例。
  • noone:根本沒有圖例
  • global:整體,不是指單一圖例,而是一個儲存整體變數的容器。

other.sprite_index = sprite5;

all.speed = 0;

global.message = 'A good result';

global.x = ball.x;

slide33
陣列
  • 在GML你能使用1維和2維的陣列,每個陣列從索引0起算。
  • 不可使用負的索引。系統的限制可容許每個陣列中最多有32000個索引,總計不超過1000000的大小,寫成下面形式:

{

a[0] = 1;

i = 1;

while (i < 10) { a[i] = 2*a[i-1]; i += 1;}

b[4,6] = 32;

}

if statement
If statement
  • if (<expression>) <statement>
  • if (<expression>) <statement> else <statement>
  • 如果x座標小於200,就往右移4點;否則往左移4點

{

if (x<200) {x += 4} else {x -= 4};

}

repeat statement
Repeat statement
  • 做出五個球物件在隨機位置

{

repeat (5) instance_create(random(400),random(400),ball);

}

while statement
While statement
  • 在一自由(沒有其他物件)位置上放置目前物件。這個位置如果不是空的,就把它搬走。

{

while (!place_free(x,y))

{

x = random(room_width);

y = random(room_height);

}

}

do statement
Do statement
  • 把物件搬到空的地方

{

do

{

x = random(room_width);

y = random(room_height);

}

until (place_free(x,y))

}

for statement
For statement
  • 初始化一長度為10,數值為1到10的陣列。

{

for (i=0; i<=9; i+=1) array[i] = i+1;

}

switch statement
Switch statement
  • 按鍵盤左鍵或數字鍵4,就往左移動;反之亦然。

switch (keyboard_key)

{

case vk_left:

case vk_numpad4:

x -= 4; break;

case vk_right:

case vk_numpad6:

x += 4; break;

}

slide40

break:跳離迴圈

continue:以下一個值繼續

exit:結束整個程式

functions
Functions

函式名稱後面跟隨著零個或數個參數(在括號之間),由逗點分開。

<function>(<arg1>,<arg2>,…)

不可以把函式放在assignment的左邊。

以下的寫法不可以使用instance_nearest(x,y,obj).speed = 0. (錯誤)

必須要這樣寫才可以! (instance_nearest(x,y,obj)).speed = 0. (正確)

靠近某位置的物件速度為0

with constructions
With constructions
  • 如何將全部的球向下搬移8個像素?

ball.y = ball.y + 8; (X)

ball.y += 8; (X)

這樣的話右邊獲得第一個球的y座標數值並將它加上8。再來這新數值(加上8的數)被設定到全部球的y座標。結果是全部的球都獲得這相同的y座標。

with (ball) y += 8; (O)

  • 將所有的球移至隨機位置

with (ball) {

x = random(room_width);

y = random(room_height);

}

with constructions1
With constructions
  • 摧毀所有球物件

with (ball) instance_destroy();

  • 摧毀靠近爆炸點50pixel的所有物件

with (all)

{if (distance_to_object(other) < 50) instance_destroy();

}

  • 非常powerful吧!
comment
Comment註解

每行程式在”//”之後的部分將不會被讀取

多行註解: / * 註解

註解 */

constants
Constants常數

true Equal to 1

false Equal to 0.

pi Equal to 3.1415.

slide46
常用函式

random(x):在0和x之間返回一任意的實數,這數通常比x小。

hspeed:水平速度。 hspeed為正值表示一向右的運動, hspeed為負值表示一向左的運動。

vspeed:垂直速度。 vspeed是正值表示向下運動,vspeed為負值的是向上運動 。

direction:目前的方向(0-360,逆時針方向,0是向右邊)。

speed:目前的速度(像素每步驟)。

slide47
常用函式

place_free(x,y):傳回是否這圖例被放置在位置(x,y)時是免於碰撞的。通常用於真正地移動到新位置之前的檢查。

place_empty(x,y) :傳回是否這圖例被放置在位置(x,y)時沒有碰到其他東西,此函式也將非實心的圖例考慮在內。

instance_create(x,y,obj) :在位置(x,y)上創造一obj的圖例,此函式傳回新圖例的ID。

instance_destroy():摧毀目前的圖例。

slide48
常用函式

sleep(numb):休眠numb時間(以milliseconds為單位)。

mouse_x*:滑鼠的X-座標,不能被改變。

mouse_y*:滑鼠的Y-座標,不能被改變。

mouse_button:目前壓下的滑鼠按鈕,有下面的值:mb_none,mb_any,mb_left,mb_middle,或mb_right。

keyboard_lastkey最後壓下按鍵的按鍵碼。

slide49
常用函式
  • 假設你有一個使用者能以箭號按鍵控制的物件,你可以把下面一段程式碼放在這物件的步驟事件中:

{

if (keyboard_check(vk_left)) x -= 4;

if (keyboard_check(vk_right)) x += 4;

if (keyboard_check(vk_up)) y -= 4;

if (keyboard_check(vk_down)) y += 4;

}

slide50
常用函式

sprite_width* :指定這這子圖組的寬度,這數值不能被改變。

sprite_height* :指定這子圖組的高度,這數值不能被改變。

sprite_xoffset*: 指定這子圖組水平的偏移量,依照在子圖組性質中的定義。

sprite_yoffset*指定這子圖組垂直的偏移量 。

slide51
常用函式

room_width* :場景的寬度(像素)。

room_height* :場景的高度(像素)。

slide52
常用函式

depth:正常的影像,是以圖例創造的先後順序被描畫。預設值是0,可為負數,背景的數值要最大,才能在最底下。

sound_play(index):播放指定的聲音一次。

sound_loop(index):連續播放指定聲音。

sound_stop(index):停止指定的聲音。

sound_stop_all():停止全部的聲音。

slide53
補充說明

可製作多人連線遊戲:但僅限註冊版,支援IPX, TCP/IP, Modem, and Serial。

numberfacts gm6
數學加法練習NumberFacts.gm6

for (go=0;go<3;go+=1)

{

x=round(random(100));

y=round(random(100));

correct = x+y;

// get_integer(str,def)

// pops up a dialogue box and returns the integer entered

answer=get_integer('Add '+string(x) + ' and ' +string(y),'');

if (answer==correct)

show_message('Well done');

else{

while (answer!=correct)

{

show_message('try again');

answer=get_integer('Add '+string(x) + ' and ' +string(y),'');

if (answer==correct)

show_message('Well done');

}

}

}

slide55

一些功能的練習

利用alarm跟draw事件實作倒數100。countUp_countDown.gm6

利用執行一小段程式碼實作讓四隻小鬼跟著球跑。followTheLeader.gm6

一次只能推動一顆石頭的小鬼。pushRock.gm6

射擊遊戲實作Paths及改變子圖組。invadersVersion2.gm6

slide56
進階範例介紹

彈珠台

小精靈(內建)

1945 (內建)

街頭賽車(內建)很複雜的設計 >-<

slide57
參考資料

電腦遊戲製作教學(無日期)。民96年1月10日,取自: http://140.126.110.19/%7Eyuat/GameMaker/Book/contents.htm

Mark Overmars(2007).Game Maker Pages.Retrieved January 10, 2007, from the World Wide Web:http://www.gamemaker.nl/

Bill Kerr(2007). Free Game Maker Educational Resources.Retrieved January 10, 2007, from the World Wide Web: http://www.users.on.net/~billkerr/g/int.htm

林東和(民93 )。遊戲製作:使用Game Maker。臺北市:碁峰資訊。