作者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