Source on Android
On May 12, 2014, NVIDIA released an exclusive port of Half-Life 2 and Portal to their NVIDIA Shield platform.
Ever since then, buying a NVIDIA Shield device was the only way of playing those two games on an Android based system.
History
In 2019 a user named "nillerusr" started uploading development videos to YouTube showing off a modified version of the NVIDIA Shield version of Half-Life 2 running on a standard Android device.
In his first video on the topic he shows off the touch capabilities of the mod.
Later versions of the port were based on leaked Source Engine code (specifically Team Fortress 2 version of Source 2013) dated back to 2017-2018 (which was leaked in 2020).
A public build would be released on October 30, 2020. This build included playable versions of Half-Life 2, Half-Life 2: Episode One, Half-Life 2: Episode Two and Portal.
Since then many other games have been ported such as Half-Life 2: Deathmatch, Half-Life: Source, Day of Defeat: Source and Counter-Strike: Source.
Installation
- Download the latest Source Engine apk and then the game apk of your choosing (the Source Engine app launches base Half-Life 2); see the External links section below.
- In the phone's storage create a folder called
srceng
(or anything really) - Connect your phone to your PC with a cable or wirelessly
- Go into the Half-Life 2 directory and copy over every folder aside from the
bin
andsteam_input
folder into the srceng folder - Set the path to the game resources in the Source Engine app
Installing Other Games
To install games besides Half-Life 2, simply copying the folder of the same name as the game to the srceng folder is all that is needed.
For example, to install Portal, copying the folder /steamapps/common/Portal/portal
to the srceng folder will let you play Portal via the Portal app.
The following diagram showcases the game folder structure:
srceng
|
├── hl2 --> Half-Life 2, (REQUIRED FOR ALL GAMES)
├── platform --> Half-Life 2, (REQUIRED FOR ALL GAMES)
|
├── hl2mp --> Half-Life 2: Deathmatch
├── episodic --> Half-Life 2: Episode 1
├── ep2 --> Half-Life 2: Episode 2
|
├── hl1 --> Half-Life: Source
├── dod --> Day of Defeat: Source
├── cstrike --> Counter-Strike: Source
└── portal --> Portal
Installing on an SD-Card
Installing all the game files on a SD-Card can be beneficial if the internal storage is full or the user just prefers it that way.
However, since the app only allows for the selection of directories from the internal storage, the SD-Card path has to be entered manually.
Getting the path to the SD-Card alone can be challenging since regular file managers just report it as SD Card
and don't give the actual path to it.
The easiest and least "ad-riddled" way of getting the SD-Card path is to connect the device to a computer loaded with ADB (Android Debug Bridge)
To use ADB, USB debugging has to be enabled which varies from OS to OS.
Once all that has been done, a command prompt has to be opened in the folder in which ADB is located in (this can be done by typing cmd
in the address bar)
Then to confirm that the device is recognized by the system, typing in adb devices
will show all attached devices.
If a string of numbers and letters followed with device
shows up, that means that it has been detected.
Next, type adb shell
Then, type df
. This will list all directories on a root level. The directories we are interested in are usually at the bottom.
There should be 2 directories starting with /storage/
.
The internal storage will always be /storage/emulated
while the SD-Card is usually /storage/
followed by a 8 character string divided into two by a dash (-
)
For example:
/dev/fuse 109783884 53449520 56203292 49% /storage/emulated <- The Internal Storage
/dev/fuse 124835840 35815296 89020544 29% /storage/9257-194E <- The SD-Card
The path specified (in this example /storage/9257-194E
) is what we will write in the "Path to game resources" dialog in the app.