ওভারভিউ

গেম কন্ট্রোলারগুলি অতিরিক্ত বৈশিষ্ট্যগুলির সাথে সজ্জিত যা খেলোয়াড়ের মিথস্ক্রিয়া এবং নিমজ্জনকে উল্লেখযোগ্যভাবে উন্নত করে। অ্যান্ড্রয়েড গেম কন্ট্রোলারের হ্যাপটিক্স, মোশন সেন্সর এবং হালকা কার্যকারিতাগুলি গেমিং অভিজ্ঞতাকে গভীর ও সমৃদ্ধ করতে বিশেষভাবে সহায়ক। প্রতিটি বৈশিষ্ট্য অনন্যভাবে খেলোয়াড়ের অনুভূতিকে উদ্দীপিত করে, গেমের মধ্যে আরও অর্থপূর্ণ এবং স্বজ্ঞাত মিথস্ক্রিয়াকে উৎসাহিত করে।

হ্যাপটিক্স

অ্যান্ড্রয়েড গেম কন্ট্রোলারের হ্যাপটিক্স বৈশিষ্ট্য একটি গুরুত্বপূর্ণ প্রযুক্তি যা গেমপ্লে চলাকালীন বাস্তবসম্মত স্পর্শকাতর প্রতিক্রিয়া প্রদান করে।

হ্যাপটিক্স প্রযুক্তি কম্পন বা নড়াচড়ার মাধ্যমে ব্যবহারকারীকে শারীরিক সংবেদন প্রদান করে। উদাহরণস্বরূপ, যখন গেমে একটি বিস্ফোরণ ঘটে, তখন কন্ট্রোলার কম্পন করে, যা খেলোয়াড়কে বাস্তবসম্মতভাবে প্রভাব অনুভব করতে দেয়। উপরন্তু, সূক্ষ্ম কম্পনগুলি একটি চরিত্রের হাঁটা বা দৌড়ানোর শব্দের সাথে সিঙ্ক্রোনাইজ করা যেতে পারে, যা আরও প্রাণবন্ত অভিজ্ঞতা প্রদান করে। এই ধরনের হ্যাপটিক প্রতিক্রিয়া খেলোয়াড়দের শারীরিকভাবে গেমের মধ্যে ঘটছে বিভিন্ন ঘটনা অনুভব করতে সক্ষম করে।

এই প্রযুক্তিটি খেলোয়াড়ের নিমজ্জনকে সর্বাধিক করে তোলে, মানসিক প্রতিক্রিয়া বৃদ্ধি করে এবং গেমের গতিশীলতাকে সমৃদ্ধ করে। অ্যান্ড্রয়েড গেম কন্ট্রোলারে হ্যাপটিক্স সেটিংস শুধুমাত্র গেম ডেভেলপারদের জন্য সৃজনশীল সম্ভাবনাকে প্রসারিত করে না বরং খেলোয়াড়দেরকে আগের চেয়ে আরও বাস্তবসম্মত গেমিং অভিজ্ঞতা প্রদান করে।

fun triggerVibrationMultiChannel(
  deviceId: Int, leftIntensity: Int, leftDuration: Int,
  rightIntensity: Int, rightDuration: Int) {
  val inputDevice = InputDevice.getDevice(deviceId)
  val vibratorManager = inputDevice!!.vibratorManager
  if (vibratorManager != null) {
    val vibratorIds = vibratorManager.vibratorIds
    val vibratorCount = vibratorIds.size
    if (vibratorCount > 0) {
      // We have an assumption that game controllers have two vibrators
      // corresponding to a left motor and a right motor, and the left
      // motor will be first.
      updateVibrator(vibratorManager.getVibrator(vibratorIds[0]), leftIntensity, leftDuration)
      if (vibratorCount > 1) {
        updateVibrator(vibratorManager.getVibrator(vibratorIds[1]), rightIntensity, rightDuration)
      }
    }
  }
}

fun updateVibrator(vibrator: Vibrator?, intensity: Int, duration: Int) {
  if (vibrator != null) {
    if (intensity == 0) {
      vibrator.cancel()
    } else if (duration > 0) {
      vibrator.vibrate(VibrationEffect.createOneShot(duration.toLong(), intensity))
    }
  }
}

