Skip to content

技術要求

設備和瀏覽器兼容性

我們希望遊戲能夠在 Chrome 和 Edge 上運行。在 Safari 上運行不佳的遊戲將被禁用。 Jogos 的用戶中有相當一部分使用 Chromebook。如果遊戲在 4GB RAM 的設備上運行不流暢,Chromium OS 系統就會禁用這些遊戲。 如果支援移動設備,遊戲還支援滑鼠、鍵盤和觸控。 遊戲應該能夠在桌面設備上以橫向模式運行。我們允許發佈豎屏/豎版遊戲,尤其適合移動設備,例如在螢幕邊緣顯示黑條或背景圖片。

  • 為了適配 H5 遊戲在不同國家或地區的兼容性,我們對遊戲整體打包做了以下要求:

    類別PC 端移動端
    初始下載包大小≤50MB≤25MB
    總文件大小≤ 500MB≤ 250MB
    文件數量≤5000≤3000

移動遊戲要求

為了符合移動主頁的資格,初始下載大小不能超過 25MB。 您可以在提交內容中配置支援的方向。網站會要求用戶旋轉設備,以確保您的遊戲只能在這些方向上運行。因此,您無需實現任何方向鎖定邏輯。 例如,在某些設備(例如平板電腦)上玩遊戲時,雙擊或長按可以顯示放大工具,或者選中整個遊戲並顯示上下文菜單。為了避免操作不順暢,請在 body 遊戲中添加以下 CSS:

java
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;

由於頻繁崩潰(記憶體不足導致),Unity 遊戲在 iOS 平台上預設處於禁用狀態。當您的遊戲達到一定遊玩量後,我們的團隊將評估其在 iOS 平台上的表現,並考慮是否啟用此功能。

我們管理 Unity 圖形品質(設備像素比),以確保為用戶提供良好的遊戲性能: 對於 iOS 設備和低記憶體 Android 設備,我們選擇 DPR 值為 1,因為這些設備在本機支援的 DPR 較高時會崩潰 對於其他設備,使用設備支援的本機 DPR(window.devicePixelRatio) 如果我們認為需要例外,我們可以手動覆蓋此配置

QA 控制器說明

Jogos 開發者 QA 質量檢測工具,提供了兩套完整的適配方案,您無需單獨為您的遊戲額外做適配工作:

  • 如果您的遊戲原生只適配移動端,使用虛擬按鈕虛擬搖桿。那麼您可以使用“移動遊戲適配 PC 端控件”配置鍵盤或滑鼠按鈕,以滿足在 PC 端玩家的控制。 alt text

  • 如果您的遊戲原生只適配 PC,使用鍵盤滑鼠控制。那麼您可以使用“PC 遊戲適配移動端控件”拖拽您覺得合適位置放置虛擬按鈕、虛擬搖桿映射 PC 的鍵位,給玩家在移動端實現操作。
    alt text

常見問題處理

下面的代碼片段可以修復了由預設瀏覽器行為引起的許多用戶體驗問題(這些問題我們的 UnitySDK 已經幫您實現,其他平台看情況自行使用)

  • 不需要的頁面滾動
  • 不需要的關鍵事件
  • Samsung App 上的可見性發生變化
  • Unity 畫布外上下文菜單的外觀
javascript
// 禁用不需要的頁面滾動。
window.addEventListener('wheel', (event) => event.preventDefault(), {
  passive: false,
});

// 禁用不需要的按鍵事件和空白鍵滾動。
window.addEventListener('keydown', (event) => {
  if (['ArrowUp', 'ArrowDown', ''].includes(event.key)) {
    event.preventDefault();
  }
});

// 這是處理可見性更改的修復程序
// 在 webview 上,這是針對三星應用程序報道的一個問題。
document.addEventListener('visibilitychange', () => {
  if (document.visibilityState) {
    if (document.visibilityState === 'hidden') {
      application.publishEvent('OnWebDocumentPause', 'True');
    } else if (document.visibilityState === 'visible') {
      application.publishEvent('OnWebDocumentPause', 'False');
    }
  }
});

// 禁用畫布外右鍵單擊後出現的上下文菜單。
document.addEventListener('contextmenu', (event) => event.preventDefault());