Introduction - AI in Game Developement and Physics in Game

Download Report

Transcript Introduction - AI in Game Developement and Physics in Game

บทบาทและความสาค ัญของการใช้
ฟิ สิกส ์ในการพัฒนาเกม
่ เป็
่ นทีนิ
่ ยมมากในฟิ ลด ์ของ
หลักการของฟิ สิกส ์เป็ นสิงที
การสร า้ งเกมเนื่ องจากจะไม่ มี เ กมที่ มี ก ารตอบโต ้
่
่ เลยถ ้าปราศจากระบบ Physics engine
เคลือนไหวที
ดี
่ ซึงทุ
่ กวันนี ก็
้ มี engine ใหเ้ ลือกใช ้มากมายหลาย
ทีดี
ค่า ยหลายบริษ ัท แต่ล ะบริษ ัท ก็ พ ยามบ่ ง บอกถึง ข อ้ ดี
ของตัวเอง เช่น ราคา ความยืดหยุ่นต่อการใช ้งาน แต่
้ ง คูม
่ 10 ปี ทีแล
่ ้วอย่างสินเชิ
้
่ อ
ื การเรียนนี จะ
ต่างจากเมือ
้
่
เป็ นขันตอนการสร
้าง Physics engine โดยเริมจาก
้
พืนฐานทางคณิ
ตศาสตร ์ หลักการทางฟิ สิกส ์จนกระถึง
โค ้ดของโปรแกรม
บทบาทและความสาค ัญของการใช้
ฟิ สิกส ์ในการพัฒนาเกม
1.
2.
่ มความน่
่
เพือเพิ
าสนใจและความสมจริงในการ
แสดงผลของเกมของเรา
่ มวิ
่ ธก
่
เพือเพิ
ี ารเล่นเกมทีแปลกใหม่
ยงขึ
ิ่ น้
ทีม
่ า: http://unity3d.com/gallery/demos/live-demos#shadows
้
ตศาสตร ์: คณิ ตศาสตร ์
พืนฐานทางคณิ
่ อ
ทีผู
้ า
่ นต้องรู ้
Download
กฎของความน่ าจะเป็ นและ
การสุม
่
Physics in game development
Introduction

As you probably know, there is a lot of
randomness in the world. If a golfer hits a golf
ball ten times, chances are it will wind up in ten
different locations when it comes to rest. At the
same time, there is often some structure to the
randomness.
Advantage

Probability techniques will allow you to build structured
randomness into your games. Rather than having a flight
of arrows all travel along the same trajectory, which
would be boring and fake-looking, probability
techniques can give the arrows a range of initial
velocities and flight angles for a much more realistic
appearance. Probability techniques can be used to vary
the speeds of snowmobiles in a snowmobile game, how
้
ความน่ าจะเป็ นพืนฐาน




การโยนเหรียญ เช่น โยนเหรียญ สามเหรียญ
่
พร ้อมกัน 3 เหรียญ โอกาสทีจะออกหั
วพร ้อมกัน
คือเท่าไหร่
1/(2*2*2)=1/8
โยนเหรียญ สามเหรียญพร ้อมกัน 3 เหรียญ
่
โอกาสทีจะออกหั
วหรือก้อยพร ้อมกันคือเท่าไหร่
2/(2*2*2)=1/4
Random Number Generation



การ Random ด ้วยค่าอยู่ระหว่าง x ถึง y
เช่น Random(10,20)
แต่ละภาษาก็มโี ค๊ดการเขียนแต่งต่างกันไป
Java
import java.util.Random; // program uses class Random
{
public static void main(String[] args)
{
double result;
Random random = new
Random();
result=random.nextDouble();
System.out.println(result);
}
}
่
ภาษาอืนๆ
rand(10,20)
หรือ
rand()
Random Number Generation




้
ปกติแล้วการ Random นันจะเป็
นการ สุม
่ อยู ่
ในช่วง 0 ถึง 1 ถ้าเราต้องการ
การ Random ค่าระหว่างตัวเลขสองตัวเลข
เช่น Random ค่าระหว่าง 10 กับ 15
เราจะเขียนโค๊ดกันอย่างไร
ให้ y เท่ากับขอบบน
ให้ x เท่ากับขอบล่าง
(y-x)*Random()+x
Probability Functions

