關於單機遊戲製作中的物件重用問題(轉)
關於單機遊戲製作中的物件重用問題(轉)[@more@] 定義: 物件:遊戲中的任何玩家可以感覺到的元素。 物件重用體系:遊戲中具體實現物件重用的方式。 正文: 什麼是物件?上面已經給出了定義。為便於理解,這裡給出例子。比如作為一個傳統RPG遊戲,大到一個場景,一個NPC,小到一個道具,一次動作,都可以叫做這個遊戲的物件。如果我們把一個遊戲看作一個集合,那麼這個遊戲中所有物件加起來就是這個集合的一個覆蓋。而如果一個單機遊戲所有的物件所有都被玩家接觸過,或是還有沒接觸過的物件但玩家並不知道,那麼便相當於這個遊戲對他來說沒有任何新意可言,這個遊戲對於這個玩家來所可玩性就大大降低了。 那麼什麼是物件重用?又以RPG為例,在傳統RPG中,最常見的有代表性的物件重用――“戰鬥指令”。比如一般“攻擊”命令,是你在整個遊戲過程中不斷重用的,於是其他的物件重用大家就可以想到很多――一種怪被反覆殺死,一種招式被反覆使用,一張地圖被反覆走,一個NPC反覆與之說話,一種藥反覆吃,等等。 物件重用有什麼好處?在程式設計領域,有一個重要的概念――“程式碼重用”,即是說盡量讓寫出的程式碼能反覆使用。基於這個概念,有了CLASS,有了物件導向,有了MFC程式設計體系。而在遊戲中,物件重用最基本的用處就在於把RPG遊戲與故事遊戲區別開來。正是物件重用實現了遊戲中“打怪――升級――打怪”這一經典系統。於是到這裡至少可以想象有大量物件重用的遊戲是可以極大限度延長玩家對該遊戲的玩耍時間。 所以物件重用的目的,就是儘量減少物件使用次數少的情況。將傳統的“增加物件個數”的方法改為“增加物件重用”的方法,可以大大減少遊戲製作人員的工作量,並同時增加玩家玩耍遊戲的時間。 於是我們只要對許多經典的物件重用體系(“打怪――升級――打怪”體系算是其中之一)進行分析,取其精華,便可以創造出更加可行的物件重用體系。 但在進行物件重用分析之前還有一些概念要說一下。 目標物件:每一個物件重用體系的核心,玩家在涉入一個物件重用體系(以後簡稱重用體系)時,絕對有目標,比如進入“打怪”重用體系時,目標就是達到一個期望的等級或某項屬性達到一個期望值。這個玩家追求的物件就是目標物件。 軸物件:刻畫一個重用體系進行的過程的物件。比如像過關遊戲中的“分數”,以及RPG的“等級”,“累計經驗值”等等。軸物件一般跟時間有關。注意同一體系中軸物件本身可能成為目標物件。 被重用物件:在體系中具體不斷被重的物件。比如升級體系中的“攻擊”指令,各種技能,武器等。注意被重用物件與目標物件可以相互轉化,但在同一體系中一個物件不會同時是目標物件與被重用物件。 我們現在來分析“打怪――升級――打怪”重用體系這個經典案例中的具體物件重用: 目標物件:達到一個期望的等級或某項屬性達到一個期望值。 主要軸物件:等級數與累計經驗值。 主要被重用物件:場景,怪物,恢復道具,裝備。 “打怪――升級――打怪”重用體系中的目標物件是一個確定值,從而使得軸物件資料也是可見的,所以透過適當的推算我們可以基本得出達到目標的時間。這種我們暫且稱之為“確定目標重用體系”。 再來看看著名的MF(打裝備)重用體系: 目標物件:某種裝備。 主要軸物件:打的怪的數量。 主要被重用物件:場景,怪物,恢復道具,裝備。 MF重用體系的目標物件十分清晰,但具有機率性,直接導致的是軸物件資料不可見,所以我們也無法精準的推算出達到目標的大致所需時間。這種我們暫且稱之為“機率目標重用體系”。 作為遊戲製作者,我們經常直接呼叫這兩種重用體系。對於確定目標重用體系而言,只需要修改軸物件長度(比如所需經驗數)便可以修改整個體系需要玩家花的時間的多少。而對於機率目標重用體系而言,我們要做的是改變達到目標的機率。 如果你堅持看到這裡的話,你一定會問:“對於目標重用體系的修改,並不是是有改變目標的機率這一個辦法啊,比如玩家要打一個特定的怪來得到某個裝備,我們可以在原來的掉落機率不變的情況下降低那個怪的出現機率啊。” 實際上這是我要提出的下一個概念:二重重用。 如果我們是對於指定的裝備進行MF,那麼我們會去選擇指定的怪去打,這本來就是一種物件重用了。但是如果怪的出現本身也有機率性,那麼尋找特定的怪這一過程會再次成為一次物件重用。這兩次重用是巢狀的,像for{for{}}結構一樣,但同時也像for{for{}}結構一樣具有威力,對二重重用體系的改變讓玩家在遊戲中停留的時間成幾何級數增長。二重重用的特點在於兩種重用體系中一種體系的目標物件是另一個體系的主要軸物件,從而造成就了“無數個小目標為了一個大目標”的體系。 舉一個二重重用的經典例子《不可思議迷宮系列》玩家的戰鬥場所是個多層的地宮,每一層都是一個迷宮。 目標物件:得到最底層的某個東西。 主要軸物件:樓層數。 主要被重用物件:每層樓的探索經過,樓層地圖(因為迷宮地圖是隨機生成),怪物,裝備。 每一層樓的目標物件:透過該層樓。 主要軸物件:被探索過的地圖。 主要被重用物件:樓層地圖(因為迷宮地圖是隨機生成),怪物,裝備。 看到這裡的同學也許會問:“這樣無聊的重用體系玩家有興趣來涉入到其中去嗎?” 這裡就要是體現目標物件的價值的時候了。為什麼玩家可以花大量的時間反覆的打怪以微小的機率來MF一件裝備,為什麼在口袋妖怪中玩家會用很長的時間造訪很多地方去捕捉怪物?為什麼玩家會主動進入一個個重用體系?導致這一切的根本原因就是玩家對目標物件的追求。因為目標物件是很珍貴難得的,所以玩家才會進入各種重用體系去追求目標物件。 有的重用體系一旦物件被玩家得到了目標物件而沒有新的目標物件佔有原來的目標物件的位置,那麼整個體系就會失去價值。比如在初代《仙劍》中,很多迷宮玩家只會進去一次,出來之後迷宮就沒有用了。而那個體系的目標物件也就是“找到迷宮出口”。而MF重用體系的效率之高,在於這個體系因為不斷的有目標物件的補充而使得其本身在不斷的被重用。而對於《不可思議迷宮系列》來說,迷宮中的目標物件會不斷地更換,這使得那個本來很高效的二重重用體系被多次的利用。實際效果就是這個僅有8m不到的遊戲讓許多玩家在裡面停留了幾十甚至上百小時。 另外一個要點,就是玩家喜歡驚喜。在漫長的重用體系迴圈中,如果只是那些一層不變的被重用物件跟玩家不斷打交道的話,會很快使其失去興趣。所以我們需要完全機率性的加入一些十分珍貴的物件,在玩家完全不知道其存在的情況下獲得這些東西,會增加玩家繼續在這個重用體系中迴圈的興趣。 本文似乎所有關於物件重用的例子中所有“被重用物件”裡,幾乎都有“怪物,裝備”這樣的字眼,只是因為這個重用體系的確在RPG的所有重用體系中經典到根深蒂固的程度。以至於目前許多策劃一拿到RPG的計劃就開始想的是“打怪”重用體系與MF重用體系中如何確定一個玩家願意去追求的目標物件,而不是從更深處的地方去想象改變體系的軸物件或是被重用物件。當然一定很多優秀的策劃意識到了這一點,但是也許是怕自己創新的體系不會被大眾接受,而對公司帶來的損失是自己一人扛不起的。 但是我們還是需要開拓新的體系,很明顯中國目前受泡菜的千篇一律重用體系(網路遊戲有區別於單機的重用體系,但主要是目標物件的不同,被重用物件依然是與單機RPG相同的“怪”,“裝備”,軸物件也是相同的。有空再具體仔細研究一下)毒害,現在已經呼聲四起了。於是有很多打著“完全顛覆傳統練級觀念,徹底調動玩家積極性”的MMORPG策劃案,但用物件重用的角度看來實際上也是換湯不換藥。其實如果有新的重用體系提出,完全可以在單機遊戲上做出來看看效果,搬到網上就只是改改目標物件就可以了。當然,這個論斷明顯缺乏證明,大家儘管無視。 但是無論如何,新體系的建立絕對是勢不可擋的,先行者必定是潮流的引導者。全文只是在下一些小小的臆想加簡單的例子。諸多不足之處,希望大家批評指正
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-951491/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 關於在web project專案中的程式碼重用問題討論WebProject
- 關於QGraphicsView中的物件移動問題. zView物件
- 關於物件持久化的問題物件持久化
- 關於jsp中轉發的問題JS
- 中國遊戲行業市場分析(一)關於國內遊戲製作的問題 (轉)遊戲行業
- 關於物件顆粒大小的問題。物件
- 關於值物件的驗證的問題物件
- 關於實體與值物件的問題物件
- 關於物件繼承的問題——利用空物件做中介物件繼承
- 關於Filter中ServletRequest強轉HttpServletRequest問題FilterServletHTTP
- MySQL主從複製中關於AUTO_INCREMENT的奇怪問題MySqlREM
- 關於日期計算的問題 (轉)
- 關於Autolayout製作動畫的坑動畫
- 關於C++&Java中命令列編譯的問題 (轉)C++Java命令列編譯
- 關於轉義符 在php正則中的匹配問題PHP
- 關於工作中遇到的問題
- 關於cuda中的函式問題函式
- 關於 iOS 10 中 ATS 的問題iOS
- 關於struts中html:errors/的問題HTMLError
- [緊急求救]關於動態建立物件的問題物件
- Php 3.x與4.x中關於物件程式設計的不相容問題 (轉)PHP物件程式設計
- 救命,關於類轉換問題
- 關於 a 標籤跳轉問題
- 關於JS的編碼轉換問題JS
- 關於網路的一點問題(轉)
- 關於javascript中陣列元素刪除問題的討論 (轉)JavaScript陣列
- 關於在頁面中解決列印的幾個問題 (轉)
- 多重web應用中webapp. root重用的問題WebAPP
- 請教一個關於EJB建立物件時的問題物件
- 關於 mysql 中的 rand () 查詢問題MySql
- 關於 Laravel 中 Ajax 問題的小結Laravel
- 關於iOS10中ATS的問題iOS
- java中關於Map的九大問題Java
- 關於考勤模組中設計的問題
- 請教關於工廠模式中建立物件需要不同引數的問題模式物件
- 關於物件導向的方法並行執行的問題物件並行
- 急問:關於servlet中得session問題ServletSession
- 國產單機遊戲的未來,只能是創意小製作嗎?遊戲