ඔබ පළමු වරට බ්රව්සරයකට ගේම් පාලකයක් සම්බන්ධ කරලා navigator.getGamepads() කැමතිද? එතැන්දී ඔබට null අගයන් පිරී ඇති ඇරේ එකක් ලැබෙනවා නම්, එය දෝෂයක් නොව API එකේ ස්වභාවික හැසිරීමයි. මෙම ලිපියෙන් Gamepad API කෙරෙහි ඇති රහස්, පෝලිං ක්රමය, බොත්තම් හා ඇක්සිස් අගයන්, ඩෙඩ් සෝන් (dead zone) සම්බන්ධ කරුණු, USB හා Bluetooth සම්බන්ධතා අතර වෙනස්කම් යනාදිය පැහැදිලි කරයි.
Gamepad API යනු බ්රව්සරය තුළ සම්බන්ධ කර ඇති පාලකයන්ගේ තත්ත්වය "පොඩි-පොඩි" සෙට් එකක් ලෙස ලබා දෙන සුළු, පෝලිං (poll‑based) ආකාරයේ අතුරුමුහුණතකි. බොත්තම් ඔබා ගැනීමේ සිදුවීම් (event) නොලැබෙයි; ඒ වෙනුවට ඔබට navigator.getGamepads() මඟින් වාරිකව (frame) තත්වය ලබා ගත හැක. සම්බන්ධ කිරීම සහ විසන්ධි කිරීමේ සිදුවීම් දෙකක් පමණක් (gamepadconnected, gamepaddisconnected) ඇත.
පෝලිං වඩාත් සුදුසු වන්නේ, USB HID පාලකයක් ස්ථායි වාර්තාවක් (full report) නියමිත වේලාවක එවීම නිසාය. එම වාර්තාවේ සියළු බොත්තම් හා ඇක්සිස් අගයන් ඇතුළත් වන අතර, වෙනස්වීමක් නොවූ විටත් එය යළි යවයි. මෙය DOM සිදුවීම් ලෙස පරිවර්තනය කළහොත් තත්පරයකට සිය ගණනකට වැඩි සිදුවීම් උත්පාදනය වන අතර, වැඩි CPU භාරයක් සිදු වේ. පෝලිං භාවිතයෙන් ඔබට අවශ්ය වේගයෙන් (sample rate) තත්වය ලබා ගත හැකි අතර, එය රෙන්ඩරින් ලූප් එකට (requestAnimationFrame) සම්බන්ධ කිරීමෙන් කාර්යක්ෂමව ක්රියා කරයි.
බොත්තම් පිළිබඳව, gamepad.buttons යනු GamepadButton වස්තු (object) අරේ එකකි. එය pressed (boolean), value (0‑1 අතර float) හා touched (boolean) යන ගුණාංග තුනක් ඇත. ඩිජිටල් බොත්තම් 0 හෝ 1 අතර පීඩනයේ පමණක් පෙන්වයි; ඇනාලොග් ට්රිගර්ස් 0‑1 අතර පූර්ණ පරාසයක් ලබා දෙයි. if (gamepad.buttons[0]) වැනි පරීක්ෂණය සැබෑවටම සැකසීමක් නොවේ, මන්ද වස්තුවක් true ලෙස සැලකේ.
ඇක්සිස් (axes) අගයන් -1 සිට 1 දක්වා float වශයෙන් ලැබේ. ප්රමාණවත් මැප් කිරීමේදී වම‑දකුණු ස්ටික් X, වම‑දකුණු ස්ටික් Y, දකුණු‑වම ස්ටික් X, දකුණු‑වම ස්ටික් Y යන අනුපිළිවෙලින් අගයන් පෙන්වයි. Y අක්ෂය සඳහා නෙගටීව් අගය උඩු දිශාව (up) නිරූපනය කරයි – මෙය බොහෝ ගේම් එන්ජින්ස් වල සාමාන්ය අනුමානයට විරුද්ධය.
ශ්රී ලංකාවට ඇති වැදගත්කම
ශ්රී ලංකාවේ තාක්ෂණ උපාධි සිසුන්, වෙබ් සංවර්ධකයන් හා ගේම් නිර්මාතෘවරුන්ට මෙම API එක අතිශය ප්රයෝජනවත් වේ. බ්රව්සරයක් මගින් USB හෝ Bluetooth පාලකයක් සම්බන්ධ කර, කිසිදු ඩ්රයිවර් හෝ ස්ථාපන කාර්යයක් නොකර තත්වය පරීක්ෂා කළ හැකිය. එමඟින් “ස්ටික්ක් ඩ්රිෆ්ට්” වැනි ගැටලු හඳුනා ගැනීමට, වේගවත් ප්රොටොටයිප් සංවර්ධනයට, Cloud Gaming සේවාවන් සඳහා පාලක අනුකූල UI නිර්මාණයට සහ දුර්ලභ පාලක උපාංග සඳහා අභිප්රේත අනුකූලතාව (accessibility) වැඩි කිරීමට අවස්ථාව ලැබේ.
ඉතා පහසු HTML/JS කේතයක් භාවිතා කර, පාඨමාලා හෝ වැඩමුළු අතරතුර පාලක තත්වය රියල්‑ටයිම් එකතු කිරීමේ හැකියාව ලැබේ. එමඟින් ශිෂ්යයන්ට “කේතයක් ලියන විට පාලකය කෙසේ ක්රියා කරන්නේද?” යන ප්රශ්නයට නිරවද්ය පිළිතුරක් ලැබේ, එමෙන්ම ස්ථානික ව්යාපාරිකයන්ට ගේම්‑අඩ්-ලීක් (Game‑as‑a‑Service) නිෂ්පාදන වෙළෙඳපොළට ඉක්මනින් පිවිසීමට මාර්ගය විවෘත වේ.
අවසන් වශයෙන්, Gamepad API එකේ පෝලිං ආකාරය, බොත්තම්/ඇක්සිස් ගුණාංග, සහ බ්රව්සර ආරක්ෂක නීති (secure context) යන කරුණු නිවැරදිව තේරුම් ගැනීමෙන්, ඔබේ වෙබ්‑ගේම් හෝ පාලක‑අධාරිත යෙදුමක් තවත් විශ්වාසදායක හා පරිශීලක‑හිතකාමී වේ.