A probability function, also referred to as a
probability distribution function, is simply a
mathematical expression or geometrical curve that
models the probability of an event occurring within
certain dimensions. Probability functions are used in
scientific modeling all the time.
Typical Probability Function
Cumulative Probability Function
Gaussian Distribution
Uniform (0-1)
่
ดเท่า
การสุม
่ เลขระหว่าง 0 กับ 1ด้วยโอกาสทีจะเกิ
Triangular
น้อยสุด
ฐานนิ ยม
มากสุด น้อยสุด
น้อยสุด
ฐานนิ ยม มากสุด
ฐานนิ ยมากส
ม
Roulette
http://www.youtube.com/
watch?v=Zf0ev4h-zfk
่ แบบ Roulette
การเขียนการสุม
D1,25
0
D4, 25
D1, 25
D3, 25
D2, 25
D2,25
25
D3,25
50
D4,25
75
100
Roulette



่
เพิมความซ
ับซ ้อนในการ Random ทาให ้เกมดูสมจริง
้ ก
มากขึนอี
ใช ้สร ้าง AI หรือ ปัญญาประดิษฐ ์ เช่น Roulette ใน
Genetics Algorithm.
วิธก
ี ารเขียนการทางานของ Roulette
ตัวอย่าง

1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
่ น 50,25,5 และ 20 จง
มีทางเลือกอยู ่ 4 ทาง ด้วยความถีเป็
่
ใช้ Roulette ทิศทางทีจะไป
matrix_pop=[50 25 5 20];
rtest = (sum(matrix_pop)).*rand();
total_pop=0;
for i=1:4
total_pop=total_pop+matrix_pop(i);
if (total_pop>= rtest )
่ กสุม
matrix_return=i;// ทิศทางทีถู
่
break;
end
end
่ แบบ Roulette
การเขียนการสุม

่ น 50,25,5 และ 20 จงใช้
มีทางเลือกอยู ่ 4 ทาง ด้วยความถีเป็
่
Roulette ทิศทางทีจะไป
D4, 20
D3, 5
D1, 50
D2, 25
D1,25
0
D2,25
50
D3
,25
75 80
D4,25
100
่ แบบ Roulette
การเขียนการสุม

่ matrix_pop เก็บค่า
1.สร ้างตวั แปรชือ
้
ความน่ าจะเป็ นทังหมด
D4, 20
D3, 5
D1, 50
matrix_pop =[50
25 5 20]
D2, 25

่ rtest จากนันท
้ าการสุม
2. สร ้างตัวแปรชือ
่ ค่าความน่ าจะเป็ น
้
ตังแต่
[0-sum(matrix_pop)]
100]
สมมุตวิ า
่ สุม
่ ได้คา
่ เป็ น 77.45
[0 -
่ แบบ Roulette
การเขียนการสุม

่ total_pop จากนันก
้ าหนดให้มค
3. สร ้างตวั แปรชือ
ี า
่
เป็ น 0

D4, 20
D3, 5
D1, 50
D2, 25
4. ทาการวนลู ปการทางานของโปรแกรมเท่ากับ
้
จานวนของทิศทางทังหมด
้ 4 ทิศทาง, D1, D2, D3, D4)
(โจทย
์ข้
อ
นี
มี
ทุกรอบ


4.1 ทาการอ ัพเดทค่า
total_pop=total_pop+matrix_pop[i]
4.2 ทาการตรวจสอบค่าของ total_pop ว่า
มากกว่าหรือเท่าก ับ rtest หรือยัง ถ้าเป็ นจริง
้
ให้สง่ ค่าทิศนันเป็
นทิศทางสุม
่ ออกมา
่ แบบ Roulette
การเขียนการสุม
D4, 20
D3, 5
D1, 50
D2, 25
รอบที่
(i)
rtest
total_pop
rtest>=total_pop
1
72.45
0+50=50
เท็จ
2
72.45
50+25=75
เท็จ
3
72.45
75+5=80
จริง
้
การประยุกต์ใชงานจริ
ง
D, 20
C, 5
A, 50
B, 25
้
การประยุกต์ใชงานจริ
ง
roulette1.html
roulette2.html
roulette3.html
roulette4.html
roulette5.html
roulette6.html
roulette7.html
roulette8.html
roulette9.html
roulette10.html
roulette11.html and roulette12.html
ตัง้ บอลทีต
่ าแหน่ง (220,250)
กด key==1 ยิงตาแหน่ง A
กด key==2 ยิงตาแหน่ง B
กด key==3 ยิงตาแหน่ง C
กด key==4 ยิงตาแหน่ง D
กด Esc กลับไปตัง้ บอลใหม่
roulette13.html
กด key==1 ยิงตาแหน่ง A
กด key==2 ยิงตาแหน่ง B
กด key==3 ยิงตาแหน่ง C
กด key==4 ยิงตาแหน่ง D
กด Esc กลับไปตัง้ บอลใหม่