亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        Ren"Py引擎在文字冒險游戲開發(fā)上的應(yīng)用

        2016-06-16 21:51:35王逸勉翟軍
        電腦知識與技術(shù) 2016年10期
        關(guān)鍵詞:跨平臺

        王逸勉+翟軍

        摘要:電腦以及手機上的單機游戲已經(jīng)成為中國年輕人近年來消遣娛樂的重要途徑之一,選擇一個高效率、多平臺、易使用的游戲引擎是絕大多數(shù)游戲開發(fā)商要面臨的首要難題。該文通過案例,給出利用多平臺游戲引擎RenPy將游戲從設(shè)計、制作、到發(fā)布的一套相對完整的方案,以此為游戲開發(fā)者提供參考。

        關(guān)鍵詞: 游戲開發(fā);安卓;跨平臺;RenPy;游戲引擎

        中圖分類號:TP319 文獻標(biāo)識碼:A 文章編號:1009-3044(2016)10-0224-03

        Abstract: Nowadays,the single-player games on computer and mobile phone have become one of the entertainment way for most of the young people in China.Choosing a high efficiency,multiple-platform and easy to use game engine become the primary issue that most game developers have to face.Given in this paper,through a case,is a relatively complete solution from game designing to game development and release using RenPy game engine,to provide reference for game developers.

        Key words: game development; android; multiple-platform; RenPy; game engine

        電子游戲作為一種文化和產(chǎn)業(yè),并非是在2011年美國國家藝術(shù)基金會宣布其第九藝術(shù)的身份之后才被人們熟知,早在本世紀初,全球游戲產(chǎn)業(yè)產(chǎn)值就已達到94億美元,超越了電影工業(yè)89億美元的產(chǎn)值,電子游戲相關(guān)產(chǎn)品的推出帶動了新的服務(wù)產(chǎn)業(yè),為社會提供了大量的就業(yè)崗位[1]。在我國,文化部在2015年發(fā)布《2015年扶持成長型小微文化企業(yè)工作方案》明確了動漫、游戲產(chǎn)業(yè)等成長型小微文化企業(yè)扶持成長政策;此外,國務(wù)院在推廣上海自貿(mào)區(qū)經(jīng)驗時,指出“允許內(nèi)外資企業(yè)從事游戲游藝設(shè)備生產(chǎn)和銷售”,電視游戲在被政策冷凍數(shù)年之后,終于迎來解封時期。電視游戲、移動游戲、電子競技、視頻直播、虛擬現(xiàn)實這些將有望一起共同帶動中國游戲產(chǎn)業(yè)的新規(guī)模增長[2]。

        與游戲產(chǎn)業(yè)一同迅猛發(fā)展的還有形形色色的游戲引擎,其作用是提供各種編寫游戲時所需的各種工具,協(xié)助開發(fā)者在開發(fā)游戲的過程中節(jié)約成本、縮短周期和降低風(fēng)險,使其無需關(guān)心底層的顯示細節(jié)。現(xiàn)在全世界已經(jīng)有了各種比較成熟的引擎,在3D游戲方面有Unity3D、Unreal、Frostbite,在2D游戲方面則有Cocos2D、Cycclone2D、KRKR等,本文介紹的引擎則是2D游戲開發(fā)領(lǐng)域中的引擎RenPy。

        1 RENPY引擎概述

        RenPy是一款基于Python語言、擅長制作文字冒險游戲的2D游戲引擎,能相對減少開發(fā)者在制作這類游戲時的工作量。其具有良好的跨平臺性,使其能夠同時在Mac OSX、Linux、Windows、Android系統(tǒng)中運行,并且其良好的開源性允許開發(fā)者自由拓展其他功能進一步完善和豐富游戲。使用此引擎制作比較成熟的商業(yè)游戲,例如DisChan公司制作的《Junipers Knot》、ALICE IN DISSONANCE工作室開發(fā)的《fault milestone one》,前者在蘋果商城中的1270條評價中獲得了1177條五星評價,后者在STEAM平臺中有著95%的好評率。在中國,也有使用本引擎制作的文字冒險游戲,例如Magenta Factory獨立游戲工作室制作的《山桂》,其已于2014年在STEAM平臺發(fā)行,并且獲得了用戶83%好評率的成績。

        2 文字冒險游戲

        文字冒險游戲(Text Adventure Game)是以文字輸入輸出為主的一類冒險游戲,此類型游戲以軟件模擬情境,令玩家使用文字指令控制角色,以影響周邊的情境。其運作方式可以理解成是用計算機游戲來做文學(xué)敘事。在亞洲,尤其在日本,文字游戲通常被稱為視覺小說或交互式小說,以文字和圖片以及音效的輸出來展示游戲中的信息,玩家通過選擇與點擊等方式進行輸入與游戲進行交互,玩家借由上述方式獲得游戲體驗。

        3 游戲開發(fā)上的應(yīng)用

        在完成必要的游戲設(shè)定的前提下,利用RenPy制作一個游戲的過程包括界面設(shè)計、數(shù)據(jù)初始化、定義人物、編寫劇本等,以下將給出示例擇其相對較必要的步驟進行講解。

        3.1 界面設(shè)計

        游戲中的很多操作是通過游戲界面來展示和運用的,好的游戲界面能夠幫助玩家快速上手,營造出美觀、操作簡單并且具有引導(dǎo)功能的人機環(huán)境。游戲界面包括游戲主界面、二級界面和彈出界面等[4]。

        在RenPy引擎中,游戲界面主要靠Screen進行實現(xiàn),每一個Screen都是一群UI元件在屏幕上的排列組合,其源代碼一般儲存在game文件夾中的screen.rpy中。

        如圖2所示,圖中的代碼演示了如何通過RenPy的Screen實現(xiàn)一個簡單的游戲提示功能。首先代碼定義了一個字體的樣式和兩個動畫變化語言(ATL),兩個變換語言寫入提示框的出現(xiàn)和消失的位置與時間從而控制其變化軌跡。而Screen Tips則需在調(diào)用時接受兩個變量,TipsName是顯示在提示框中的文字,而status決定了Screen Tips是對對話框進行顯示還是進行隱藏。在實際劇本編寫中,則可以用以下的一行代碼來調(diào)用這個Screen:

        show screen Tips("增加新人物說明","show")

        開發(fā)者可以通過豐富的UI命令對Screen進行操作,并且可以在官方文檔里[10]查詢到完整的UI命令列表。

        3.2 對話及控制流

        在書寫人物對話之前,開發(fā)者需要新建一個角色對象,以便簡化隨后的劇本編寫。以這段人物定義代碼為例:

        define DMF = Character('端木斐', color="#FFFFFF",image="duanmu",voice_tag="duanmu",what_prefix="“",what_suffix="”")

        代碼定義了一個名為端木斐的人物,縮寫是DMF,在隨后的對話中僅需要使用DMF便可以被程序識別。color決定了人物名稱的顏色,它應(yīng)該傳入以RGB色彩模式表示的字符串。image指定與該角色對象關(guān)聯(lián)的圖像標(biāo)記的字符串。voice_tag將允許在設(shè)置界面調(diào)整該角色的語音音量,what_prefix與what_suffix分別決定了添加到對話內(nèi)容之前和之后的內(nèi)容。

        在書寫對話時,以前面定義的角色為例,只要在腳本中以如下格式書寫即可:

        DMF smile “ 你好,我叫端木斐。”

        在游戲劇本中,可以使用標(biāo)簽與控制流靈活改變劇情的走向。label命令可以給腳本的某個位置起一個名稱,它們是配合jump或者call命令使用的。jump命令與C語言中的goto語句類似,它用于將腳本執(zhí)行器跳轉(zhuǎn)到指定的標(biāo)簽。call命令與jump類似,只不過它會將下一個命令壓入call棧中,在被調(diào)用的標(biāo)簽結(jié)束后可以返回call命令被執(zhí)行的地方。return命令將會返回調(diào)用call命令的標(biāo)簽中,如果call棧為空,程序則會重啟。

        3.3 圖像

        在游戲劇本中使用如下命令就可以控制游戲中圖片的顯示與隱藏:

        image - 定義一個新的圖像

        show - 在某個圖層上輸出圖像

        scene - 清空一個圖層上的全部圖像,隨即在上面顯示一個圖像

        hide - 將某個圖像從圖層中隱藏

        在列表(list) config.automatic_image_strip中定義一整個文件夾的圖像,在腳本中就可以直接使用文件名進行調(diào)用,例如代碼:

        config.automatic_images_strip = [ 'images' ,'char','bg']

        就可以自動將游戲庫下images、char、bg文件夾中的圖像自動定義,避免單個文件定義的繁瑣步驟。假如不用自動定義命令,則需要以如下的命令格式來定義圖片:

        image school night = “images/bg/school_night.png”

        在游戲腳本中,則用以下代碼使屏幕顯示上述定義圖像:

        scene image school night

        RenPy引擎中,不僅是圖片文件可以被定義為image,它還可以接收如下的賦值類型:

        圖像文件

        RGB色彩表達模式的字符串

        ARGB色彩表達模式的元祖

        用Displayable函數(shù)產(chǎn)生的圖像,例如DynamicDisplayable()

        為了使圖片動態(tài)改變,通常使用DynamicDisplayable()函數(shù),它接收一個Python格式的函數(shù),每隔一段時間就執(zhí)行一次,并且用該函數(shù)返回的Displayable決定顯示內(nèi)容。其他的動態(tài)顯示函數(shù)還有ConditionSwitch和ShowingSwitch。

        3.4 聲音

        在播放音頻之前需要在RenPy提前注冊音頻頻道,引擎預(yù)定義了music、sound、voice三個頻道分別用來播放音樂、音效和語音,其一大區(qū)別就是音樂頻道中的聲音文件會循環(huán)播放,而sound和voice只會播放一次,分頻道的好處之一是避免不同類型聲音在播放時產(chǎn)生沖突。在腳本編寫中,通常使用play命令調(diào)用聲音,例如:

        play music “mozart.ogg” fadein 0.5

        paly后接頻道名,其后則是開發(fā)者欲播放的文件名,如果給出一個文件列表,則會按照順序進行播放,fadein是可選參數(shù),它可以音頻文件的淡入時間。在腳本編寫中,通常使用stop命令停止頻道中聲音的播放,例如:

        stop music “mozart.ogg” fadeout 0.5

        本行代碼將music頻道中的mozart.ogg停止播放,并且淡出時間是0.5秒。

        在一些游戲中,當(dāng)角色語音處于播放狀態(tài)時,角色立繪的嘴巴則會隨著語音動作,例如5pb公司開發(fā)的《Steins;Gate》,為了在RenPy實現(xiàn)此功能要用到DynamicDisplayable()函數(shù),如圖3所示,用renpy.music.is_playing(channel)函數(shù)確認所給頻道是否有語音正在播放,用_get_voice_info().tag函數(shù)確認正在播放時的人物標(biāo)簽,當(dāng)滿足條件時則顯示嘴部動作,否則不顯示,如果在這里利用語音識別技術(shù)則可以做到人物嘴型與對話內(nèi)容的一致,達到與《Steins;Gate》中相同的效果。

        3.5 生成分發(fā)版

        用RenPy游戲制作的最后一步是生成游戲的分發(fā)版以讓全世界的人玩到游戲,并且將游戲中用到的素材以及代碼打包加密。要完成這個,只要點選Laucher中的生成分發(fā)版即可,但在那之前還需要在option.rpy中對游戲進行最后的設(shè)置。布爾型變量config.developer一般都要在正式發(fā)布之前設(shè)為False以避免用戶使用開發(fā)者工具進行作弊。config.window_title則決定了當(dāng)項目以窗口化運行時的標(biāo)題名稱。build.directory_name用于修改發(fā)行版壓縮包與文件夾的名稱,一般在名稱中要添加后綴版本號。build.executable_name則決定了可執(zhí)行程序的文件名。為了將資源進行封包,則需要先使用build.archive()函數(shù)定義資源封包的名稱,用build.classify()定義需要放進封包的游戲資源文件列表。

        4 結(jié)束語

        RenPy引擎在文字冒險游戲開發(fā)方面有著先天優(yōu)勢,然而又因為其優(yōu)良的可擴展性,又給予了其制作其他游戲諸如角色扮演類游戲、戰(zhàn)旗類游戲、解謎游戲的可能性,并且目前已有先例可供參考,在導(dǎo)入socket以及threading等模塊后甚至可以實現(xiàn)主機之間通過網(wǎng)絡(luò)的互聯(lián),這又為其游戲方式拓展了數(shù)量可觀的可能性。相信在中國游戲產(chǎn)業(yè)迎來發(fā)展的當(dāng)下,RenPy引擎將會成為開發(fā)者們又一大助力。

        參考文獻:

        [1] 谷清勇. 電子游戲產(chǎn)業(yè):新經(jīng)濟增長點[J]. 中國經(jīng)濟周刊, 2004(11):29-30.

        [2] 騰訊游戲. 2015-2016中國泛娛樂產(chǎn)業(yè)發(fā)展白皮書[EB/OL]. http://games.qq.com/a/20160307/052889.htm.

        [3] 金鑫. 游戲引擎在游戲開發(fā)中的應(yīng)用[J]. 電腦知識與技術(shù), 2007(19).

        [4] Art Eyes設(shè)計工作室. 創(chuàng)意UI Photo玩轉(zhuǎn)游戲界面設(shè)計[M]. 北京:人民郵電出版社, 2015:8.

        [5] Jesse Schell. 全景探秘 游戲設(shè)計藝術(shù)[M]. 北京:電子工業(yè)出版社, 2010 .

        [6] Tom Rothamel. Ren'Py Documentation[EB/OL]. https://www.renpy.org/doc/html/.

        猜你喜歡
        跨平臺
        跨層級網(wǎng)絡(luò)、跨架構(gòu)、跨平臺的數(shù)據(jù)共享交換關(guān)鍵技術(shù)研究與系統(tǒng)建設(shè)
        一款游戲怎么掙到全平臺的錢?
        電腦報(2021年11期)2021-07-01 08:10:05
        潛力雙跨平臺:進階:誰將跨入下一個“十大”?
        跨平臺APEX接口組件的設(shè)計與實現(xiàn)
        基于C++語言的跨平臺軟件開發(fā)的設(shè)計
        基于C++語言的跨平臺軟件開發(fā)
        移動互聯(lián)網(wǎng)應(yīng)用跨平臺開發(fā)
        一種虛擬現(xiàn)實應(yīng)用程序跨平臺方法的研究
        基于QT的跨平臺輸電鐵塔監(jiān)控終端軟件設(shè)計與實現(xiàn)
        基于OPC跨平臺通信的電機監(jiān)測與診斷系統(tǒng)
        亚洲国产成人久久一区www妖精| 国产精品麻豆va在线播放| 久久精品99久久香蕉国产| 久久婷婷色综合一区二区| 欧美丝袜秘书在线一区| 少妇被粗大的猛进69视频| 中文字幕在线亚洲精品| 国产精品va在线播放我和闺蜜 | 91综合久久婷婷久久| 久久久亚洲av成人乱码| 天天夜碰日日摸日日澡性色av | 国产午夜无码视频免费网站| 久久久国产精品五月天伊人| 一道本久久综合久久鬼色| 五月综合激情婷婷六月色窝| 91综合在线| 日本久久黄色高清视频| 人人人妻人人人妻人人人| 在线综合亚洲欧洲综合网站| 色狠狠一区二区三区香蕉蜜桃| 国产麻豆国精精品久久毛片| 国色天香社区视频在线| 欧美第一黄网免费网站| 天堂AV无码AV毛片毛| 日本va中文字幕亚洲久伊人| 国产特级毛片aaaaaa视频| 97无码人妻Va一区二区三区| 亚洲精品精品日本日本 | 久久久亚洲av成人网站 | 精品免费福利视频| 久久久99精品国产片| 无码av专区丝袜专区| 国产熟女高潮视频| 亚洲国产成人aⅴ毛片大全| 亚洲色图专区在线观看| 精品人妻无码视频中文字幕一区二区三区| 97视频在线播放| 久久精品国产亚洲不卡| 精品久久久久久无码中文野结衣| 免费人成再在线观看网站| 亚洲国产综合性感三级自拍|