ভাইব্রেট ব্যবহার করতে, এটি একটি বৈশিষ্ট্য এবং অনুমতি সেট করে।

<application ...>
  ...
  <uses-feature android:name="android.hardware.gamepad" android:required="true"/>
  <uses-permission android:name="android.permission.VIBRATE"/>
  ...
</application>

VibratorManager এবং অ্যাপ ম্যানিফেস্ট সম্পর্কে আরও তথ্যের জন্য।

মোশন সেন্সর

গেমপ্লে অভিজ্ঞতা বাড়ানোর সবচেয়ে উদ্ভাবনী প্রযুক্তিগুলির মধ্যে একটি হল মোশন সেন্সর-সজ্জিত অ্যান্ড্রয়েড গেম কন্ট্রোলার। এই প্রযুক্তিটি সঠিকভাবে ব্যবহারকারীদের শারীরিক গতিবিধি সনাক্ত করে এবং সেই ডেটাটিকে গেমের মধ্যে ক্রিয়াকলাপে অনুবাদ করে, একটি আরও স্বজ্ঞাত এবং নিমগ্ন গেমিং অভিজ্ঞতা প্রদান করে। এই ভূমিকায়, আমরা অ্যান্ড্রয়েড গেম কন্ট্রোলারে মোশন সেন্সর বৈশিষ্ট্যগুলি কীভাবে কাজ করে তা অন্বেষণ করব।

মোশন সেন্সরগুলি সাধারণত ব্যবহারকারীদের গতিবিধি এবং অভিযোজন শনাক্ত করতে জাইরোস্কোপ এবং অ্যাক্সিলোমিটার অন্তর্ভুক্ত করে।

এটিকে ত্বরণ এবং জাইরোস্কোপ শ্রোতা ক্লাস বাস্তবায়ন করতে হবে এবং এই শ্রোতাদের নিয়ামকের সেন্সর ম্যানেজারের সাথে নিবন্ধন করতে হবে।

fun setIntegratedAccelerometerActive(deviceId: Int) {
  val device = InputDevice.getDevice(deviceId)
  val sensorManager = device?.sensorManager
  val accelerometer = sensorManager.getDefaultSensor(Sensor.TYPE_ACCELEROMETER)
  if (accelerometer != null) {
    val accelerometerListener =
      GameControllerAccelerometerListener(accelerometer)
    sensorManager.registerListener(
      accelerometerListener, accelerometer,
      SensorManager.SENSOR_DELAY_GAME
    )
  }
}

fun setIntegratedGyroscopeActive(deviceId: Int) {
  val device = InputDevice.getDevice(deviceId)
  val sensorManager = device?.sensorManager
  val gyroscope = sensorManager?.getDefaultSensor(Sensor.TYPE_GYROSCOPE)
  if (gyroscope != null) {
    val gyroscopeListener = GameControllerGyroscopeListener(gyroscope)
    sensorManager.registerListener(
      gyroscopeListener, gyroscope,
      SensorManager.SENSOR_DELAY_GAME
    )
  }
}

class GameControllerAccelerometerListener(private val listenerAccelerometer: Sensor?) :
  SensorEventListener {
  override fun onSensorChanged(event: SensorEvent) {
    if (listenerAccelerometer != null) {
      synchronized(listenerAccelerometer) {
        if (event.sensor == listenerAccelerometer) {
          Log.d("Accelerometer",
            "onSensorChanged " + event.values[0] + ", "
            + event.values[1] + ", " + event.values[2])
        }
      }
    }
  }

  override fun onAccuracyChanged(sensor: Sensor, accuracy: Int) {
  }
}

class GameControllerGyroscopeListener(private val listenerGyroscope: Sensor?) :
  SensorEventListener {
  override fun onSensorChanged(event: SensorEvent) {
    if (listenerGyroscope != null) {
      synchronized(listenerGyroscope) {
        if (event.sensor == listenerGyroscope) {
          Log.d("Gyroscope",
            "onSensorChanged " + event.values[0] + ", " +
            event.values[1] + ", " + event.values[2])
        }
      }
    }
  }

  override fun onAccuracyChanged(sensor: Sensor, accuracy: Int) {
  }
}

