Visual bug. I don`t know how to report THIS

  • I have seen these lines too. This feels like a bug to me.

    There may be thousands of images in the project, cropping and adding transparent borders to them all is definitely not a solution.. Not only it's a tedious job, but this may break the game - mess up image points positions, collision polygons, require code changes etc.

  • I have seen these lines too. This feels like a bug to me.

    There may be thousands of images in the project, cropping and adding transparent borders to them all is definitely not a solution.. Not only it's a tedious job, but this may break the game - mess up image points positions, collision polygons, require code changes etc.

    Totaly agree with you. I am very scared to crop just everything because fixes can take half life :(

  • The workaround has been like this all the time. You need transparent pixels around the objects. otherwise the filtering will use pixels from other objects..

    For sprites this is easy to fix on your own, and should be standard for all imported graphics already. Also for graphics you create on your own within the engine.

    The problem as I see it, is if you have lot of background images, which cannot use transparent corners, since they should be tiled..

    Maybe the engine should add some transparent pixels between all objects when creating the sheet automatically, enough to cater for all kind of filtering combinations. But this would need a code fix for the engine and editor. Don't know how hard it would be to do

  • The problem is cross-image bleed in spritesheets when downscaling (because the smaller mipmaps are lower resolution, and combine areas of the image in to single pixels). It's a normal result in computer graphics when using spritesheets and mipmaps, it's not specific to Construct.

    The 'Downscaling quality' property was added to Construct specifically to solve this. It pads images on spritesheets out to power-of-two offsets which largely avoids the problem. The reason it's marked as "not recommended" is because this makes it use more memory, and so you shouldn't choose it for no reason at all. (I'd noticed in the past people choosing it because they "want better quality graphics" without understanding what it does or what the trade-off is, so I added the "not recommended" label to discourage that usage.) You should only use it if you really have the problem with seams, which you do, so you should use it.

  • The C3 manual has some good comments on this too, I appreciate a good manual!

    construct.net/en/make-games/manuals/construct-3/project-primitives/projects

    Downscaling quality

    Adjusts the tradeoff between rendering quality and memory use when resizing images to smaller than their original size (downscaling). The options are:

    Low quality: mipmaps are disabled (reducing memory use), but downscaled sprites may appear blocky or pixellated. This mode is not recommended for most games, since disabling mipmaps can reduce performance.

    Medium quality: mipmaps are enabled. Downscaling sprites generally looks better.

    High quality: mipmaps are enabled and the spritesheet after export pads out all images to power-of-two sizes. This can significantly increase memory use, but can resolve two minor rendering issues: light fringing that can sometimes occur along the borders of downscaled objects, or a quality change in the last frame of an animation. Do not use this mode unless a rendering artefact is specifically observed and selecting this mode can be observed to resolve it: the increased memory usage can be very significant, and is not a cost that should be added for no reason. For more information see Memory usage.

  • Reading the manual on Downscaling has got me interested..... Hey Ashley, could you explain why a 2D game would use mipmaps?

    My understanding is that mipmapping is for 3D games so that the texture can automatically be swapped out to a lower res texture if the object's distance from the camera is too far away. Isn't it true that in a 2D game (actual 2D not 2.5D you would see in the likes of Unity) the distance objects are from the camera is always the same? So what advantage would a technique like mipmaps add to a 2D game other than just increasing memory usage at runtime (to store all the mipmapped textures).

  • Mipmaps improve the rendering quality and performance when downscaling sprites smaller than their source image. It's a similar case to a far-away texture in 3D - it's just another way it appears resized smaller.

  • Mipmaps improve the rendering quality and performance when downscaling sprites smaller than their source image. It's a similar case to a far-away texture in 3D - it's just another way it appears resized smaller.

    Ok gotcha. Do mipmaps only get applied when an individual object is scaled down? Or do mipmaps also apply to layer scale and layout scale?

  • I had these issues in the past in other game engines, and the solution is to 'extrude' the edge pixels.

    TexturePacker includes this option. It works really well, and removes the bleeding due to anti-aliasing issues caused by scaling up and down.

    Here is an example. Open in an image editor, and zoom in. Notice the double pixel border around each tile. Each tile is 32 by 32 pixels, and the extruded pixels prevent any bleeding from occurring.

    Not sure if this is the same option as Ashley mentioned earlier.

  • For the record I covered this in more detail in a new blog post: The surprising difficulty of resizing images on spritesheets

    Using any fixed size border/padding does not always solve the problem - as noted the only real solution is power-of-two size and positioning on spritesheets, which is what the downscaling quality "High" setting does in Construct.

  • This will add things to already big list of things that is nice to have. But anyway:

    How hard, if possible and does not have big impact - is to enable mipmap per object basis. This is clearly needed, like a lot of other cool things, but not every object is zoomed and object that need zoom are mostly together with ones that don't need it. Currect case is big middle ground! Maybe per layer basis? Ofc the end benefit might super minimal.

  • In general I think that kind of micro-management goes against the whole purpose of Construct, to make things simple and easy to use.

  • For the record I covered this in more detail in a new blog post: The surprising difficulty of resizing images on spritesheets

    Using any fixed size border/padding does not always solve the problem - as noted the only real solution is power-of-two size and positioning on spritesheets, which is what the downscaling quality "High" setting does in Construct.

    Thank you a lot for the explanation. It`s great to see that Contruct`s author is glad to explain how his engine works) I wasn`t even hoping that my post will persuade such big and detailed answear! Thanks a lot for your great job!

  • Try Construct 3

    Develop games in your browser. Powerful, performant & highly capable.

    Try Now Construct 3 users don't see these ads
  • In general I think that kind of micro-management goes against the whole purpose of Construct, to make things simple and easy to use.

    I would disagree with this, but ofc i don't know complexity behaind it, if i knew i could agree with you. But simple, easy to use and awsome 2d engine, could still need some new extra option.

    But that's not guestion i wanted to ask. If i have shader effect which uses texture bias and i change downscaling quality then editor effect seems to work correctly, but runtime arent. Editor displays effect which are effected by mipmap correctly, but runtime the outcome is different and seems runtime the mipmaps are there even if downscaling is set to low!

  • > In general I think that kind of micro-management goes against the whole purpose of Construct, to make things simple and easy to use.

    I would disagree with this, but ofc i don't know complexity behaind it

    Just to point out one of the problems: texture settings like mipmaps apply per-spritesheet, not per image, and so it complicates the spritesheeting engine (which is already extremely complicated).

Jump to:
Active Users
There are 1 visitors browsing this topic (0 users and 1 guests)