การเรียนรู้และฝึกทักษะโค้ดดิ้งโดยใช้วิดีโอเกม
วิดีโอเกม (Video Game) เป็นซอฟต์แวร์ประเภทเกม เพื่อสร้างความสนุกเพลิดเพลินสำหรับผู้เล่น โดยมักใช้งานร่วมกับอุปกรณ์อิเล็กทรอนิกส์ หรือเครื่องคอมพิวเตอร์ในการเล่น หรือที่เรียกว่า เครื่องเล่นวิดีโอเกม (Video Game Console)
What is a video game ?A video game console is an electronic or computer device that outputs a video signal or visual image to display a video game that one or more people can play through some type of game controller. These may be home consoles which are generally placed in a permanent location connected to a television or other display device and controlled with a separate game controller, or handheld systems that include their own display unit and controller functions build into the unit and can be played anywhere.Ref.: https://en.wikipedia.org/wiki/Video_game_console
ในส่วนของฮาร์ดแวร์ นอกจากตัวประมวลผลแล้ว ยังมีส่วนเชื่อมต่อกับผู้ใช้สำหรับอินพุต เช่น ปุ่มกด (Buttons) หรือคันโยกควบคุม (Joystick) และมีส่วนแสดงผลหรือเอาต์พุต เช่น จอภาพกราฟิก (Graphic Display) และมีลำโพงเสียง (Speaker) เป็นต้น
เกมอาเขต (Arcade Game) เป็นประเภทหนึ่งของอุปกรณ์ในการเล่นวิดีโอเกม หรือที่เรียกว่า เครื่องเกมตู้ และมักมีขนาดใหญ่ และเป็นแบบหยอดเหรียญ ผู้เล่นจะต้องหยอดเหรียญจ่ายเงินเพื่อเล่นเกมดังกล่าว
จากอดีตถึงปัจจุบัน เครื่องเล่นวิดีโอเกมได้ถูกพัฒนาออกมาหลายรูปแบบ เช่น มีขนาดเล็กลงและพกพาได้ (Handheld / Portable Game Consoles) หรือสามารถใช้ร่วมกับสมาร์ทโฟนในการเล่นวิดีโอเกม สามารถเล่นพร้อมกันมากกว่าหนึ่งคนและเล่นแบบออนไลน์ได้
ในปัจจุบัน เราสามารถพบเห็นสื่อการเรียนรู้สำหรับเด็กหรือเยาวชน เพื่อใช้ในการฝึกทักษะด้านการเขียนโปรแกรมคอมพิวเตอร์ (โค้ดดิ้ง) โดยการสร้างซอฟต์แวร์ที่เป็นวิดีโอเกม หรืออาจเรียกว่า โค้ดดิ้งหรือเขียนโปรแกรมสำหรับเกมส์ (Game Programming) — แนวทางในการเรียนรู้ลักษณะนี้ เราเรียกว่า Constructionist Gaming (Making Games for Learning)
โค้ดดิ้งเกม (Coding Game) หมายถึง ประเภทหนึ่งของเกม ที่จะต้องอาศัยการเขียนโค้ดในการเล่นเกม เช่น ทำภารกิจบางอย่างเพื่อให้ได้คะแนนหรือผ่านไปยังด่านถัดไป ยกตัวอย่างเช่น Google’s Blockly Games เป็นตัวอย่างโค้ดดิ้งเกมที่ใช้วิธีการต่อบล็อกคำสั่งแบบกราฟิก (Block-based Programming) สร้างโดยใช้ไลบรารีที่มีชื่อว่า Google Blockly
Scratch และ Minecraft ก็เป็นอีกตัวเลือกสำหรับฝึกเขียนโค้ดแบบต่อบล็อกคำสั่ง ในรูปแบบของการสร้างเกม แต่ถ้าจะเปลี่ยนมาเขียนโค้ดโดยใช้ภาษาคอมพิวเตอร์ระดับสูง เพื่อสร้างซอฟต์แวร์ประเภทเกม ก็มีตัวเลือก เช่น ภาษาไพธอน (Python) และจาวาสคริปต์ (JavaScript) โค้ดที่เขียนด้วยภาษาจาวาสคริปต์เหมาะสำหรับการเขียนโค้ด และรันบนเว็บเบราว์เซอร์ได้โดยตรง
ถ้าเลือกใช้ภาษาไพธอน ก็มีไลบารีสำหรับไพธอน เช่น PyGame และ Python Arcade ให้เลือกใช้ โค้ดไพธอนที่เขียนโค้ดใช้ PyGame สามารถนำไปรันบนเว็บเบราว์เซอร์ได้เช่นกัน ตัวอย่างเช่น Pygame Trinket หรือการใช้ Pyjsdl แปลงโค้ดให้เป็นโค้ด JavaScript และใช้งานร่วมกับ HTML5 Canvas เป็นต้น
The Python Arcade Library
Arcade is an easy-to-learn Python library for creating 2D video games. It is ideal for people learning to program, or developers that want to code a 2D game without learning a complex framework.- https://arcade.academy/
- https://pypi.org/project/arcade/
- https://github.com/pythonarcade/arcade
- https://learn.arcade.academy/chapters/index.html
Microsoft MakeCode Framework
MakeCode เป็นโปรเจกต์ทางด้านซอฟต์แวร์สำหรับด้านการศึกษาและเป็น Open Source ของบริษัท Microsoft มีวัตถุประสงค์เพื่อให้เยาวชน นักเรียน หรือนักศึกษาได้มีความรู้และทักษะทางด้านวิทยาการคอมพิวเตอร์ (Computer Science) และลงมือปฏิบัติจริงในการเขียนโค้ดระดับต่าง ๆ ตั้งแต่ระดับเริ่มต้นขึ้นไป
MakeCode เป็นซอฟต์แวร์ประเภท Web-based Code Editor ที่ทำงานบนเว็บเบราว์เซอร์ สามารถนำไปใช้ในการเขียนโค้ดสำหรับอุปกรณ์อิเล็กทรอนิกส์ หรือบอร์ดไมโครคอนโทรลเลอร์ เช่น บอร์ด BBC Micro:bit และบอร์ด Adafruit Circuit PlayGround Express และอุปกรณ์ประเภท Portable Retro-Arcade Game Console แต่ถ้ายังไม่มีอุปกรณ์ฮาร์ดแวร์ ก็สามารถทดสอบการทำงานของโค้ดได้ โดยใช้ตัวจำลองการทำงานเสมือนจริง (Web-based Simulator)
ผู้ใช้สามารถเขียนโปรแกรมโดยการต่อบล็อกตามรูปแบบของ Google Blockly หรือเขียนโค้ดโดยใช้ภาษา JavaScript / Static JavaScript หรือ Python ได้
MakeCode ยังใช้ได้สำหรับการเขียนโค้ด Minecraft ซึ่งไม่จำเป็นต้องใช้อุปกรณ์ฮาร์ดแวร์ตามที่กล่าวไป
MakeCode Arcade เป็นเครื่องมือในการฝึกเขียนโค้ด เพื่อสร้างวิดีโอเกมสำหรับอุปกรณ์ Game Console และมีหลายบริษัทที่ได้พัฒนาและผลิตอุปกรณ์อิเล็กทรอนิกส์เพื่อนำมาใช้งานสำหรับ MakeCode Arcade ยกตัวอย่างได้แก่
- BrainPad Arcade
- KittenBot MeowBit
- Kitronik Arcade for MakeCode [Datasheet]
- Adafruit PyBadge
- Adafruit PyGamer
KittenBot MeowBit (Programmable Handheld game console)- MCU: STM32F401RET6
- LCD: 1.8" TFT 160x128 pixels
- Storage: 2MB SPI Flash chip
- Micro:bit Edge Connector Compatible
- https://github.com/KittenBot/meowbit-tutorialsKitronik ARCADE for MakeCode Arcade- MCU: Atmel/Microchip SAMD51J19A
- LCD screen:160 x 128 pixels, 1.77" (diagonal)
- 6x input buttons, 1 menu button, 1 reset button
- vibration motor, sound piezo-buzzer
- Power Supply: USB (5V) or 3x AA BatteriesAdafruit PyBadge- MCU: ATSAMD51J19
- LCD: 1.8" 160x128 color TFT display
- File storage: 2MB QSPI flash + MicroSD Slot
- 5x NeoPixel LEDs
- 8x Input Buttons
- 3-axis accelerometer (motion sensor)
- Mono Class-D mini-speaker
- Reset button, on/off switch
- Power supply: USB or LiPo battery
ข้อสังเกต:
- เราอาจจะลองสร้าง หรือประกอบขึ้นเองเพื่อใช้งาน เช่น การใช้บอร์ดไมโครคอนโทรลเลอร์ราคาไม่แพง (ใช้ตัวประมวลผล 32 บิต ตระกูล ARM Cortex-M4 เช่น STM32F411 หรือ ATSAMD51 เป็นต้น) จอโมดูลแสดงผลแบบ TFT Display (ST7735R / ILI9341/ ILI9163C Driver Chip) ขนาดอย่างน้อย 160x128 พิกเซล และแผงวงจรปุ่มกด เป็นต้น
- การประกอบชิ้นส่วนหรือสร้างขึ้นเองบางส่วนนั้น เป็นการฝึกทักษะและเรียนรู้ทางด้านฮาร์ดแวร์ (Hardware Tinkering / Prototyping) เช่น การต่อวงจรอิเล็กทรอนิกส์พื้นฐาน
- ดูตัวอย่างการสร้างอุปกรณ์ MakeCode Arcade Game Console แบบ DIY (Hackaday Project)โดยใช้โมดูลไมโครคอนโทรลเลอร์ STM32F411RET6 และโมดูลแสดงผล 1.8-inch ST7735-based TFT Display [Schematic]
- บอร์ด Raspberry Pi Zero สามารถนำมาใช้งานกับ MakeCode Arcade ได้เช่นกัน (“MakeCode Arcade with Raspberry Pi Zero” by Adafruit)
- บอร์ด PyGamer และ PyBadge สามารถเขียนโปรแกรมได้ โดยใช้ภาษาอื่น เช่น Arduino (C/C++) โดยใช้ร่วมกับไลบรารี Adafruit Arcada หรือ CircuitPython เป็นต้น
แนวทางการเรียนรู้: การฝึกเขียนโค้ดโดยการสร้างเกม
ผู้เขียนขอนำเสนอเป็นตัวเลือกดังนี้
- การใช้ภาษาไพธอนในการเขียนโค้ด และเลือกใช้ไลบรารี PyGame หรือ Python Arcade Library และทดสอบการทำงานด้วยคอมพิวเตอร์แบบ Desktop หรืออาจจะนำไปใช้กับบอร์ด Raspberry Pi และใช้งานร่วมกับอุปกรณ์ USB / Bluetooth HID (Human Interface Device) สำหรับรับค่าอินพุตจากผู้เล่น (อุปกรณ์ประเภทนี้ เราอาจสร้างขึ้นเองได้เช่นกัน)
- การใช้ภาษาจาวาสคริปต์ภายใต้ Microsoft MakeCode Framework เช่น Makecode for Minecraft หรือ Makecode Arcade — ในกรณีที่ใช้ MakeCode Arcade ก็อาจจะลองสร้างอุปกรณ์ Game Console แบบ DIY เพื่อมาทดลองกับเกม นอกเหนือจากการจำลองการทำงานด้วย MakeCode Simulator
- การสร้างเกมที่ทำงานบนเว็บเบราว์เซอร์ เขียนโค้ดโดยใช้ภาษาจาวาสคริปต์ และใช้ HTML5 Canvas เป็นส่วนที่แสดงผลกราฟิก ในส่วนของอินพุตจากผู้เล่น อาจสร้างอุปกรณ์ HID สำหรับเล่นเกม โดยใช้บอร์ดไมโครคอนโทรลเลอร์ผ่านทาง USB (หรืออาจลองใช้ WebUSB และ Web Bluetooth) หรือจะเขียนโค้ดโดยใช้ไลบรารีอย่างเช่น P5.js และสร้างอุปกรณ์อินพุตด้วยบอร์ด Arduino ที่สื่อสารด้วย Firmata Protocol ก็น่าสนใจเช่นกัน