วิธีการแก้ Key map ของ RMMV ง่ายกว่าที่หลายๆท่านคิด เนื่องจากเกมที่สร้างด้วย RMMV จะใช้ภาษา JavaScript ในการพัฒนา ซึ่งทำให้ Code ทั้งหมดของเกมถูกเปิดเผย (ไม่เหมือนรุ่นก่อนๆที่เป็นภาษา Ruby จะมีโค้ดบางส่วนเขียนด้วย C++ และถูกซ่อนไว้ใน DLL)
ทีนี้เรามาดูกันว่าจะทำยังไง
เนื่องด้วยภาษา JavaScript ออกแบบมาเพื่อใช้พัฒนาเว็บแอพพลิเคชั่นเป็นหลัก ดังนั้นจึงอิงมาตราฐานตาม World Wide Web Consortium (W3C) ดังนั้นในส่วนของ KeyCode เราสามารถดูได้จากเว็บนี้เลย
https://www.w3.org/2002/09/tests/keys.html
ในเว็บที่ให้ไว้ข้างต้นทดลองกดคีย์ดูครับ มันจะขึ้น keyCode มา ซึ่งเราจะนำมาใช้ใน RMMV กัน
ขั้นตอนการแก้ไข ปุ่มทิศทางให้เป็น WASD แทน ปุ่มลูกศรทิศทาง
1. เข้าไปในเว็บไซต์ W3C ที่ให้ไว้ข้างบน ทดลองกดปุ่มแล้วเก็บ keyCode มา (เก็บตรง keydown นะครับ)
ในที่นี้ผมจะได้ keyCode มาดังนี้
- W : 87
- A : 65
- S : 83
- D : 68
- E (ใช้แทน W เดี๋ยวดูใน Code จะเข้าใจครับ) : 69
2. เราจะไปแก้โค้ดกันแล้ว เปิดโฟลเดอร์เกมของเราขึ้นมา แล้วไปที่โฟลเดอร์ js จากนั้นเปิดไฟล์ rpg_core.js ขึ้นมา ด้วย Text Editor อะไรก็ได้ (ผมใช้ Atom)
3.จากนั้นให้ search หา "Input.keyMapper" (บรรทัดที่ 2251)
4.จะเห็นว่าที่โค้ดบรรทัดที่ 2252 จะเห็นว่าเป็น 9: 'tab' ตรงนี้หลายๆท่านคงพอเดาออกแล้ว เลข 9 คือ keyCode นั่นเอง ทีนี้เราก็เพียงแค่ไล่แก้ keyCode เอาก็พอครับ
ในที่นี้ผมได้ทำการแก้ keyCode ดังนี้
- 65: 'left' //A
- 87: 'up' //W
- 68: 'right' //D
- 83: 'down' //S
- 69: 'pagedown' //เดิมทีปุ่มนี้จะใช้ W ครับ แต่เนื่องจากเราเอา W มาใช้แล้วผมเลยกำหนดเป็น E แทนเพราะอยู่ใกล้ๆกัน
(สำหรับท่านที่ยังงงๆอยู่ให้หาคีย์ที่ต้องการแก้ครับ เช่นต้องการแก้ปุ่มซ้าย ก็หา 'left' เดิมทีมันจะเป็น 37: 'left' ก็แก้เป็น 65: 'left' ซึ่งจะเป็นปุ่ม A แทน เป็นต้นครับ )
5. ทำการบันทึกไฟล์ จากนั้นทดลองเล่นดูจะพบว่าการควบคุมทิศทางเปลี่ยนมาเป็น WASD แล้ว
6.
หมายเหตุ ในกรณีที่เราต้องการให้สามารถควบคุมตัวละครได้โดยใช้ได้ทั้งปุ่ม WASD และ ปุ่มลูกศรพร้อมกัน สามารถทำได้โดยการ map keyCode ให้ตรงกันครับ ดังภาพนี้
เพียงเท่านี้เราก็สามารถควบคุมตัวละครได้จากทั้งปุ่มทิศทาง และปุ่ม WASD แล้ว
แล้วพบกันใหม่โอกาสหน้านะครับ