I am surprised by the quality and solidity of your argument and such detailed and specific knowledge in some areas of my field from another field. I think it is a very reasonable. Awesome observation with Java. I will try to contribute my grain of sand to find the solution to the problem.
The argument that they have given me to optimize the project and reduce the size of UE5 is that modules can be removed or added according to the needs of the project. According to UE5, modules are the building blocks of the Unreal Engine software architecture, therefore modules have specific functionality.
According to your argument, a module can be removed if it is not needed for the project, as you say it is “modular”. However, this argument has several problems:
The procedure of removing or adding modules is not easy or fast. It involves a series of steps that consume time and resources, such as: determining which modules are required, which are dependent, and which may be dispensed with in the future; run the corresponding .bat files; compile the project again. This methodology is neither efficient nor feasible to optimize the project.
It is quite complex to know which modules can be removed without causing errors or problems in the project. There are dependencies between the different elements of the project that make it difficult to remove or add modules. For example, if you want to remove support for virtual or augmented reality (VR/AR/XR), you are supposed to remove the HeadmountedDisplay module. However, while reviewing this module, I have not noticed that these modules (VR/AR/XR) or plugins within the HeadmountedDisplay Imgur: The magic of the Internet.
I have tried to see the modules that you mentioned above, and I see that their weight is quite low Imgur: The magic of the Internet compared to 200GB. It is true that there are C++ classes and plugins within the engine with the names XR, VR and other related names Imgur: The magic of the Internet, Imgur: The magic of the Internet, Imgur: The magic of the Internet. But I have not found a direct relationship between them, possibly they depend on another module or bridge plugin that I have not been able to identify (due to not having the necessary time) and many others that use XR, VR, but this would make the explanation too long with many photos. However, this does not solve the problem of the excessive size of UE5.
To really remove a module, a very high knowledge of all the modules and their dependencies or those related to it is required to know what can be removed or not. This is a problem because the project is of great magnitude and complexity, as I already said before.
The documentation on the modules is insufficient, since there is no area on each module and its operation. There is no detailed explanation about what each module does, how it is related and its dependency with other modules, what consequences it has to remove it and others. Most C++ code documentation is simply an automatic generation from automatic comments, which provide useful background information. But there is nothing in relation to the modules. It becomes impossible to trace the deep connection that exists between each element. Instead of being organized, the code looks like a maze if you have to look up a module’s dependency based on the C++ inheritance diagram for C++ (or even from your IDE). If there were a tree diagram graph of the modules, we could know it in an instant or with less time invested, with a simple glance.
Spending n hours (running the .bat files and compiling the project again) to delete or modify an .xml file and a .cs file, is a bit dangerous in time estimation. Removing a module manually without knowing its implications doesn’t seem very reasonable. If the documentation were well done, then you could see which modules are dependent on and required by other modules, but since the documentation for much of the C++ code is simply an auto_generate_from auto_comments, it becomes impossible to trace the deep connection between each element. Instead of being organized. Most users who are not part of EPIC GAMES do not have access to deep knowledge of the modules. We don’t know if removing “x” module will affect another related plugin that talks to HeadmountedDisplay or performs a specific function. Imgur: The magic of the Internet
We have to proceed with caution and we cannot do it for all modules, since it implies analyzing the entire structure of each module, its depth and its environment. If they had a tree diagram graph, we could tell in an instant with a single glance.
I have to first follow the steps in the documentation and run the setup.bat which already occupies a considerable amount to be able to delete it https://docs.unrealengine.com/5.2/en-US/downloading-unreal-engine-source-code/ and then copypilar. Then before compiling it with the IDE I can already remove the module and hope that the compilation doesn’t fail.
https://i.imgur.com/gc5HXxI.png, but how do I know if I’m right to delete a module? Imgur: The magic of the Internet Imgur: The magic of the Internet
To remove HeadmountedDisplay (you have to go through it in the .bat) you would have to wait some time beforehand, then delete it and finally recompile it from the solution. Time and resources too valuable. Would any other module be just as simple? I don’t know the scope. But there are too many errors on this subject on the Net.
"With an image, this problem would be solved in “seconds”. How for example to integrate docker or some gesture system with UE5. Removing or adding modules at “personal discretion”, does not seem to me the best strategy unless you have a close relationship with the UE5 backend team, in which case, it would be like removing or adding books from the shelf (even asking the colleague next door if you have any questions). For more than 95% of us, we cannot assume that time, be it 30 minutes, 4h or 19h to recompile again. So most buy a lot of TB and don’t complain and show good attitude. However, if some customer wants something custom, you just make it for them and it’s all solved. This is the reality. It’s very attractive to say that you have something modular with removing or adding modules could cause… countless problems.
Of course, with the images (no builds again) since the image is already “compiled and pre-compiled”. The good thing about the images. This greatly saves the development of both large, medium and small projects.
I don’t agree with how you think about storage and price ratio over time, that way of thinking doesn’t mean we have to put more stuff into the engine every time we get something new. Systems evolve (they become decentralized, whether it is a CDN or another), that is, things change looking for a prolific evolution.
You can think like this (the larger the project, the more space), but I do not support that argument at all. It is not correct although as time goes by the cost is cheaper and for that rule we have to have a 5TB disk. That’s outrageously large in 2023. It may be normal in 2100, but not now.
The one currently occupied by the engine can be used for other needs. I can’t imagine one day having 5TB where the engine weighs 2.5TB. That means something is being done wrong. “So it would be right to buy more storage”, I don’t think that’s the idea, instead it would have to be decentralized as well as optimized for use of space and with respect to Engine code.
I keep reiterating that the modularization of UE5 is not manually removing the modules and changing the references by hand in case another module or plugin does not find the other module, that is a preventive patch. As the project grows, there will come a point where there are hundreds of modules intertwined with each other (deeply) whether they are called in a function or whatever. Modularization is a good design practice that helps you optimize the use of space and code in the Engine. For example Docker or another system.
I speak of docker because it is the most popular and competent for this type of feat. If I could talk about Winzip I would talk about him.
An illustrative case is the following:
- If a mobile application developer only needs to create applications for mobile devices, they would only need the mobile image (the one that contains all the SDKs, all the modules for Android and IOS and their correct integration).
- In my situation, I would only select the images of: PC, Networking (Multiplayer) and others that I found useful. (Other images not relevant to my project should not be present)
It would be as simple as asking yourself, “What do I want to do?” and the user in question chooses the type of image based on the project and their needs.
If in the future you need another image, simply adding it would be enough (no compilation problems since they come compiled, unless you need to change the source code of the Engine yourself, which is another matter, in this aspect if you change something manual of the engine itself, you would need to recompile the images that were attached). Instead of having a project with an exorbitant size.
Therefore, we don’t know which modules consume a lot of storage (unless you go looking from windows and calculate in properties…) and are removable without affecting the project “at all”. This is a very high risk to take with compiling the entire solution.
Regarding Java, everything is correct, nothing to object to. +A very good.
What I wanted to refer to is that as a programmer I have never seen any “Game Engine” grow in such a way regardless of whether it used Java or not. He may not have used the best words.Including Unity which is the rival Unity - Manual: System requirements for Unity 2023.2 and of course the eternal rival. https://docs.cryengine.com/display/CEMANUAL/System+Requirements None of them reaches 20 GB neither in storage nor in Ram.
Steam was never talked about, however, Steam has a little different tools, thanks to its personalized recommendation systems, its exploration filters, its wish lists, its user reviews and its tags, it makes a pleasant store. Epic Games Store has around ~2K games
Steam has a massive library of ~95K games. Therefore, there is more variety on Steam.
Epic Games, as we all know, has exclusivity when being on its platform and this is seen as an anti-competitive practice (what is known as monopoly) that limits the freedom of consumers and developers forcing them to stay here with their restrictions (masked by many attractive offers).
Steam, on the other hand, although much more expensive, offers more functions and services to its users, voice chat, streaming, cloud storage, the Steam Workshop, the Steam Controller and many others that are not relevant. Even the Unreal Engine (multiplayer) subsystems can be connected to Steam.
But the user is who has the last choice.
There is one aspect that must be taken into account, EPIC offers a better offer than Steam since it has always been more favorable.
While epic offers 12/88 steam is 30/70 t 20/80 depending on sales. That is, steam keeps a commission of 30% and 20% (depends on the contract and its sales). while Epic only keeps 12 %.
So EPIC generally gets less, but doesn’t need more.
This can be an incentive for small developers to increase their own profits. Steam makes up for it with offers.
There is a battle between EPIC and Steam and both are good overall.
EPIC cheaper, Steam more people and more services. They are even.
We can say, EPIC = profitability, Steam = Accessibility.
If I’m not misunderstanding, Valve takes 30% of revenue when a game is released on their store. Developers can opt to earn an additional 5% if their games achieve more than $10 million in sales through Steam. Therefore, they have conditions if they meet certain requirements. If sales exceed $50M, the extra percentage goes up to 10%. This means that Steam only drops their commission by 25-20% in very rare cases, while Epic keeps their commission as a constant 12% for all games, regardless of sales or what engine they use (so you can bring a cryengine, unity or other game with no problem). If they use the Unreal Engine and sell their game on the Epic store, they only pay 12%. If they use the Unreal Engine and sell their game on another store, they pay 12% to the store and 5% to Epic, as long as they exceed $1M in gross revenue.
https://www.unrealengine.com/en-US/blog/announcing-the-epic-games-store
No, it’s not just 5%. The commission that Epic keeps for the games sold in its store is 12% regardless of the engine.
If you generate $1,003,000 the 5% commission for the use of the Unreal Engine is not applied on the total gross income of the game, but on the excess of $3,000 per quarter. That is, if a game generates $1,003,000 in a quarter
Therefore:
[quarter] = 1
[Gross Revenue] = $1,003,000
[Epic Store Commission (12%)] = $120,360 (0.12 * $1,003,000)
[Net Revenue] = $882,640 ($1,003,000 - $120,360)
[Unreal Engine Commission (5%)] = $49,850 (0.05 * ($1,000,000 - $3,000))
Final Revenue = $832,790 ($882,640 - $49,850)
Total commissions are $120,360 + 49,850 = $170,210
$170.210 / 1.0030 = 16.96%
[This is a fictitious estimate, we already know that this is not the case, why it could vary, but it is an estimate] Now we have to multiply this x4 (since there are 4 quarters)
So if you make an approximation and say that the quarter is $170,210 *4
Annual would be: $680,840 or what is the same as ~ 15% annually.
You have to do that exercise quarterly.
Based on your last argument.
I understand that this comment about the analogy of the waiter and his kindness means that my attitude towards the forum staff was quite bad, unfortunate and not very accurate, however, I don’t think that what happened shows who I am. However, I think your argument has some points that could be argued.
Your argument is based on an analogy between being rude to a waiter and being rude to forum staff. This analogy is false, because they are not comparable situations since “at no time did I ask for an explanation from anyone on the forum” except for a professional such as a project manager (one who has enough experience to argue why it was done this way and why as well as an optimal solution). Rude and picky are not the same. Excigency becomes rude when it is specifically reiterated what the problem was and who “should” have answered.
If I have a problem with a car, I probably won’t go to this forum, I’ll go to a mechanic. The same with a DR and the same with each specialist in his sector.
A waiter provides a service in exchange for a salary, and he/she “should” be kind as well as have the obligation to treat her customers well as long as they treat her well,
(Search in google: functions of a waiter you will be surprised that he has the “obligation” to be friendly)
and the same as a project manager (who in such a situation does not even apologize). The forum staff is a group of volunteers who offer their help free of charge, and are under no obligation to respond to all inquiries. Therefore, it is not the same to be rude to a waiter or demanding of a project manager than to receive weak arguments from forum staff. The forum started saying things that were unrelated, like PEBKAC (attributing that it was my fault), buy a record, this makes no sense at all.
In my case, I asked the project manager for the reason why UE5 was unnecessarily excessively large and to give me a solution to the problem (I do not accept a “no solution, sorry”, which denotes 0% professionalism) and an explanation of why it is done this way. He ignored me and didn’t give me any answer. That is not professionalism and shows a great lack of attention and especially the 12 hours invested. I don’t think that was being rude, but being picky about the project manager’s response that he should have given and was not fulfilling his obligations as a project manager.
The work of many of the EPIC employees (programmers, CEO, Marketing….) pays for the food of the project manager. What less than an answer.
I appreciate your comment and I understand that you want to defend the work of the forum staff, which is undoubtedly very valuable and generous. However, I think your argument has several problems.
Second, even though your argument has an explanation, it commits an ad hominem fallacy at the end, i.e. you attack me instead of my argument. Instead of simply answering my question with a detailed explanation of how the (a bit archaic as I said) module system works (which you did very well last time). It has dedicated you to judging my character and my personality. This is not relevant to the topic we are dealing with, and only serves to divert attention and disqualify my opinion.
Third, your argument ignores the context and circumstances in which my interaction with forum staff occurred. You do not take into account that I was waiting for a professional response to a problem of this caliber and on top of not receiving an adequate response to my problem. In the forum were not the comments relevant to the problem. It is not that I fervently wanted to “talk to the project manager”, to spam the forum, but that I wanted to resolve the situation as soon as possible with an explanation and an improvement. But the forum said buy a record, PEBKAC and others… here we go again. With how easy it was you answered without thinking. The forms are more than justified and there are not as many threats as you thought you saw. Just someone telling the truth in a “heartbreaking” way. Sometimes reality hurts.
Therefore, that argument does not reflect who I am. I am quite demanding and critical when it comes to defending my point of view and interests and when I have already warned forcefully more than 3 times.
I could give you the same example that you gave but with two politicians, but would it make sense with this forum? No, right? the same happens.
I asked someone qualified to give me an answer to the problem, or at least to let me know if there were any input ideas for an improvement or if they were working on something soon in the patch notes.
If I’m asking for pears and you give me apples…
It is preferable that the forum staff understood the situation and did not judge my way of expressing myself when it was not what I asked for.
If I ask for programming help, I ask a programmer for programming help, what better than a programmer? I would not like the 3D modeling person to solve my doubt. The same thing happens, if I have a 3D problem, what better than a 3D designer? I wouldn’t like the programmer to solve my doubt.
I think that way we could have a more constructive and cordial conversation.
Note: The problem with such a hard, strong and direct start was to prevent any message from a random user (it’s mostly done), We both (Manager and I) knew that the reaction of the forum members was going to be what it was. It is normal for this to happen in a forum so I tried my best to avoid this by being quite frantic and somewhat aggressive. “It still happened.” It is understandable that someone who complains about the space receives answers like “haha buy a record”, “it’s your fault”, “it’s 50 euros”, “look at this one who lost 12 hours” haha. I warned it clearly, so that it would not happen, but it did.
I think I have been much more cordial than my beginnings. I hope it can be appreciated.