Support for high resolution skins
The tee skins resolution shows visible pixels even on FullHD. While mapres still look crisp. Especially when zooming in this can be witnessed.
OpenGL 1.4.0 (Thanks jopsti for pointing that out)
We already have some skins ported to svg. Those could be rendered at any resolution. And users can already modify their data folder but that is quite a manual process.
So I am proposing a high res mode for skins. The question is how would that look like? How to keep it fast?
Maybe those could not be loaded by default only if a checkbox is ticked. So next to the fat skins option there could be a high res option that on activation loads additional files from a high resolution data folder and replaces all the skins with the same names in lower resolutions. That would increase the ddnet release file size but not the client startup time if not used. The skins could also not be included in the release file and downloaded from the skin server if opted in.
Or is it okay in 2024 to increase the skin base size for all? It could be increased to just match the sharpness of the mapres and weapons.
Perhaps start by fixing the ugly scaling that happens to the outlines and especially feet
Maybe vector graphics could be supported natively?
Maybe vector graphics could be supported natively?
Yea that could help with file sizes. Well not sure actually because png's might compress better than unoptimized svgs (I did a quick test. And twinbop.png rendered as a png twice the size so 512 x 256 instead of the current 256 x 128 is at 18K same file size as the twinbop.svg. Both seem to have exactly 20480 bytes according to du --block 1)
But anyways that requires a full engine rewrite. That sounds a bit too complex. If there is the simpler solution of just shipping larger pngs which are already supported.
But anyways that requires a full engine rewrite.
It doesn't. The engine expects pixel graphics, but it doesn't care how they're read. Currently from PNG. But loading SVGs requires rendering SVGs which might be hard enough on its own.
i think it's not fair that you made a screenshot using 0.7 client or ddnet with OpenGL 1.x backend On other backends it doesn't look as bad.
Other than that HD option sounds ok, we have quite some skins in the db that are HD already
Oh I did not notice I am on opengl 1.x (I used ddnet master to create all screenshots). So with a newer OpenGL or Vulkan it does get better :partying_face:. But I would still argue that the skin is still not looking as smooth as the gun on the grass.
OpenGL 3.3
Vulkan 1.1
To see it still being lower res than the rest here a zoom in so it becomes obvious on the github preview.
Vulkan 1.1
Is that level of zoom often used during gameplay? 🤔
Is that level of zoom often used during gameplay? 🤔
No.
here a zoom in so it becomes obvious on the github preview.
The problem is not that you can zoom in until pixel appear. The problem is that the tee is lower res than the other textures. And it can be noticed in normal zoom on higher resolutions and big screens. I personally like zooming in sometimes. Either to chill and have a look at my tee and vibe. Or during gores. Its a fun challenge to play gores with a narrow field of view. But no I personally do not use it often during main gameplay and do not know of anyone who does.
I think this discussion has derailed a bit in terms of scope. What is specifically being requested here? The issue should be renamed to either "Add SVG support for skins" or "Improve anti-aliasing/rendering for skins". I honestly think we should tackle one or the other, and since this mainly affects high zoom levels, I prefer to wait until someone has the time + motivation to implement SVG skin support
I think this discussion has derailed a bit in terms of scope. What is specifically being requested here? The issue should be renamed to either "Add SVG support for skins" or "Improve anti-aliasing/rendering for skins". I honestly think we should tackle one or the other, and since this mainly affects high zoom levels, I prefer to wait until someone has the time + motivation to implement SVG skin support
As the original issue creator I would claim that the issue is about neither :p
The issue is about the official ddnet client shipping higher res renders of the standard skins. And the svgs can be used as source to render out those images. This should not happen in the client at run time but while packaging ddnet. Or these pngs should be tracked directly in the ddnet repo.
It would be pretty easy to automate variable size skin retrieval from the database by doing something like https://skins.ddnet.org/skin/512/ for a 512x256 skin. You can provide an upload mechanism for vector graphics and have them be automatically converted into all of a few sizes (base, 2x, 3x, etc... the versions of the vanilla skins I have downloaded are 1024x512 and even those get a little bit pixelated at high zoom) via cron job or something.