Game Maker Mark Overmars Game maker Game Maker

  • Slides: 56
Download presentation
Game Maker 原始程式撰寫 作者Mark Overmars

Game Maker 原始程式撰寫 作者Mark Overmars

Game maker簡介 Game Maker was written by Mark Overmars. He is a full professor

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 3 D modelling, animation, virtual characters, simulation, humancomputer 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 maker簡介 Game Maker is written in Delphi (version 7 at the moment). Almost

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 Direct. X (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.

常用事件與動作圖示 創造事件 滑鼠事件 鍵盤事件 事件 摧毀事件 其他事件 碰撞事件 計時事件 繪圖事件 離鍵事件 (Event) 步進事件 按鍵事件

常用事件與動作圖示 創造事件 滑鼠事件 鍵盤事件 事件 摧毀事件 其他事件 碰撞事件 計時事件 繪圖事件 離鍵事件 (Event) 步進事件 按鍵事件 other   Outside room Intersect Boundary Game start Game end Room start Room end No more lives No more health Animation end End of path user defined  

Control 假如條件式成立 假如在某位置無碰撞 發生 假如在某位置有一物 件存在   假如骰子的點數為 1時 離開目前的事件 假如滑鼠鍵被按 否則 假如在某位置發生碰撞 區塊開始

Control 假如條件式成立 假如在某位置無碰撞 發生 假如在某位置有一物 件存在   假如骰子的點數為 1時 離開目前的事件 假如滑鼠鍵被按 否則 假如在某位置發生碰撞 區塊開始 假如某物件實例的數目 為某數時 區塊結束 假如使用者回答是 If instance is aligned with grid 重覆下一動作   Call the inherited event Code & Variables Execute a script Set the value of a variable Draw the value of a variable Execute a piece of code If a variable has a value Comment

Draw a sprite image Draw a background image Draw a rectangle Draw an ellipse

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  

Scripts 在GM中Scripts等同於procedures和 functions. 以下的scripts等同於procedures: Some_script (arg 0, arg 1, … , arg 9); //And

Scripts 在GM中Scripts等同於procedures和 functions. 以下的scripts等同於procedures: Some_script (arg 0, arg 1, … , arg 9); //And declaring that script: { for (x = argument 0; x > argument 1; x += argument 2) { … }

Scripts 以下是functions,有傳回值: Ans = some_other_script (arg 0, arg 1, … , arg 9); //And

Scripts 以下是functions,有傳回值: Ans = some_other_script (arg 0, arg 1, … , arg 9); //And in the script itself: { x = argument 0 * argument 1; … return x; }

Expressions { x = 23; color = $FFAA 00; str = 'hello world'; y

Expressions { x = 23; color = $FFAA 00; 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); }

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

Addressing variables in other instances self:目前執行動作時的圖例。 other:在一碰撞事件中涉及的其他圖例。 all:全部圖例。 none:根本沒有圖例 global:整體,不是指單一圖例,而是一個儲存整 體變數的容器。 other. sprite_index = sprite 5; all. speed = 0; global. message = 'A good result'; global. x = ball. x;

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

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

Repeat statement 做出五個球物件在隨機位置 { repeat (5) instance_create(random(400), ball); }

Repeat statement 做出五個球物件在隨機位置 { repeat (5) instance_create(random(400), ball); }

Do statement 把物件搬到空的地方 { do { x = random(room_width); y = random(room_height); } until

Do statement 把物件搬到空的地方 { do { x = random(room_width); y = random(room_height); } until (place_free(x, y)) }

Switch statement 按鍵盤左鍵或數字鍵 4,就往左移動;反之亦然。 switch (keyboard_key) { case vk_left: case vk_numpad 4: x -=

Switch statement 按鍵盤左鍵或數字鍵 4,就往左移動;反之亦然。 switch (keyboard_key) { case vk_left: case vk_numpad 4: x -= 4; break; case vk_right: case vk_numpad 6: x += 4; break; }

With constructions 摧毀所有球物件 with (ball) instance_destroy(); 摧毀靠近爆炸點 50 pixel的所有物件 with (all) {if (distance_to_object(other) <

With constructions 摧毀所有球物件 with (ball) instance_destroy(); 摧毀靠近爆炸點 50 pixel的所有物件 with (all) {if (distance_to_object(other) < 50) instance_destroy(); } 非常powerful吧!

Constants常數 true Equal to 1 false Equal to 0. pi Equal to 3. 1415.

Constants常數 true Equal to 1 false Equal to 0. pi Equal to 3. 1415.

數學加法練習Number. Facts. gm 6 for (go=0; go<3; go+=1) { x=round(random(100)); y=round(random(100)); correct = x+y;

數學加法練習Number. Facts. gm 6 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'); } }

參考資料 電腦遊戲製作教學(無日期)。民 96年 1月10日,取 自: http: //140. 126. 110. 19/%7 Eyuat/Game. Maker/Book/conte nts. htm

參考資料 電腦遊戲製作教學(無日期)。民 96年 1月10日,取 自: http: //140. 126. 110. 19/%7 Eyuat/Game. Maker/Book/conte nts. 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。臺 北市:碁峰資訊。