run install.bat to install the game You will then find the .exe in dist folder.
Tree Packing Studio v10 is the refined, high-precision follow-up to the Kaggle Santa 2025: Tree Packing Challenge. It lets you:
- Load any previously recorded configuration (
N=001..200) fromcomparison/with a single press. - Fine-tune positions and rotations with sub-millimeter keyboard nudges, rotate increments, and a "pan" magnifier mode.
- Run the full optimizer or the new Auto-O multi-pass helper with controlled pass counts.
- Record, log, and snapshot layouts with canonical tracking, while comparison tools let you score and compare submission files offline.
It was built to be 100% deterministic in bookkeeping, 100% precise in editing, and easy for collaborators to drop into an open-source repo.
TreePackingStudioV10/
├── tree_sandbox_v10.py # Main app (pygame + Shapely)
├── game_v10/ # Outputs (dynamic; created on run)
├── comparison/ # Put your recorded `submitted1.csv`, `raw.csv`, etc.
├── tools/
│ ├── compare_n_s.py
│ ├── compare_submissions.py
│ ├── whatsmyscore.py
│ └── n1_opt.py
└── README.md
Design your workflow:
- Place your
submitted1.csv,raw.csv, or any Kaggle-style CSV insidecomparison/. - Run
python tree_sandbox_v10.py. Outputs are written undergame_v10/, includinglayout_kaggle.csv,canonical/canonical.csv, snapshots, and automation logs. - Use the UI buttons (+ hotkeys) to:
GGenerate / Auto-placeOOptimize (restores the best layout when finished)TAuto-O (runs the chosen optimize pass count)MEnter pan mode for the magnifierAlt+WheelsZoom to cursor,Ctrl+Wheelto rotate, andAlt+Arrowsfor precise nudgesKLoad a configuration: type the CSV file name (just the name, because it already looks incomparison/), clickSet, thenLoad N (K).
- Record (
L) to log snapshots + canonical updates, keepinghigh scorein sync.
tools/compare_n_s.py: CompareSperNbetween any two CSVs.tools/compare_submissions.py: Full summary withs,s², and which layout wins.tools/whatsmyscore.py: Computes the Kaggle metric (Σ S² / N).tools/n1_opt.py: Explore the optimal rotation forN=1(leveled rotation search).
All tools reference this repository's comparison/ folder by default.
The optimizer stores its start layout and snaps back to the best configuration when a pass finishes. The XY/rotation physics are precise (sub-degree rotation, 0.0001 units nudges) and allow you to align tree edges with confidence.
Ctrl+Mouse Wheel: Zoom toward cursorMouse Wheel: Rotate hovered treeAlt+Arrow: Micro-nudge selected tree[ / ]: Rotate selected treeM: Toggle pan modeT: Run auto multi-pass optimizeF9: Run full automation sweepK: LoadNfrom comparison CSVL: Record
This studio is inspired by the Santa 2025 Kaggle challenge. While the final submission window closed, we package our tools and data so others can reproduce or extend the effort. This code is released under CC BY 4.0; feel free to fork, improve, and share.
git initinside this folder, commit the files.- Add documentation / sample configs as needed.
- Push to your new GitHub repo (e.g.,
christmas-tree-packing-studio). - Publish a short write-up explaining how to use the UI + tools.
Let me know if you want me to draft a sample README summary for that repo description or a release note.