How to Make a Custom Holiday Game on iPad
A custom holiday game works best when it is small enough to finish and personal enough to share. On iPad, you can draw the art in Procreate, import it into hyperPad, and build the game logic with visual Behaviors.
This guide uses a simple winter delivery game. The player moves a character, collects three packages, and reaches a doorway before the timer ends. You can change the art, message, music, and difficulty for the holiday or celebration you have in mind.
Start with one complete game loop
Define the smallest playable version before you draw every asset.
Your first build needs:
- one player character
- three collectible packages
- one destination
- a score or package counter
- one countdown timer
- a win state and a retry state
The loop is easy to explain: collect all three packages, reach the destination, and finish before time runs out.
That gives you movement, collision, state, UI, and a clear ending. Once it works, you can add more levels or seasonal details without changing the basic rules.
Plan the Project in two Scenes
Use one Scene for the game and one for the result.
| Scene | Purpose | Main Objects |
|---|---|---|
| Delivery | Runs the playable challenge | Player, packages, doorway, timer label, package label, controller |
| Result | Shows the outcome and offers a replay | Result message, replay button, optional illustration |
Scenes keep menus, levels, and results separate. This makes each part easier to test.
Create a controller Object in the Delivery Scene. It can stay invisible during play. Add these Object Attributes:
| Attribute | Starting value | What it tracks |
|---|---|---|
packagesCollected | 0 | How many packages the player has collected |
packagesNeeded | 3 | The number required to finish |
timeLeft | 30 | Seconds remaining |
gameOver | false | Whether input and scoring should stop |
These Attributes are the game’s state. They let separate Objects read and update the same rules.
Draw a small asset set in Procreate
You do not need a large art pack. Draw only what the first playable version uses:
- one player graphic
- one package graphic
- one doorway or destination
- one background
- one result illustration
Use transparent PNG files for the player, package, and doorway. Keep the background separate so you can replace it without touching the game logic.
Procreate’s current handbook documents PNG export and the option to export layers as separate PNG files. If you draw several assets in one file, separate layers can speed up the handoff. Review the official Procreate export guide before exporting.
For animation, begin with two or three readable frames, such as a walk cycle or a package sparkle. A short animation that communicates movement is more useful than a long sequence that delays the first test.
Import the finished files through the hyperPad Asset Library. Add them to the Scene as Objects, then set collision shapes that match the playable area of each graphic.
Build the player input
Choose the control style that fits your game.
For a simple left-and-right game, place two UI buttons on screen. Connect Started Touching to Set Velocity or another documented movement Behavior. One button moves left and the other moves right.
If the player needs to jump, use a separate touch button. Keep horizontal movement and jumping in separate Behavior branches so you can tune them independently.
Test movement before adding collectibles:
- Can the player reach every package location?
- Does the player stop at the level boundaries?
- Is the input comfortable when you hold the iPad?
- Can you understand the Behavior flow when you reopen it?
A holiday theme cannot rescue controls that are hard to use. Make movement readable first.
Connect the package logic
Each package needs to detect the player and update the shared count.
A basic Behavior flow is:
- Use Collision Event on the package.
- Confirm that the colliding Object is the player.
- Read the controller’s
packagesCollectedAttribute with Get Attribute. - Add one to the value.
- Save the result with Set Attribute.
- Update the package label with Set Label.
- Play a short sound with Play Sound.
- Remove or disable the collected package so it cannot score twice.
Test one package before duplicating it. Once the first package works, use the same logic for the other two.
Your label can show a simple status such as Packages: 1/3. That tells the player what changed and what remains.
Add the destination rule
Reaching the doorway should only complete the level after all three packages are collected.
Use Collision Event on the doorway, then compare packagesCollected with packagesNeeded using an If Behavior.
If the values match:
- set
gameOverto true - stop the countdown
- save a result value such as
delivered - load the Result Scene
If the values do not match, update a label with a useful message such as “Find the remaining packages.”
This condition turns the doorway from decoration into a rule. It also prevents the player from ending the level before completing the objective.
Build and test the countdown
Use a Timer to reduce timeLeft at a steady interval. Update the timer label whenever the value changes.
When timeLeft reaches zero:
- set
gameOverto true - stop player input
- save a timeout result
- load the Result Scene
Check gameOver before changing the score or triggering another ending. This avoids a package collision and a timeout completing at nearly the same moment.
Test the edge cases:
- collect the last package as the timer reaches zero
- touch the doorway before collecting every package
- touch one package more than once
- restart after a win
- restart after a timeout
A reliable result is more important than adding another decorative effect.
Add seasonal character after the mechanic works
Once the full loop is playable, use art, sound, and writing to make the game personal.
You could change:
- the packages into gifts, ingredients, lanterns, cards, or keepsakes
- the destination into a home, community table, mailbox, or celebration
- the background colors and weather
- the result message for the person or group receiving the game
- the music and sound effects, using audio you created or have permission to use
Avoid copying recognizable characters, music, logos, or artwork unless you have the necessary rights. Original details make the game feel more personal and are safer to share.
Share a version someone can finish
Before you share the Project, ask another person to play without instructions. Watch where they hesitate.
Check whether they can:
- understand the objective from the first screen
- move comfortably
- see when a package is collected
- read the remaining time
- tell why the doorway did or did not open
- replay without getting stuck
You can share a Project through the hyperPad Hub to collect feedback. If you plan to release a standalone iOS game later, treat that as a separate publishing workflow involving the appropriate export path, a compatible Mac with Xcode, App Store Connect, and Apple’s review process.
Finish the small version first
A custom holiday game does not need a large world or dozens of mechanics. One clear objective, original art, and a dependable ending are enough to make something worth sharing.
Finish the three-package delivery loop first. Then use feedback to decide whether the game needs another level, a new control, or simply a more personal message.
