kodu

9

Click here to load reader

Upload: soraya2540

Post on 28-Oct-2015

100 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Kodu

1.3 การสรางเกม Kodu การสรางเกมมหลายขนตอน แตพอแบงไดสองสวน คอการออกแบบเกม และการก าหนดกลไกในการเลนเกม

การออกแบบเกม เปนการออกแบบรปลกษณสงตางๆ ทปรากฏในโลกของเกม เชน พนทส าหรบเลนเกม ตวละคร วตถตางๆ เสยงประกอบ เปนตน ซงผเลนจะเหนและไดยนขณะเลนเกม เมอมพรอมทกอยางในโลกของเกมแลว ในการเลนเกมตองมกลไกขบเคลอนเกม เชน เปาหมายในการเลนเกม ซงเปนตวก าหนดทศทางในการเลนเกม ยกตวอยางเชน เกมผจญภยม 4 ดาน เปาหมายอาจเปนเอาตวรอดใหไดในแตละดาน ครบทง 4 ดานดวยเวลาทก าหนดไวในแตละดาน หรอตองท าภาระกจใหส าเรจในแตละดาน ครบทง 4 ดาน

นอกจากเปาหมายของเกมแลว เกมตองมกฎกตกา มวธการใหคะแนน มหลายๆ ดาน (Game Levels) เพอเพมความทาทายใหผเลน และถาเกมยาวมากอาจใชวธเลาเรองประตดประตอเรองราวในแตละฉาก เพอสรางความตนเตนเราใจใหผเลนตดตามเกมตอ กลไกหลายๆ อยางทกลาวมา เปนภาพรวมของทงเกม แตกลไกบางอยางตองระบลงไปยง สงตางๆ ทอยในโลกของเกม โดยเฉพาะตวละครหลกๆ ทมบทบาทมากในเกม และบางตวทเปนเสมอนตวแทนของผเลน ทผเลนสามารถควบคมและโตตอบกบเกมได ตวละครเหลานตองมกลไกในการเลน สามารถโตตอบกนเองได หรอโตตอบกบสงแวดลอมในเกมได วธใสกลไกกท าไดดวยการเขยนโปรแกรมใหตวละครนนเอง การเขยนโปรแกรมใน Kodu เปนการสรางพฤตกรรมใหตวละคร ตอบสนองตอเหตการณตางๆ ทเกดขนในเกม เชน ผใชกดคยลกศรท าใหตวละครเคลอนท หรอผเลนท าคะแนนไดครบ 5 คะแนนแลว ผเลนเปนฝายชนะ เปนตน ดงนนการเขยนโปรแกรมใหแตละตวละคร จะมลกษณะเปนรายการหลายๆ รายการเรยงตอกนมา โดยในแตละรายการจะประกอบดวย เหตการณทตวละครนนเฝารอใหเกดขน ตามดวยการตอบสนองตอเหตการณจากตวละครนน

Page 2: Kodu

ใน Kodu การเขยนโปรแกรมในแตละแถว (มเลขก ากบอย) จะใชวธเลอกไอคอน (มใหเลอกในโปรแกรม) เรยงตอกนหลง WHEN เพอระบถงเหตการณทรอใหเกดขน และเลอกไอคอนเรยงตอกนหลง DO แสดงสงทตองการจะท าเมอเกดเหตการณนนขนมาจรงๆ

เพอใหเหนภาพในการเขยนโปรแกรม คราวหนามาลองเขยนเกมงายๆ

2.1 หลกการเขยนโปรแกรมเกม Kudo Kodu เปนโปรแกรมภาษาเฉพาะดาน (Domain-specific language) สรางมาส าหรบการสรางเกม โดยอาศยไวยากรณภาษา (Grammar) ของ Kodu เปนตวก าหนดวธการเขยนโปรแกรมในเกม การเขยนเกมใน Kodu เรมจากการสรางโลกของเกมขนมากอน โดยสรางพนทในการเลนเกม (Terrain) จากนนสรางตวละคร หรอ วตถตางๆ เขาไปบนพนทนน ตอมาคอการสรางกฎของเกม เพอใหตวละครและวตถตางๆ ท างานรวมกน ตามทเกมไดถกออกแบบไว

Page 3: Kodu

กฎตางๆ ในเกม จะถกก าหนดโดยการเขยนโปรแกรมเขาไปยงตวละคร หรอวตถตางๆ และลกษณะการเขยนโปรแกรมใน Kodu คอการสงใหตวละคร หรอวตถตางๆ ท างานเมอเหตการณตางๆ เกดขน เชนในตวอยางตามรปดานบน เปนการก าหนดกฎใหตวละคร Kodu มทงหมด 4 เหตการณ แตท างาน 5 อยาง ไวยากรณของ Kodu อยในรปแบบงายๆ คอ แตละบรรทด หรอแตละรายการ (มตวเลขก ากบอย) เปนกฎหนงๆ ส าหรบตวละครหรอวตถนน และกฎนนอยในรปแบบตามไวยากรณของ Kodu ดงน When Condition Do Action อธบายไดวา เมอ (When) เหตการณทเฝารอเกดขน (Condition) ใหท า (Do) งานดงน (Action) จากรปดานบน อธบายกฎตามหลกไวยากรณของ Kodu ไดดงน

