Main Page: Difference between revisions

From Virtujoy Documentation
No edit summary
mNo edit summary
 
(2 intermediate revisions 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?

Latest revision as of 07:32, 9 December 2025

Ngapain ngintip-ngintip.