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

Rework Game Creation dialog #7179

Open
wants to merge 6 commits into
base: master
Choose a base branch
from

Conversation

ClementPasteau
Copy link
Collaborator

@ClementPasteau ClementPasteau commented Nov 20, 2024

Lots of changes including:

  • ExampleStoreDialog has been removed and all previous links now point to the NewProject dialog
  • The page accessible from "Browse all templates" on the build section, now shows all templates, games first
  • the new project dialog now shows a mix of "empty project" / "project bases" / "examples" / "game templates" / AI generation, with a search
  • all previous game template or example links now point to the NewProject dialog, with the item selected
  • new 3 starting points templates

@AlexandreSi
Copy link
Collaborator

AlexandreSi commented Nov 22, 2024

First impressions:

  • Why is the "Optimize for pixel art" checkbox not available on the 3 starter templates?
  • The disabled Create new game dialog action maybe gives the feeling that I can click on it if I check something. Should it not be displayed in the first screen?
  • The top down thumbnail is not straight forward in a first glance, I thought it was a different kind of platformer

}

.emptyProject:focus {
background-color: var(--theme-hover-background-color)
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Feels weird to have a hover color that is not linked to a status (warning, success) or a component (surface dark or light)

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could you add a transition on the background-color also?

i18n={i18n}
columnsCount={getItemsColumns(windowSize, isLandscape)}
onlyShowGames
rowToInsert={{
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice

<Trans>
Create an account to store your project online.
</Trans>
{!isOnHomePage && isSelectedGameTemplateOwned && (
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I feel like isSelectedGameTemplateOwned means something else, like isExampleOrOwnedGameTemplateOpened.
I was troubled by the check on selectedExampleShortHeader below and I was already surprised to see that isSelectedGameTemplateOwned is true if there is no game template selected

import { ExampleStoreContext } from '../AssetStore/ExampleStore/ExampleStoreContext';
import { type ExampleShortHeader } from '../Utils/GDevelopServices/Example';
import { useResponsiveWindowSize } from '../UI/Responsive/ResponsiveWindowMeasurer';
import { GridList, GridListTile } from '@material-ui/core';
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👮‍♀️

return (
<GridListTile style={style}>
<div
className={classNames({
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

you don't need the classNames util here, you can just have className={classes.container}

<Column>
{isMobile && <Spacer />}
<Line justifyContent="flex-start" noMargin>
{/* Add a hidden text to match the height of the other tiles on the row */}
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the grid should normally handle that, is it really needed?

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Maybe a height: 100% is needed somewhere

const generateProject = React.useCallback(
async () => {
if (disabled) return;
if (!profile) return;
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ifs can be merges

{!isCompatible && (
<AlertMessage kind="error">
<Trans>
Unfortunately, this example requires a newer version of GDevelop to
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Should this message be a bit more positive: "Download the latest version to check out this example!"

Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Excellent idea.

import AuthenticatedUserContext from '../../Profile/AuthenticatedUserContext';
import { PrivateGameTemplateStoreContext } from '../PrivateGameTemplates/PrivateGameTemplateStoreContext';
import { GridList } from '@material-ui/core';
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👮‍♀️

/**
* This method allocates examples and private game templates between the
* build section carousel and grid.
* `numberOfItemsExclusivelyInCarousel` controls the number of items that
* should appear in the carousel only. The rest appears in both the carousel
* and the grid.
*/
export const getExampleAndTemplateItemsForBuildSection = ({
export const getExampleAndTemplateTiles = ({
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We have created a monster 😅

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants