• 沒有找到結果。

第二章 文獻探討

第三節 電腦遊戲開發工具

壹、C/C++程式語言

C 語言的第一次發展在 1969 年到 1973 年之間。之所以被稱為「C」是因為 C 語言的很多特性是由一種更早的被稱為 B 語言的程式語言中發展而來。C 語言是 80 年代初開發的較高階程序性導向電腦語言,初期架構在 UNIX 系統上,而所謂 的較高階是跟機械語言及組合語言相比,因為它比這兩種語言更接近人類的英 語;而程序性導向所指的是程式撰寫者將所要執行的事情,依據電腦的特性一步

步分解條列成一篇 C 語言編譯器能看懂的文章,美其名是文章,實際上是向電腦 交辦事項,且此交辦事項必須交代得巨細靡遺,因電腦並不具智慧,所以程式設 計師必需當一般使用者與電腦的橋樑,考量所有會發生的狀況轉化為電腦能執行 的方式,如此電腦就能一步步的執行,也就是所謂的程序性。

C++是 80 年代末開始風行的電腦語言,它將 C 語言加入了物件導向的特性,

並更名為 C++,所以它包含了原先 C 語言所有的功能;而物件導向就是將程序性 導向內的副程式轉為零件化,應該是說原先程式是用來處理資料,而零件化是連 程式主體也是資料的一種,如此設計師在維護或擴充上可以更加的方便簡單。

C 語言的語法簡潔、執行效率高,又有跨平台的特性,因此成為許多程式設 計師的最愛,也是資訊科系必備的語言基礎。由於會用 C/C++的程式設計師很 多,因此許多新興的程式語言也都以 C/C++的語法為基礎。例如:網頁特效及手 機遊戲的 Java、網頁語法的 JavaScript、動態網頁技術的 PHP 以及 Flash 動畫 的控制語法 ActionScript,在語法上和 C/C++都很類似,因此只要學會了 C 語言,

要學會上述其他語言都很快就可以上手。

貳、Visual Basic程式語言

VB 是 Visual BASIC 的縮寫,是 BASIC 語言的一種。BASIC 語言在 1965 年 就已經發展出來,是一個適合初學者學習的語言。直到 90 年代 Windows 開始流 行,微軟公司(Microsoft)才發表適合在 Windows 環境下開發程式的程式語言,

即 Visual BASIC。

"Visual"指的是用來建立使用者所見的方法,也就是建立「圖形使用者介 面」,或稱為 GUI。"Basic"指的是 BASIC (初學者多用途符號指令碼,Beginners All-Purpose Symbolic Instruction Code)程式設計語言,在電腦運算史中,

這是最多程式設計人員所使用的語言。只要學習其中少數幾項功能,就可以建 立有用的程式。Visual BASIC 提供許多視覺化的工具來設計表單,讓程式設計 者可以在設計階段時就設計出未來執行時的畫面。目前 VB 最新的版本為 VB .NET,不過大多數的學校仍以 VB 6.0 教學。

參、Java程式語言

Java 程式語言是以 C++的語法關鍵字為基礎,由 Sun(昇陽)公司所提出,

C 語言的開發模式,是編寫.c 的 Source Code,再經由編譯器(Compiler)編譯成 Object Code。所謂 Object Code 指的是和硬體相關的機器指令,也就是說當我

們想要把 C 程式移植到不同的硬體時,必須要重新編譯(Compile),以產生新的 執行檔。除了需要重新編譯外,新系統是否具備應用程式所需的程式庫,目錄 (include)的檔案是否相容,也是程式能否在新機器上順利編譯和執行的條件之 一。

在實務上,為了讓 C 程式能在不同的 UNIX 版本上都能順利編譯,原作者往 往必須使用前置處理器的#ifdef 指令,判斷不同環境的適當寫法。如果想把在 UNIX 上開發的 C 程式移植到 Windows 上,則有用到專屬程式庫的部分(如 UNIX 的使用者介面可能用到 X Window 的 API,Windows 就沒有支援,必須一台一台灌 程式庫才行,很可能還要花錢買),就必須重寫才行。