মোশন সেন্সর এবং SensorEventListener সম্পর্কে আরও তথ্যের জন্য।

লাইট

অ্যান্ড্রয়েড গেম কন্ট্রোলারগুলিতে হালকা রঙের সেটিংস ভিজ্যুয়াল উপাদানগুলির মাধ্যমে গেমপ্লেতে নিমজ্জনের একটি নতুন মাত্রা যোগ করে৷

হালকা রঙের বৈশিষ্ট্যটি বিভিন্ন রঙ প্রদর্শন করতে কন্ট্রোলারে অন্তর্নির্মিত LED লাইট ব্যবহার করে, যা বিভিন্ন গেমিং পরিস্থিতিতে গতিশীলভাবে সাড়া দেয়। উদাহরণ স্বরূপ, খেলার ইভেন্টের উপর ভিত্তি করে ভিজ্যুয়াল ফিডব্যাক প্রদান করে, একটি নির্দিষ্ট মিশনের সমাপ্তির পর খেলোয়াড়ের স্বাস্থ্য গুরুতর হলে বাতিগুলি লাল হয়ে যেতে পারে। এই হালকা রঙের সেটিংস ব্যবহারকারীর ব্যস্ততাকে আরও গভীর করে, গেমটির সাসপেন্স এবং উপভোগকে বাড়িয়ে তোলে এবং খেলোয়াড়দের গেমের জগতে আরও সম্পূর্ণরূপে নিমজ্জিত করতে সহায়তা করে।

অ্যান্ড্রয়েড গেম কন্ট্রোলারগুলিতে হালকা রঙের বৈশিষ্ট্যগুলি নিছক আলংকারিক উদ্দেশ্যের চেয়ে বেশি কাজ করে—এটি গেমের মেজাজ সেট করতে এবং ব্যবহারকারীর অভিজ্ঞতা উন্নত করতে একটি গুরুত্বপূর্ণ ভূমিকা পালন করে৷

fun changeControllerLightColor(deviceId: Int, color: Int) {
  val device = InputDevice.getDevice(deviceId)
  device?.let {
    if (it.sources and InputDevice.SOURCE_JOYSTICK == InputDevice.SOURCE_JOYSTICK) {
      val lightsManager = device.lightsManager
      lightsManager?.let { manager ->
        manager.lights.forEach { light ->
          val stateBuilder = LightState.Builder()
          stateBuilder.setColor(color)
          val requestBuilder = LightsRequest.Builder()
          requestBuilder.addLight(light, stateBuilder.build())
          val lightsSession = lightsManager.openSession()
          lightsSession.requestLights(requestBuilder.build())
        }
      }
    }
  }
}

ভাইব্রেট ব্যবহার করতে, এটি একটি বৈশিষ্ট্য এবং অনুমতি সেট করে।

<application ...>
  ...
  <uses-feature android:name="android.hardware.gamepad" android:required="true"/>
  <uses-permission android:name="android.permission.LIGHTS" />
  ...
</application>

LightsManager এবং অ্যাপ ম্যানিফেস্ট সম্পর্কে আরও তথ্যের জন্য।

কন্ট্রোলার টাচপ্যাড

কিছু গেম কন্ট্রোলারের মধ্যে একটি টাচপ্যাড থাকে যা গেমের বিভিন্ন ক্রিয়াকলাপের জন্য ব্যবহার করা যেতে পারে, যেমন মেনু নেভিগেট করা বা আরও স্বজ্ঞাত উপায়ে গেমের অক্ষর নিয়ন্ত্রণ করা।

গেম কন্ট্রোলারে টাচপ্যাড।
চিত্র 1. গেম কন্ট্রোলারে টাচপ্যাড।

ইন্টিগ্রেটেড টাচপ্যাড সহ গেম কন্ট্রোলার অ্যান্ড্রয়েডে সরাসরি ডিভাইস নিয়ন্ত্রণ অফার করে। টাচপ্যাড স্পর্শ করা একটি অন-স্ক্রীন মাউস পয়েন্টার তৈরি করে, যা স্বজ্ঞাত মাউসের মতো নেভিগেশনের অনুমতি দেয়।