diff --git a/newIDE/app/src/fixtures/GDevelopServicesTestData/index.js b/newIDE/app/src/fixtures/GDevelopServicesTestData/index.js
index a749442f611f..8166e7f6f670 100644
--- a/newIDE/app/src/fixtures/GDevelopServicesTestData/index.js
+++ b/newIDE/app/src/fixtures/GDevelopServicesTestData/index.js
@@ -3,7 +3,6 @@ import {
type Usages,
type Subscription,
type Limits,
- type SubscriptionPlanWithPricingSystems,
} from '../../Utils/GDevelopServices/Usage';
import { User as FirebaseUser } from 'firebase/auth';
import { type Profile } from '../../Utils/GDevelopServices/Authentication';
@@ -313,2036 +312,6 @@ export const noSubscription: Subscription = {
pricingSystemId: null,
};
-export const subscriptionPlansWithPricingSystems: SubscriptionPlanWithPricingSystems[] = [
- {
- id: 'free',
- isLegacy: false,
- nameByLocale: {
- en: 'Free',
- },
- targetAudiences: ['CASUAL'],
- pillarNamesPerLocale: {
- 'ASSET-STORE': {
- en: 'Asset Store',
- },
- CREATION: {
- en: 'Creation',
- },
- MARKETING: {
- en: 'Marketing & Promotion',
- },
- PRO: {
- en: 'Professional features',
- },
- PUBLISHING: {
- en: 'Publishing',
- },
- SOCIAL: {
- en: 'Social & Online',
- },
- SUPPORT: {
- en: 'Community & Support',
- },
- MONETIZATION: {
- en: 'Monetization',
- },
- },
- featureNamesByLocale: {
- ENGINE_AND_EDITOR: {
- en: 'Open-source (MIT) editor and game engine',
- },
- DEBUGGER_AND_LIVE_PREVIEW: {
- en: 'Debugger and live preview',
- },
- CLOUD_PROJECTS: {
- en: 'Cloud projects',
- },
- AI_PROTOTYPING: {
- en: 'Game prototypes with AI',
- },
- MOBILE_APP: {
- en: 'Mobile app access',
- },
- MANUAL_EXPORT: {
- en: 'Export (any platform) manually with devtools',
- },
- PUBLISH_GD_GAMES: {
- en: 'Publish your game on gd.games',
- },
- PUBLISH_DESKTOP: {
- en: 'Publish for desktop (Windows, macOS, Linux)',
- },
- PUBLISH_ANDROID: {
- en: 'Publish your game on Google Play (Android)',
- },
- PUBLISH_IOS: {
- en: 'Publish your game on iOS (App Store)',
- },
- REMOVE_MANDATORY_LOGO: {
- en: 'Remove GDevelop logo/watermark',
- },
- VERSION_HISTORY: {
- en: 'Version history',
- },
- COLLABORATORS: {
- en: 'Collaborator (project sharing)',
- },
- INVOICES: {
- en: 'Invoices for your company',
- },
- LEADERBOARDS: {
- en: 'Leaderboards for games',
- },
- LEADERBOARDS_STYLING: {
- en: 'Leaderboards styling',
- },
- ANALYTICS: {
- en: 'Analytics on game usage',
- },
- FEEDBACKS: {
- en: 'Player feedbacks',
- },
- MULTIPLAYER: {
- en: 'Multiplayer',
- },
- EMBED_GD_GAMES: {
- en: 'Embed game on any website in one click',
- },
- DEDICATED_SUPPORT_CHANNEL: {
- en: 'Dedicated professional support channel',
- },
- DEDICATED_COMMUNITY_CHANNEL: {
- en: 'Dedicated community channel',
- },
- FREE_CREDITS: {
- en: 'Free credits every month',
- },
- FEATURING_TIER1: {
- en: 'Featuring on gd.games',
- },
- FEATURING_TIER2: {
- en: 'Featuring on social/newsletter',
- },
- FEATURING_TIER3: {
- en: 'Featuring inside GDevelop',
- },
- GET_FREE_ASSET_PACKS: {
- en: 'Use thousands of free asset packs',
- },
- CLAIM_PREMIUM_ASSET_PACKS: {
- en: 'Claim a premium asset pack or template',
- },
- BUY_PREMIUM_ASSET_PACKS: {
- en: 'Buy premium asset packs',
- },
- ADMOB_ADS: {
- en: 'Show ads in games (Admob for Android)',
- },
- COMMUNITY_IAP: {
- en: 'In-App Purchases (community extension)',
- },
- SELL_GAMES: {
- en: 'Sell your games (Steam, App Stores...)',
- },
- SELL_ON_ASSET_STORE: {
- en: 'Sell your assets or templates on GDevelop Asset Store',
- },
- },
- descriptionByLocale: {
- en: 'Create your first game 100% free.',
- },
- bulletPointsByLocale: [
- {
- en: 'Fully featured, open-source game engine',
- },
- {
- en: 'Publish to Android/Desktop (once per day)',
- },
- {
- en: 'Try GDevelop.io online services for free',
- },
- {
- en: 'Thousands of free assets on the Asset Store',
- },
- ],
- fullFeatures: [
- {
- featureName: 'ENGINE_AND_EDITOR',
- pillarName: 'CREATION',
- enabled: 'yes',
- },
- {
- featureName: 'DEBUGGER_AND_LIVE_PREVIEW',
- pillarName: 'CREATION',
- descriptionByLocale: {
- en: 'Nag screen',
- },
- trialLike: true,
- },
- {
- featureName: 'CLOUD_PROJECTS',
- pillarName: 'CREATION',
- descriptionByLocale: {
- en: '3',
- },
- tooltipByLocale: {
- en:
- '10 for early bird accounts, created and verified before Feb 2024.',
- },
- },
- {
- featureName: 'MOBILE_APP',
- pillarName: 'CREATION',
- enabled: 'no',
- },
- {
- featureName: 'AI_PROTOTYPING',
- pillarName: 'CREATION',
- descriptionByLocale: {
- en: '1 per day',
- },
- trialLike: true,
- tooltipByLocale: {
- en:
- '2 per day for early bird accounts, created and verified before Feb 2024.',
- },
- },
- {
- featureName: 'PUBLISH_GD_GAMES',
- pillarName: 'PUBLISHING',
- unlimited: true,
- },
- {
- featureName: 'PUBLISH_DESKTOP',
- pillarName: 'PUBLISHING',
- descriptionByLocale: {
- en: '1 per day',
- },
- tooltipByLocale: {
- en:
- '2 per day for early bird accounts, created and verified before Feb 2024.',
- },
- trialLike: true,
- },
- {
- featureName: 'PUBLISH_ANDROID',
- pillarName: 'PUBLISHING',
- descriptionByLocale: {
- en: '1 per day',
- },
- tooltipByLocale: {
- en:
- '2 per day for early bird accounts, created and verified before Feb 2024.',
- },
- trialLike: true,
- },
- {
- featureName: 'PUBLISH_IOS',
- pillarName: 'PUBLISHING',
- enabled: 'no',
- },
- {
- featureName: 'MANUAL_EXPORT',
- pillarName: 'PUBLISHING',
- enabled: 'yes',
- },
- {
- featureName: 'REMOVE_MANDATORY_LOGO',
- pillarName: 'PUBLISHING',
- enabled: 'no',
- },
- {
- featureName: 'VERSION_HISTORY',
- pillarName: 'PRO',
- enabled: 'no',
- },
- {
- featureName: 'COLLABORATORS',
- pillarName: 'PRO',
- enabled: 'no',
- },
- {
- featureName: 'INVOICES',
- pillarName: 'PRO',
- enabled: 'no',
- },
- {
- featureName: 'FEEDBACKS',
- pillarName: 'SOCIAL',
- descriptionByLocale: {
- en: '3 per game',
- },
- },
- {
- featureName: 'LEADERBOARDS',
- pillarName: 'SOCIAL',
- descriptionByLocale: {
- en: '1 per game',
- },
- },
- {
- featureName: 'LEADERBOARDS_STYLING',
- pillarName: 'SOCIAL',
- enabled: 'no',
- },
- {
- featureName: 'ANALYTICS',
- pillarName: 'SOCIAL',
- enabled: 'no',
- },
- {
- featureName: 'MULTIPLAYER',
- pillarName: 'SOCIAL',
- enabled: 'no',
- upcoming: true,
- },
- {
- featureName: 'EMBED_GD_GAMES',
- upcoming: true,
- pillarName: 'SOCIAL',
- enabled: 'no',
- },
- {
- featureName: 'DEDICATED_COMMUNITY_CHANNEL',
- pillarName: 'SUPPORT',
- enabled: 'no',
- },
- {
- featureName: 'DEDICATED_SUPPORT_CHANNEL',
- pillarName: 'SUPPORT',
- enabled: 'no',
- },
- {
- featureName: 'FREE_CREDITS',
- pillarName: 'MARKETING',
- enabled: 'no',
- },
- {
- featureName: 'FEATURING_TIER1',
- pillarName: 'MARKETING',
- descriptionByLocale: {
- en: 'Buy with credits',
- },
- },
- {
- featureName: 'FEATURING_TIER2',
- pillarName: 'MARKETING',
- descriptionByLocale: {
- en: 'Buy with credits',
- },
- },
- {
- featureName: 'FEATURING_TIER3',
- pillarName: 'MARKETING',
- descriptionByLocale: {
- en: 'Buy with credits',
- },
- },
- {
- featureName: 'GET_FREE_ASSET_PACKS',
- pillarName: 'ASSET-STORE',
- enabled: 'yes',
- },
- {
- featureName: 'BUY_PREMIUM_ASSET_PACKS',
- pillarName: 'ASSET-STORE',
- enabled: 'yes',
- },
- {
- featureName: 'CLAIM_PREMIUM_ASSET_PACKS',
- pillarName: 'ASSET-STORE',
- enabled: 'no',
- },
- {
- featureName: 'ADMOB_ADS',
- pillarName: 'MONETIZATION',
- enabled: 'yes',
- },
- {
- featureName: 'COMMUNITY_IAP',
- pillarName: 'MONETIZATION',
- enabled: 'yes',
- },
- {
- featureName: 'SELL_GAMES',
- pillarName: 'MONETIZATION',
- enabled: 'yes',
- },
- {
- featureName: 'SELL_ON_ASSET_STORE',
- pillarName: 'MONETIZATION',
- descriptionByLocale: {
- en: 'Yes - get in touch',
- },
- },
- ],
- pricingSystems: [],
- },
- {
- id: 'gdevelop_silver',
- isLegacy: false,
- nameByLocale: {
- en: 'Silver',
- },
- targetAudiences: ['CASUAL'],
- pillarNamesPerLocale: {
- 'ASSET-STORE': {
- en: 'Asset Store',
- },
- CREATION: {
- en: 'Creation',
- },
- MARKETING: {
- en: 'Marketing & Promotion',
- },
- PRO: {
- en: 'Professional features',
- },
- PUBLISHING: {
- en: 'Publishing',
- },
- SOCIAL: {
- en: 'Social & Online',
- },
- SUPPORT: {
- en: 'Community & Support',
- },
- MONETIZATION: {
- en: 'Monetization',
- },
- },
- featureNamesByLocale: {
- ENGINE_AND_EDITOR: {
- en: 'Open-source (MIT) editor and game engine',
- },
- DEBUGGER_AND_LIVE_PREVIEW: {
- en: 'Debugger and live preview',
- },
- CLOUD_PROJECTS: {
- en: 'Cloud projects',
- },
- AI_PROTOTYPING: {
- en: 'Game prototypes with AI',
- },
- MOBILE_APP: {
- en: 'Mobile app access',
- },
- MANUAL_EXPORT: {
- en: 'Export (any platform) manually with devtools',
- },
- PUBLISH_GD_GAMES: {
- en: 'Publish your game on gd.games',
- },
- PUBLISH_DESKTOP: {
- en: 'Publish for desktop (Windows, macOS, Linux)',
- },
- PUBLISH_ANDROID: {
- en: 'Publish your game on Google Play (Android)',
- },
- PUBLISH_IOS: {
- en: 'Publish your game on iOS (App Store)',
- },
- REMOVE_MANDATORY_LOGO: {
- en: 'Remove GDevelop logo/watermark',
- },
- VERSION_HISTORY: {
- en: 'Version history',
- },
- COLLABORATORS: {
- en: 'Collaborator (project sharing)',
- },
- INVOICES: {
- en: 'Invoices for your company',
- },
- LEADERBOARDS: {
- en: 'Leaderboards for games',
- },
- LEADERBOARDS_STYLING: {
- en: 'Leaderboards styling',
- },
- ANALYTICS: {
- en: 'Analytics on game usage',
- },
- FEEDBACKS: {
- en: 'Player feedbacks',
- },
- MULTIPLAYER: {
- en: 'Multiplayer',
- },
- EMBED_GD_GAMES: {
- en: 'Embed game on any website in one click',
- },
- DEDICATED_SUPPORT_CHANNEL: {
- en: 'Dedicated professional support channel',
- },
- DEDICATED_COMMUNITY_CHANNEL: {
- en: 'Dedicated community channel',
- },
- FREE_CREDITS: {
- en: 'Free credits every month',
- },
- FEATURING_TIER1: {
- en: 'Featuring on gd.games',
- },
- FEATURING_TIER2: {
- en: 'Featuring on social/newsletter',
- },
- FEATURING_TIER3: {
- en: 'Featuring inside GDevelop',
- },
- GET_FREE_ASSET_PACKS: {
- en: 'Use thousands of free asset packs',
- },
- CLAIM_PREMIUM_ASSET_PACKS: {
- en: 'Claim a premium asset pack or template',
- },
- BUY_PREMIUM_ASSET_PACKS: {
- en: 'Buy premium asset packs',
- },
- ADMOB_ADS: {
- en: 'Show ads in games (Admob for Android)',
- },
- COMMUNITY_IAP: {
- en: 'In-App Purchases (community extension)',
- },
- SELL_GAMES: {
- en: 'Sell your games (Steam, App Stores...)',
- },
- SELL_ON_ASSET_STORE: {
- en: 'Sell your assets or templates on GDevelop Asset Store',
- },
- },
- descriptionByLocale: {
- en: 'Publish your first games on Android.',
- },
- specificRequirementByLocale: {
- en:
- "If you're using your GDevelop account for a company having more than $50,000 USD revenue per year, you must use the Pro membership.",
- },
- bulletPointsByLocale: [
- {
- en: 'Publish on Google Play, desktop and on the web',
- },
- {
- en: 'Access GDevelop mobile app (iOS/Android)',
- },
- {
- en: 'Analytics to follow your game virality',
- },
- {
- en: '100 credits per month',
- },
- ],
- fullFeatures: [
- {
- featureName: 'ENGINE_AND_EDITOR',
- pillarName: 'CREATION',
- enabled: 'yes',
- },
- {
- featureName: 'DEBUGGER_AND_LIVE_PREVIEW',
- pillarName: 'CREATION',
- enabled: 'yes',
- },
- {
- featureName: 'CLOUD_PROJECTS',
- pillarName: 'CREATION',
- descriptionByLocale: {
- en: '50',
- },
- },
- {
- featureName: 'MOBILE_APP',
- pillarName: 'CREATION',
- enabled: 'yes',
- },
- {
- featureName: 'AI_PROTOTYPING',
- pillarName: 'CREATION',
- descriptionByLocale: {
- en: '10 per day',
- },
- },
- {
- featureName: 'PUBLISH_GD_GAMES',
- pillarName: 'PUBLISHING',
- unlimited: true,
- },
- {
- featureName: 'PUBLISH_DESKTOP',
- pillarName: 'PUBLISHING',
- descriptionByLocale: {
- en: '10 per day',
- },
- },
- {
- featureName: 'PUBLISH_ANDROID',
- pillarName: 'PUBLISHING',
- descriptionByLocale: {
- en: '10 per day',
- },
- },
- {
- featureName: 'PUBLISH_IOS',
- pillarName: 'PUBLISHING',
- enabled: 'no',
- },
- {
- featureName: 'MANUAL_EXPORT',
- pillarName: 'PUBLISHING',
- enabled: 'yes',
- },
- {
- featureName: 'REMOVE_MANDATORY_LOGO',
- pillarName: 'PUBLISHING',
- enabled: 'yes',
- },
- {
- featureName: 'VERSION_HISTORY',
- pillarName: 'PRO',
- enabled: 'no',
- },
- {
- featureName: 'COLLABORATORS',
- pillarName: 'PRO',
- enabled: 'no',
- },
- {
- featureName: 'INVOICES',
- pillarName: 'PRO',
- enabled: 'no',
- },
- {
- featureName: 'FEEDBACKS',
- pillarName: 'SOCIAL',
- descriptionByLocale: {
- en: '10 per game',
- },
- },
- {
- featureName: 'LEADERBOARDS',
- pillarName: 'SOCIAL',
- descriptionByLocale: {
- en: '1 per game',
- },
- },
- {
- featureName: 'LEADERBOARDS_STYLING',
- pillarName: 'SOCIAL',
- enabled: 'no',
- },
- {
- featureName: 'ANALYTICS',
- pillarName: 'SOCIAL',
- enabled: 'yes',
- },
- {
- featureName: 'MULTIPLAYER',
- pillarName: 'SOCIAL',
- enabled: 'no',
- upcoming: true,
- },
- {
- featureName: 'EMBED_GD_GAMES',
- upcoming: true,
- pillarName: 'SOCIAL',
- enabled: 'no',
- },
- {
- featureName: 'DEDICATED_COMMUNITY_CHANNEL',
- pillarName: 'SUPPORT',
- enabled: 'no',
- },
- {
- featureName: 'DEDICATED_SUPPORT_CHANNEL',
- pillarName: 'SUPPORT',
- enabled: 'no',
- },
- {
- featureName: 'FREE_CREDITS',
- pillarName: 'MARKETING',
- descriptionByLocale: {
- en: '100 per month',
- },
- },
- {
- featureName: 'FEATURING_TIER1',
- pillarName: 'MARKETING',
- descriptionByLocale: {
- en: 'Buy with credits',
- },
- },
- {
- featureName: 'FEATURING_TIER2',
- pillarName: 'MARKETING',
- descriptionByLocale: {
- en: 'Buy with credits',
- },
- },
- {
- featureName: 'FEATURING_TIER3',
- pillarName: 'MARKETING',
- descriptionByLocale: {
- en: 'Buy with credits',
- },
- },
- {
- featureName: 'GET_FREE_ASSET_PACKS',
- pillarName: 'ASSET-STORE',
- enabled: 'yes',
- },
- {
- featureName: 'BUY_PREMIUM_ASSET_PACKS',
- pillarName: 'ASSET-STORE',
- enabled: 'yes',
- },
- {
- featureName: 'CLAIM_PREMIUM_ASSET_PACKS',
- pillarName: 'ASSET-STORE',
- enabled: 'no',
- },
- {
- featureName: 'ADMOB_ADS',
- pillarName: 'MONETIZATION',
- enabled: 'yes',
- },
- {
- featureName: 'COMMUNITY_IAP',
- pillarName: 'MONETIZATION',
- enabled: 'yes',
- },
- {
- featureName: 'SELL_GAMES',
- pillarName: 'MONETIZATION',
- enabled: 'yes',
- },
- {
- featureName: 'SELL_ON_ASSET_STORE',
- pillarName: 'MONETIZATION',
- descriptionByLocale: {
- en: 'Yes - get in touch',
- },
- },
- ],
- pricingSystems: [
- {
- id: 'silver_1month_499EUR',
- status: 'active',
- planId: 'gdevelop_silver',
- period: 'month',
- periodCount: 1,
- currency: 'EUR',
- amountInCents: 499,
- region: 'eurozone',
- },
- {
- id: 'silver_1year_3599EUR',
- status: 'active',
- planId: 'gdevelop_silver',
- period: 'year',
- periodCount: 1,
- currency: 'EUR',
- amountInCents: 3599,
- region: 'eurozone',
- },
- ],
- },
- {
- id: 'gdevelop_gold',
- isLegacy: false,
- nameByLocale: {
- en: 'Gold',
- },
- targetAudiences: ['CASUAL'],
- pillarNamesPerLocale: {
- 'ASSET-STORE': {
- en: 'Asset Store',
- },
- CREATION: {
- en: 'Creation',
- },
- MARKETING: {
- en: 'Marketing & Promotion',
- },
- PRO: {
- en: 'Professional features',
- },
- PUBLISHING: {
- en: 'Publishing',
- },
- SOCIAL: {
- en: 'Social & Online',
- },
- SUPPORT: {
- en: 'Community & Support',
- },
- MONETIZATION: {
- en: 'Monetization',
- },
- },
- featureNamesByLocale: {
- ENGINE_AND_EDITOR: {
- en: 'Open-source (MIT) editor and game engine',
- },
- DEBUGGER_AND_LIVE_PREVIEW: {
- en: 'Debugger and live preview',
- },
- CLOUD_PROJECTS: {
- en: 'Cloud projects',
- },
- AI_PROTOTYPING: {
- en: 'Game prototypes with AI',
- },
- MOBILE_APP: {
- en: 'Mobile app access',
- },
- MANUAL_EXPORT: {
- en: 'Export (any platform) manually with devtools',
- },
- PUBLISH_GD_GAMES: {
- en: 'Publish your game on gd.games',
- },
- PUBLISH_DESKTOP: {
- en: 'Publish for desktop (Windows, macOS, Linux)',
- },
- PUBLISH_ANDROID: {
- en: 'Publish your game on Google Play (Android)',
- },
- PUBLISH_IOS: {
- en: 'Publish your game on iOS (App Store)',
- },
- REMOVE_MANDATORY_LOGO: {
- en: 'Remove GDevelop logo/watermark',
- },
- VERSION_HISTORY: {
- en: 'Version history',
- },
- COLLABORATORS: {
- en: 'Collaborator (project sharing)',
- },
- INVOICES: {
- en: 'Invoices for your company',
- },
- LEADERBOARDS: {
- en: 'Leaderboards for games',
- },
- LEADERBOARDS_STYLING: {
- en: 'Leaderboards styling',
- },
- ANALYTICS: {
- en: 'Analytics on game usage',
- },
- FEEDBACKS: {
- en: 'Player feedbacks',
- },
- MULTIPLAYER: {
- en: 'Multiplayer',
- },
- EMBED_GD_GAMES: {
- en: 'Embed game on any website in one click',
- },
- DEDICATED_SUPPORT_CHANNEL: {
- en: 'Dedicated professional support channel',
- },
- DEDICATED_COMMUNITY_CHANNEL: {
- en: 'Dedicated community channel',
- },
- FREE_CREDITS: {
- en: 'Free credits every month',
- },
- FEATURING_TIER1: {
- en: 'Featuring on gd.games',
- },
- FEATURING_TIER2: {
- en: 'Featuring on social/newsletter',
- },
- FEATURING_TIER3: {
- en: 'Featuring inside GDevelop',
- },
- GET_FREE_ASSET_PACKS: {
- en: 'Use thousands of free asset packs',
- },
- CLAIM_PREMIUM_ASSET_PACKS: {
- en: 'Claim a premium asset pack or template',
- },
- BUY_PREMIUM_ASSET_PACKS: {
- en: 'Buy premium asset packs',
- },
- ADMOB_ADS: {
- en: 'Show ads in games (Admob for Android)',
- },
- COMMUNITY_IAP: {
- en: 'In-App Purchases (community extension)',
- },
- SELL_GAMES: {
- en: 'Sell your games (Steam, App Stores...)',
- },
- SELL_ON_ASSET_STORE: {
- en: 'Sell your assets or templates on GDevelop Asset Store',
- },
- },
- descriptionByLocale: {
- en: 'Full creation and marketing features. Publish anywhere.',
- },
- specificRequirementByLocale: {
- en:
- "If you're using your GDevelop account for a company having more than $50,000 USD revenue per year, you must use the Pro membership.",
- },
- bulletPointsByLocale: [
- {
- en: 'Publish your game on iOS',
- },
- {
- en: 'Dedicated channel on Discord',
- },
- {
- en: 'Unlimited leaderboards and player feedbacks',
- },
- {
- en: '300 credits per month, to promote your game or use in asset store',
- },
- {
- en: '1 free asset pack to claim per month',
- },
- ],
- fullFeatures: [
- {
- featureName: 'ENGINE_AND_EDITOR',
- pillarName: 'CREATION',
- enabled: 'yes',
- },
- {
- featureName: 'DEBUGGER_AND_LIVE_PREVIEW',
- pillarName: 'CREATION',
- enabled: 'yes',
- },
- {
- featureName: 'CLOUD_PROJECTS',
- pillarName: 'CREATION',
- descriptionByLocale: {
- en: '100',
- },
- },
- {
- featureName: 'MOBILE_APP',
- pillarName: 'CREATION',
- enabled: 'yes',
- },
- {
- featureName: 'AI_PROTOTYPING',
- pillarName: 'CREATION',
- descriptionByLocale: {
- en: '100 per day',
- },
- },
- {
- featureName: 'PUBLISH_GD_GAMES',
- pillarName: 'PUBLISHING',
- unlimited: true,
- },
- {
- featureName: 'PUBLISH_DESKTOP',
- pillarName: 'PUBLISHING',
- descriptionByLocale: {
- en: '100 per day',
- },
- },
- {
- featureName: 'PUBLISH_ANDROID',
- pillarName: 'PUBLISHING',
- descriptionByLocale: {
- en: '100 per day',
- },
- },
- {
- featureName: 'PUBLISH_IOS',
- pillarName: 'PUBLISHING',
- descriptionByLocale: {
- en: '5 per month',
- },
- },
- {
- featureName: 'MANUAL_EXPORT',
- pillarName: 'PUBLISHING',
- enabled: 'yes',
- },
- {
- featureName: 'REMOVE_MANDATORY_LOGO',
- pillarName: 'PUBLISHING',
- enabled: 'yes',
- },
- {
- featureName: 'VERSION_HISTORY',
- pillarName: 'PRO',
- enabled: 'no',
- },
- {
- featureName: 'COLLABORATORS',
- pillarName: 'PRO',
- enabled: 'no',
- },
- {
- featureName: 'INVOICES',
- pillarName: 'PRO',
- enabled: 'no',
- },
- {
- featureName: 'FEEDBACKS',
- pillarName: 'SOCIAL',
- unlimited: true,
- },
- {
- featureName: 'LEADERBOARDS',
- pillarName: 'SOCIAL',
- unlimited: true,
- },
- {
- featureName: 'LEADERBOARDS_STYLING',
- pillarName: 'SOCIAL',
- descriptionByLocale: {
- en: 'Custom colors',
- },
- },
- {
- featureName: 'ANALYTICS',
- pillarName: 'SOCIAL',
- enabled: 'yes',
- },
- {
- featureName: 'MULTIPLAYER',
- pillarName: 'SOCIAL',
- enabled: 'yes',
- upcoming: true,
- },
- {
- featureName: 'EMBED_GD_GAMES',
- upcoming: true,
- pillarName: 'SOCIAL',
- enabled: 'no',
- },
- {
- featureName: 'DEDICATED_COMMUNITY_CHANNEL',
- pillarName: 'SUPPORT',
- enabled: 'yes',
- },
- {
- featureName: 'DEDICATED_SUPPORT_CHANNEL',
- pillarName: 'SUPPORT',
- enabled: 'no',
- },
- {
- featureName: 'FREE_CREDITS',
- pillarName: 'MARKETING',
- descriptionByLocale: {
- en: '300 per month',
- },
- },
- {
- featureName: 'FEATURING_TIER1',
- pillarName: 'MARKETING',
- descriptionByLocale: {
- en: 'Buy with credits',
- },
- },
- {
- featureName: 'FEATURING_TIER2',
- pillarName: 'MARKETING',
- descriptionByLocale: {
- en: 'Buy with credits',
- },
- },
- {
- featureName: 'FEATURING_TIER3',
- pillarName: 'MARKETING',
- descriptionByLocale: {
- en: 'Buy with credits',
- },
- },
- {
- featureName: 'GET_FREE_ASSET_PACKS',
- pillarName: 'ASSET-STORE',
- enabled: 'yes',
- },
- {
- featureName: 'BUY_PREMIUM_ASSET_PACKS',
- pillarName: 'ASSET-STORE',
- enabled: 'yes',
- },
- {
- featureName: 'CLAIM_PREMIUM_ASSET_PACKS',
- pillarName: 'ASSET-STORE',
- descriptionByLocale: {
- en: '1 per month',
- },
- },
- {
- featureName: 'ADMOB_ADS',
- pillarName: 'MONETIZATION',
- enabled: 'yes',
- },
- {
- featureName: 'COMMUNITY_IAP',
- pillarName: 'MONETIZATION',
- enabled: 'yes',
- },
- {
- featureName: 'SELL_GAMES',
- pillarName: 'MONETIZATION',
- enabled: 'yes',
- },
- {
- featureName: 'SELL_ON_ASSET_STORE',
- pillarName: 'MONETIZATION',
- descriptionByLocale: {
- en: 'Yes - get in touch',
- },
- },
- ],
- pricingSystems: [
- {
- id: 'gold_1month_999EUR',
- planId: 'gdevelop_gold',
- status: 'active',
- period: 'month',
- periodCount: 1,
- currency: 'EUR',
- amountInCents: 999,
- region: 'eurozone',
- },
- {
- id: 'gold_1year_7199EUR',
- planId: 'gdevelop_gold',
- status: 'active',
- period: 'year',
- periodCount: 1,
- currency: 'EUR',
- amountInCents: 7199,
- region: 'eurozone',
- },
- ],
- },
- {
- id: 'gdevelop_startup',
- isLegacy: false,
- nameByLocale: {
- en: 'Pro',
- },
- targetAudiences: ['PRO'],
- pillarNamesPerLocale: {
- 'ASSET-STORE': {
- en: 'Asset Store',
- },
- CREATION: {
- en: 'Creation',
- },
- MARKETING: {
- en: 'Marketing & Promotion',
- },
- PRO: {
- en: 'Professional features',
- },
- PUBLISHING: {
- en: 'Publishing',
- },
- SOCIAL: {
- en: 'Social & Online',
- },
- SUPPORT: {
- en: 'Community & Support',
- },
- MONETIZATION: {
- en: 'Monetization',
- },
- },
- featureNamesByLocale: {
- ENGINE_AND_EDITOR: {
- en: 'Open-source (MIT) editor and game engine',
- },
- DEBUGGER_AND_LIVE_PREVIEW: {
- en: 'Debugger and live preview',
- },
- CLOUD_PROJECTS: {
- en: 'Cloud projects',
- },
- AI_PROTOTYPING: {
- en: 'Game prototypes with AI',
- },
- MOBILE_APP: {
- en: 'Mobile app access',
- },
- MANUAL_EXPORT: {
- en: 'Export (any platform) manually with devtools',
- },
- PUBLISH_GD_GAMES: {
- en: 'Publish your game on gd.games',
- },
- PUBLISH_DESKTOP: {
- en: 'Publish for desktop (Windows, macOS, Linux)',
- },
- PUBLISH_ANDROID: {
- en: 'Publish your game on Google Play (Android)',
- },
- PUBLISH_IOS: {
- en: 'Publish your game on iOS (App Store)',
- },
- REMOVE_MANDATORY_LOGO: {
- en: 'Remove GDevelop logo/watermark',
- },
- VERSION_HISTORY: {
- en: 'Version history',
- },
- COLLABORATORS: {
- en: 'Collaborator (project sharing)',
- },
- INVOICES: {
- en: 'Invoices for your company',
- },
- LEADERBOARDS: {
- en: 'Leaderboards for games',
- },
- LEADERBOARDS_STYLING: {
- en: 'Leaderboards styling',
- },
- ANALYTICS: {
- en: 'Analytics on game usage',
- },
- FEEDBACKS: {
- en: 'Player feedbacks',
- },
- MULTIPLAYER: {
- en: 'Multiplayer',
- },
- EMBED_GD_GAMES: {
- en: 'Embed game on any website in one click',
- },
- DEDICATED_SUPPORT_CHANNEL: {
- en: 'Dedicated professional support channel',
- },
- DEDICATED_COMMUNITY_CHANNEL: {
- en: 'Dedicated community channel',
- },
- FREE_CREDITS: {
- en: 'Free credits every month',
- },
- FEATURING_TIER1: {
- en: 'Featuring on gd.games',
- },
- FEATURING_TIER2: {
- en: 'Featuring on social/newsletter',
- },
- FEATURING_TIER3: {
- en: 'Featuring inside GDevelop',
- },
- GET_FREE_ASSET_PACKS: {
- en: 'Use thousands of free asset packs',
- },
- CLAIM_PREMIUM_ASSET_PACKS: {
- en: 'Claim a premium asset pack or template',
- },
- BUY_PREMIUM_ASSET_PACKS: {
- en: 'Buy premium asset packs',
- },
- ADMOB_ADS: {
- en: 'Show ads in games (Admob for Android)',
- },
- COMMUNITY_IAP: {
- en: 'In-App Purchases (community extension)',
- },
- SELL_GAMES: {
- en: 'Sell your games (Steam, App Stores...)',
- },
- SELL_ON_ASSET_STORE: {
- en: 'Sell your assets or templates on GDevelop Asset Store',
- },
- },
- descriptionByLocale: {
- en: 'Full professional features.',
- },
- bulletPointsByLocale: [
- {
- en: 'Dedicated support channel on Discord for pros',
- },
- {
- en: 'Collaboration: share projects with teammates',
- },
- {
- en: 'Version history for projects',
- },
- {
- en: 'Unlimited cloud projects',
- },
- {
- en: 'Access to the upcoming pro marketplace',
- },
- {
- en: 'Billing/invoices available',
- },
- ],
- fullFeatures: [
- {
- featureName: 'ENGINE_AND_EDITOR',
- pillarName: 'CREATION',
- enabled: 'yes',
- },
- {
- featureName: 'DEBUGGER_AND_LIVE_PREVIEW',
- pillarName: 'CREATION',
- enabled: 'yes',
- },
- {
- featureName: 'CLOUD_PROJECTS',
- pillarName: 'CREATION',
- unlimited: true,
- },
- {
- featureName: 'MOBILE_APP',
- pillarName: 'CREATION',
- enabled: 'yes',
- },
- {
- featureName: 'AI_PROTOTYPING',
- pillarName: 'CREATION',
- unlimited: true,
- },
- {
- featureName: 'PUBLISH_GD_GAMES',
- pillarName: 'PUBLISHING',
- unlimited: true,
- },
- {
- featureName: 'PUBLISH_DESKTOP',
- pillarName: 'PUBLISHING',
- unlimited: true,
- },
- {
- featureName: 'PUBLISH_ANDROID',
- pillarName: 'PUBLISHING',
- unlimited: true,
- },
- {
- featureName: 'PUBLISH_IOS',
- pillarName: 'PUBLISHING',
- descriptionByLocale: {
- en: '15 per month',
- },
- },
- {
- featureName: 'MANUAL_EXPORT',
- pillarName: 'PUBLISHING',
- enabled: 'yes',
- },
- {
- featureName: 'REMOVE_MANDATORY_LOGO',
- pillarName: 'PUBLISHING',
- enabled: 'yes',
- },
- {
- featureName: 'VERSION_HISTORY',
- pillarName: 'PRO',
- enabled: 'yes',
- },
- {
- featureName: 'COLLABORATORS',
- pillarName: 'PRO',
- enabled: 'yes',
- },
- {
- featureName: 'INVOICES',
- pillarName: 'PRO',
- enabled: 'yes',
- },
- {
- featureName: 'FEEDBACKS',
- pillarName: 'SOCIAL',
- unlimited: true,
- },
- {
- featureName: 'LEADERBOARDS',
- pillarName: 'SOCIAL',
- unlimited: true,
- },
- {
- featureName: 'LEADERBOARDS_STYLING',
- pillarName: 'SOCIAL',
- descriptionByLocale: {
- en: 'Custom CSS/styling',
- },
- },
- {
- featureName: 'ANALYTICS',
- pillarName: 'SOCIAL',
- enabled: 'yes',
- },
- {
- featureName: 'MULTIPLAYER',
- pillarName: 'SOCIAL',
- enabled: 'yes',
- upcoming: true,
- },
- {
- featureName: 'EMBED_GD_GAMES',
- upcoming: true,
- pillarName: 'SOCIAL',
- enabled: 'yes',
- },
- {
- featureName: 'DEDICATED_COMMUNITY_CHANNEL',
- pillarName: 'SUPPORT',
- enabled: 'yes',
- },
- {
- featureName: 'DEDICATED_SUPPORT_CHANNEL',
- pillarName: 'SUPPORT',
- enabled: 'yes',
- },
- {
- featureName: 'FREE_CREDITS',
- pillarName: 'MARKETING',
- descriptionByLocale: {
- en: '1000 per month',
- },
- },
- {
- featureName: 'FEATURING_TIER1',
- pillarName: 'MARKETING',
- descriptionByLocale: {
- en: 'Buy with credits',
- },
- },
- {
- featureName: 'FEATURING_TIER2',
- pillarName: 'MARKETING',
- descriptionByLocale: {
- en: 'Buy with credits',
- },
- },
- {
- featureName: 'FEATURING_TIER3',
- pillarName: 'MARKETING',
- descriptionByLocale: {
- en: 'Buy with credits',
- },
- },
- {
- featureName: 'GET_FREE_ASSET_PACKS',
- pillarName: 'ASSET-STORE',
- enabled: 'yes',
- },
- {
- featureName: 'BUY_PREMIUM_ASSET_PACKS',
- pillarName: 'ASSET-STORE',
- enabled: 'yes',
- },
- {
- featureName: 'CLAIM_PREMIUM_ASSET_PACKS',
- pillarName: 'ASSET-STORE',
- descriptionByLocale: {
- en: '1 per month',
- },
- },
- {
- featureName: 'ADMOB_ADS',
- pillarName: 'MONETIZATION',
- enabled: 'yes',
- },
- {
- featureName: 'COMMUNITY_IAP',
- pillarName: 'MONETIZATION',
- enabled: 'yes',
- },
- {
- featureName: 'SELL_GAMES',
- pillarName: 'MONETIZATION',
- enabled: 'yes',
- },
- {
- featureName: 'SELL_ON_ASSET_STORE',
- pillarName: 'MONETIZATION',
- descriptionByLocale: {
- en: 'Yes - get in touch',
- },
- },
- ],
- pricingSystems: [
- {
- id: 'startup_1month_3000EUR',
- planId: 'gdevelop_startup',
- status: 'active',
- period: 'month',
- periodCount: 1,
- currency: 'EUR',
- amountInCents: 3000,
- region: 'eurozone',
- },
- {
- id: 'startup_1year_30900EUR',
- planId: 'gdevelop_startup',
- status: 'active',
- period: 'year',
- periodCount: 1,
- currency: 'EUR',
- amountInCents: 30900,
- region: 'eurozone',
- },
- ],
- },
- {
- id: 'gdevelop_education',
- isLegacy: false,
- nameByLocale: {
- en: 'Education',
- },
- targetAudiences: ['EDUCATION'],
- pillarNamesPerLocale: {
- 'ASSET-STORE': {
- en: 'Asset Store',
- },
- CREATION: {
- en: 'Creation',
- },
- MARKETING: {
- en: 'Marketing & Promotion',
- },
- PRO: {
- en: 'Professional features',
- },
- PUBLISHING: {
- en: 'Publishing',
- },
- SOCIAL: {
- en: 'Social & Online',
- },
- SUPPORT: {
- en: 'Community & Support',
- },
- MONETIZATION: {
- en: 'Monetization',
- },
- },
- featureNamesByLocale: {
- ENGINE_AND_EDITOR: {
- en: 'Open-source (MIT) editor and game engine',
- },
- DEBUGGER_AND_LIVE_PREVIEW: {
- en: 'Debugger and live preview',
- },
- CLOUD_PROJECTS: {
- en: 'Cloud projects',
- },
- AI_PROTOTYPING: {
- en: 'Game prototypes with AI',
- },
- MOBILE_APP: {
- en: 'Mobile app access',
- },
- MANUAL_EXPORT: {
- en: 'Export (any platform) manually with devtools',
- },
- PUBLISH_GD_GAMES: {
- en: 'Publish your game on gd.games',
- },
- PUBLISH_DESKTOP: {
- en: 'Publish for desktop (Windows, macOS, Linux)',
- },
- PUBLISH_ANDROID: {
- en: 'Publish your game on Google Play (Android)',
- },
- PUBLISH_IOS: {
- en: 'Publish your game on iOS (App Store)',
- },
- REMOVE_MANDATORY_LOGO: {
- en: 'Remove GDevelop logo/watermark',
- },
- VERSION_HISTORY: {
- en: 'Version history',
- },
- COLLABORATORS: {
- en: 'Collaborator (project sharing)',
- },
- INVOICES: {
- en: 'Invoices for your company',
- },
- LEADERBOARDS: {
- en: 'Leaderboards for games',
- },
- LEADERBOARDS_STYLING: {
- en: 'Leaderboards styling',
- },
- ANALYTICS: {
- en: 'Analytics on game usage',
- },
- FEEDBACKS: {
- en: 'Player feedbacks',
- },
- MULTIPLAYER: {
- en: 'Multiplayer',
- },
- EMBED_GD_GAMES: {
- en: 'Embed game on any website in one click',
- },
- DEDICATED_SUPPORT_CHANNEL: {
- en: 'Dedicated professional support channel',
- },
- DEDICATED_COMMUNITY_CHANNEL: {
- en: 'Dedicated community channel',
- },
- FREE_CREDITS: {
- en: 'Free credits every month',
- },
- FEATURING_TIER1: {
- en: 'Featuring on gd.games',
- },
- FEATURING_TIER2: {
- en: 'Featuring on social/newsletter',
- },
- FEATURING_TIER3: {
- en: 'Featuring inside GDevelop',
- },
- GET_FREE_ASSET_PACKS: {
- en: 'Use thousands of free asset packs',
- },
- CLAIM_PREMIUM_ASSET_PACKS: {
- en: 'Claim a premium asset pack or template',
- },
- BUY_PREMIUM_ASSET_PACKS: {
- en: 'Buy premium asset packs',
- },
- ADMOB_ADS: {
- en: 'Show ads in games (Admob for Android)',
- },
- COMMUNITY_IAP: {
- en: 'In-App Purchases (community extension)',
- },
- SELL_GAMES: {
- en: 'Sell your games (Steam, App Stores...)',
- },
- SELL_ON_ASSET_STORE: {
- en: 'Sell your assets or templates on GDevelop Asset Store',
- },
- },
- descriptionByLocale: {
- en: 'Teach logic, coding and game creation.',
- },
- bulletPointsByLocale: [
- {
- en: 'Full anonymous accounts for students',
- 'ar-SA': 'سرية الطلاب.',
- 'de-DE': 'Anonymität der Schüler.',
- 'es-ES': 'Anonimato de los estudiantes.',
- 'fr-FR': 'Anonymat des étudiants.',
- 'it-IT': 'Anonimato degli studenti.',
- 'ja-JP': '学生の匿名性。',
- 'ko-KR': '학생 익명성.',
- 'pl-PL': 'Anonimowość uczniów.',
- 'pt-BR': 'Anonimato dos alunos.',
- 'ru-RU': 'Анонимность студентов.',
- 'sl-SI': 'Anonimnost študentov.',
- 'uk-UA': 'Анонімність студентів.',
- 'zh-CN': '学生匿名性。',
- },
- {
- en: 'NDPA or custom privacy agreements',
- },
- {
- en: 'Organize students per classroom',
- 'ar-SA': 'تنظيم الطلاب حسب الصف.',
- 'de-DE': 'Schüler pro Klassenzimmer organisieren.',
- 'es-ES': 'Organizar estudiantes por aulas.',
- 'fr-FR': 'Organiser les étudiants par classe.',
- 'it-IT': 'Organizza gli studenti per classe.',
- 'ja-JP': 'クラスごとに学生を組織化。',
- 'ko-KR': '학생을 강의실별로 정리하십시오.',
- 'pl-PL': 'Organizuj uczniów według sal lekcyjnych.',
- 'pt-BR': 'Organize os alunos por sala de aula.',
- 'ru-RU': 'Организация студентов по классам.',
- 'sl-SI': 'Organizacija študentov po učilnicah.',
- 'uk-UA': 'Організація студентів за класами.',
- 'zh-CN': '根据教室组织学生。',
- },
- {
- en: 'Access students projects',
- 'ar-SA': 'الوصول إلى مشاريع الطلاب الخاصة بك',
- 'de-DE': 'Zugriff auf die Projekte Ihrer Schüler.',
- 'es-ES': 'Acceda a los proyectos de sus estudiantes.',
- 'fr-FR': 'Accédez aux projets de vos étudiants.',
- 'it-IT': 'Accedi ai progetti dei tuoi studenti.',
- 'ja-JP': '生徒のプロジェクトにアクセス。',
- 'ko-KR': '학생 프로젝트에 액세스하십시오.',
- 'pl-PL': 'Dostęp do projektów uczniów.',
- 'pt-BR': 'Acesse os projetos dos seus alunos.',
- 'ru-RU': 'Доступ к проектам ваших студентов.',
- 'sl-SI': 'Dostop do projektov vaših študentov.',
- 'uk-UA': 'Доступ до проектів ваших студентів.',
- 'zh-CN': '访问您的学生项目。',
- },
- {
- en: 'Version history for all projects',
- },
- {
- en: 'Publishing to any platform',
- },
- {
- en: 'GDevelop mobile app full access',
- },
- ],
- fullFeatures: [],
- pricingSystems: [
- {
- id: 'education_1month_299EUR',
- planId: 'gdevelop_education',
- status: 'active',
- period: 'month',
- periodCount: 1,
- currency: 'EUR',
- amountInCents: 299,
- isPerUser: true,
- region: 'eurozone',
- },
- {
- id: 'education_1year_2999EUR',
- planId: 'gdevelop_education',
- status: 'active',
- period: 'year',
- periodCount: 1,
- currency: 'EUR',
- amountInCents: 2999,
- isPerUser: true,
- region: 'eurozone',
- },
- ],
- },
- {
- id: 'gdevelop_indie',
- isLegacy: true,
- nameByLocale: {
- en: 'Silver (Legacy)',
- },
- targetAudiences: ['CASUAL'],
- pillarNamesPerLocale: {
- 'ASSET-STORE': {
- en: 'Asset Store',
- },
- CREATION: {
- en: 'Creation',
- },
- MARKETING: {
- en: 'Marketing & Promotion',
- },
- PRO: {
- en: 'Professional features',
- },
- PUBLISHING: {
- en: 'Publishing',
- },
- SOCIAL: {
- en: 'Social & Online',
- },
- SUPPORT: {
- en: 'Community & Support',
- },
- MONETIZATION: {
- en: 'Monetization',
- },
- },
- featureNamesByLocale: {
- ENGINE_AND_EDITOR: {
- en: 'Open-source (MIT) editor and game engine',
- },
- DEBUGGER_AND_LIVE_PREVIEW: {
- en: 'Debugger and live preview',
- },
- CLOUD_PROJECTS: {
- en: 'Cloud projects',
- },
- AI_PROTOTYPING: {
- en: 'Game prototypes with AI',
- },
- MOBILE_APP: {
- en: 'Mobile app access',
- },
- MANUAL_EXPORT: {
- en: 'Export (any platform) manually with devtools',
- },
- PUBLISH_GD_GAMES: {
- en: 'Publish your game on gd.games',
- },
- PUBLISH_DESKTOP: {
- en: 'Publish for desktop (Windows, macOS, Linux)',
- },
- PUBLISH_ANDROID: {
- en: 'Publish your game on Google Play (Android)',
- },
- PUBLISH_IOS: {
- en: 'Publish your game on iOS (App Store)',
- },
- REMOVE_MANDATORY_LOGO: {
- en: 'Remove GDevelop logo/watermark',
- },
- VERSION_HISTORY: {
- en: 'Version history',
- },
- COLLABORATORS: {
- en: 'Collaborator (project sharing)',
- },
- INVOICES: {
- en: 'Invoices for your company',
- },
- LEADERBOARDS: {
- en: 'Leaderboards for games',
- },
- LEADERBOARDS_STYLING: {
- en: 'Leaderboards styling',
- },
- ANALYTICS: {
- en: 'Analytics on game usage',
- },
- FEEDBACKS: {
- en: 'Player feedbacks',
- },
- MULTIPLAYER: {
- en: 'Multiplayer',
- },
- EMBED_GD_GAMES: {
- en: 'Embed game on any website in one click',
- },
- DEDICATED_SUPPORT_CHANNEL: {
- en: 'Dedicated professional support channel',
- },
- DEDICATED_COMMUNITY_CHANNEL: {
- en: 'Dedicated community channel',
- },
- FREE_CREDITS: {
- en: 'Free credits every month',
- },
- FEATURING_TIER1: {
- en: 'Featuring on gd.games',
- },
- FEATURING_TIER2: {
- en: 'Featuring on social/newsletter',
- },
- FEATURING_TIER3: {
- en: 'Featuring inside GDevelop',
- },
- GET_FREE_ASSET_PACKS: {
- en: 'Use thousands of free asset packs',
- },
- CLAIM_PREMIUM_ASSET_PACKS: {
- en: 'Claim a premium asset pack or template',
- },
- BUY_PREMIUM_ASSET_PACKS: {
- en: 'Buy premium asset packs',
- },
- ADMOB_ADS: {
- en: 'Show ads in games (Admob for Android)',
- },
- COMMUNITY_IAP: {
- en: 'In-App Purchases (community extension)',
- },
- SELL_GAMES: {
- en: 'Sell your games (Steam, App Stores...)',
- },
- SELL_ON_ASSET_STORE: {
- en: 'Sell your assets or templates on GDevelop Asset Store',
- },
- },
- descriptionByLocale: {
- en: 'Build more and faster',
- },
- bulletPointsByLocale: [
- {
- en:
- '50 cloud projects with 250MB of resources per project and 3-month version history.',
- },
- {
- en: '10 packagings per day for Android and for desktop.',
- },
- {
- en: 'Unlimited leaderboards and unlimited player feedback responses.',
- },
- ],
- fullFeatures: [],
- pricingSystems: [
- {
- id: 'indie_1month',
- planId: 'gdevelop_indie',
- status: 'active',
- period: 'month',
- periodCount: 1,
- currency: 'EUR',
- amountInCents: 200,
- region: 'default',
- },
- ],
- },
- {
- id: 'gdevelop_pro',
- isLegacy: true,
- nameByLocale: {
- en: 'Gold (Legacy)',
- },
- targetAudiences: ['CASUAL'],
- pillarNamesPerLocale: {
- 'ASSET-STORE': {
- en: 'Asset Store',
- },
- CREATION: {
- en: 'Creation',
- },
- MARKETING: {
- en: 'Marketing & Promotion',
- },
- PRO: {
- en: 'Professional features',
- },
- PUBLISHING: {
- en: 'Publishing',
- },
- SOCIAL: {
- en: 'Social & Online',
- },
- SUPPORT: {
- en: 'Community & Support',
- },
- MONETIZATION: {
- en: 'Monetization',
- },
- },
- featureNamesByLocale: {
- ENGINE_AND_EDITOR: {
- en: 'Open-source (MIT) editor and game engine',
- },
- DEBUGGER_AND_LIVE_PREVIEW: {
- en: 'Debugger and live preview',
- },
- CLOUD_PROJECTS: {
- en: 'Cloud projects',
- },
- AI_PROTOTYPING: {
- en: 'Game prototypes with AI',
- },
- MOBILE_APP: {
- en: 'Mobile app access',
- },
- MANUAL_EXPORT: {
- en: 'Export (any platform) manually with devtools',
- },
- PUBLISH_GD_GAMES: {
- en: 'Publish your game on gd.games',
- },
- PUBLISH_DESKTOP: {
- en: 'Publish for desktop (Windows, macOS, Linux)',
- },
- PUBLISH_ANDROID: {
- en: 'Publish your game on Google Play (Android)',
- },
- PUBLISH_IOS: {
- en: 'Publish your game on iOS (App Store)',
- },
- REMOVE_MANDATORY_LOGO: {
- en: 'Remove GDevelop logo/watermark',
- },
- VERSION_HISTORY: {
- en: 'Version history',
- },
- COLLABORATORS: {
- en: 'Collaborator (project sharing)',
- },
- INVOICES: {
- en: 'Invoices for your company',
- },
- LEADERBOARDS: {
- en: 'Leaderboards for games',
- },
- LEADERBOARDS_STYLING: {
- en: 'Leaderboards styling',
- },
- ANALYTICS: {
- en: 'Analytics on game usage',
- },
- FEEDBACKS: {
- en: 'Player feedbacks',
- },
- MULTIPLAYER: {
- en: 'Multiplayer',
- },
- EMBED_GD_GAMES: {
- en: 'Embed game on any website in one click',
- },
- DEDICATED_SUPPORT_CHANNEL: {
- en: 'Dedicated professional support channel',
- },
- DEDICATED_COMMUNITY_CHANNEL: {
- en: 'Dedicated community channel',
- },
- FREE_CREDITS: {
- en: 'Free credits every month',
- },
- FEATURING_TIER1: {
- en: 'Featuring on gd.games',
- },
- FEATURING_TIER2: {
- en: 'Featuring on social/newsletter',
- },
- FEATURING_TIER3: {
- en: 'Featuring inside GDevelop',
- },
- GET_FREE_ASSET_PACKS: {
- en: 'Use thousands of free asset packs',
- },
- CLAIM_PREMIUM_ASSET_PACKS: {
- en: 'Claim a premium asset pack or template',
- },
- BUY_PREMIUM_ASSET_PACKS: {
- en: 'Buy premium asset packs',
- },
- ADMOB_ADS: {
- en: 'Show ads in games (Admob for Android)',
- },
- COMMUNITY_IAP: {
- en: 'In-App Purchases (community extension)',
- },
- SELL_GAMES: {
- en: 'Sell your games (Steam, App Stores...)',
- },
- SELL_ON_ASSET_STORE: {
- en: 'Sell your assets or templates on GDevelop Asset Store',
- },
- },
- descriptionByLocale: {
- en: 'Experimented creators, ambitious games',
- },
- bulletPointsByLocale: [
- {
- en:
- '100 cloud projects with 500MB of resources per project and one-year version history.',
- },
- {
- en: '70 packagings per day for Android and for desktop.',
- },
- {
- en: 'Unlimited leaderboards and unlimited player feedback responses.',
- },
- {
- en:
- 'Immerse your players by removing GDevelop logo when the game loads.',
- },
- ],
- fullFeatures: [],
- pricingSystems: [
- {
- id: 'pro_1month',
- planId: 'gdevelop_pro',
- status: 'active',
- period: 'month',
- periodCount: 1,
- currency: 'EUR',
- amountInCents: 700,
- region: 'default',
- },
- ],
- },
-];
-
const prices = {
'cordova-build': {
priceInCredits: 50,
diff --git a/newIDE/app/src/stories/componentStories/HomePage/GetStartedSection/RecommendationList.stories.js b/newIDE/app/src/stories/componentStories/HomePage/GetStartedSection/RecommendationList.stories.js
index d9570713dfe8..5a7d7bbd5837 100644
--- a/newIDE/app/src/stories/componentStories/HomePage/GetStartedSection/RecommendationList.stories.js
+++ b/newIDE/app/src/stories/componentStories/HomePage/GetStartedSection/RecommendationList.stories.js
@@ -2,17 +2,17 @@
import * as React from 'react';
import { action } from '@storybook/addon-actions';
import paperDecorator from '../../../PaperDecorator';
-import {
- fakeAuthenticatedUserWithGitHubStarBadge,
- fakeAuthenticatedUserWithNoSubscription,
- subscriptionPlansWithPricingSystems,
-} from '../../../../fixtures/GDevelopServicesTestData';
+import { fakeAuthenticatedUserWithNoSubscription } from '../../../../fixtures/GDevelopServicesTestData';
import RecommendationList from '../../../../MainFrame/EditorContainers/HomePage/GetStartedSection/RecommendationList';
import PreferencesContext, {
initialPreferences,
} from '../../../../MainFrame/Preferences/PreferencesContext';
import inAppTutorialDecorator from '../../../InAppTutorialDecorator';
import { TutorialStateProvider } from '../../../../Tutorial/TutorialContext';
+import useSubscriptionPlans, {
+ getAvailableSubscriptionPlansWithPrices,
+} from '../../../../Utils/UseSubscriptionPlans';
+import LoaderModal from '../../../../UI/LoaderModal';
export default {
title: 'HomePage/GetStartedSectionSection/RecommendationList',
@@ -20,78 +20,85 @@ export default {
decorators: [paperDecorator, inAppTutorialDecorator],
};
-export const Default = () => (
-
-
- true}
- onCreateProjectFromExample={action('onCreateProjectFromExample')}
- />
-
-
-);
+export const Default = () => {
+ const { subscriptionPlansWithPricingSystems } = useSubscriptionPlans({
+ includeLegacy: true,
+ authenticatedUser: fakeAuthenticatedUserWithNoSubscription,
+ });
+ return subscriptionPlansWithPricingSystems ? (
+
+
+ true}
+ onCreateProjectFromExample={action('onCreateProjectFromExample')}
+ />
+
+
+ ) : (
+
+ );
+};
+
+export const WithSurvey = () => {
+ const { subscriptionPlansWithPricingSystems } = useSubscriptionPlans({
+ includeLegacy: true,
+ authenticatedUser: fakeAuthenticatedUserWithNoSubscription,
+ });
-export const WithGitHubStarAlreadyMade = () => (
-
-
- true}
- onCreateProjectFromExample={action('onCreateProjectFromExample')}
- />
-
-
-);
+ return subscriptionPlansWithPricingSystems ? (
+
+
+ true}
+ onCreateProjectFromExample={action('onCreateProjectFromExample')}
+ />
+
+
+ ) : (
+
+ );
+};
-export const WithSurvey = () => (
-
-
- true}
- onCreateProjectFromExample={action('onCreateProjectFromExample')}
- />
-
-
-);
+export const WithSurveyAlreadyFilled = () => {
+ const { subscriptionPlansWithPricingSystems } = useSubscriptionPlans({
+ includeLegacy: true,
+ authenticatedUser: fakeAuthenticatedUserWithNoSubscription,
+ });
-export const WithSurveyAlreadyFilled = () => (
-
-
- true}
- onCreateProjectFromExample={action('onCreateProjectFromExample')}
- />
-
-
-);
+ return subscriptionPlansWithPricingSystems ? (
+
+
+ true}
+ onCreateProjectFromExample={action('onCreateProjectFromExample')}
+ />
+
+
+ ) : (
+
+ );
+};
diff --git a/newIDE/app/src/stories/componentStories/Profile/Subscription/PromotionSubscriptionDialog.stories.js b/newIDE/app/src/stories/componentStories/Profile/Subscription/PromotionSubscriptionDialog.stories.js
index 4b56e7518908..fd412afc8653 100644
--- a/newIDE/app/src/stories/componentStories/Profile/Subscription/PromotionSubscriptionDialog.stories.js
+++ b/newIDE/app/src/stories/componentStories/Profile/Subscription/PromotionSubscriptionDialog.stories.js
@@ -7,11 +7,13 @@ import AuthenticatedUserContext from '../../../../Profile/AuthenticatedUserConte
import {
fakeAuthenticatedUserWithNoSubscription,
fakeNotAuthenticatedUser,
- subscriptionPlansWithPricingSystems,
} from '../../../../fixtures/GDevelopServicesTestData';
import PromotionSubscriptionDialog from '../../../../Profile/Subscription/PromotionSubscriptionDialog';
import AlertProvider from '../../../../UI/Alert/AlertProvider';
-import { getAvailableSubscriptionPlansWithPrices } from '../../../../Utils/UseSubscriptionPlans';
+import useSubscriptionPlans, {
+ getAvailableSubscriptionPlansWithPrices,
+} from '../../../../Utils/UseSubscriptionPlans';
+import LoaderModal from '../../../../UI/LoaderModal';
export default {
title: 'Subscription/PromotionSubscriptionDialog',
@@ -19,122 +21,155 @@ export default {
decorators: [paperDecorator],
};
-const availableSubscriptionPlansWithPrices = getAvailableSubscriptionPlansWithPrices(
- subscriptionPlansWithPricingSystems
-);
-
export const NotAuthenticatedSilverRecommended = () => {
- return (
+ const { subscriptionPlansWithPricingSystems } = useSubscriptionPlans({
+ includeLegacy: true,
+ authenticatedUser: fakeNotAuthenticatedUser,
+ });
+ return subscriptionPlansWithPricingSystems ? (
action('on close')()}
recommendedPlanId="gdevelop_silver"
onOpenPendingDialog={() => action('on open pending dialog')()}
/>
+ ) : (
+
);
};
export const AuthenticatedSilverRecommended = () => {
- return (
+ const { subscriptionPlansWithPricingSystems } = useSubscriptionPlans({
+ includeLegacy: true,
+ authenticatedUser: fakeAuthenticatedUserWithNoSubscription,
+ });
+ return subscriptionPlansWithPricingSystems ? (
action('on close')()}
recommendedPlanId="gdevelop_silver"
onOpenPendingDialog={() => action('on open pending dialog')()}
/>
+ ) : (
+
);
};
export const GoldRecommended = () => {
- return (
+ const { subscriptionPlansWithPricingSystems } = useSubscriptionPlans({
+ includeLegacy: true,
+ authenticatedUser: fakeAuthenticatedUserWithNoSubscription,
+ });
+ return subscriptionPlansWithPricingSystems ? (
action('on close')()}
recommendedPlanId="gdevelop_gold"
onOpenPendingDialog={() => action('on open pending dialog')()}
/>
+ ) : (
+
);
};
export const ProRecommended = () => {
- return (
+ const { subscriptionPlansWithPricingSystems } = useSubscriptionPlans({
+ includeLegacy: true,
+ authenticatedUser: fakeAuthenticatedUserWithNoSubscription,
+ });
+ return subscriptionPlansWithPricingSystems ? (
action('on close')()}
recommendedPlanId="gdevelop_startup"
onOpenPendingDialog={() => action('on open pending dialog')()}
/>
+ ) : (
+
);
};
export const EducationRecommended = () => {
- return (
+ const { subscriptionPlansWithPricingSystems } = useSubscriptionPlans({
+ includeLegacy: true,
+ authenticatedUser: fakeAuthenticatedUserWithNoSubscription,
+ });
+ return subscriptionPlansWithPricingSystems ? (
action('on close')()}
recommendedPlanId="gdevelop_education"
onOpenPendingDialog={() => action('on open pending dialog')()}
/>
+ ) : (
+
);
};
export const WithoutSilverButRecommended = () => {
- const availableSubscriptionPlansWithPrices = getAvailableSubscriptionPlansWithPrices(
- subscriptionPlansWithPricingSystems
- );
- const subscritionPlansWithoutSilver = availableSubscriptionPlansWithPrices.filter(
- plan => plan.id !== 'gdevelop_silver'
- );
- return (
+ const { subscriptionPlansWithPricingSystems } = useSubscriptionPlans({
+ includeLegacy: true,
+ authenticatedUser: fakeAuthenticatedUserWithNoSubscription,
+ });
+ const subscritionPlansWithoutSilver = subscriptionPlansWithPricingSystems
+ ? subscriptionPlansWithPricingSystems.filter(
+ plan => plan.id !== 'gdevelop_silver'
+ )
+ : null;
+ return subscritionPlansWithoutSilver ? (
action('on close')()}
recommendedPlanId="gdevelop_silver"
onOpenPendingDialog={() => action('on open pending dialog')()}
/>
+ ) : (
+
);
};
diff --git a/newIDE/app/src/stories/componentStories/Profile/Subscription/SubscriptionDetails.stories.js b/newIDE/app/src/stories/componentStories/Profile/Subscription/SubscriptionDetails.stories.js
index fd8d2a3990b2..a113306dcc27 100644
--- a/newIDE/app/src/stories/componentStories/Profile/Subscription/SubscriptionDetails.stories.js
+++ b/newIDE/app/src/stories/componentStories/Profile/Subscription/SubscriptionDetails.stories.js
@@ -4,7 +4,6 @@ import { action } from '@storybook/addon-actions';
import paperDecorator from '../../../PaperDecorator';
import {
- subscriptionPlansWithPricingSystems,
fakeNotAuthenticatedUser,
fakeAuthenticatedUserLoggingIn,
fakeAuthenticatedUserWithNoSubscription,
@@ -21,6 +20,10 @@ import {
import subscriptionSuggestionDecorator from '../../../SubscriptionSuggestionDecorator';
import SubscriptionDetails from '../../../../Profile/Subscription/SubscriptionDetails';
import AlertProvider from '../../../../UI/Alert/AlertProvider';
+import useSubscriptionPlans, {
+ getAvailableSubscriptionPlansWithPrices,
+} from '../../../../Utils/UseSubscriptionPlans';
+import LoaderModal from '../../../../UI/LoaderModal';
export default {
title: 'Subscription/SubscriptionDetails',
@@ -181,18 +184,24 @@ export const Default = ({
}
const { subscription: userSubscription } = authenticatedUser;
+ const { subscriptionPlansWithPricingSystems } = useSubscriptionPlans({
+ includeLegacy: true,
+ authenticatedUser,
+ });
- return (
+ return subscriptionPlansWithPricingSystems ? (
+ ) : (
+
);
};
diff --git a/newIDE/app/src/stories/componentStories/Profile/Subscription/SubscriptionDialog.stories.js b/newIDE/app/src/stories/componentStories/Profile/Subscription/SubscriptionDialog.stories.js
index 0614b724a0fb..ee00e56f9e98 100644
--- a/newIDE/app/src/stories/componentStories/Profile/Subscription/SubscriptionDialog.stories.js
+++ b/newIDE/app/src/stories/componentStories/Profile/Subscription/SubscriptionDialog.stories.js
@@ -14,11 +14,13 @@ import {
fakeAuthenticatedUserWithLegacyProSubscription,
fakeAuthenticatedUserWithEducationPlan,
fakeStartupAuthenticatedUser,
- subscriptionPlansWithPricingSystems,
} from '../../../../fixtures/GDevelopServicesTestData';
import SubscriptionDialog from '../../../../Profile/Subscription/SubscriptionDialog';
import AlertProvider from '../../../../UI/Alert/AlertProvider';
-import { getAvailableSubscriptionPlansWithPrices } from '../../../../Utils/UseSubscriptionPlans';
+import useSubscriptionPlans, {
+ getAvailableSubscriptionPlansWithPrices,
+} from '../../../../Utils/UseSubscriptionPlans';
+import LoaderModal from '../../../../UI/LoaderModal';
export default {
title: 'Subscription/SubscriptionDialog',
@@ -159,16 +161,22 @@ export const Default = ({
}
}
+ const { subscriptionPlansWithPricingSystems } = useSubscriptionPlans({
+ includeLegacy: true,
+ authenticatedUser,
+ });
+
const { subscription: userSubscription } = authenticatedUser;
- const userLegacySubscriptionPlanWithPricingSystem = userSubscription
- ? subscriptionPlansWithPricingSystems.find(
- planWithPricingSystem =>
- planWithPricingSystem.id === userSubscription.planId &&
- planWithPricingSystem.isLegacy
- )
- : null;
+ const userLegacySubscriptionPlanWithPricingSystem =
+ userSubscription && subscriptionPlansWithPricingSystems
+ ? subscriptionPlansWithPricingSystems.find(
+ planWithPricingSystem =>
+ planWithPricingSystem.id === userSubscription.planId &&
+ planWithPricingSystem.isLegacy
+ )
+ : null;
- return (
+ return subscriptionPlansWithPricingSystems ? (
+ ) : (
+
);
};