解決此類問題的方法之一,是定義一種 Virtual Machine(虛擬機器),讓程 式語言編譯時不要翻成實體機器的指令,而是翻成 Virtual Machine 的目的碼。

Virtual Machine 一般是以軟體來模擬的,只要新的平台有 Virtual Machine,

則原始程式不用編譯(Compile),執行舊機器上已有的 Virtual Machine 目的碼,

就可以了。當然要達到完全不用重新編譯(Compile)就能執行的理想,還要配合 標準的程式庫才行。

Java 語言基於上述理念,定義了 Java Virtual Machine,它所用的指令稱 為 byte code。使用 Virtual Machine 的缺點之一,是執行的速度較慢,代價是 開發的速度變快了。Java 不同於一般的編譯語言和直譯語言。它首先將原始碼 編譯成位元組碼,然後依賴各種不同平台上的虛擬機器來解釋執行位元組碼,從 而實作了「一次編譯、到處執行」的跨平台特性,所謂的跨平台,指的就是 Java 程式可以在不重新編譯的情況下,直接於不同的作業系統上運作,所以目前在最 夯的平板電腦(Android 系統)中,絕大多數的 app 都是由 Java 程式語言所寫 成的。

此外 JVM 的技術不斷進步,諸如 Just In Time(JIT) Compiler,或 HotSpot 等技術都可以讓 Java 程式以非常接近原生碼(Native Code)的速度執行。

肆、RPG 遊戲製作大師

RPG 製作大師是一款 RPG(角色扮演)的製作工具,宗旨為不懂程式編輯的一 般玩家也能做出 RPG(角色扮演)遊戲。最先由日本的 ASCII 公司於超級任天堂主 機上開發,之後轉變為 Enterbrain 公司繼承開發。RPG 製作大師系列最先發行 於日本,隨後被翻譯並發行於台灣、美國、南韓、中國大陸。

RPG 製作大師是一款讓使用者可以隨心所欲地製作角色扮演遊戲的軟體。大 部分的版本均包含基於圖塊元件的地圖編輯器,以簡單指令取代程式語言的事件

編輯器,以及戰鬥編輯器。所有版本均內建地圖元件、角色圖片以及事件等可用 於製作遊戲。

比較特別的是,個人電腦(PC)用的 RPG 製作大師系列版本可以讓使用者自行 新增地圖元件與角色圖片,並加入想要的任何圖形。其他遊戲也有內附強大的遊 戲編輯器,但最大的不同是 RPG 製作大師可製作獨立執行的遊戲,並可直接執行 在使用平台上。

伍、Game Maker

Game Maker,原先它是由荷蘭 University of Utrecht 大學的 Mark Overmars 教授因教學需要而開發。1999 年 11 月,Mark Overmars 教授將它正式發行,2009 年 12 月,第 8 版改由新創立的公司 YoYo Games 發行。這套軟體的特色是容易入 手,不需具有程式設計的經驗也可以進行電腦遊戲的開發。它不同於一般 C/C++、Visual Basic、Java 等遊戲設計語言,使用較艱深的資料結構及複雜的 程式語法,Game Maker 將複雜的遊戲功能融於簡單的操作方式,使用人性化的 介面,遊戲設計者只要利用滑鼠點選介面上的功能選項,就能輕鬆製作一個中型 以下的遊戲。同時,對於功力較高的人而言,它所提供的內建語言(稱為 Game Maker Language,GML)又可用以開發出相當複雜的軟體。因此,不同功力與經 驗的人,都可以找到發揮的空間。

