
L’API permet la création de jeux qui fonctionnent dans des processus protégés contre les modifications mémoire. Cette protection permet de rendre l’expérience de jeu exempte d’attaques perpétrées par les aimbots ou autres speedhack, notamment, lors des sessions de jeux opposant plusieurs joueurs en ligne.
Par ailleurs, la firme de Redmond précise que la protection mémoire est couplée à un service de monitoring des sessions de jeu géré par le duo de fonctions EnableActiveGameMonitoring() et ReportGameActivity() dans l’exemple d’utilisation qui suit. Le service de surveillance est prévu pour traquer les manipulations mémoire mises en place par les tricheurs. À cet effet, il est prévu que des alertes soient générées et transmises aux développeurs desdits jeux. Dans le but de protéger la vie privée des utilisateurs, Microsoft assure que seuls ces derniers recevront les informations système collectées.
Code : | Sélectionner tout |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 | unsigned int frameNumber = 0; bool Init() { auto gameMonitor = Windows::Gaming::UI::GameMonitor::GetDefault(); if (gameMonitor != nullptr) { // The game displays the system UI to help the customer turn on game monitoring. concurrency::create_task(gameMonitor->RequestPermissionAsync()).then([=](Windows::Gaming::UI::GameMonitoringPermission permissionState) { if (permissionState == Windows::Gaming::UI::GameMonitoringPermission::Allowed) { // The customer turned on game monitoring. The game can proceed. } else if (permissionState == Windows::Gaming::UI::GameMonitoringPermission::DeniedByUser) { // The customer cancelled out of the dialog; game monitoring is not enabled. // The game should exit experiences or disable features which require game monitoring. } else if (permissionState == Windows::Gaming::UI::GameMonitoringPermission::DeniedBySystem) { // System policy prohibits game monitoring. The opt-in dialog will not be displayed because the customer cannot // give permission. The game should disable features requiring game monitoring. } }); } else { // Game monitoring is not supported on this system. } } void GameTick() { // ... Game logic ... // Update the anti-cheat system every 5 minutes in a 60 FPS game. if (frameNumber % (5 * 60 * 60) == 0) { GAME_MONITORING_PERMISSION_STATE permissionState; if (FAILED(GetGameMonitoringPermissionState(&permissionState))) { return; } if (permissionState != GAME_MONITORING_ALLOWED && permissionState != GAME_MONITORING_NOT_SUPPORTED) { // The game can't mitigate this, so it exits the function. return; } ReportGameActivity(); } ++frameNumber; } // Called by game logic. void EnterSinglePlayerMatch() { // Disable monitoring for offline games. EnableActiveGameMonitoring(FALSE); } // Called by game logic. void EnterMultiPlayerMatch() { EnableActiveGameMonitoring(TRUE); SetGameActivityCorrelationId(L"GameDefinedCorrelationIdToAssociateWithTruePlayLogs"); // The monitoring state may have changed, so update the service immediately. ReportGameActivity(); } |
L’API TruePlay est pour le moment réservée au développement d’applications dites universelles (UWP) c'est-à-dire pour des cibles matérielles tournant sous Windows 10 : PC, tablettes, Xbox, etc.
Source : MSDN
Et vous ?
