|
|
| (One intermediate revision by the same user not shown) |
| Line 1: |
Line 1: |
| Dokumentasi penelitian dan pengembangan proyek capstone. __TOC__
| | Ngapain ngintip-ngintip. |
| | |
| <h2>Apa yang hendak kita buat?</h2>
| |
| <b>Ringkasnya:</b> Game PC yang menggunakan smartphone sebagai perangkat input (input peripheral).
| |
| | |
| <b>Why pick this topic?</b>
| |
| * Mahasiswa tertarik mengerjakan sesuatu yang berhubungan erat dengan HCI/IMK.
| |
| * Smartphone modern dilengkapi dengan aneka sensor. Sensor-based input bisa jadi lebih baik dalam memperkirakan gerakan pemain ketimbang webcam-based input (≫ refer to proyek MDH).
| |
| * Memenuhi persyaratan AI untuk capstone. Data sensor bisa dijadikan input bagi model ML, yang mencoba memprediksi gerakan yang user lakukan (memukul, melempar, dst.).
| |
| * Memenuhi persyaratan fungsi pengendalian hardware untuk capstone.
| |
| * Terdapat potensi signifikan untuk pemanfaatan reinforcement learning (≫ mencegah complaint proyek terlalu sederhana dari dosen).
| |
| | |
| <b>Why not pick this topic?</b>
| |
| * Apparently proyek non-deep-learning mendapatkan skor yang lebih rendah? Mungkin saja deep learning tidak dibutuhkan untuk use case game ini.
| |
| * Bahkan, bisa jadi rekognisi gerakan pemain sebetulnya tidak memerlukan machine learning sama sekali. Diperlukan pendalaman lebih lanjut untuk menentukan bila sistem rule-based sebenarnya sudah sangat oke untuk use case kita.
| |
| | |
| <b>Things to note about:</b>
| |
| * Game yang mau dibuat 3D (supaya keren).
| |
| * Game mesti men-support kapabilitas multiplayer (setidaknya 4 orang lah).
| |
| | |
| <h2>Game engine</h2>
| |
| Godot.
| |
| | |
| <h2>Sensor API</h2>
| |
| <h3>Web</h3>
| |
| Sensor API pada web mengekspos fungsionalitas sensor device hardware.[https://developer.mozilla.org/en-US/docs/Web/API/Sensor_APIs]
| |
| * LinearAccelerationSensor (percepatan tanpa gravitasi, pada sumbu XYZ)
| |
| * OrientationSensor (orientasi XYZW, alias quarternion)
| |
| | |
| Di sini, kita bisa mengembangkan web app yang mengumpulkan data sensor dan mengirimkannya ke server game.
| |
| | |
| Catatan: Sensor API hanya didukung browser tertentu (misalnya Chrome).
| |
| | |
| <syntaxhighlight lang="html" line>
| |
| <ul>
| |
| <li id="gyroscope-x"></li>
| |
| <li id="gyroscope-y"></li>
| |
| <li id="gyroscope-z"></li>
| |
| </ul>
| |
| </syntaxhighlight>
| |
| | |
| <syntaxhighlight lang="javascript" line>
| |
| if (typeof Gyroscope === "undefined") {
| |
| alert("Gyroscope API not supported on this device/browser.")
| |
| }
| |
| else {
| |
| const gyroscope = new Gyroscope({ frequency: 60 });
| |
| | |
| const gyroscopeLabelX = document.querySelector("#gyroscope-x");
| |
| const gyroscopeLabelY = document.querySelector("#gyroscope-y");
| |
| const gyroscopeLabelZ = document.querySelector("#gyroscope-z");
| |
| | |
| gyroscope.addEventListener("reading", (e) => {
| |
| gyroscopeLabelX.innerText = `Angular velocity along the X-axis ${gyroscope.x}`;
| |
| gyroscopeLabelY.innerText = `Angular velocity along the Y-axis ${gyroscope.y}`;
| |
| gyroscopeLabelZ.innerText = `Angular velocity along the Z-axis ${gyroscope.z}`;
| |
| });
| |
| | |
| gyroscope.start();
| |
| }
| |
| </syntaxhighlight>
| |
| | |
| <h3>Native mobile (Android)</h3>
| |
| Di satu sisi, Android juga memiliki Sensor API.[https://developer.android.com/reference/android/hardware/Sensor] Namun, pengembangan native mobile app jauh lebih menyusahkan ketimbang web app.
| |
| | |
| <h3>Kesimpulan</h3>
| |
| Pilih web bila memungkinkan.
| |
| | |
| <h2>Networking protocol</h2>
| |
| Data sensor tentu mesti ditransmisikan dari web ataupun mobile app ke server game. HTTP request/response? WebSocket? Bluetooth?
| |
| | |
| Inferensi model mungkin lebih baik dilakukan di server game, bukan di perangkat mobile. Butuh penelitian lebih lanjut bila inferensi malah lebih bagus dilakukan di mobile.
| |