The level of a card is the number of smash you need to unlock it.
We store best_without_failures
and choose among card that requires less than that for the next one. If there is none, take one at random among the 2 next increment.
The tutorial slowly ramps up to card level 10. Tutorial cards ids start with 0-Tutorial
, the 0-
is to kep alphabetical order when level 10 or above.
We have cards from level 10 to 100 with increment 5:
Card Level | Number of cards |
---|---|
10 | 19 |
15 | 18 |
20 | 17 |
25 | 16 |
30 | 15 |
35 | 14 |
40 | 13 |
45 | 12 |
50 | 11 |
55 | 10 |
60 | 9 |
65 | 8 |
70 | 7 |
75 | 6 |
80 | 5 |
85 | 4 |
90 | 3 |
95 | 2 |
100 | 1 |
Total | 190 |
Open project.godot
with Godot.
To see your changes, just click play in the top left corner.
See tween cheat sheet.
Use CloudConvert to convert SVG to PNG.
Use VectorPaint on Safari to edit SVG.
To add new card, follow the following format for names: {combo_required}_{id}.jpeg
. id
can be a name without space or just a number, make sure it's unique across all cards.
Follow official guide to test on iOS.
If you want to test the In App Purchase, do the following after export:
- Open XCode
- Create a new file, search for StoreKit Configuration
- Name it Products and select Sync and your project.
- Select the correct Target and hit Create
- Go to Signing & Capabilities
- Select Automatically manage signing
- Select your team
- Hit play with a connected physical device
- Plugins for iOS
- In-App Purchases
- Create consumable or non-consumable in-app purchases
- Testing In-App Purchases with sandbox
- Testing at all stages of development with Xcode and the sandbox
Product IDs are not sensitive data, you can store them in public (see source)
See more in this Github issue: godot-sdk-integrations/godot-ios-plugins#47
brew install scons
git clone --recursive https://github.com/godotengine/godot-ios-plugins.git
cd godot-ios-plugins/godot
git fetch
git checkout 15073afe3856abd2aa1622492fe50026c7d63dc1 # commit from 4.2.2
scons platform=ios target=template_debug # ^C after headers are built
cd ../
scons target=release arch=arm64 simulator=no plugin=inappstore version=4.0
./scripts/generate_static_library.sh inappstore release 4.0
./scripts/generate_xcframework.sh inappstore release 4.0
Update the .gdip
and output from bin/
.
Export to iOS is automatically manage when you merge in main, you'll receive your latest version in Testflight. You can still build manually if you want to test your feature on mobile before merging. You will very rarely have to manually create an Archive though.
- Open the project in your Godot editor
- Select
Project > Export...
- Select
iOS Production
in Presets - Make sure to increment the version since the last upload (you version needs to be higher than the one in the App Store, not in Test Flight)
1. Use
1.2.1 -> 1.2.2
(SimVer) - Click
Export Project...
, and export it withoutDebug
- The archive build will fail with
error: "scaling-broccoli" requires a provisioning profile. Select a provisioning profile in the Signing & Capabilities editor.
, but the Xcode project will be created you can move forward - Open the Xcode project (
scaling-broccoli.xcodeproj
) - Go to
Signing & Capabilities
- Check
Automatically manage signing
- Select your team
- Click on
Product > Archive
, it will build and open the Archives window - Select your latest archive and click on
Distribute App
, a pop-up menu will open - Select
App Store Connect
- Select
Upload
- Check
Upload your app's symbols
andManage Version and Build Number
- Select
Automatically manage signing
- Click on
Upload
, this will take a while
You will need your developer certificate to export your app to the App Store.
Device | Dimensions | Folder | Debug Window Dimensions | Capture Dimensions |
---|---|---|---|---|
6.7" Display | 1290 x 2796 |
screen-67 |
665 x 1418 |
323 x 699 |
6.5" Display | 1284 x 2778 |
screen-65 |
662 x 1409 |
321 x 695 |
5.5" Display | 1242 x 2208 |
screen-55 |
641 x 1124 |
311 x 552 |
12.9" Display | 2048 x 2732 |
screen-129 |
1044 x 1386 |
512 x 683 |
Device | Dimensions | Folder | Debug Window Dimensions | Capture Dimensions |
---|---|---|---|---|
6.7" Display and 6.5" Display | 886 x 1920 |
preview-67-65 |
906 x 1940 |
443 x 960 |
5.5" Display | 1080 x 1920 |
preview-55 |
1130 x 1970 |
540 x 960 |
12.9" Display | 1200 x 1600 |
preview-129 |
1250 x 1650 |
600 x 800 |
- Go the App Store Connect and select your game
- Get latest TestFlight version number
- Go to
TestFlight
tab - Note the latest version number
- Go to
App Store
tab - Click on the blue
+
sign next toiOS App
on the upper-left - Enter the latest version number and hit
Create
- Edit the field according to
./STORE_PRESENCE.md
- You'll have to wait one hour before your app preview are done processing, you can close the browser meanwhile
- Type the
Release Notes
inWhat's new in This Version
- Select
Add build
and select your latest build - Hit
Save
ang go toApp information
underGeneral
- Edit the field according to
./STORE_PRESENCE.md
- Follow Godot documentation Exporting for Android
- Open the project in your Godot editor
- Go to
Project > Install Android Build Template...
and selectInstall
- Select
Project > Export...
- Select
Android
in Presets - Fill in
Release
,Release User
, andRelease Password
- Increment the code version
- Make sure to increment the version since the last upload (you version needs to be higher than the one in the Google Play Store) (SimVer)
- Click
Export Project...
, and export it withoutDebug
- Go to your project page in Google Play Console
- Select
Internal Testing
- Upload your
aab
file - Enter the release details and click Next
- If you add advertisement, see the notice below, you need to add something to your manifest and declare it
- Hit Save and publish
192x192
432x432
: foreground image, you will only use the inner264px
circle432x432
: background image
If you manage your key with Google Signing, they get you covered. Follow their Create an upload key and update keystores guide.
Apps that use advertising ID and target Android 13 or later must declare the com.google.android.gms.permission.AD_ID permission in their app manifest. If you don't include this permission, your advertising identifier will be zeroed out, any attempts to access the identifier will receive a string of zeros instead of the identifier. Learn more
If you say that your app uses advertising ID, we will block releases that don't include the com.google.android.gms.permission.AD_ID permission in the manifest file when targeting Android 13. When we block these releases, we will remind you to add the permission. If your release doesn't need advertising ID, you'll be able to skip the error and release. You can also update the declaration to turn off advertising ID release errors.
The option selected is No.
Device | Dimensions | Debug Dimensions | Debug Factors |
---|---|---|---|
Any | 1242x2208 |
414x736 |
3 |
App icon | 512x512 |
N/A | N/A |
Feature graphic | 1024x500 |
N/A | N/A |
- Go to the Google Play Console and select your app
- Edit your app details
- Select
Main store listing
underStore presence
on the left - Edit the field according to
./STORE_PRESENCE.md
- Hit
Save
and don't send the change to review - Create a new release
- Select
Production
underRelease
on the left - Click
Create new release
- Click
Add from library
and select the latest app bundle - Enter the
release notes
from./STORE_PRESENCE.md
- Hit
Save
- Review the release and click on
Save
- Select
Go to oveview
in the pop-up window - Click on
Send X changes for review
and confirm
- Install dependencies
- Install Loopback
- Follow underboading step (this will require to restart your computer)
- Open Loopback and click the
New Virtual Device
(it should create aLoopback Audio
device) - Go to your computer
Settings > Audio
and selectLoopback Audio
- Turn the sound at maximum (it will start emitting sounds in your virtual device, you won't hear anything)
- Open your project in Godot
- Go to
Project > Settings
and selectWindow
- Update the
Debug dimensions
- Add at least
20px
in each dimensions to not see window frame while recording - Start the game and do the screenshots and screen recordings you need
- Trim each video to
20s
- Scale up images and videos to their correct dimensions:
ffmpeg -i input -vf scale="iw*2:ih*2" output
(scales times two) - If you need to scale small pixel art assets use:
ffmpeg -i input -vf scale="iw*2:ih*2" -sws_flags neighbor output
- You can specify directly the dimensions to avoid artefacts:
ffmpeg -i input -vf scale="1200:1600" output
- Convert videos to
mp4
:ffmpeg -i input.mov -qscale 0 output.mp4
- Extract frames from the videos:
ffmpeg -ss 01:23:45 -i input -frames:v 1 -q:v 2 output.png
- Set the dimensions for screenshots
- Take a screenshot of the main menu
- Start recording your screen with correct dimensions (audio doesn't matter)
- Play a game with at least a combo higher than 25 and take screenshots of the lost menu
- Stop recording and extract in-game frame from your recording 1. Take one frame with a combo higher than 20 2. Take one random frame in game 3. Take one frame with the introduction text 4. Take another random frame in game
- Set the dimensions for app preview
- Change your audio output to
LoopBack Audio
- Change your recording audio channel to
LoopBack Audio
- Turn on the
Music
and set volume at maximum - Record your screen with correct dimensions
- Start a game, wait at the beginning to see the introduction message
- Do at least a combo higher than 50
- Stop recording your screen when you lose.
- Record the game while you're in a combo higher than 25
- Take a screenshot of the lose menu
- Record the start of the game (wait for the introduction message to appear)
- Take four screenshots from the two recording above
You will need to use iMovie
to create the app preview. They won't upload if you don't export them with iMovie.
If you use iMovie
, no need to rescale your .mov
recording, iMovie
will set the correct dimensions automatically.
For 12.9" Display
you'll need to rescale the video to 1200 x 1600
before importing it in iMovie
. If you don't, iMovie
will rescale it to 900 x 1200
.
You won't be able to upload videos directly. You must create a Youtube video and use the link.
Add a video by entering a YouTube URL. This video must be public or unlisted, ads must be turned off, it must not be age restricted, and it should be landscape.
Paste these link on the website where your app is available for download or in the description section of the platform or marketplace youβre using.
- Kenney Game Icons and Board Game Icons
Matchy Matchy is a mobile arcade-like video game where you have to touch a square when its colour matches the colour of the background. The square will keep its colour until you touch it when it has the same colour as the background. The background keeps changing colour, and you must be fast and reactive!
You can take two directions to decide the rules.
- Time is the main element
- Hit is the main element In the rules below, the main element is hit (when you tap the square when its colour matches the colour of the background). Hit is the dynamics. You hit when you play, so it keeps the central position for all the rules.
Points are a common language between players to compare their performance and challenge each other. Points in arcade games be the best translation of the player's level possible.
Each time you hit, you earn ten points times your current combo strike.
score_factor
: the number of times you multiple your combo strike (ten above)
Combos are essential in arcade games as they incentivise you to continue the perfect strike and improve your skills.
After your second hit without a miss, you will start a combo. Then, you'll continue the combo until you don't miss it. You miss if:
- you tap when the square and the background don't have the same colour,
- you don't tape when the square and the background have the same colour. You will always have the chance to hit within the next five changement of colors. Five being the number of colors.
You lose when you miss. You miss if you tap when the square and the background differ from the same colour.
You can't play longer.
When you reach a given combo, you will increase your level.
The higher your level, the more likely you are to have match new to each other.
You reach level 1
at combo 10
and level 2
and combo 20
. You can't go higher than level 2
.
background_delta
: the time the background keeps its colour when it doesn't match the colour of the squarebackground_match_delta
: the time the background keeps its colour when it matches the colour of the squaremax_swaps
: array of maximum number of background color swaps before if match the color of the character at leveln