Mobile gaming today offers graphics that yesterday were only available on powerful gaming PCs. Game engines - these are software frameworks that allow developers to create complex worlds, physics and lighting effects. However, when you download a new game from Google Play, the description rarely indicates what technology it is built on. Finding out this information is important not only out of idle curiosity, but also to understand why a particular application is slow on your device or how it is optimized.

Knowing what the project runs on helps gamers and developers. If you encounter artifacts or unstable FPS, understanding the architecture will help you find a solution online. Often problems are associated with specific versions of libraries or drivers that work differently with Unreal Engine or Unity. In this article, we will look at proven methods for engine identification, from simple visual cues to deep file analysis.

It is worth noting that modern mobile platforms have become so powerful that they allow you to run ports from consoles. Android smartphones with Snapdragon or Dimensity chips are capable of processing complex 3D graphics in real time. However, it is the engine that dictates the optimization rules. Some of them require a powerful GPU, others rely on CPU calculations. A systematic approach to application analysis will help you understand this issue.

Visual analysis and characteristic features of engines

The first and most accessible way to understand what is “under the hood” of your game is a careful visual inspection. Each major engine has its own unique rendering signature. For example, Unreal Engine is famous for its particle system and realistic lighting, while Unity can often be recognized by its specific work with shadows and shaders, if the developers have not made efforts to deeply customize them. When starting the game, carefully watch the loading screen (Splash Screen).

Often developers forget or do not consider it necessary to hide the logos of the technologies they use. In the first seconds after launching the application, a logo Unity Technologies or inscription Powered by Unrealmay be displayed on the entire screen. This is the simplest marker. It is also worth paying attention to the graphics settings menu: the presence of options like “Post-processing quality” or specific detail sliders often indicates the use of advanced rendering tools typical of top-end engines.

⚠️ Attention: Not all games display engine logos at startup. Large studios often hide this information for marketing purposes or to maintain an immersive atmosphere, so the absence of a logo does not guarantee the use of custom technology.

Another visual indicator is the behavior of physics and water. The engine Havok, often used in conjunction with others, provides very specific, sometimes “cartoonish” or, conversely, hyper-realistic destruction physics. If the water in the game reflects the environment with high accuracy and has complex ripples, there is a high probability of using advanced shaders Unreal Engine 4 or 5. Simple 2D projects or hyper-casual 3D games are most often based on light versions of Unity or Godot.

📊 Which engine, in your opinion, is used in the heaviest games on Android?
Unreal Engine
Unity
CryEngine
Home written engine

Analysis of the application file structure through a file manager

If a visual inspection does not produce results, you will have to dig deeper. The Android file system allows you to look inside an APK file or an already installed application. To do this, you will need a file manager with access to system folders, for example Total Commander or MT Manager. We need to find the directory where the game data is stored. Typically the path looks like Android/data/[game_package_name]/files.

Inside the game data folders you can often find clues. Look for folders with names containing the words "Unity", "Unreal", "Godot" or "Cocos". The presence of a folder libil2cpp.so almost with a 100% guarantee indicates that the game is made in Unity and uses IL2CPP technology to compile the code. This is an important technical marker that is difficult to hide, since it is necessary for the operation of the game itself.

Games based on Unreal Engine are characterized by the presence of files with the extension .pak in content folders. These archives contain game assets. Also, in the root or in subfolders there is often a file DefaultEngine.ini or DefaultGame.ini. When you open such a file with a text editor, you will immediately see headings mentioning Unreal. Even if the folder names are changed, the nesting structure often remains recognizable to an experienced user.

☑️ Search for signs of the engine in files

Done: 0 / 4

However, you should be careful when deleting or renaming files in system directories. File structure is critical to startup. If you accidentally damage the configuration file, the game may stop opening or crash on the desktop. Always make backup copies before making any changes, even if you are just looking at the contents of folders.

Using APK analyzer applications

For those who do not want to manually navigate through system packs, there are specialized utilities. Analyzer applications, such as LibChecker, APK Analyzer or Saferoomcan scan installed applications and display a list of native libraries used. This is the most reliable software method. It is enough to install such a utility, find the game you are interested in in the list and open the “Native Libs” or “Used Technologies” section.

In the list of libraries you will see the names of files that will clearly indicate the engine. For example, the presence of libunity.so or libmono.so speaks of Unity. If you see libUE4.so, libEGL_UE4.so or just a lot of libraries with the prefix libUE, in front of you Unreal Engine. The engine Cocos2d-x is characterized by libraries with names containing “cocos2d”. The app reads this data from the manifest and executable files, so it is almost impossible to deceive the analyzer.

Engine Key libraries (.so) Characteristic files Difficulty of detection
Unity libunity.so, libmono.so, libil2cpp.so globalgamemanagers, resources.assets Low
Unreal Engine libUE4.so, libEGL_UE4.so Engine.ini,.pak archives Medium
Cocos2d-x libcocos2dcpp.so Resources, scripts Low
Godot libgodot_android.so pck files Medium

