Pack It Perfect

VR game internship

A VR puzzle game about packing a suitcase, made during my internship at AlterEyes in Belgium. Every item takes up space on a 3D grid, and some items have rules about their neighbours.

Top-down view of the items and the suitcase

Disclaimer: due to NDA reasons I can't share the game's code. I can only talk about it.

Role Lead programmer & designer
Team 3: me, an artist, another programmer
Inspired by Is This Seat Taken?
Where Internship at AlterEyes, Belgium

The short versionSpace plus rules

goal

A spatial puzzle with rules

Fit every item into the suitcase's squares, then make it harder with rules about what can sit next to what.

problem

What did the player mean?

When a piece snapped in and stuck out of the box, I had to decide what the player was actually trying to do.

solution

Assume the closest fit

The piece shifts toward the nearest valid spot, one grid step at a time, without disturbing the items already packed.

Deep diveHow I designed it

Packing in 3D

item footprints (examples) design
banana        toothbrush
ooo           oo
o  o

How it reads: when you pick an item up, it shows the space it takes up on the grid. The suitcase has a bunch of squares that all need to be filled.

Fitting shapes together. You have to work out how odd shapes, like a banana, fit into what's left of the suitcase.

VR makes it better. You can see everything and look into every nook and cranny of the box.

What the grid around an item looks like

1

Look at the item

Step 1: a long rectangular item with the grid around it, viewed before placing it
Pick an item up and the grid around it shows the space it will take up.
2

Put it in the box

Step 2: the long rectangular item placed in the box where it overlaps, with the cells changing colour
Place it where it overlaps and the cells change colour to tell you.
3

Find the fit

Step 3: the long rectangular item placed correctly, fitting with no overlap
The correct solution: it fits with no overlap, and the cells show it.

Player feedback: the cells around the item change colour as you place it.

Rules inspired by Is This Seat Taken?

rule

Shark and fish

A shark can't look at a fish, or it'll eat it.

rule

Ice cube and fan

An ice cube needs to be next to a fan.

rule

The egg

You can't put anything on top of an egg.

The spatial challenge combined with the rules made for really interesting puzzles, especially in VR, where you can see everything at once.

Design challenge: reading the player's intent

Player snaps a piece part of it sticks out
→
Guess the intent the closest valid spot
→
Nudge it in one grid step at a time
→
Piece fits other items untouched

The problem. Pieces could stick out of the box when you snapped them, and the fix couldn't break any of the other items inside.

The design question. How do I decide what the player was actually trying to do?

My answer. Move the piece toward the closest valid position, and repeat until all of it is inside. The maths behind it is on the programming page.

Designing with tools

Level checker. A helper window with an algorithm that tests that every level can actually be solved.

Item grid tool. It builds the grid around a new item automatically, so the artist can import items without my help.

Easy to change rules. I built the rule system so the other programmer wouldn't have to touch it when rules changed.

PC controls. Taking the headset on and off is annoying, so I wrote PC-based controls to test the game.

The artist tool
Artist tool. Builds the grid around a new item automatically, so the artist can import items without my help.
Editor tool window 2
Tool window 1. A helper window made to make designing easier.
Editor tool window 3
Tool window 2. A helper window made to make designing easier.

My partWhat I did

01
design

Packing puzzle

I designed everything around the game, from level design to user experience & gameplay.

02
design

Rules

Neighbour rules inspired by Is This Seat Taken?, like the shark and fish, the ice cube and fan, and the egg

03
tools

Level checker

Made a lot of tools to help with level design, testing & the artist.

04
tools

Grid Engine

The core grid engine that powers the game's spatial logic.

05
production

Lead programmer

Led programming in a team of three, mentored by an experienced programmer

Want the code side? See the programming breakdown →

Looking backTakeaways

Guess player intent through playtesting

I ended up making the algorithm that pushes an item into the box based on player behavior and frustrations.

Rules plus space make puzzles

Simple neighbour rules on top of a spatial puzzle created more interesting levels than either alone.

Spend time to save it

By spending an hour or 2 on tools I ended up saving a lot of manual work.