10 || Math.abs($event.touches[0].clientY - touch_y) > 10) {
is_dragging = true;
}
}
"
@touchend="
if (!is_dragging) {
gallery_zoom_0 = !gallery_zoom_0;
zoomed = !zoomed;
}
"
x-show="gallery_zoom_0"
x-cloak>
10 || Math.abs($event.touches[0].clientY - touch_y) > 10) {
is_dragging = true;
}
}
"
@touchend="
if (!is_dragging) {
gallery_zoom_1 = !gallery_zoom_1;
zoomed = !zoomed;
}
"
x-show="gallery_zoom_1"
x-cloak>
10 || Math.abs($event.touches[0].clientY - touch_y) > 10) {
is_dragging = true;
}
}
"
@touchend="
if (!is_dragging) {
gallery_zoom_2 = !gallery_zoom_2;
zoomed = !zoomed;
}
"
x-show="gallery_zoom_2"
x-cloak>
10 || Math.abs($event.touches[0].clientY - touch_y) > 10) {
is_dragging = true;
}
}
"
@touchend="
if (!is_dragging) {
gallery_zoom_3 = !gallery_zoom_3;
zoomed = !zoomed;
}
"
x-show="gallery_zoom_3"
x-cloak>
10 || Math.abs($event.touches[0].clientY - touch_y) > 10) {
is_dragging = true;
}
}
"
@touchend="
if (!is_dragging) {
gallery_zoom_4 = !gallery_zoom_4;
zoomed = !zoomed;
}
"
x-show="gallery_zoom_4"
x-cloak>
10 || Math.abs($event.touches[0].clientY - touch_y) > 10) {
is_dragging = true;
}
}
"
@touchend="
if (!is_dragging) {
gallery_zoom_5 = !gallery_zoom_5;
zoomed = !zoomed;
}
"
x-show="gallery_zoom_5"
x-cloak>
10 || Math.abs($event.touches[0].clientY - touch_y) > 10) {
is_dragging = true;
}
}
"
@touchend="
if (!is_dragging) {
gallery_zoom_6 = !gallery_zoom_6;
zoomed = !zoomed;
}
"
x-show="gallery_zoom_6"
x-cloak>
10 || Math.abs($event.touches[0].clientY - touch_y) > 10) {
is_dragging = true;
}
}
"
@touchend="
if (!is_dragging) {
gallery_zoom_7 = !gallery_zoom_7;
zoomed = !zoomed;
}
"
x-show="gallery_zoom_7"
x-cloak>
10 || Math.abs($event.touches[0].clientY - touch_y) > 10) {
is_dragging = true;
}
}
"
@touchend="
if (!is_dragging) {
gallery_zoom_8 = !gallery_zoom_8;
zoomed = !zoomed;
}
"
x-show="gallery_zoom_8"
x-cloak>
10 || Math.abs($event.touches[0].clientY - touch_y) > 10) {
is_dragging = true;
}
}
"
@touchend="
if (!is_dragging) {
gallery_zoom_9 = !gallery_zoom_9;
zoomed = !zoomed;
}
"
x-show="gallery_zoom_9"
x-cloak>
10 || Math.abs($event.touches[0].clientY - touch_y) > 10) {
is_dragging = true;
}
}
"
@touchend="
if (!is_dragging) {
gallery_zoom_10 = !gallery_zoom_10;
zoomed = !zoomed;
}
"
x-show="gallery_zoom_10"
x-cloak>
10 || Math.abs($event.touches[0].clientY - touch_y) > 10) {
is_dragging = true;
}
}
"
@touchend="
if (!is_dragging) {
gallery_zoom_11 = !gallery_zoom_11;
zoomed = !zoomed;
}
"
x-show="gallery_zoom_11"
x-cloak>
10 || Math.abs($event.touches[0].clientY - touch_y) > 10) {
is_dragging = true;
}
}
"
@touchend="
if (!is_dragging) {
gallery_zoom_12 = !gallery_zoom_12;
zoomed = !zoomed;
}
"
x-show="gallery_zoom_12"
x-cloak>
10 || Math.abs($event.touches[0].clientY - touch_y) > 10) {
is_dragging = true;
}
}
"
@touchend="
if (!is_dragging) {
gallery_zoom_13 = !gallery_zoom_13;
zoomed = !zoomed;
}
"
x-show="gallery_zoom_13"
x-cloak>
10 || Math.abs($event.touches[0].clientY - touch_y) > 10) {
is_dragging = true;
}
}
"
@touchend="
if (!is_dragging) {
gallery_zoom_14 = !gallery_zoom_14;
zoomed = !zoomed;
}
"
x-show="gallery_zoom_14"
x-cloak>
10 || Math.abs($event.touches[0].clientY - touch_y) > 10) {
is_dragging = true;
}
}
"
@touchend="
if (!is_dragging) {
gallery_zoom_15 = !gallery_zoom_15;
zoomed = !zoomed;
}
"
x-show="gallery_zoom_15"
x-cloak>
10 || Math.abs($event.touches[0].clientY - touch_y) > 10) {
is_dragging = true;
}
}
"
@touchend="
if (!is_dragging) {
gallery_zoom_16 = !gallery_zoom_16;
zoomed = !zoomed;
}
"
x-show="gallery_zoom_16"
x-cloak>
10 || Math.abs($event.touches[0].clientY - touch_y) > 10) {
is_dragging = true;
}
}
"
@touchend="
if (!is_dragging) {
gallery_zoom_17 = !gallery_zoom_17;
zoomed = !zoomed;
}
"
x-show="gallery_zoom_17"
x-cloak>
10 || Math.abs($event.touches[0].clientY - touch_y) > 10) {
is_dragging = true;
}
}
"
@touchend="
if (!is_dragging) {
gallery_zoom_18 = !gallery_zoom_18;
zoomed = !zoomed;
}
"
x-show="gallery_zoom_18"
x-cloak>
10 || Math.abs($event.touches[0].clientY - touch_y) > 10) {
is_dragging = true;
}
}
"
@touchend="
if (!is_dragging) {
gallery_zoom_19 = !gallery_zoom_19;
zoomed = !zoomed;
}
"
x-show="gallery_zoom_19"
x-cloak>
10 || Math.abs($event.touches[0].clientY - touch_y) > 10) {
is_dragging = true;
}
}
"
@touchend="
if (!is_dragging) {
gallery_zoom_20 = !gallery_zoom_20;
zoomed = !zoomed;
}
"
x-show="gallery_zoom_20"
x-cloak>
10 || Math.abs($event.touches[0].clientY - touch_y) > 10) {
is_dragging = true;
}
}
"
@touchend="
if (!is_dragging) {
gallery_zoom_21 = !gallery_zoom_21;
zoomed = !zoomed;
}
"
x-show="gallery_zoom_21"
x-cloak>
10 || Math.abs($event.touches[0].clientY - touch_y) > 10) {
is_dragging = true;
}
}
"
@touchend="
if (!is_dragging) {
gallery_zoom_22 = !gallery_zoom_22;
zoomed = !zoomed;
}
"
x-show="gallery_zoom_22"
x-cloak>
10 || Math.abs($event.touches[0].clientY - touch_y) > 10) {
is_dragging = true;
}
}
"
@touchend="
if (!is_dragging) {
gallery_zoom_23 = !gallery_zoom_23;
zoomed = !zoomed;
}
"
x-show="gallery_zoom_23"
x-cloak>
10 || Math.abs($event.touches[0].clientY - touch_y) > 10) {
is_dragging = true;
}
}
"
@touchend="
if (!is_dragging) {
gallery_zoom_24 = !gallery_zoom_24;
zoomed = !zoomed;
}
"
x-show="gallery_zoom_24"
x-cloak>
Why It Stands Out
Key Features
- First DIY curved golf simulator enclosure — panoramic, immersive field of view
- Curved design enhances depth perception for a realistic on-course feel
- Wraparound ball-stop fabric with steel fittings and foam inserts
- 2 impact screen options: Premium and High-Contrast Gray Premium
- Suitable for residential and commercial simulator bays
- Custom sizing available — contact us with your room dimensions
Under the Hood
Technical Specifications
| Width Range | 12 ft – 20 ft (144" – 240"), custom to the inch |
| Height Range | 8 ft 6 in – 10 ft (102" – 120") |
| Depth Range | 6 ft 10 in – 20 ft (82" – 240") |
| Frame Geometry | Curved side walls — no 90° corners, reduces ricochet risk |
| Frame Pipe | 2" EMT conduit — sourced locally at any hardware store, not included in kit |
| Impact Screen | 3-layer ballistics-grade polyester with noise-dampening center layer |
| Included Hardware | Curved corner/joint fittings, side curtains, connector hardware |
| Sizing Options | 6 standard sizes, or fully custom dimensions to the inch |
| Assembly | DIY, typically a weekend build with 1–2 people |
| Recommended Ceiling | 9 ft minimum for standard swings; confirm against your launch monitor's swing clearance |
Overview
What's In The Box
- Carl's Place curved impact screen (your choice of material)
- Wraparound ball-stop fabric enclosure
- Steel corner fittings
- Foam inserts
- All hardware and assembly guide
Buyer's Guide
Is This Right For You?
✓ Dedicated sim room, 12ft+ wide
The curved geometry needs more width than a flat kit — best in a room you've already measured for depth and ceiling height
✓ Golfers upgrading from a flat screen
Wraparound field of view is the single biggest upgrade you can make to an existing bay without moving to a full HD Golf system
✓ Comfortable with a DIY weekend build
Frame pipe is sourced locally and assembled on site — basic tools and patience required
✗ Want a fully boxed, pipes-included kit
This is a component kit — 2" EMT conduit is not shipped with it, you'll pick it up locally to keep freight costs down
✗ Tight garage or basement bay
Under 12ft wide or under 8.5ft ceiling — look at the Carl's Place DIY or Pro flat enclosure instead
✗ First simulator build, budget-constrained
The curved kit sits at the premium end of Carl's Place enclosures — a flat DIY kit gets you playing sooner for less
Build Your Setup
What You'll Also Need
2" EMT Frame Pipe
Not included — pick up locally at any hardware store to your kit's cut list
Golf Simulator Projector
Short-throw projector sized to your screen's curve and width
View →
Launch Monitor
Tracks your ball and feeds data to the sim software
View →
Hitting Mat & Turf
Protects your floor and simulates fairway or tee
View →