Game Maker 主要的功能系支援 2D/2.5D 或是擬似 3D 遊戲的開發。2D 遊 戲,指的是只有平面座標的遊戲。再加上深度、前後的控制,便稱為 2.5D。而 所謂擬似 3D,指的是以 2D 的遊戲架構,而以繪圖的技術讓畫面呈現出類似 3D 的效果來。許多遊戲雖然像是 3D 的技術,但是採用擬似 3D 的技術其實便可以 做到相當的程度。

陸、Flash與ActionScript

Adobe 公司研發的Flash平台軟體出現的時間沒有幾年,但已經成為動畫製 作工具、網站創建程式及開發應用軟體的程式語言,現在更成為遊戲開發平台。

因此,我們要探究以 ActionScript 編程語言製作遊戲為本研究的研究動機。

一、ActionScript 概述

ActionScript 前身出現於 Flash Player 4 中,用於控制 Flash 內容,並

進行簡單的互動性腳本編寫。它並不複雜,其語法和語意與 ECMAScript 也不相 同。ActionScript 1 是在 Flash 5 的時代誕生,這時的版本就已經具備了 ECMAScript 標準的語法格式和語義解釋。隨著 Flash Player 5/6 的版本更新,

越來越多的 ECMA 語法與語義被納入到 ActionScript 1 的API 當中去。但是核 心語言的編譯處裡及表現方式都是延續了 Flash 5 的 ActionScript 1 的標準 甚至於到了後來的 Flash7,它裡面的 ActionScript 1 的核心解釋機制仍然與 FlashPlayer 5 有著很多相同之處。

ActionScript 2 可以看成是 ActionScript 1 的物件導向程式設計包裝 版。ActionScript 2 的程式碼編寫引入了物件導向程式設計的方式,有良好的 型別宣告,而且分離了執行時和編譯時的例外處裡。但是,ActionScript 2 只 是在編譯階段支援這些 OOP 語法,在執行時仍然使用的是 ActionScript 1 的 模式。因此, ActionScipr 2 和 ActionScript 1 在性能上不會有本質的區別。

雖然它們在格式上遵從了 ECMA4 的語言方案,但是並不真正相容 ECMAScript 標準。

Flash Player 和 ActionScript 的開發團隊體認到發展現有引擎,將有著 太多限制而無法繼續研發新功能。經過這些可敬的人們長期不斷的努力後,Flash Player 的歷史轉戾點到來了。Flash Player9 版本在2006 年首次引入了

ActionScript 3 和新一代的 ActionScript 引擎- ActionScript Virutal Machine 2(AVM2),AVM2 是一個新的、高度最佳化虛擬機,顯著超越了 AVM1 可 能達到的性能。ActionScript 3 基本上是 ActionScript 引擎的完全覆寫,在 AVM2 中執行可達到前所未有的高效率和高性能,執行速度最多可比原有

ActionScript 1/2 程式碼快 10 倍。

二、ActionScript 3.0 與其它程式語言的差異

物件是 ActionScript 3 語言的核心要素,也是基本的建構單元。所宣告 的每一個變數、所撰寫的每一個函數,以及所建立的每一個類別實體都是物件;

可將 ActionScript 3 程式視為一組執行工作的物件,這些物件會回應事件,並 且彼此進行通訊。熟悉 Java 或 C++ 物件導向程式設計(OOP)的程式設計人員可 能會將物件視為模組,其中包含兩種成員:儲存在成員變數或屬性的資料,以及 可透過方法存取的行為指令。ECMAScript 第4 版草稿是 ActionScript 3 所依 據的標準,其定義物件的方式與此類似,但稍有差異。在 ECMAScript 草稿中,

物件只是屬性的集合;這些屬性是容器,不但能保存資料,也能保存函數或其它 物件。若函數是以這種方式附加到物件上,則稱為方法。

ActionScript 中的類別與 Java 或 C++ 中的類別之間有一項微妙的差

異,就是在 ActionScript 中, 類別不僅只是抽象實體。ActionScript 類別是

異,就是在 ActionScript 中, 類別不僅只是抽象實體。ActionScript 類別是