用 Playmaker 這款 Unity 插件能做成怎樣規模的遊戲?靠譜嗎?
本人是一名策劃,接觸過U3D,也用U3D做過一些簡單的單機DEMO,一直想做一款獨立遊戲,但是苦於腳本的問題沒有成功,無意中了解了playmaker這款插件能不使用腳本用拖拽邏輯模塊的方式實現功能,請問這個插件的實用性到底有多強?做獨立遊戲靠譜不?它適合做怎樣多大規模的遊戲?
我看過兩個月的 PlayMaker,也嘗試用來寫一個項目。優點不多說了,可視化編程,狀態機控制等。就說一下缺點:
- 缺乏對數據操作的直接支持。數組,List,Dictionary 操作等等,稍微複雜一點的數據存取,PlayMaker 根本應付不過來。
- 缺乏對枚舉的支持。官方的教程里建議用 string 來代替枚舉,我就呵呵了。一般來講一個遊戲項目里光枚舉enum 就得要十幾個。你說完全不用枚舉行不行?當然行,但代碼規範性會差很多。
- 可視化編程無法跟 Git,SVN等版本工具結合使用。大項目協作無法進行。
- 代碼重用非常困難。Unity 的設計思想是代碼作為一種資源,可以隨意綁定到 GameObject 上讓它發揮作用。用狀態機代替代碼,完全跟這一思想跑偏了。
- 程序員接手別人的代碼已經夠頭疼了,但至少還可以逐步閱讀代碼塊理清思路。但是閱讀別人寫的的狀態機,將是什麼樣的噩夢?這個比電路板還要錯綜複雜得多。
- 狀態機只是編程的一部分子集,不能等同於編程的全部。高級的編程思想,譬如23種設計模式,大部分無法通過狀態機來實現。
- 大家覺得 PlayMaker 方便,其原因是它自己帶了一大堆現成的 Action 庫,加上簡單的圖形化界面。反過來想想,如果自己在項目過程中有目的地積累自己的函數庫、代碼庫,到新項目里用起來更加得心應手。效率會比 PlayMaker 只快不慢。
對於靠譜的程序員來說,C# 或 Java 這樣的語言其實已經很好用了,並不奢求圖形節點編程,而且一旦私有的圖形節點編程的語言功能不如 C# 或 Java,就會覺得不爽。
=================
使用適合的 paradigm 來做事情。
圖形節點方式適用於粒子系統、材質(即便材質都是高級 shading language 那種更適合,如 Unity 那種自定義的 effect framework + GLSL/HLSL/Cg,很容易映射成平台 shader)、圖像/視頻合成、不要太複雜的 gameplay/演算法等。
Gamplay 編程系統要既 powerful 又 productive,C++ powerful 但不夠 productive,圖形節點編程 productive 但一般不夠 powerful。
缺點:
1. 編譯器把代碼(例如一段四則運算表達式)轉換成 abstract syntax tree。圖形節點方式編程等於是自己人肉連 AST。2. 向量分解/合併尤其蛋疼。
3. 一屏可以顯示的代碼量遠超節點量。4. 有時候為了簡化 graph,不得不增加個 script 節點,在裡邊寫比較多的腳本。5. 代碼是一行行的線性結構。Graph 是個二維結構,navigation 比較容易暈。當然,圖的執行可以是水平的線性結構,但水平方向容易很長,滑鼠滾輪完全排不上用場。6. 不容易 merge 或 diff。7. 自定義的圖形化編程,其語言功能不太會趕得上通用的標準的化代碼語言。8. 庫支持不太會如標準化的代碼語言。Visual programming and why it sucks
flowcharts are a very poor abstraction of software structurework fine for simple, trivial programs電路是天生的圖表示,但工程師還是認為用硬體描述語言更易理解:
HDL simulation enabled engineers to work at a higher level of abstraction than simulation at the schematic level, and thus increased design capacity from hundreds of transistors to thousands.The FPGA configuration is generally specified using a hardware description language (HDL), similar to that used for an application-specific integrated circuit (ASIC) (circuit diagrams were previously used to specify the configuration, as they were for ASICs, but this is increasingly rare).===========================https://docs.unrealengine.com/latest/INT/Engine/Blueprints/TechnicalGuide/Guidelines/index.html"A good practice to follow would be to use Blueprints extensively, and then push things into C++ as they reach a complexity where that would enable a more concise expression of the functionality (or it becomes too complex for a non-programmer), or speed of execution dictates a move to C++."(這段不敢苟同)"Operating on large sets of data, doing string manipulation, complex math over large data sets, etc. are all very complex, and aren"t easy to follow in a visual system. Those things are better kept in C++ than in Blueprints, just because they"re easier to look at and figure out what"s going on.""If you have many more artists than programmers, you"ll probably have significantly more Blueprints than C++ code. In contrast, if you have a lot of programmers, they"re probably keen to keep things in C++."謝謝邀請
我沒有用過Playmaker,不過看過它的介紹和教程,算是知道大概。
Playmaker本質上是一個State Machine編輯器,利用可視化的操作,讓開發者輕易地將一個個State鏈接在一起,設置它們的轉換條件。
我的理解是,State是遊戲功能真正實現的地方,而Playmaker提供了大量的可重用的State。所以如果需求不是太過獨特,Playmaker自帶的功能應該可以讓開發者快速地開發出想要的設計。
而對於某一些高端的需求,開發者可以在按照Playmaker的標準寫相應的State來實現。
當然,這一切都可以用代碼來實現,而且有的開發者更喜歡用代碼控制一切。
不過總的來說,我也想試試...謝邀,常年混playmaker,做過大量項目,我不認為playmaker不能做大項目,毫無疑問比起普通的編程來說playmaker也許在優化上面沒有任何優勢,但是在開發效率上playmaker有著令人艷羨的快捷和直觀。
如果橫向比較,拿playmaker和gamemaker或者construct這類的引擎對比,我覺得playmaker要強大的多,樓上的黃峻就拿playmaker開發了不少遊戲,我由於做新媒體和現場遊戲,所做的更多,在線也不少,保密原因就不貼遊戲了,我得說playmaker還是一個工具,一個非常方便的工具,我們沒指望它解決所有問題,我建議利用它的方式如下。
一。有什麼功能做什麼遊戲,playmaker做個賭博 ,貪吃蛇,鐵板陣,超級瑪麗或者跑酷的綽綽有餘(48jam什麼的我不說,我很多商業遊戲四個小時做完你造么)
二,playmaker不夠找程序寫新的action,或者將插件和playmaker聯合起來用。什麼資料庫,什麼微信,什麼多點觸摸,什麼kinect,Oculus rift,video project,新媒體,ar ,語音識別... 都做過。我遇到很多非常優秀的程序員,他們是沒有自己一人完成過遊戲的,因為術業有專攻,他們的精力投在專業領域的程序開發,但是unity的本質是為了讓開發者開發想要的東西,程序的優化,遊戲包的大小不是第一位,做出遊戲來才是首要目的,從這個角度來說,對與沒有太多程序基礎的人來說,playmaker是非常好的選擇(不用說什麼你應該學習一門語言什麼的,你能基本看懂程序寫的是什麼,然後購買插件稍作修改讓你的遊戲跑起來是更實惠的做法),題主是策劃,那我還是強烈推薦使用playmaker的。
發現有點偏題,說一下playmaker時候做多大規模的遊戲,說我認為比較不適合的,就是對完全針對本遊戲的代碼量越高,越不能被重複利用的,往往越不適合,賽車,mmo,fps等等的在我看來就不適合(反正我也不想做這種),三消,俄羅斯方塊,泡泡龍,卡牌,橫版格鬥什麼的倒是都不錯,(夾帶點私貨,我以為大家應該借著unity東風多做小遊戲,重新學習遊戲,而不是抄襲著幾款流行遊戲的數值猛做千篇一律的換皮貨,趁著unity崛起的時間窗口期我們可以重新學習一次遊戲開發,過了這個階段,就沒機會了。)
Ps: 給盛大網路做講座的時候,他們為了省錢掉了兩天課程,其中有playmaker, 我深深表示惋惜,,友情提示:如果其他單位請我講座的話....算了 反正總是要省的,你們領導怎麼說就是了
再ps..發現第一名的答案應該是autodesk上海的遊戲部門主管吧。。 額 那我假裝委婉的反對一下好了(反正你們把softimage幹掉我已經心死了 T T)
補一句,前日受朋友所託,說一個虛擬駕駛項目爛尾了,找我去補救一下(力反饋沒有,駕駛震動沒出來,ui有問題,光照效果差,碰撞也不不對,) 總之就是麻煩一堆。
貌似找了靈禪出來的幾個人組的小團隊,做了三個月,打開一看代碼慘不忍睹,於是幫忙改三天,一天美術,一天改ui,一天搞定所有程序(由於原來寫的實在太混亂,於是playmaker下面完全重構了一遍)。遊戲規模不算太小,不放截屏了,放個場景截圖你感受一下... 半吊子的程序比playmaker好手弱多了 (如果按照日期算就是弱30倍 ):D你好,pm的能力遠超你的想像,利用這個東西製作的遊戲,上架的很多,公開表明的,你可以去pm的官網看,有些遊戲沒說,也用到了。例如爐石傳說,也用到了pm。除了pm以外,還有uscript,vizio這些類似的更先進的插件。如果你要學習pm,你可以去搜索aboutcg unity3d 301,內容就是pm的入門視頻教學。雖然盜版滿天飛,但是希望對你的學習有幫助,錢不重要。我就是這個教學的作者。。。。。
美工一名。幾乎沒有程序經驗,之前看了黃駿老師的pm教學。pm能快速實現demo,而不用學習任何一種程序語言。而在做demo的時候,也是在學習邏輯實現和unity 的api。用下來感覺這個東西是策劃的福音,或者用來打策劃臉的東西。國內很多策劃都是嘴炮流,吹得天花亂墜,真正做起來啥也不會。有了pm,可以很方便地自己做出demo。對於策劃,可以更好的和程序和美術溝通。對於美術來說,特別是動作和特效,需要跑遊戲才能看出來的東西。可以自己測試一下,不用被不懂裝懂的策劃牽著鼻子走。但是,個人用下來的感覺,pm用來做比較複雜的開發可能會有點混亂,因為都是狀態機的圖表,別人很難維護。pm本身的action是很不錯。不過這也有問題,action不提供的功能,要用pm的其它action來實現比較啰嗦。比如,默認的pm數學的action是沒有除余(mod)的,當然,也有可能有另外的實現的action。不過pm可以拓展action,一定程度上解決了這個問題。學pm的初衷是想「不編程,做遊戲」後來發現最後還是繞不開編程。老老實實學c#吧。
事實證明 任何想不寫代碼就想做出高大上遊戲的行為都是耍流氓PM小玩怡情 大玩傷身
我覺得做什麼產品第一要看團隊的成員是個什麼結構,例如如果你的團隊都是美術轉程序員的,那就用playmaker吧, 如果你的團隊有專業的程序員,還是老老實實寫代碼的吧。寫代碼可控性會強很多。第二我覺得要看項目的粗細度,如果項目有什麼很奇葩的需求,那麼還是寫代碼容易搞定。這個問題我覺得沒有絕對的答案,只有看項目的特性來決定了。
用過一段時間,但是問題是git怎麼同步,多人操作無法同步,之前是這樣,現在不知道怎麼樣
盡量僅將PM用於高層次的狀態機,盡量避免太過細粒度的Action互動,如果需要什麼比較複雜的功能建議自己封裝Action,不要放任狀態爆炸。
否則就算你能把功能實現出來,做出來的圖在可維護性上就是一個災難。(我還是見過這樣的恐怖例子的)總而言之,Playmaker是一個很好的編輯器擴展,可以很靈活的處理一些需要狀態機的邏輯組織。
但我個人不認為任何工具能夠讓一個沒有技術思維的人開發遊戲。編程的關鍵並不是會不會一個特定語言,而是是否能夠(從符號體系、機器功能的角度)理解你要實現的功能;而通過一個特定編程語言來描述這些功能,則是相對很容易學會的。我覺得我要是再不出來幫pm說幾句話前幾名回答就要把pm罵死了
pm在插件里算是比較靠前但不夠說服所有人的那種,而且官方的教程也是著重講pm如何方便而輕慢了與代碼結合的部分,最終結果是很多人對pm的使用方式產生了分歧
pm使用方式主要有三種:pm為主,代碼為輔;代碼為主pm為輔;只用pm不寫代碼。這三種方式直接導致了試用體驗的嚴重分歧:
只用pm不寫代碼:作死行為,搞開發怎麼能不寫代碼,pm用過幾下就知道多麻煩了,官方宣傳「敲代碼十幾分鐘用pm一分鐘就能解決」,但我的實際使用經歷告訴我至少一半的情況下代碼都比pm好用,真的這麼用最後肯定會罵娘的
pm為主代碼為輔:本末倒置,代碼為輔還要什麼程序員,pm就是一輔助工具,它不能挑戰代碼的主導地位,如果pm為主很快就會發現「艾我草怎麼這個功能實現不出來」,然後罵娘
代碼為主pm為輔:這才是程序員應該使用的方式,既然是輔助工具就放到輔助的位置,該代碼的事還是要代碼解決,pm的核心叫「狀態機」怎麼去實現「狀態」還是代碼實現最靠譜
pm這個插件想做大規模的遊戲是沒問題的,問題在於怎麼去用,有句話說得好「語言是不會錯的,錯的肯定是寫代碼的人」,pm當然好用,但並不是怎麼用都好用
————————————————沒人看真尷尬————————————————
好的我現在想要修改一下我的評價,pm真的比官網宣傳的爛多了,狀態機之間的切換很有問題,狀態機內部更是幾何級的凌亂,狀態越來越多,每個狀態機內部幾乎平方速度變亂。你要是問我這插件咋樣,我只能說:除非你要做的是一個超多判斷超多狀態的東西,比如AI之類的玩意,要是拿來做別的,勸你省省錢,當然錢太多圖個方便買了用也可以
沒有用過playmaker,但是看了幾個答案之後,覺得如果題主是想要圖形界面編程,可以試試Unreal Engine 4的blueprint模式寫(拖拽)出遊戲,使用得當其足以應對幾十人團隊規模的遊戲。
他吃內存很厲害,如果是是公開發售的還請不要用這個
Inside 就是用Playmaker做的
我覺得這個東西可以做架構,對程序員而言。 可以把MVC模式下,臃腫的Controller在PM的圖形化下分析的很清晰。 對於大量界面和3D場景而言,狀態是個好東西
推薦閱讀:
※Falcom 公司在遊戲市場中的地位如何?
※如何確定遊戲的開服時間?
※劍三中讓你難以忘懷的劇情任務有哪些?
※如何評價《街霸 5》 ?
※為什麼大多數日本動漫里出現的掌機大多數是PSP或者PSV,而NDS或者3DS出現得比較少?