新聞中心
要在三天內(nèi)打造一個(gè)可玩的游戲,你需要一些快速而穩(wěn)定的好工具。

創(chuàng)新互聯(lián)是一家專業(yè)提供日土企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站建設(shè)、網(wǎng)站制作、H5開發(fā)、小程序制作等業(yè)務(wù)。10年已為日土眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進(jìn)行中。
在十月初,我們的俱樂部馬歇爾大學(xué)的 Geeks and Gadgets 參加了首次 Open Jam,這是一個(gè)慶祝最佳開源工具的游戲 Jam。游戲 Jam 是一種活動(dòng),參與者以團(tuán)隊(duì)協(xié)作的方式來開發(fā)有趣的計(jì)算機(jī)游戲。Jam 一般都很短,僅有三天,并且非常累。Opensource.com 在八月下旬發(fā)布了 Open Jam 活動(dòng),足有 45 支游戲 進(jìn)入到了競賽中。
我們的俱樂部希望在我們的項(xiàng)目中創(chuàng)建和使用開放源碼軟件,所以 Open Jam 自然是我們想要參與的 Jam 了。我們提交的游戲是一個(gè)實(shí)驗(yàn)性的游戲,名為 Mark My Words。我們使用了多種自由和開放源碼 (FOSS) 工具來開發(fā)它;在這篇文章中,我們將討論一些我們使用的工具和我們注意到可能有潛在阻礙的地方。
音頻工具
MilkyTracker
MilkyTracker 是一個(gè)可用于編曲老式視頻游戲中的音樂的軟件包。它是一種音樂聲道器music tracker,是一個(gè)強(qiáng)大的 MOD 和 XM 文件創(chuàng)建器,帶有基于特征網(wǎng)格的模式編輯器。在我們的游戲中,我們使用它來編曲大多數(shù)的音樂片段。這個(gè)程序最好的地方是,它比我們其它的大多數(shù)工具消耗更少的硬盤空間和內(nèi)存。雖然如此,MilkyTracker 仍然非常強(qiáng)大。
其用戶界面需要一會(huì)來習(xí)慣,這里有對(duì)一些想試用 MilkyTracker 的音樂家的一些提示:
- 轉(zhuǎn)到 “Config > Misc.” ,設(shè)置編輯模式的控制風(fēng)格為 “MilkyTracker”,這將給你提供幾乎全部現(xiàn)代鍵盤快捷方式。
- 用
Ctrl+Z撤銷 - 用
Ctrl+Y重做 - 用空格鍵切換模式編輯方式
- 用退格鍵刪除先前的音符
- 用插入鍵來插入一行
- 默認(rèn)情況下,一個(gè)音符將持續(xù)作用,直到它在該頻道上被替換。你可以明確地結(jié)束一個(gè)音符,通過使用一個(gè)反引號(hào)(`)鍵來插入一個(gè) KeyOff 音符
- 在你開始譜寫樂曲前,你需要?jiǎng)?chuàng)建或查找采樣。我們建議在諸如 Freesound 或 ccMixter 這樣的網(wǎng)站上查找采用 Creative Commons 協(xié)議的采樣,
另外,把 MilkyTracker 文檔頁面 放在手邊。它含有數(shù)不清的教程和手冊(cè)的鏈接。一個(gè)好的起點(diǎn)是在該項(xiàng)目 wiki 上的 MilkyTracker 指南。
LMMS
我們的兩個(gè)音樂家使用多用途的現(xiàn)代音樂創(chuàng)建工具 LMMS。它帶有一個(gè)絕妙的采樣和效果庫,以及多種多樣的靈活的插件來生成獨(dú)特的聲音。LMMS 的學(xué)習(xí)曲線令人吃驚的低,在某種程度上是因?yàn)槠浜糜玫墓?jié)拍/低音線編輯器。
我們對(duì)于想試試 LMMS 的音樂家有一個(gè)建議:使用插件。對(duì)于 chiptune式音樂,我們推薦 sfxr、BitInvader 和 FreeBoy。對(duì)于其它風(fēng)格,ZynAddSubFX 是一個(gè)好的選擇。它配備了各種合成儀器,可以根據(jù)您的需要進(jìn)行更改。
圖形工具
Tiled
在開放源碼游戲開發(fā)中,Tiled 是一個(gè)流行的貼片地圖編輯器。我們使用它為來為我們?cè)谟螒驁鼍爸薪M合連續(xù)的、復(fù)古式的背景。
Tiled 可以導(dǎo)出地圖為 XML、JSON 或普通的圖片。它是穩(wěn)定的、跨平臺(tái)的。
Tiled 的功能之一允許你在地圖上定義和放置隨意的游戲?qū)ο?,例如硬幣和提升道具,但?jam 期間我們沒有使用它。你需要做的全部是以貼片集的方式加載對(duì)象的圖像,然后使用“插入平鋪”來放置它們。
一般來說,對(duì)于需要一個(gè)地圖編輯器的項(xiàng)目,Tiled 是我們所推薦的軟件中一個(gè)不可或缺的部分。
Piskel
Piskel 是一個(gè)像素藝術(shù)編輯器,它的源文件代碼以 Apache 2.0 協(xié)議 發(fā)布。在這次 Jam 期間,們的大多數(shù)的圖像資源都使用 Piskel 來處理,我們當(dāng)然也將在未來的工程中使用它。
在這個(gè) Jam 期間,Piskel 極大地幫助我們的兩個(gè)功能是洋蔥皮Onion skin和精靈序列圖spritesheet導(dǎo)出。
洋蔥皮
洋蔥皮功能將使 Piskel 以虛影顯示你編輯的動(dòng)畫的前一幀和后一幀的,像這樣:
洋蔥皮是很方便的,因?yàn)樗m合作為一個(gè)繪制指引和幫助你在整個(gè)動(dòng)畫進(jìn)程中保持角色的一致形狀和體積。 要啟用它,只需單擊屏幕右上角預(yù)覽窗口下方的洋蔥形圖標(biāo)即可。
精靈序列圖導(dǎo)出
Piskel 將動(dòng)畫導(dǎo)出為精靈序列圖的能力也非常有用。精靈序列圖是一個(gè)包含動(dòng)畫所有幀的光柵圖像。例如,這是我們從 Piskel 導(dǎo)出的精靈序列圖:
該精靈序列圖包含兩幀。一幀位于圖像的上半部分,另一幀位于圖像的下半部分。精靈序列圖通過從單個(gè)文件加載整個(gè)動(dòng)畫,大大簡化了游戲的代碼。這是上面精靈序列圖的動(dòng)畫版本:
Unpiskel.py
在 Jam 期間,我們很多次想批量轉(zhuǎn)換 Piskel 文件到 PNG 文件。由于 Piskel 文件格式基于 JSON,我們寫一個(gè)基于 GPLv3 協(xié)議的名為 unpiskel.py 的 Python 小腳本來做轉(zhuǎn)換。
它像這樣被調(diào)用的:
python unpiskel.py input.piskel
這個(gè)腳本將從一個(gè) Piskel 文件(這里是 input.piskel)中提取 PNG 數(shù)據(jù)幀和圖層,并將它們各自存儲(chǔ)。這些文件采用模式 NAME_XX_YY.png 命名,在這里 NAME 是 Piskel 文件的縮減名稱,XX 是幀的編號(hào),YY 是層的編號(hào)。
因?yàn)槟_本可以從一個(gè) shell 中調(diào)用,它可以用在整個(gè)文件列表中。
for f in *.piskel; do python unpiskel.py "$f"; done
Python、Pygame 和 cx_Freeze
Python 和 Pygame
我們使用 Python 語言來制作我們的游戲。它是一個(gè)腳本語言,通常被用于文本處理和桌面應(yīng)用程序開發(fā)。它也可以用于游戲開發(fā),例如像 Angry Drunken Dwarves 和 Ren'Py 這樣的項(xiàng)目所展示的。這兩個(gè)項(xiàng)目都使用一個(gè)稱為 Pygame 的 Python 庫來顯示圖形和產(chǎn)生聲音,所以我們也決定在 Open Jam 中使用這個(gè)庫。
Pygame 被證明是既穩(wěn)定又富有特色,并且它對(duì)我們創(chuàng)建的街機(jī)式游戲來說是很棒的。在低分辨率時(shí),庫的速度足夠快的,但是在高分辨率時(shí),它只用 CPU 的渲染開始變慢。這是因?yàn)?Pygame 不使用硬件加速渲染。然而,開發(fā)者可以充分利用 OpenGL 基礎(chǔ)設(shè)施的優(yōu)勢(shì)。
如果你正在尋找一個(gè)好的 2D 游戲編程庫,Pygame 是值得密切注意的一個(gè)。它的網(wǎng)站有 一個(gè)好的教程 可以作為起步。務(wù)必看看它!
cx_Freeze
準(zhǔn)備發(fā)行我們的游戲是有趣的。我們知道,Windows 用戶不喜歡裝一套 Python,并且要求他們來安裝它可能很過分。除此之外,他們也可能必須安裝 Pygame,在 Windows 上,這不是一個(gè)簡單的工作。
很顯然:我們必須放置我們的游戲到一個(gè)更方便的格式中。很多其他的 Open Jam 參與者使用專有的游戲引擎 Unity,它能夠使他們的游戲在網(wǎng)頁瀏覽器中來玩。這使得它們非常方便地來玩。便利性是一個(gè)我們的游戲中根本不存在的東西。但是,感謝生機(jī)勃勃的 Python 生態(tài)系統(tǒng),我們有選擇。已有的工具可以幫助 Python 程序員將他們的游戲做成 Windows 上的發(fā)布版本。我們考慮過的兩個(gè)工具是 cx_Freeze 和 Pygame2exe(它使用 py2exe)。我們最終決定用 cx_Freeze,因?yàn)樗强缙脚_(tái)的。
在 cx_Freeze 中,你可以把一個(gè)單腳本游戲打包成發(fā)布版本,只要在 shell 中運(yùn)行一個(gè)命令,像這樣:
cxfreeze main.py --target-dir dist
cxfreeze 的這個(gè)調(diào)用將把你的腳本(這里是 main.py)和在你系統(tǒng)上的 Python 解釋器捆綁到到 dist 目錄。一旦完成,你需要做的是手動(dòng)復(fù)制你的游戲的數(shù)據(jù)文件到 dist 目錄。你將看到,dist 目錄包含一個(gè)可以運(yùn)行來開始你的游戲的可執(zhí)行文件。
這里有使用 cx_Freeze 的更復(fù)雜的方法,允許你自動(dòng)地復(fù)制數(shù)據(jù)文件,但是我們發(fā)現(xiàn)簡單的調(diào)用 cxfreeze 足夠滿足我們的需要。感謝這個(gè)工具,我們使我們的游戲玩起來更便利一些。
慶祝開源
Open Jam 是慶祝開源模式的軟件開發(fā)的重要活動(dòng)。這是一個(gè)分析開源工具的當(dāng)前狀態(tài)和我們?cè)谖磥砉ぷ髦行枨蟮囊粋€(gè)機(jī)會(huì)。對(duì)于游戲開發(fā)者探求其工具的使用極限,學(xué)習(xí)未來游戲開發(fā)所必須改進(jìn)的地方,游戲 Jam 或許是最好的時(shí)機(jī)。
開源工具使人們能夠在不損害自由的情況下探索自己的創(chuàng)造力,而無需預(yù)先投入資金。雖然我們可能不會(huì)成為專業(yè)的游戲開發(fā)者,但我們?nèi)匀荒軌蛲ㄟ^我們的簡短的實(shí)驗(yàn)性游戲 Mark My Words 獲得一點(diǎn)點(diǎn)體驗(yàn)。它是一個(gè)以語言學(xué)為主題的游戲,描繪了虛構(gòu)的書寫系統(tǒng)在其歷史中的演變。還有很多其他不錯(cuò)的作品提交給了 Open Jam,它們都值得一試。 真的,去看看!
在本文結(jié)束前,我們想要感謝所有的 參加俱樂部的成員,使得這次經(jīng)歷真正的有價(jià)值。我們也想要感謝 Michael Clayton、Jared Sprague 和 Opensource.com 主辦 Open Jam。簡直酷斃了。
現(xiàn)在,我們對(duì)讀者提出了一些問題。你是一個(gè) FOSS 游戲開發(fā)者嗎?你選擇的工具是什么?務(wù)必在下面留下一個(gè)評(píng)論!
分享名稱:用于游戲開發(fā)的圖形和音樂工具
分享地址:http://m.5511xx.com/article/dhoiipi.html


咨詢
建站咨詢
