1) How to manage the art resource project of large-scale games
2) Google Play forcing 64-bit App related issues
3) Questions about repackaging scattered AssetBundle resources
4) The difference between API Compatibility Level .net 4.x and .NET Standard 2.0 in Unity
5) SRP Batcher fails in Unity 2020 version OpenGL ES3
Today, we will continue to select a number of issues related to development and optimization for you. It is recommended that you read it for 10 minutes, and you will be rewarded after reading it carefully.
Q: With the increase in the number of people involved in the production of the project, the number of various art resources is also rising rapidly. Even if there are various specifications and various resource import and inspection tools, after running for a period of time, all kinds of abandoned resources in the project still cannot be cleaned up in time, resulting in a continuous increase in the size of resources and packages, including:
- Some intermediate files generated during the production of various resources;
- Resources that were originally in use but have been deprecated due to changes in business requirements;
- It was originally intended to be put in the game to see the effect, but there was no actual resources investment.
Are there any solutions when dealing with this kind of problem?
A1: The problem encountered by the question owner has nothing to do with technology, but with the process.
(1) Supervision work is responsible for the specific person, everything is planned in advance, and if not planned, it will be abolished.
Every project needs a Performance Owner to control performance, resources and other issues. Without this person, no matter how powerful the tools and the stronger team are, it is nothing. This person can be the project producer, main programmer, QA Leader or PM (generally not available in small teams). From the perspective of the teams we work with, most of the teams with QA Leader as the Performance Owner.
(2) The regulatory process needs to keep up.
There must be someone in the team responsible for resource and performance issues, and a fixed process must be established to force the team to develop the habit of continuous monitoring and continuous improvement. It is very difficult to three days fishing two days the net and the same is true for game development. Therefore, to turn monitoring into a habit of team research and development, we need to constantly control it through the process. Once the process is in place, everything will be fine.
If the above two points are achieved, the problem of the question owner will naturally be solved.
A2: Usually the PM is the person in charge of supervision. Because some QA has no common sense and no rights, it is better for PM to understand the business. If there is no PM, it is better to give the client the right to the main program. The lock version is necessary, and most major companies have this.
Use tools to limit the operation of the art, report all errors that are incorrect, and then prompt clearly. Use the lock version to restrict the commit node. Then ask the unruly people to leave, don’t ask why they reported the error. Of course, it must be supported from the beginning of the producer. In layman’s terms, art and planning do not know how to use tools and are not willing to learn, so they don’t deserve to cooperate together.
Q: Unity can load the corresponding code through the assembly, and Google Play has forced 64-bit APP, does it no longer support loading code through Assembly.Load?
A: As shown in the following figure, the Mono version in Unity does not yet support ARM64, so you can only use IL2CPP to access Google Play (64-bit requirements). IL2CPP does not support Assembly.Load.
Q: Is it necessary for Unity’s AssetBundle resources to make the scattered AssetBundle resources into Zip? For example, 300MB one. Because the compression format can be selected when playing the AssetBundle, it is not to reduce the overall size, but if the AssetBundle is scattered, will the performance be pressured when downloading? How do you deal with it in practice? (The number of AssetBundles is 10W+, the total size is around 4G.)
A1: Downloading a bunch of scattered files is not as fast as a large file. Http connection requires time and resources. Sometimes the AssetBundle is actually only a few KB. Not cost-effective. Zip is more convenient, you can consider playing Zip without compression. Of course, you can also customize the format, but it will be troublesome to update the large file in the future, and some management and replacement need to be done.
A2: This function just happened to be done recently. Marking multiple packages into Zip is a great help to download efficiency, especially in foreign network environments.
- AssetBundle packaging is still a fragmented AssetBundle package (AssetBundle will distinguish between modules, such as special effects, UI, etc.).
- When hot update is required, compare the generated AssetBundle package information with the previous version of the AssetBundle package, and generate a Zip package from the AssetBundle package of each change module.
- During the hot update, collect the AssetBundle information that needs to be updated (It has Zip mark, indicating that the resource is in the Zip package) and download it. If the Zip is not marked, download the AssetBundle package directly, so that it is compatible with the hot update function across multiple versions.
- The downloaded Zip package is decompressed into AssetBundle on the client program.
A3: The disadvantages of hashing are more concentrated: download is slow (using CDN, oss backend performance does not need to be considered), upload to oss is also much slower.
Zip skips package management and downloads redundancy, which is a headache, and dynamic download is even more impossible. Therefore, it may lead to more expensive OSS costs than hashing.
A4: Scattered files are used for early development. Small files also save the problem of interrupted network transmission. Later, when the time is rich, it can be expanded into a large package. The incremental update package can be generated according to the bundle version and downloaded at one time.
Putting it on the server has no effect. Clean it up regularly.
A5: The Zip package used in the previous project. After a long-term operation, redundant assets will be increased more and more. Hot update assets must ensure completeness and cannot be deleted unless you are changing packages. If you frequently change packages, then the Zip method is the most appropriate.
Q: What is the difference between API Compatibility Level .NET 4.x and .NET Standard 2.0 in Unity?
A: .NET Standard 2.0 has wider support for the platform and better compatibility. The API of .NET Standard 2.0 is a subset of .NET 4.x. In other words, .NET 4.x supports more APIs and is compatible with .NET Standard 2.0, but some APIs are incompatible on some platforms.
Unity chooses .NET Standard 2.0 by default. If you want cross-platform compatibility, then choose Standard 2.0. It’s smaller than .NET 4.x. If the external library or the API call in the script is not supported by Standard 2.0, then consider changing to 4.x instead.
The official document shall prevail:
Q: Under the Unity 2020 version, SRP Batcher fails under OpenGL ES3. Checking lit.shader shows that it is not compatible with SRP. What should I do?
A: After investigation, the above problem does not occur in some versions of Unity 2020.2, but the subsequent versions are broken. Now see that this issue is mentioned in the Release notes of 2020.3.9f1.
That’s all for today’s sharing. Of course, life may have its limit but knowledge knows no bounds. In the long development cycle, these problems you see maybe just the tip of the iceberg. We have already prepared more technical topics on the UWA Q&A website, waiting for you to explore and share them together. You are welcome to join in, who loves progress. Perhaps your method can solve the urgent needs of others, and the “stone” of other mountains can also attack your “jade”.
YOU MAY ALSO LIKE!!!
UWA website: https://en.uwa4d.com
UWA Blog: https://blog.en.uwa4d.com
You may also like
June 30, 2022