Technical Requirements
Device and Browser Compatibility
We expect the game to run on Chrome and Edge. Games that perform poorly on Safari will be disabled. A significant portion of Jogos users use Chromebooks. If a game does not run smoothly on a device with 4GB of RAM, the Chromium OS system will disable these games.
If the game supports mobile devices, it should also support mouse, keyboard, and touch input. The game should be able to run in landscape mode on desktop devices. We allow the release of portrait/vertical games, especially suitable for mobile devices, such as displaying black bars or background images at the screen edges.
- To ensure the compatibility of H5 games in different countries or regions, we have the following requirements for the overall game package:
Category | PC | Mobile |
---|---|---|
Initial download package size | ≤ 50MB | ≤ 25MB |
Total file size | ≤ 500MB | ≤ 250MB |
Number of files | ≤ 5000 | ≤ 3000 |
Mobile Game Requirements
To be eligible for the mobile homepage, the initial download size cannot exceed 25MB. You can configure the supported orientations in the submitted content. The website will prompt users to rotate their devices to ensure that your game can only run in these orientations. Therefore, you do not need to implement any orientation locking logic.
For example, when playing games on some devices (such as tablets), double-clicking or long-pressing may display a zoom tool or select the entire game and show a context menu. To avoid unsmooth operations, add the following CSS to the <body>
of the game:
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
Due to frequent crashes (caused by insufficient memory), Unity games are disabled by default on the iOS platform. After your game reaches a certain amount of play, our team will evaluate its performance on the iOS platform and consider whether to enable this feature.
We manage the Unity graphics quality (device pixel ratio) to ensure good game performance for users:
- For iOS devices and low-memory Android devices, we select a DPR value of 1 because these devices may crash when the natively supported DPR is high.
- For other devices, use the device's natively supported DPR (
window.devicePixelRatio
). If we deem an exception necessary, we can manually override this configuration.
QA Controller Instructions
The Jogos developer QA quality detection tool provides two complete adaptation solutions. You do not need to perform additional adaptation work for your game:
- If your game is natively adapted only for mobile devices and uses virtual buttons and virtual joysticks, you can use the "Mobile Game Adaptation to PC Controls" to configure keyboard or mouse buttons to meet the control needs of PC players.
- If your game is natively adapted only for PC and uses keyboard and mouse controls, you can use the "PC Game Adaptation to Mobile Controls" to drag and place virtual buttons and virtual joysticks in appropriate positions to map PC key positions, enabling players to operate on mobile devices.
Common Problem Handling
The following code snippets can fix many user experience issues caused by default browser behavior (these issues have already been implemented by our UnitySDK. Other platforms can use them as needed).
- Unwanted page scrolling
- Unwanted key events
- Visibility changes on the Samsung App
- Appearance of the context menu outside the Unity canvas
// Disable unwanted page scrolling.
window.addEventListener('wheel', (event) => event.preventDefault(), {
passive: false,
});
// Disable unwanted key events and spacebar scrolling.
window.addEventListener('keydown', (event) => {
if (['ArrowUp', 'ArrowDown', ''].includes(event.key)) {
event.preventDefault();
}
});
// This is a fix for handling visibility changes.
// On webviews, this is a reported issue for Samsung applications.
document.addEventListener('visibilitychange', () => {
if (document.visibilityState) {
if (document.visibilityState === 'hidden') {
application.publishEvent('OnWebDocumentPause', 'True');
} else if (document.visibilityState === 'visible') {
application.publishEvent('OnWebDocumentPause', 'False');
}
}
});
// Disable the context menu that appears after a right-click outside the canvas.
document.addEventListener('contextmenu', (event) => event.preventDefault());