Unity Curation: Difference between revisions
(Added some more info) |
(Added info about hacking Unity Web Player games) |
||
Line 52: | Line 52: | ||
# Go to your <code>%USERPROFILE%\AppData\LocalLow\Unity</code> folder and copy <code>player</code> and <code>mono</code> folders into the correct Unity Web Player folder in Flashpoint. Make sure that the folder structure matches up. | # Go to your <code>%USERPROFILE%\AppData\LocalLow\Unity</code> folder and copy <code>player</code> and <code>mono</code> folders into the correct Unity Web Player folder in Flashpoint. Make sure that the folder structure matches up. | ||
# Try testing the game again. | # Try testing the game again. | ||
== Hacking Unity Web Player Games == | |||
In very rare cases, you may need to hack a Unity Web Player game to get it working in Flashpoint, for example to change HTTPS asset requests to HTTP. To get started, you will need the following tools: | |||
* [https://github.com/DerPopo/UABE Unity Assets Bundle Extractor (UABE)] | |||
* [https://github.com/dnSpy/dnSpy dnSpy] | |||
* [https://github.com/ata4/disunity DisUnity] | |||
Follow these rough steps to modify a Unity game: | |||
# Open the .unity3d file in UABE | |||
# Answer "yes" when it asks you whether to decompress the file | |||
# Extract all of the libraries such as DLLs and resources into a folder | |||
# Open the the extracted <code>Assembly-CSharp.dll</code> file with dnSpy | |||
# You will find the game's code here. Edit it as appropriate and save the file, overwriting the original DLL file. | |||
# Use DisUnity's <code>bundle-inject</code> command-line option to inject the extracted files back into the unity3d file. |
Revision as of 08:53, 16 January 2021
Unity web games are currently endangered, since the Unity Web Player was deprecated in 2016 and can no longer be used on modern browsers. In case you need to download the Web Player to search for Unity web game assets, however, you can download the full installer from here.
The following page is a tutorial on how to curate Unity games to add to Flashpoint.
Before You Start
This tutorial will assume you've read the standard Curation Tutorial, which is highly recommended to go through. Try curating a Flash game before moving on to other platforms like Unity.
Identifying and Grabbing Unity Games
You will very rarely come across Unity games compared to Flash or HTML5 games; however, identifying them is easy, because they will ask to download the Unity Web Player on the likely chance you don't already have it installed.
To confirm this, when on the page containing a game, press Ctrl+U to open its source HTML file and search for a .unity3D file link. If you find one, the game is on the Unity platform, and the .unity3D file will be the source of your game, so copy its link and download it.
Creating the HTML Embed File
Go back to the source page for your game and look at the text surrounding the .unity3D link. This is the embed for Unity games. For example, the source HTML for the game Verkeerstalent contains the following embed:
unityObject.embedUnity('unityPlayer', 'http://gameitnow.eu/spelle/games/141437220815352.unity3d', '940', '580');
Download Flashpoint Core, then open the Utilities folder. Find the Unity HTML Generator and open UnityHTMLGenerator.bat
.
In the Unity HTML Generator, type the name of the game and the name of the .unity3D file you downloaded including the file extension (example: 141437220815352.unity3d
) . The width and height to embed the game in are the first and second numbers in the embed respectively. Name the HTML file something relevant, such as the name of the game, preferably in lowercase and without spaces. For example, the HTML for Verkeerstalent is named verkeerstalent.html.
Follow the Curation Format to add metadata for your game and create its correct content folder. The Platform should be Unity
and the Application Path should be FPSoftware\startUnity.bat
.
Instead of using the URL for the .unity3d file as the Launch Command, however, use the HTML file you created, such as http://gameitnow.eu/spelle/games/verkeerstalent.html
. Put the HTML embed file in the same place as the .unity3D file in your content folder. If the game loads to a black screen, or does not work as intended without any missing assets, you may need to change the version of Unity the game launches with. This is done by adding either "2.x" or "3.x" to the beginning of the Launch Command. For example, our new Launch Command would now be 3.x http://gameitnow.eu/spelle/games/verkeerstalent.html
. However, this is not needed for this specific game.
Make sure to always use http:// instead of https:// to make sure Flashpoint grabs files from the fake Internet instead of the real one!
Import your curation as a Folder into Flashpoint Core using the Curate tab and test the game to see if it requires any additional files. If the Logs tab displays a line containing 404
followed by a content path, format that content path as a URL, download the necessary asset using cURLsDownloader, and put it in its appropriate place in the Content folder.
Note that you should never add any ZIP file from webplayer.unity3d.com
to your content folder! If you see this type of request, it means that Unity Web Player is trying to update itself, either because you are using the wrong version or because Flashpoint is missing the version that the game needs. If changing the game's launch command to use a different Unity version does not resolve the problem, refer to the Finding the Unity Version section for instructions on finding and adding the correct Unity version to Flashpoint.
Wrapping It Up
When you're finished testing, click on Export
button at the bottom of your Curation, this will create a single .7z
file containing the entire curation, which can be found by clicking Exported Curations
on the Curate tab, which opens the folder. Once you have the file, submit it to the #other-game-curations channel of the Flashpoint Discord, typing the name of the game and using the Unity emoji when submitting. If the file is too large for discord, upload it to https://other.curations.unstable.life/, and type the name with the emoji in the Discord channel.
Finding the Unity Version
Sometimes a game not work immediately in any one of the three main Unity versions, or you might have doubts about which Unity version is the most correct for a game. To find the exact Unity version that a game was built with, just open the .unity3d file in a hex editor such as HxD. In the "Decoded text" column, you will see the text UnityWeb
, followed by the major Unity version (such as 5.x.x), and finally followed by the exact Unity version number (such as 5.0.4f1
). You can use our Unity Web Player Versions table to match the Unity version number to one of Flashpoint's three Unity installation folders (2.x, 3.x, or 5.x). If you don't see the exact Unity version listed in the table, it is very likely that the game will work in 5.x. Double-check that your embed code is correct. If the game still isn't working, move on to the next section.
Note that most Unity games built with a 3.x version will work perfectly fine in Unity 5.x because of backwards compatibility. However, there are a few 3.x games that have major issues such as broken controls or extremely poor framerates in 5.x, thus requiring 3.x to function properly. An example of such a game is Alternator.
Another way to find a suitable version for a Unity game is to launch the .unity3d file in Basilisk, hold down the Alt key, and right-click the game. Hover over the Release Channel menu and you should see the ranges of Unity versions that the game is compatible with, for example Stable (4.3.5f1 - 4.6.6f2)
. You will see a checkmark next to the Unity version that the game is currently running in. This only gives a range of versions instead of an exact version, but it may still be helpful for debugging purposes.
Adding a New Unity Version
On rare occasions, a game may require a Unity Web Player version that we don't have yet. Follow these steps to add a new Unity Web Player version to Flashpoint:
- Go to the Unity download archive. Click the tab (5.x, 4.x, or 3.x) corresponding to the Unity version you need.
- Find the exact Unity version number and download its installer.
- Open the installer with 7-Zip and find the Unity Web Player development installer inside it. Extract and run the Unity Web Player installer.
- Go to your
%USERPROFILE%\AppData\LocalLow\Unity
folder and copyplayer
andmono
folders into the correct Unity Web Player folder in Flashpoint. Make sure that the folder structure matches up. - Try testing the game again.
Hacking Unity Web Player Games
In very rare cases, you may need to hack a Unity Web Player game to get it working in Flashpoint, for example to change HTTPS asset requests to HTTP. To get started, you will need the following tools:
Follow these rough steps to modify a Unity game:
- Open the .unity3d file in UABE
- Answer "yes" when it asks you whether to decompress the file
- Extract all of the libraries such as DLLs and resources into a folder
- Open the the extracted
Assembly-CSharp.dll
file with dnSpy - You will find the game's code here. Edit it as appropriate and save the file, overwriting the original DLL file.
- Use DisUnity's
bundle-inject
command-line option to inject the extracted files back into the unity3d file.