pfist / Nano

A tiny template for tiny Unreal games.
242 stars 14 forks source link

Size #1

Open Urammar opened 1 year ago

Urammar commented 1 year ago

Hi there,

Not sure if this is still relevant but i've got packaged and shipped projects in 4.27 down below 110mb, which you said in your release info I should contact you about if thats the case.

Although elsewhere you mentioned that turning off some core features wasn't in the gameplan because of stability and features for all devs, some of which i've turned off.

If thats the case then maybe this is just whatever old news, but otherwise im happy to share the project files or whatever you need, just let me know

pfist commented 1 year ago

Can you elaborate? I would love to hear more about how you got a 4.27 project down to 110 MB, even if it is outside the scope of Nano.

Urammar commented 1 year ago

Sure, I disabled every single package in the addons, including virtually all the default ones, and just re-enabled them as I absolutely required them (some content browser features, for instance, are located there). Also use all the known steps, no starter content etc obviously.

Its actually 104mb in total.

Set the starter map in settings to your level, too, so it doesnt package the blank persistent. Set Direct X level to your target platform so only one version is sent.

Also in the game files itself of the package, there are 'binaries' in the third party directory that can go. It packaged phyx clothing sim stuff and whatnot despite all of that being disabled anyway. I found it wont launch with some of this removed, but a lot of it is fat, apparently.

Also all the intermediate folders can be deleted safely also, which is quite a bit of size.

Saved can even be deleted, potentially, but those config .ini files might matter if they have custom info.

I basically just started copying things out into a backup folder and if they game didnt launch with them putting them back in, and reading the documentation here https://docs.unrealengine.com/4.27/en-US/Basics/DirectoryStructure/ which indicates stuff like intermediate can absolutely go and why is it ever packaged anyway?

Basically, use a utility like windirstat, make sure the treemap visualization cube thing is on, (all just for a guide), select the final build and just start slashing like a mad doctor.

I'll add I still have the redist in my folder, and that can probably go too and be added as 2nd offering for those that have never launched a ue game on their system before, so it could be less than a hundred meg to launch.

This isn't fit, its not trim, its not even bare bones. This is outright a skeleton, with some bones turned to dust. This probably wont launch on like 90% of systems. I don't know I havent tested it. Maybe its totally fine. All my pc's have launched ue4 stuff before and thus all have packages this might require.

Again, this is outside of the scope of nano, I think?

Regardless i'll include a link to it on my google drive. This is my personal drive so this might go at some point when I clean it, not my problem if its gone its gone, i'm removing the og from my actual drive so this is the only copy, future people. Also it zips to 40.6mb so like, maximum victory.

Unless I am mistaken, with the redists taken out, and maybe some small things, like 2 different ~1mb audio .dlls and a 48kb one I haven't bothered with (but might be double ups just with different technology/formats), this is the smallest possible executable package that can come out of an unmodified ue4.

Well even thats not true,this actually has a tiny little test blueprint for generating and then summing an array of 1 million length in blueprint and an identical one with the flag to nativize its blueprint code to c for comparison, so theres a few kb there im sure to prune also. The pak is 26mb, unsure how much of that is my content and how much is just base pak size.

But I would guess this is about 3mb from the theoretical bottom. Couple of hundreds of kb if you want to include the audio dlls, assuming they are necessary for audio(none plays in this project to test).

https://drive.google.com/file/d/1gyN7-4wy6PeB-dRre39ItapVQ1mI_Ku9/view?usp=drive_link

Urammar commented 1 year ago

Also the low res is set by a console variable instruction in the blueprint from a generic editor performance saver bp that is included, it also caps your fps to 60 and disables ray tracing, and is not some unfortunate byproduct of this process. The behavior is intended and optional.

Also, just noticing that the skybox stuff, textures, the basic floor mesh, a reflection probe, light source, skylight and player start are all included. Again this wasn't actually intentionally trying to bottom out, it was just to send to a few people for testing nativization on other machines.

I'm going to repackage with all that stuff stripped just for giggles because i'm a little inspired from going over this, but also very lazy so thats all i'll do.

Urammar commented 1 year ago

image

Okay so I did a thing.

That will increase in size slightly when you launch it, as it populates the saved directory and creates and intermediate directory. It also has all(i think?) the content browser plugins activated so it actually does anything at all haha. If it matters in a competition, they can be disabled at the end for submission, all it does is breaks the CB and it will be blank, the files are still there. I don't think it matters for a packaged project, i dont think it packages the content browser, for obvious reasons, but I havent actually tested that... maybe.....

(Before I say the next thing, in total fairness, I will add that nano specifically states that it doesn't break features most users would use, which I agree with, and I dont think something as simple as a timeline even works with this, that would have to be enabled as you go, in engine plugins. Bro, I was even considering disabling the content browser, like, this has left minimal and is in outright broken territory)

I really wanna highlight that if you arent very familiar with unreal, you might even end up looking for paid marketplace plugins to do stuff unreal can do out of the box, simply because you forgot or were unaware its been disabled here in the engine plugins. Like I dont even know if this can produce audio, let alone useful stuff like animation re-targeting or half the blueprint nodes. Turn back now. I really dont want overambitious new devs to find this and think they have to learn vector math because they didnt know unreal is supposed to have a 'look at' node that does all that for you, seriously. Nano is pretty cool, this is straight up uninsulated high voltage wire for electronics competitions, I dont have to tell you this is a bad idea.

No really guy, this is '3 sheets of paper technically constitutes a roof for the duration of this home-building competition' tier. The content browser was included as a last minute decision.

Still, if you are a grizzled vet, and know enough to see features missing as you encounter them, if you can feel that you are in a cut down joke of an environment, and know enough to re-enable these things as you go, adding only the barest of cold, sharp baked-bean-can-edge metal tier code you absolutely cannot do without as you go, then this on a usb drive will give you that edge in your competition of madness.

Still, I submit to you that 60,452,570 bytes is currently the smallest unreal project file known to the internet, significantly beating nano. Reiterating as its creator I will say that this 'atomic' project is probably a bad idea even if you know what you are doing, and straight usable if you are a rookie,

BuldyTesty_Size.zip

Urammar commented 3 months ago

Okay, so I just bit the bullet and did the thing even more.

https://github.com/Urammar/Unreal-Nanoscopic/releases/tag/Release

Heres a full on repository for this. Just the most outrageously small project I could make. Forget MB, this thing sits at just 13.5kb ready to go, or 5kb zipped. It will build to just about 50mb, a slight improvement on the above zip.

I warn you again that, frankly, this is too small. But there it is.

pfist commented 3 months ago

Okay, so I just bit the bullet and did the thing even more.

https://github.com/Urammar/Unreal-Nanoscopic/releases/tag/Release

Heres a full on repository for this. Just the most outrageously small project I could make. Forget MB, this thing sits at just 13.5kb ready to go, or 5kb zipped. It will build to just about 50mb, a slight improvement on the above zip.

I warn you again that, frankly, this is too small. But there it is.

Remarkable. Have you tried packaging a game with this and running it, or is this just the smallest project that will run UnrealEditor?

Urammar commented 3 months ago

If by 'a game' you mean a black screen with no input, then yes haha, I have. It builds fine, for windows anyway. Very limited testing of course.