Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use the canvas_items stretch mode by default #58037

Closed

Conversation

Calinou
Copy link
Member

@Calinou Calinou commented Feb 13, 2022

Marked as draft for the following reason:

Since 4.0 is in feature freeze, we are now avoiding compatibility-breaking changes. As a result, if this proposal is accepted, this change should be applied to new projects only by modifying the generated project.godot file when creating a project using the project manager (similar to godotengine/godot-proposals#4834).


Follow-up to #55032.

This is the stretch mode that works best for non-pixel art 2D and 3D games in general (and even many pixel art games, provided texture filtering is disabled).

The canvas_items stretch mode also ensures that 2D elements are always scaled to a readable size, even at high resolutions. This is especially important when targeting mobile platforms. The difference is immediately noticeable when running a new project in the experimental editor Android port 🙂

Since most people are using Godot to develop games (rather than applications), it makes sense to use a stretch mode that works best for games by default.

This closes godotengine/godot-proposals#3939.

Preview

The previews below were made with a project base resolution of 1152×648, as proposed in #55032.

2D scene

Default window size

At the default size, there is no visual difference between stretch modes.

2022-02-13_02 02 42

Fullscreen (2560×1440), disabled stretch mode (current default)

2D elements appear very small and off-center (unless a Camera2D is added and made current).

2022-02-13_02 02 49

Fullscreen (2560×1440), canvas_items stretch mode (new)

2D elements appear at a larger, more readable size.

2022-02-13_02 03 01

3D scene

Default window size

At the default size, there is no visual difference between stretch modes.

2022-02-13_02 01 23

Fullscreen (2560×1440), disabled stretch mode (current default)

2D elements appear very small.

2022-02-13_02 01 42

Fullscreen (2560×1440), canvas_items stretch mode (new)

2D elements appear at a larger, more readable size.

2022-02-13_02 01 27

@reduz
Copy link
Member

reduz commented Feb 15, 2022

I am generally against having these modes set as default because, in most cases, there is not a best way or best setting and its best that users learn what they are enabling by enabling it.

This is the stretch mode that works best for non-pixel art 2D and 3D
games in general (and even many pixel art games, provided texture
filtering is disabled).

The `canvas_items` stretch mode also ensures that 2D elements are
always scaled to a readable size, even at high resolutions. This is
especially important when targeting mobile platforms. The difference
is immediately noticeable when running a new project in the
experimental editor Android port :)

Since most people are using Godot to develop games (rather than
applications), it makes sense to use a stretch mode that works
best for games by default.
@Calinou Calinou force-pushed the stretch-mode-default-canvas-items branch from 6cb61e4 to 3d2b3cf Compare December 29, 2022 15:55
@Calinou Calinou modified the milestones: 4.0, 4.x Dec 29, 2022
@Calinou Calinou marked this pull request as draft December 29, 2022 15:58
@akien-mga
Copy link
Member

Closing as this was more or less rejected a year ago. We can revisit the proposal / original motivation after 4.0 if this is still wanted.

@akien-mga akien-mga closed this Jan 24, 2023
@aaronfranke aaronfranke removed this from the 4.x milestone Feb 1, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Use the canvas_items (formerly 2d) stretch mode by default in new projects (instead of disabled)
5 participants