精華區beta GameDesign 關於我們 聯絡資訊
有了遊戲的基本方向,接下來就是規劃了 我給自己總共一個月的時間, 每天花一至兩個小時在這上面, 其餘時間乖乖寫我的論文 畢竟在現在這個節骨眼還會拿時間來寫這玩意的...應該沒幾個人吧 囧> 我將時間細分為 構思&設計, 實作, 測試 三個主要的部分 構思/設計 & 實作各佔40%的時間, 也就是各約一個半星期 最後的一個星期為實測與後置處理 構思佔掉跟實作一樣的時間,從這不難看出其重要性。 動手之前,完整的把想達成的效果列舉出來。 詳細的列出要做什麼,該做什麼,怎麼做,儘可能的把要做的事全部規劃好 才不會寫到一半發現漏了某些設計而導致程式大修特修。 為了事半功倍,花費多一點時間在前置的設計實在重要。 好,現在我想做一個彈幕遊戲。 於是我需要一個Player,玩家可操作的角色 再來我要一個發射子彈的東西, 在設計上,我希望他不只能夠單純的"生出子彈" 我希望他可以跑,會尋找,會因為生氣或其他因素改變行動模式。 於是Shooter變成一個Seeker。 那,武器怎辦呢? 我希望Seeker可以有不同的武器可供其替換。 讓同時間螢幕上出現的子彈是來自不同的武器所發射出來的。 但是最好每個武器可以共享一定程度的函式,例如這樣 1. Seeker 拿起 武器B 發射B-type子彈 , B-type子彈在空中飛 , 飛出螢幕 2. Seeker 拿起 武器C 發射C-type子彈 , C-type子彈在空中飛 , 打到Player 其中的拿起,在Seeker看來是同樣的動作。 而不同的type子彈則依據各自的行為模式運動、撞擊 所以我要一個weaponMode(武器控管),以及一個武器的Class原形, 其中包含必須的Move(), isHit()函式 每把武器繼承原形Class,然後登記在weaponMode裡。 這樣每次我要用,只要從武器庫裡面撿出來,然後運算它的Move() , isHit等即可 遊戲,總要有些特效啊,譬如Player被打掛了,我希望他能邊墬落邊散出煙花。 或者如果我的遊戲有黑洞砲,那我需要一個黑色粒子沿著黑洞外圍隨機方向被吸入的特效 如果單純依靠Flash的逐格動畫來做,絕對受不了。 於是我決定通通用Particle System(分子系統)來做。 若不計複雜的效果,分子系統可以藉由計算簡單的分子運行方式, 來模擬出大部分的特效。 最好我的程式有這樣的功能 : "在 T毫秒 的時候, 在(X,Y)地點 叫出 A分子" A分子可能是一小搓煙霧、可能是中彈後的火花、可能是發射武器時的光波 之後,只要我依著時間的進行,逐次給定參數T, 地點(X,Y), 我就能模擬出許多的效果 於是我的程式又多了一個Effect(特效控管器),負責處理各種特效的需求 最後是介面部分。 螢幕上該有些什麼要傳遞給玩家的訊息? 先考慮最基本的HP,Score,LV好了。 這些訊息無時無刻需要更新。否則玩家只能在被打趴在地上哭的時候, 才發現他的HP早就所剩無幾了 好,最後一個必備物件BackGround(場景控制器)就這樣出現了 主角們都差不多到齊了,接下來討論遊戲的結構部份。 遊戲中會出現的物件 : Seeker(搜尋者), Player(玩家), 各類子彈與武器(Weapon) Effect(特效物件), Background(分數、介面物件), 還有一些有的沒的全域變數 遊戲,講高級一點就是一種互動式動畫,動畫由一張張的Frame所組成 意味著遊戲程式的基本架構也不脫此限 於是,最外層的遊戲主程式就是這樣 ///一堆有的沒的初始化/// Player.init(); Seeker.init(); Weapon.init(); Effect.init(); background.init(); ///主程式/////// main { Seeker.loop(); //負責計算Seeker的行為模式 Player.loop(); //負責接收玩家的操控 Weapon.loop(); //負責所有武器的行為模式與子彈移動 bg.loop(); //介面相關的更新 } 透過一秒執行30次main loop, 宛如賦予這個遊戲重要的脈搏般,程式的運作由此展開. (續) 文章轉自暨大霞蔚山城 ★ HenryBBS (henry.twbbs.org) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 163.22.21.89