Transcript pptx

Sound On Game
Suphot Sawattiwong
[email protected]
1
เสี ยงใน XNA
• ใน XNA 3.0 นันสามารถ
้
ใช้ .wav, .mp3 ได้ โดยตรงใน
Content Project ได้ เลย และ สามารถในเครื่ องมือ ที่ชื่อ
Microsoft Cross-Platform Audio Creation Tool
หรือ XACT
• สิง่ หนึง่ ที่ต้องจาไว้ วา่ XACT ไม่ใช่โปรแกรมประเภท Sound
Editor หากจะต้ องการแก้ หรื อตัดต่อเสียงควรทาให้ เรี ยบร้ อยจาก
โปรแกรมอื่นๆ ก่อน
2
มารู ้จกั กับ Wave, Wave Bank, Sound Bank,
Cue
• Wave เป็ นไฟล์ที่เก็บ Audio Data เพื่อใช้ ได้ อย่างอิสระ หรื อ
เพื่อเกมเสียงที่ใช้ ประกอบ effect ในเกม
• Wave Bank เป็ นไฟล์ที่เก็บ wave file หลายๆ อันไว้ ด้วยกัน
เป็ นกลุม่ อยูใ่ นไฟล์เดียว
• Sound Bank เป็ นกลุม่ ของหลายๆ wave bank และ cue
• Cue เป็ นไฟล์ที่ยอมให้ Programmerเล่นเสียง โดยประกอบด้ วย
เสียงอย่างน้ อย 1 เสียง และอ้ างอิงกับ sound bank
3
การใช้งาน XACT
• Click ปุ่ ม Start เมนู และเลือก All Programs.
• Click Folder Microsoft XNA Game Studio 3.0 เลือก Tools และ
click Microsoft Cross-Platform Audio Creation Tool (XACT)
• จากนันให้
้ ทาการ New Project ขึ ้นมาโดยต้ องนาไฟล์นามสกุล xap ไปใส่ไว้ ใน
Folder ที่ต้องการ ควรสร้ างแยกจาก Project XNA ที่เป็ น Visual Studio
• เลือก Create Wave Bank
• ทาการ ลาก Sound หรื อทาการ insert wave file โดยการ Click ขวา ใน
Wave Bank
• ก่อนทดสอบการ Play ให้ ไปเปิ ด โปรแกรมชื่อ XACT Audition Utility ก่อน หาได้
จาก Start> All Program>Microsoft XNA Game Studio
3.0>Tools> XACT Audition Utility
4
การใช้งาน XACT
•
•
•
•
•
•
•
แล้ วทาการ Create Sound Bank
ทาการลาก file จาก wave bank มา sound bank
แล้ วทาการลาก ไฟล์จาก sound bank ลงไปที่ cue
เสร็ จแล้ วให้ ทาการ Build Sound Project
ให้ ทาการ save
จากนันให้
้ กลับไปที่ Microsoft Visual C# 2008 Express
เปิ ด Project ที่ต้องการใส่เสียง ทาการ add exist item เลือก
.xap ที่ทาการ save ไว้
• จากนันให้
้ ทาการ copy ไฟล์นามสกุล xgs, xsb, xwb ไปไว้ ที่เดียวกัน
กับ .xap ซึง่ ในที่นี ้คือ Folder Content
5
การเขียนโปรแกรมเสี ยงโดยใช้ XACT
• Method ที่ใช้ ทาการโหลด เสียงที่ดีที่สดุ คงไม่พ้น
LoadContent ซึง่ จะสร้ าง Audio Engine, wave และ
sound bank ในนี ้ โดยประกาศตัวแปร AudioEngine,
WaveBank และ SoundBank เป็ น static ใน Class
Game1
• โดย AudioEngine เป็ นตัวแปรที่เก็บค่า XACT Game
Setting ไว้
• ส่วน WaveBank และ SoundBank เป็ นการบอก
AudioEngine ว่าไฟล์ไหนถูกเรี ยกใช้ งาน
6
การเขียนโปรแกรมเสี ยงโดยใช้ XACT
• ดูใน Ex16_SoundTest
• ใน Class Game1 ให้ ใส่ตวั แปรดังนี ้
static AudioEngine audio; // ตัวแปรเนี ้เก็บค่า XACT game
setting
static SoundBank soundBank;
static WaveBank waveBank;
Cue gameloopCue; //--------- ตัวแปรเก็บ SoundCue
• ใน Method LoadContent ให้ ใส่ดงั ต่อไปนี ้
7
การเขียนโปรแกรมเสี ยงโดยใช้ XACT
• ใน Method LoadContent ให้ ใส่ดงั ต่อไปนี ้
protected override void LoadContent()
{
spriteBatch = new SpriteBatch(GraphicsDevice);
audio = new AudioEngine("Content\\sound.xgs");
// XACT game setting File
soundBank = new SoundBank(audio, "Content\\Sound Bank.xsb");
// XACT Sound Bank file
waveBank = new WaveBank(audio, "Content\\Wave Bank.xwb");
// XACT Wave Bank File
gameloopCue = soundBank.GetCue("gameloop");
// Cue เป็ นตัวที่ใช้ ในการเล่ นเสียงในเกม
}
8
คาสัง่ ในการสัง่ ให้ Play Sound
• ใน Class Cue มีคาสัง่ ที่น่าสนใจอยูห่ ลายคาสัง่ ที่ใช้ ประจาดังนี ้
Method
Play()
Stop()
Resume()
คาอธิบาย
เล่นเพลง
หยุดเพลง
เล่นเพลงต่อ
Pause()
หยุดเพลงชัว่ คราว
• และยังมี status ที่น่าสนใจไว้ ใช้ ประโยชน์อีกดังนี ้
Method
IsPlaying
IsPaused
คาอธิบาย
ถ้ าเป็ นtrue แสดงว่า เพลงกาลังเล่นอยู่
ถ้ าเป็ นtrue แสดงว่าทาการหยุดเพลงชัว่ คราว
9
ตัวอย่าง Code ของการเล่นเพลงโดยใช้ XACT
protected override void Update(GameTime gameTime)
{
if (!gameloopCue.IsPlaying)
// ถ้ า gameloopCue ไม่ทาการเล่นอยู่จะเป็ นจริ ง
{
gameloopCue.Play();
}
base.Update(gameTime);
}
• ดูได้ ใน Project ชื่อว่า SoundTest
10
การเล่น Sound ง่ายๆ ผ่าน Class SoundEffect
• ทาการ Add New Item นาเพลงเข้ ามาใน project ใน
Folder Content เหมือนกับการโหลดภาพ
• จากนันให้
้ ประกาศตัวแปรใน Class Game1
SoundEffect soundEffect; // ตัวแปร soundEffect
• ใน Method LoadContent ให้ ทาตามดังนี ้
protected override void LoadContent()
{
spriteBatch = new SpriteBatch(GraphicsDevice);
soundEffect = Content.Load<SoundEffect>(@"gameloop"); //
โหลด Content
soundEffect.Play(); // เล่นเพลง
}
11
ตัวอย่าง Sound Manager
ดูใน Ex17_TestSoundManager
12
Lab 9: เกมบวกลบคูณหารให้ได้ 10
สุพจน์ สวัตติวงศ์
อ. สุภทั รชัย พลศักดิ์
อ. เอกนรินทร์ คาคูณ
13
เงื่อนไขเกม
• ให้ ทาการบวก ลบ คูณ หาร ตัวเลข ระหว่าง 0-9 เพื่อให้ ได้ 10 หากได้
คะแนน 10 ให้ คะแนนบวกเพิ่มขึ ้นไป 100 คะแนน หากกดปุ่ ม pass ก็
ลบ 50 คะแนน
14
วิธีคิด
1. ให้ ทาการ random ตัวเลข ระหว่าง 0-9 มา 4 ตัว
2. นาตัวเลขลากไปวางโดยใช้ mouse ลงในช่องที่ต้องการ และ
Click เครื่ องหมายที่ต้องการใช้ และนาตัวเลขไปใส่ในอีก 1 ช่อง
3. ให้ ทาการคานวณผลลัพธ์ แล้ วให้ ทาการลาก ผลลัพธ์ไปอยู่กบั ตัวเลข
ที่เหลือ
4. ทาจนกว่าตัวเลขตัวเดียว และหากตัวเลขนันมี
้ คา่ = 10 ให้ ทาการเพิ่ม
คะแนน 100 คะแนน หากไม่ให้ -50 คะแนน รวมถึงหากกดปุ่ ม
pass ให้ -50 คะแนนเช่นกัน
15
ตัวอย่างเกมลักษณะนี้ ไม่จาเป็ นต้องมี เวลา กับ undo
16