作者F23ko (純潔)
看板C_Sharp
標題Re: [問題] 請問有沒有現成的「複雜」STG範例?
時間Fri Jul 16 23:58:53 2010
※ 引述《F23ko (純潔)》之銘言:
: 請問有沒有複雜一點的STG範例可以參考?
: 例如雷電那一種....
: 自己想寫個小遊戲
: 雖然自己可以靠暴力去硬寫
: 但是不知道該怎麼寫會「比較好」
: 還有,想請問有沒有進階一點書籍可以參考?
: 現在寫寫一、兩百行的小程式沒什麼問題
: 但是寫大程式時,總覺得自己寫的很沒章法
把問題沉澱幾天,我把自己的想法寫仔細一點
自己大致上知道遊戲那種stg的遊戲是怎麼樣子
寫過一個類似特訓99的遊戲,是個只花兩小時的簡單程式
大致上的功能有.....
1.自己可以控制一台飛機(上下左右 + shift加速移動)
2.畫面上有子彈,子彈會依照參數進行移動(簡單的加速度、速度物理公式)
3.碰撞判定
是像這樣的簡單功能而已
在做完這個試作品之後
我開始依照自己當初的構思
去思考「該怎麼做大型一點的遊戲」
我發現還有很多問題,我必須去找解答
例如:
關卡如何處理?
我直覺上應該要寫個類似「撥放器」的東西
去讀取關卡檔,然後「播放」遊戲給玩家玩
但具體細節我根本沒個底
class如何設置會比較好?
是所有種類的敵人都用同一個class,以欄位決定不同種敵人的差異
(例如以一個文字欄位決定顯示那一張圖之類的,好處是擴充怪物容易)
或是一種敵人就設立一個class
(假設口袋怪獸是這種設計方式的話,就會有兩百多個class....
優點是不同怪物間允許很大的差異,但需要寫個共同介面,以及其他地方會變得麻煩)
AI、特殊效果怎麼處理?
要寫死在敵人的class裡面,或是設個委派欄位去處理?
甚至,寫在遊戲核心裡,而不是class裡面?
有時候連「顯示該怎麼寫比較好」都會有問題
我看書上的範例都是把顯示寫在外面
然後逐一去找物件的參數去畫圖
例如:
foreach(遊戲物件 要畫圖的物件 in 畫面中的物件)
{
spriteBatch.Draw(要畫圖的物件.texture,要畫圖的物件.position
(中略));
}
但我會想把一些亂七八糟的東西塞進物件裡面處理,像這樣
foreach(遊戲物件 要畫圖的物件 in 畫面中的物件)
{
要畫圖的物件.開始畫圖(spriteBatch);
}
後者的優點是可以處理複雜的貼圖,例如一個物件,翅膀跟身體分開貼圖之類的
但我不知道會不會出問題.....
=========================================================================
像這類問題還很多
所以......
請問找的到像是雷電、東方等等夠大、夠複雜的C#原始碼嗎?
直接學現成的東西,比起「重新發明輪子」要來的更快、更好。
那些複雜一點的遊戲,該不會都用教學書那一套硬寫出來的吧? = =|||
--
我... 我一點都不糟糕啦!>///<
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 163.27.109.99
※ 編輯: F23ko 來自: 163.27.109.99 (07/17 00:11)
1F:推 ddavid:像敵人的class就用繼承的啊,通通繼承一個Enemy class而來 07/17 00:19
2F:→ ddavid:這樣,然後技能都繼承Skill class,所以不同的敵人就可以掛 07/17 00:20
3F:→ ddavid:上不同的技能class之類的 07/17 00:20
4F:→ ddavid:每個敵人都有Attack method,但是實作內容不同這樣 07/17 00:21
5F:推 yauhh:前段,遊戲的確是要有個外框架把stage擺好,蠻多書會講框架. 07/17 00:33
6F:→ yauhh:後段你好像可以參考Design Patterns Explained書中的討論. 07/17 00:34
7F:→ yauhh:可使用"抽象與實做分開"的設計 07/17 00:36
8F:→ F23ko:呃.....有沒有例子可以參考? 07/17 01:14
9F:→ F23ko:直接讀原始碼比較清楚..... 07/17 01:15
10F:→ yauhh:沒有...思考設計的問題怎麼會是沒事就開始讀碼呢? 07/17 02:02
11F:→ F23ko:為了避免重新發明輪子..... 07/17 02:30
12F:→ F23ko:例如我想學「讓程式讀腳本」這個東西時,讀資工的朋友叫我先 07/17 02:34
13F:→ yauhh:不是,你讀碼就可以把目前討論主題搞得清清楚楚嗎? 應該不是 07/17 02:34
14F:→ yauhh:做設計,畫圖的時候,也是沒有在發明輪子啊 07/17 02:35
15F:→ F23ko:去想一個問題:「讓程式從文件檔讀算式,算出答案」 07/17 02:35
16F:→ F23ko:我直接暴力解,解完之後,他跟我講要用遞回做,也說了語法樹 07/17 02:36
17F:→ yauhh:對啊,但並不是先去問誰做過sample,要去讀他的碼.那沒用的. 07/17 02:36
18F:→ F23ko:的概念.... 07/17 02:36
19F:→ yauhh:對,解算式的確是用語法樹可以做得精簡 07/17 02:37
20F:→ yauhh:那像"Design Patterns Explained"這樣的書,他自己有個設計 07/17 02:38
21F:→ F23ko:對啊..... 看別人的sample學經驗會比較好.... 我的經驗不是 07/17 02:39
22F:→ F23ko:很多..... 07/17 02:39
23F:→ yauhh:案例交待他本來有什麼設計問題,因為繼承的繁雜而使程式較不 07/17 02:39
24F:→ yauhh:好管理.然後有一個很打破思考格局的設計方式.這也是可參考的 07/17 02:39
25F:→ yauhh:相對的,一下子就去找碼來讀,讀出什麼概念則是要擲杯. 07/17 02:40
26F:→ F23ko:了解.... 07/17 02:41
27F:→ F23ko:那個有中譯本嗎? 我對英文很頭痛.... 07/17 02:42
28F:→ F23ko:Google後沒看到.... 07/17 02:42
29F:→ F23ko:我一直用試誤法摸索的很頭痛,想直接學成果 = = 07/17 02:44
30F:→ andymai:"深入淺出設計模式"←中文的... 07/17 13:57