Main Page
Dokumentasi penelitian dan pengembangan proyek capstone.
Apa yang hendak kita buat?
Ringkasnya: Game PC yang menggunakan smartphone sebagai perangkat input (input peripheral).
Why pick this topic?
- 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).
Why not pick this topic?
- 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.
Things to note about:
- Game yang mau dibuat 3D (supaya keren).
- Game mesti men-support kapabilitas multiplayer (setidaknya 4 orang lah).
Game engine
Godot.
Sensor API
Web
Sensor API pada web mengekspos fungsionalitas sensor device hardware.[1]
- 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).
<ul>
<li id="gyroscope-x"></li>
<li id="gyroscope-y"></li>
<li id="gyroscope-z"></li>
</ul>
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();
}
Native mobile (Android)
Di satu sisi, Android juga memiliki Sensor API.[2] Namun, pengembangan native mobile app jauh lebih menyusahkan ketimbang web app.
Kesimpulan
Pilih web bila memungkinkan.
Networking protocol
Data sensor tentu mesti ditransmisikan dari web ataupun mobile app ke server game. HTTP request/response? WebSocket? Bluetooth?