Tween In Back with opacity doesn't finish at end value
Problem description
This tween type (could probably be more types that suffer from this) doesn't end at the end value but a bit off depending on the duration.
Attach a .c3p
Steps to reproduce
Start project, press button to fade in and fade out.
Observed result
Expected result
Expected the tween to end at the end value of 0 and 100.
More details
Affected browsers/platforms: Latest Chrome on Windows 10
First affected release: r379
System details
View details
Platform information Product: Construct 3 r379 (stable) Browser: Chrome 123.0.6312.123 Browser engine: Chromium Context: browser Operating system: Windows 10 Device type: desktop Device pixel ratio: 1.5 Logical CPU cores: 32 Approx. device memory: 8 GB User agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36 Language setting: en-US
Local storage Storage quota (approx): 1006 gb Storage usage (approx): 2.1 gb (0.2%) Persistant storage: Yes
Browser support notes This list contains missing features that are not required, but could improve performance or user experience if supported.
Nothing is missing. Everything is OK! WebGL information Version string: WebGL 2.0 (OpenGL ES 3.0 Chromium) Numeric version: 2 Supports NPOT textures: yes Supports GPU profiling: no Supports highp precision: yes Vendor: Google Inc. (NVIDIA) Renderer: ANGLE (NVIDIA, NVIDIA GeForce RTX 3070 (0x00002488) Direct3D11 vs_5_0 ps_5_0, D3D11) Major performance caveat: no Maximum texture size: 16384 Point size range: 1 to 1024 Extensions:
EXT_clip_control EXT_color_buffer_float EXT_color_buffer_half_float EXT_conservative_depth EXT_depth_clamp EXT_disjoint_timer_query_webgl2 EXT_float_blend EXT_polygon_offset_clamp EXT_texture_compression_bptc EXT_texture_compression_rgtc EXT_texture_filter_anisotropic EXT_texture_norm16 KHR_parallel_shader_compile NV_shader_noperspective_interpolation OES_draw_buffers_indexed OES_texture_float_linear OVR_multiview2 WEBGL_blend_func_extended WEBGL_clip_cull_distance WEBGL_compressed_texture_s3tc WEBGL_compressed_texture_s3tc_srgb WEBGL_debug_renderer_info WEBGL_debug_shaders WEBGL_lose_context WEBGL_multi_draw WEBGL_polygon_mode WEBGL_provoking_vertex Audio information System sample rate: 48000 Hz Output channels: 2 Output interpretation: speakers Supported decode formats:
WebM Opus (audio/webm;codecs=opus) WebM Vorbis (audio/webm;codecs=vorbis) MPEG-4 Opus (audio/mp4;codecs=opus) MPEG-4 AAC (audio/mp4;codecs=mp4a.40.2) MP3 (audio/mpeg) FLAC (audio/flac) PCM WAV (audio/wav;codecs=1) Supported encode formats:
WebM Opus (audio/webm;codecs=opus) Video information Supported decode formats:
WebM AV1 (video/webm;codecs=av01.0.00M.08) WebM VP9 (video/webm;codecs=vp9) WebM VP8 (video/webm;codecs=vp8) MPEG-4 AV1 (video/mp4;codecs=av01.0.00M.08) MPEG-4 H.265 (video/mp4;codecs=hev1.1.2.L93.B0) MPEG-4 H.264 (video/mp4;codecs=avc1.420034) Supported encode formats:
WebM AV1 (video/webm;codecs=av01.0.00M.08) WebM VP9 (video/webm;codecs=vp9) WebM VP8 (video/webm;codecs=vp8) WebM H.264 (video/webm;codecs=avc1.420034)
Duplicate https://github.com/Scirra/Construct-bugs/issues/7069 https://github.com/Scirra/Construct-bugs/issues/7314
I actually just recently noticed that with scale tweens too! I'm posting this here because I believe this to be sort of the same issue. But it only happens if the scale tweens (close to) 0. If I scale to 0.1 instead there is no issue.
Here's the project adapted to show the scale problem. Notice that the sprite actually even flips width into the negative value which would be negative scale!
My guess: The tween plugin simply doesn't properly handle going into negative values and/or clamped values. These values will happen quite some with tweens like back, elastic or custom ones that intentionally overshoot the target values.
Here's the repro tweenscalebug.c3p.zip
The original issue will be fixed in the next beta.