1. เมอผเลนใชจอยสตกดานซายของเกมแพด ตวละคร Kodu จะเคลอนทตามทศทางของจอยสตก

2. เมอผเลนใชคยลกศรบนคยบอรด ตวละคร Kodu จะเคลอนทตามทศทางของคยลกศร (เกมนผเลนสามารถจะใชเกมแพด หรอจะใชคยบอรดในการเลนกได)

3. เมอตว Kodu ชน (bump) กบแอปเปล ใหตว Kodu กนผลแอปเปลนน (it)

Page 4: Kodu

4. ในกรณทกฎมการยอหนา และไมมเงอนไขของเหตการณก ากบอย หมายความวา ใหใชเงอนไขกอนหนานน ซงกคอกฎในขอ 3 เมอตว Kodu ชน กบแอปเปล ใหเพมคะแนน 1 คะแนนแกผเลน

5. เมอผเลนท าคะแนนะไดครบ 5 คะแนน ผเลนชนะ ไวยากรณของ Kodu ยงมใหศกษาอก มาตามตอคราวหนาครบ 2.2 การสรางเงอนไขในเกม Kudo เกมใน Kodu ถกขบเคลอนดวยเหตการณตางๆ ระหวางโปรแกรมท างาน หรอระหวางการเลนเกม ดงนนการเขยนโปรแกรมจงขนกบเหตการณเหลานน และสามารถแสดงเปนกฎไดดงน

When Condition (เงอนไขของเหตการณ) Do Action (สงทจะท าเมอเกดเหตการณขน) กฎดานบนนเปนเพยงแคกฎเบองตน เพราะเบองหลงของแตละรายการค าสงในโปรแกรม Kodu ถกก ากบดวยไวยากรณภาษา (Kodu Grammar) ทตองใชใหถกตอง เพอใหเกมท างานไดถกตองตามทไดออกแบบไว

การเขาใจไวยากรณของเกมจะท าใหเขยนโปรแกรมใน Kodu ไดดขน เหมอนเขาใจในไวยากรณภาษาองกฤษ กจะอานเขยนภาษาองกฤษไดดขน แตกไมไดหมายความวา ตองเขาใจไวยากรณใน Kodu ทงหมดกอนถงจะเรมเขยนโปรแกรมบน Kodu ได ดงนนมาเรมตนศกษาแบบงายๆ กอน

สวนประกอบส าคญของไวยากรณ คอ Production Rules เปนกฎส าหรบสรางภาษา ประกอบไปดวย Variables และ Terminals ซงอยในรปแบบดงน

Variable –> Variables Terminals

Variable คอค าทแปรเปลยนไดตามกฎ(อน) ค าเหลานจะขนตนดวยอกษรตวใหญ เชน Rule, Condition, Action, Sensor, Filter, FilterSet, Actuator, Selector, Modifier เปนตน

Terminal คอค าทสนสด ไมสามารถเปลยนแปลงตอไปไดอกแลว ค าเหลานจะขนตนดวยอกษรตวเลก เชน kodu, cycle, apple, see, move, red, eat, toward, quickly, hear เปนตน ค าเหลานจะ

Page 5: Kodu

เปนไอคอนตางๆ ทใชในการเขยนโปรแกรมใน Kodu ซงไอคอนตางๆ พอจะแบงเปนกลมๆ (ตวอยาง) ไดดงน ไอคอนตวละครหรอวตถ

ไอคอนแสดงการรบร

ไอคอนทเปนการกระท า

Production Rules เปนกฎทใชอธบายตวภาษาเพอสรางกฎของเกม ในขณะทกฎของเกมทใชตอนเขยนโปรแกรม (When … D0 …) คอผลลพธสดทายจากการใช Production Rules ดานซายมอของ Production Rules จะมไดแตตวแปร และมแคตวเดยว แตดานขวามอ ตวแปรและ Terminal อาจมตวเดยว หลายตว หรอไมมเลยกได คราวหนามาดวา จากกฎส าหรบสรางภาษา จะไปสประโยคหรอกฎค าสงทใชในการเขยนเกมใน Kodu ไดอยางไร

Page 6: Kodu

2.3 หลกการใชค าสงในเกม Kudo จดเรมตนของกฎส าหรบสรางภาษา (Production Rules) ทใชในการเขยนโปรแกรมคอ

1. Rule –> Condition Action

Rule คอกฎของเกมทตองการจะสราง Condition เปนเงอนไขของเหตการณ Action สงทจะท าเมอเงอนไขนนเปนจรง กฎนยงใชงานไมได เนองจากดานขวามอมแตตวแปร (Variable) ซงไมสามารถแทนทไดดวยไอคอนใน Kodu ดงนนมาดกฎขออนกนตอวา ตวแปรเหลานเปลยนไปเปนอะไรไดบาง

2. Condition –> Sensor Filter