The advantage of such applications is that they show not only the engine, but also the versions of the components used, as well as access rights and permissions. This is useful for assessing the security of an application. However, some modern games may use obfuscation code, renaming libraries to make it more difficult to analyze and protect against cheating. In such cases, even the analyzer can show non-standard names that require additional search on the Internet.

What is code obfuscation?

Obfuscation is the process of converting the source code or bytecode of a app into a form that is difficult to read for humans, but retains functionality for a machine. This is done to protect intellectual property and complicate the process of hacking or modifying the game.

Checking through the Google Play Store and official sources

Sometimes you don’t need to go into the jungle of the file system, just carefully read the description in the application store. In the “About the Game” or “Additional Information” sections, developers sometimes indicate the technologies used, especially if this is the selling point of the project. It is also worth paying attention to the “Similar Applications” section - Google algorithms often group games made on the same engine, since they have a similar technical base and requirements.

Official developer sites and pages on social networks are another source of truth. In press releases or technical blogs (DevLogs), creators often share the development process, mentioning the transition to the new Unreal Engine 5 or the use of specific plugins for Unity. A search for the game name in combination with the word “engine” or “tech” in a search engine often produces articles on specialized resources like Gamasutra or w3bsit3-dns.com, where technical specialists discuss the optimization of a specific project.

⚠️ Attention: Information in the game description may be incomplete or outdated. Developers could update the engine in one of the patches, but not change the text in the application store. Always double-check the data through technical means if you need 100% accuracy.

In addition, you should pay attention to the hardware requirements. If a game requires a specific GPU or an above-average version of Android for its genre, this is an indirect sign of using a heavy engine. Lightweight 2D projects rarely require the latest Vulkan or OpenGL ES APIs, while projects on Unreal They often insist on Vulkan support for stable operation.

Using ADB for deep diagnostics

For advanced users with access to a computer, the most powerful tool remains Android Debug Bridge (ADB). This method allows you to obtain information directly from a running process, bypassing file system restrictions. By connecting your smartphone via USB and turning on debugging, you can download a list of processes and the libraries they use through the command line.

First, you need to find the PID (Process ID) of the running game. Run the command adb shell ps | grep [package_name]. Having received the PID, you can see which libraries are loaded into the process memory. The command adb shell cat /proc/[PID]/maps will display a huge list, but you can find keywords in it: “unity”, “unreal”, “cocos”. This is a “reinforced concrete” method, since it shows what is actually loaded into RAM right now.

adb shell dumpsys package [game_package_name] | grep -A 20"libraries"

This command will display information about the native libraries that the application claims to be required. This is a more structured output than reading a memory card. However, it is worth remembering that some system processes can mask the actual use of resources. However, for determining the engine, this method is one of the most accurate among software ones.

💡

Before connecting ADB, make sure that the drivers for your smartphone are installed on your computer, otherwise the computer will not see the device in debugging mode.

Understanding the differences between engines helps not only in diagnostics, but also in setting up gameplay. Unity dominates in the mobile gaming segment due to its flexibility and support for a huge number of devices, from budget phones to flagships. It works great with 2D and light 3D graphics. If the game looks stylized, has low polygons, or is a clone of a popular mobile hit, it is most likely made in Unity.

Unreal Engine, on the contrary, is more often chosen for AAA-class projects where photorealism is important. On Android, such games are often heavy (several gigabytes) and require powerful cooling of the smartphone. If a game looks like a console port and eats up the battery in 2 hours, it's almost certainly Unreal. Engine Cocos and Godot are more often found in the indie segment or in old but popular 2D projects.

It is also important to consider that the engine is not a guarantee of optimization. A poorly made game on Unreal Engine will lag more than a perfectly optimized one on Unity. Therefore, knowledge of the engine is only part of the puzzle. Developers may use different versions of the engine, and older versions may have known bugs that are fixed in new releases, but not implemented in a specific game due to the risks of breaking the content.

💡

The choice of engine by developers depends on the balance between the required graphics and the target audience: the wider the device coverage, the simpler and more universal the engine should be.

Frequently asked questions (FAQ)

Can a game use two engines at the same time?

Technically, the main core of the game is usually built on one engine. However, separate SDKs or modules running on other technologies can be built inside (for example, the Havok physics engine inside Unity). But for the user and the system it looks like a single application, the dominant kernel of which determines the overall load.

Does knowledge of the engine affect the ability to install mods?

Yes, directly. Mods are created for specific tools and file structures. A mod for a game on Unity (often using MelonLoader or BepInEx) will not work on a game made on Unreal Engine (which requires UEX or other types of DLL injectors). Knowing the engine is the first step to finding the right tools for modification.

Why does a game on Unreal Engine heat up the phone more than on Unity?

Unreal Engine by default aims for maximum graphics quality and uses more complex lighting and post-processing algorithms, which loads the GPU. Unity is more flexible in settings and often allows developers to cut down graphics more for weaker devices, which reduces heat dissipation.

How to find the version of the engine, and not just its name?

The exact version (for example, Unity 2021.3.15f1) is the most difficult to find out. Often this can only be done through analysis of specific configuration files within the APK or through a debugger if the game is running in development mode. Conventional analyzers show only the name of the technology.