Windy Golf 2

Behind the Build: Catching the Breeze in Windy Golf

Turning a simple golf jam into a showcase for shaders and wind physics.

Windy Golf began as part of the 8th Wall Mini Golf Game Jam where participants received a putt-putt template and were challenged to remix it into something uniquely their own. For Andrew Kurano, programmer, artist, and reluctant sound designer, it became the perfect excuse to push 8th Wall Studio to its limits. What started as a simple golf game quickly evolved into a playground for custom shaders, dynamic grass, and global wind systems that bring every hole to life.

We spoke with Andrew about his inspirations, development process, and the challenges of building Windy Golf with 8th Wall Studio.

 

What inspired you to create your experience?

This game jam was an excellent reason for me to finally give 8th Wall Studio an honest shot because I had been wanting to use it more extensively but had not had a project that felt worth investing in.

My main goal was to see whether it could handle everything I wanted for building web games, testing shader and visual capabilities, overall performance, and general architecture design.
Of course, the funnest way to do that is by making a game. To be completely honest, I was going to build a wind and grass system no matter what the theme was. You could have handed me a DDR rhythm game, and I still would have added wind and grass. Luckily, the jam ended up being mini golf, which worked perfectly with the mechanic.

As for the grass itself, I am a huge Breath of the Wild fan. That game changed the standard for foliage. While Nintendo used geometry shaders, I went with instancing for performance reasons and found it worked great on the web. Games like Ghost of Tsushima also inspired me with their use of wind as gameplay, so I added a similar global wind system to Windy Golf.

 

How did 8th Wall Studio help bring your vision to life?

8th Wall Studio as a whole made the process fast and flexible. Web development lets you build and test instantly, which is my favorite part of working on the web. You can push a change, wait a few seconds, and see it live on your phone.

My favorite feature is the built in state machine system. I usually build my own for projects, so having one available out of the box was great. It kept my code organized and let me manage game states cleanly while experimenting with mechanics.

frame-1 (2) (1)

What challenges did you face along the way? How did you overcome them?

Challenge 1: The web editor sometimes lags when moving objects, likely from syncing with the server. The desktop version avoids this by running locally, so I switched to that for smoother work.

Challenge 2: The prefab system occasionally fired multiple instances or shared variables unexpectedly. I limited prefab use when those bugs appeared.

Challenge 3: The scene hierarchy always opens every child by default. When switching between prefabs, I would lose my collapsed structure, so good scene grouping and organization were essential.

Challenge 4: Clicking a child in the viewport does not expand its parent in the hierarchy, so I often played "find the child." Opening a prefab and returning to the scene forces a refresh that reopens everything.

Challenge 5: Some ECS getter functions like getPosition return the same object reference. If you call them twice, the second overwrites the first. I learned to store values locally before reusing them.

Challenge 6: Arrays are not yet supported as editable properties, so I mimicked them by parenting entities and fetching children at runtime. The drawback is that child order is not fixed, so I tagged each with custom data and sorted manually.

 

What were the key steps you took to bring this project to life?

My plan was to lock in the core mechanic, wind and grass, early, then spend the rest of the jam expanding creatively.

1) Built the grass and wind system over about five days.

2) Refined ball physics and audio for another one to two days.

3) Expanded gameplay with wind reactive obstacles and new level designs.

4) Injected three.js code directly for mesh sampling during grass generation.

5) Tested often, sharing instant web builds so friends could play within seconds.


frame-1 (3)

 

What advice would you give other developers building with 8th Wall?

The web can do far more than people expect. I grew up on Flash games, some great and some terrible, but always exciting. With WebGL 2 and modern mobile GPUs, web games now look genuinely impressive.

Part of why I love writing shaders is to see how close the web can get to traditional engines. Web games may never replace native ones, but they will always have an unbeatable strength: instant accessibility.

 

Where do you see the future of AR and web game development going?

Right now, everyone is building their own engines, and that is great. Each has pros and cons, and 8th Wall stands out for its AR integration and flexibility. It is still evolving quickly, so I am curious whether it will stay general purpose or focus on a specific niche.

As for AR, the future depends on hardware adoption and user interest. Once the right device hits, we might see a resurgence. Until then, I will keep experimenting with 8th Wall Studio and finding new excuses to add more grass and wind.

 

Ready to build your own game?

Inspired by Andrew's journey? Sign up today to create your own 3D game or AR experience for free with 8th Wall. Whether you’re new to development or looking to push your skills further, our sample projects are the perfect place to start. Have any questions or ideas? Join the conversation on Discord.

 

Tags: Community

8th Wall

Written by 8th Wall

8th Wall is the 3D engine for the AI era, built for developers who can’t wait. We make it faster to bring ideas to life with AI-powered creation, a flexible editor, and instant publishing to web and native apps. Trusted by developers, creators, and global brands, 8th Wall powers thousands of real-world projects, from interactive experiences to full games, redefining how the next generation of worlds are built and shared.