3. Action –> Actuator Selector Modifier Sensor (การรบร) Filter (ตวกรอง) Actuator (ตวกระท า) Selector (ตวเลอก) Modifier (ตวขยาย) ทงหมดนกยงเปนตวแปรอย แทนทดวยไอคอนไมได แตสามารถแทนทกนเองได

กฎการแทนท เปนกฎทท าใหไวยากรณขยายออกไปไดดวยการแทนค าจากกฎขอหนงไปแทนค าในกฎอกขอหนง คอแทนค าทเปนตวแปรทางซายมอ ดวยค าทางขวามอ (อาจเปน Variable หรอ Terminal กได)

ยกตวอยางในกรณน เราสามารถน า Sensor Filter ไปแทนตวแปร Condition ในกฎขอแรกได ดงน Rule –> Sensor Filter Action

และเมอแทน Action ดวย กจะไดกฎใหมดงน Rule –> Sensor Filter Actuator Selector Modifier มาดกฎขออนๆ กนตอ 4. Sensor –> see | hear | bump

5. Filter –> apple | blue | health

6. Actuator –> move | shoot| add

Page 7: Kodu

7. Selector –> toward | me | avoid

8. Modifier –> 5 points | red | quickly

คราวนเราจะเหนค าทเปน Terminals กนบางแลว แทง (Vertical bar) ทกนระหวางค าดานขวามอ หมายความวา ใหเลอกใชค าใดค าหนง ตวอยางเชน เลอก hear แทน Sensor, apple แทน Filter, add แทน Actuator เปนตน

คราวนมาลองดตวอยางกฎในเกม ทไดจากกฎสรางภาษาดานบน เพอน าไปเขยนโปรแกรมใน Kodu เชน ตองการเขยนกฎใหตว Kodu เมอเหนผลแอปเปลแลว ใหเคลอนทไปหาผลแอปเปลนนอยางรวดเรว เมอใชกฎสรางภาษาทกลาวมา รวมกบกฎการแทนทแลว จะไดกฎค าสงสดทายตามขนตอนดงน

Rule –> Condition Action Rule –> Sensor Filter Action Rule –> see Filter Action Rule –> see apple Action Rule –> see apple Actuator Selector Modifier Rule –> see apple move Selector Modifier Rule –> see apple move toward Modifier Rule –> see apple move toward quickly กฎสดทายจะมแต Terminal ในดานขวามอ ซงสามารถเขยนในโปรแกรม Kodu ไดดงน

When see apple Do move toward quickly สงเกตวา When และ Do ไมไดอยในไวยากรณของ Kodu แตเปนสวนหนงในกฎของเกมทใชแยกระหวางเหตการณ กบสงทจะท าเมอเหตการณนนเกดขน รปลางนแสดงการเขยนกฎสดทายทไดจากตวอยางดานบนใหตว Kodu

Page 8: Kodu

2.4 หลกการสรางเกมใน Kudo 1 2 3 เปนไวยากรณส าหรบกฎเพยงขอเดยว ทเรมตนดวยตวแปร Rule แตส าหรบโปรแกรมเกมใน Kodu สามารถมไดหลายกฎและองคประกอบอนๆ อก ในคราวนเรามามองไวยากรณทกวางขน ครอบคลมทงโปรแกรม ซงจะมตวแปรเพมขนมาอก จดเรมตนของไวยากรณของโปรแกรมเกมคอ Game ซงประกอบไปดวยตวละคร Actors หลายๆ ตว ในหนงเกม Game –> Actors

ตวละครถอวาเปนวตถ Object หรอกลมของวตถ Object Actors ซงไมระบจ านวน ขนกบแตละเกม

Actors –> Object | Object Actors

ไวยากรณรปแบบน จะเหนวาตวแปร (ในทนคอ Actors ดานซาย) สามารถแทนทดวยตวมนเอง (Actors ดานขวาสด) ไวยากรณในลกษณะน คลายกบฟงกชนทเรยกตวเอง (Recursive function) ถาเลอกแทนทดวย Object Actors โดยมจดสนสดของการวนซ า ถาเลอกใชตวแปร Object

วตถสามารถเขยนโปรแกรมไดอยางนอยหนงหนา Page หรอมากกวานน แตไมเกน 12 หนา

Object –> Page | Page Object

Page 9: Kodu

ในแตละหนาสามารถ มไดหนงกฎ Rule หรอหลายกฎกได Page –> Rule | Rule Page

กฎถกก าหนดดวยเงอนไขของเหตการณ Condition และสงทจะท า Action เมอเกดเหตการณขน กฎยงสามารถมกฏซอน (Nested Rules) ไดดวย กฎซอนนสรางไดดวยการสลบไปใช Page ในหนาใหม เพอแสดงพฤตกรรมทเปลยนไปจากเดม เมอเหตการณทก าหนดไวเกดขน หรอการเปลยนระดบของเกม (Game Level) Rule –> Condition Action | Condition Action Page

Condition Action และตวแปรทตามมาจะคลายของเดม แตมไวยากรณทขยายมากขน เอาไวคราวหนามาดรายละเอยดกน