作者crushcrush (睡不醒)
看板GameDesign
标题[程式] 用XNA写音乐游戏遇到的一些问题
时间Mon Feb 8 01:17:10 2010
我是XNA的初学者
因为毕业专题要想用XNA写出一款音乐游戏
但遇到一些问题查不太到资料可以解决...
XNA在国外的论坛比较活跃,华语区讨论的人似乎不多?
偏偏我又英文苦手...
这款音乐游戏架构和太鼓达人、BeatMania类似
就是音符落到指定地点时需按下相对应的按钮以消除音符并发出音效
我的问题是
1.要怎麽把音符的显示和音乐节拍绑在一起呢?
我的写法很阳春,是在选完歌进入打谱介面时产生一个变数
此变数计算进入打谱介面後的游戏时间
然後在到达指定时间时,产生一个图案
并告诉该图案往指定方向移动。
可是这做法让「图案无法在音乐的节拍上」,十次测试十次都会有不一样的误差...
目前看来是因为程式进入打谱介面後需要一点时间读取音乐档
或是开启mediaplayer的时间(我是呼叫mp来播放)
而每次读取音乐档、开启mp需要时间不同所致
我曾经尝试把变数改成去抓音乐的播放时间
但XNA跟我说这个播放时间不能拿来当变数使用...
虽然有抓到一个类似吉他英雄程式的范例档
但程式码太复杂,注解又都是英文...实在难以理解
有没有人知道该用什麽方法、逻辑来写会比较好?
2.程式在读取音乐、影片档的时候总需要一些读取时间
这导致游戏执行起来有很不顺畅的感觉
该如何知道程式正在读取档案,并做出一个读取画面呢?
3.选单切换的动态效果,我曾直接指定一堆图片
不断重新绘制他们的位置、透明度等...来试着达到动态选择、切换效果
图片少的时候看来没问题,但图片一多起来会delay...
像这种选单选择与选择後切换介面的动态效果有没有什麽比较好的写法?
这是目前遇到的几个比较大的问题
如果有解释不清的地方请直接提出我会再补述
如果有失礼的地方请见谅 Orz
先谢谢各位了
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.134.245.117
1F:推 NDark:你要不要先测试cpu不同loading下 音乐会不会播放速率不同? 02/08 16:33
2F:推 Transformers:根本作法 把英文练好 参考成功游戏的教学 02/08 19:46
3F:推 Bencrie:把英文练好比较实在 +1 02/08 20:30
4F:→ Splash5:音符的出现时间要跟frame对 而不是时间差 02/08 20:52
5F:推 teexit:我比较好奇你那段图片移动的update怎麽写的... 应该是有 02/08 21:54
6F:→ teexit:考虑到frame的部分吧... 要不然这样你跑N次N次都不一样 02/08 21:55
7F:→ crushcrush:毕专的时间不够把英文练好 囧 基础的说明是都看得懂 02/09 05:59
8F:→ crushcrush:但复杂的程式码加上看得似懂非懂的注解对我这程式新手 02/09 06:00
9F:→ crushcrush:而言太难理解了... 02/09 06:00
10F:→ crushcrush:计算游戏时间的变数是自进入打谱介面开始每秒更新30次 02/09 06:01
11F:→ crushcrush:以每秒30格来计算frame,音符出现是跟着这frame计数器 02/09 06:03
12F:→ crushcrush:请问这样算是有对在frame上吗?还是我根本就搞错方向? 02/09 06:03
13F:→ crushcrush:音符的移动是用游戏每update"n"次就移动一次指定距离 02/09 06:03
14F:→ crushcrush:我想说这样可以透过改变n来调整音符的移动速度 02/09 06:04
15F:→ crushcrush:移动速度是固定的,应该不是音符移动造成的误差? 02/09 06:04
16F:→ crushcrush:突然想到如果是呼叫mediaplayer出来播的话... 02/09 06:05
17F:→ crushcrush:即便程式掉格、delay,音乐似乎能不受影响正常播放? 02/09 06:06
18F:→ crushcrush:这样一来不管怎样写好像都会有误差...Orz 02/09 06:06
19F:→ crushcrush:谢谢各位的指导,我继续研究看看 >"< 02/09 06:07
20F:→ help0430:update 有传时间参数给你~要用阿! 02/09 09:24
21F:→ help0430:不能用呼叫update次数来做,每台电脑快慢不同 02/09 09:26
22F:推 NDark:有关fps的重要性麻烦回去翻一下拙作... 02/09 09:39
23F:→ crushcrush:谢谢,我大概有点概念了 02/10 00:09