Create a browser-based 3D prototype in Three.js: a stylized low-poly party archipelago inspired by Ibiza.
Main objective:
Build a detailed explorable low-poly island world with a festive beach-club atmosphere. The result must feel like a small open-world ecosystem, not just a flat decorative scene. The scene should be visually rich, readable, alive, and full of coherent props, characters, animals, boats, and points of interest.
Art direction:
- Use a low-poly style, but make it fairly detailed and polished.
- Keep clean geometry, strong silhouettes, and colorful premium materials.
- The world must feel sunny, vibrant, festive, summery, and inspired by Ibiza beach clubs.
- Avoid a childish look. Keep it stylized, attractive, readable, and polished.
- The island must be fullscreen in the browser canvas and feel large, immersive, and explorable.
- Focus on desktop experience first. Do not prioritize mobile unless explicitly asked.
Technical requirements:
- Use Three.js with ES modules and Vite.
- No broken imports, missing files, invalid asset paths, or loading errors.
- Prefer procedural/code-generated low-poly meshes over external assets.
- Organize the code in a modular senior-level structure.
- Separate renderer, scene, camera, lights, controls, animations, island generation, water, props, vegetation, paths, decorations, characters, ecosystem, and archipelago logic.
- The project must run locally without Three.js errors.
- Keep performance reasonable despite a detailed world.
Project structure should include at least:
- index.html
- src/main.js
- src/core/renderer.js
- src/core/scene.js
- src/core/camera.js
- src/core/lights.js
- src/world/island.js
- src/world/water.js
- src/world/barArea.js
- src/world/beachSportsArea.js
- src/world/vegetation.js
- src/world/props.js
- src/world/paths.js
- src/world/decorations.js
- src/world/characters.js
- src/world/partyAtmosphere.js
- src/world/archipelago.js
- src/world/ecosystem.js
- src/world/navigation.js
- src/systems/animations.js
- src/systems/controls.js
World scale and layout:
- The main island must be large, not tiny or toy-like.
- Add a much larger beach area than a simple small strip.
- The island must not be a simple circle; give it an organic irregular silhouette.
- Sculpt terrain variation: broad sandy beaches, flatter activity zones, low hills, rocky viewpoint areas, shoreline transitions, and wet sand.
- Add at least 10 additional large islands around the main island.
- These secondary islands must be real landmasses, not tiny decorations.
- Some secondary islands should be as large as the main island, and some can be up to around 3 times larger.
- The islands must be spatially respected: no overlapping islands, no boats/routes crossing through island terrain, no props floating off the land.
- Separate the islands with visible water channels so the world feels like a coherent archipelago.
- Use fog/sky/camera composition so distant islands feel like a believable horizon, not broken floating geometry.
Main island required zones:
1. Water area:
- Surround the island and archipelago with visible animated sea water.
- Add gentle animated low-poly water movement.
- Include shoreline/beach transitions, foam, wet sand, docks, buoys, boats, jet skis, inflatables, and floating beach items.
- Floating objects must stay at water level and not appear to fly.
2. Beach club / bar area:
- Create a lively beach club as the heart of the main island.
- Include a main bar structure with counters, stools, tables, parasols, lounge chairs, palm decorations, lights, banners, bottles, speakers, and decorative props.
- Add a dance/chill zone nearby.
- Add a DJ booth or small party platform.
- Add string lights, lanterns, torches, and festive lighting.
- Add a premium Ibiza beach-club vibe with lots of life, but keep the layout readable.
3. Beach sports area:
- Create a separate beach sports zone.
- Include a clear beach volleyball court with net, posts, lines, balls, benches, flags, signs, and spectators.
- Add a second activity such as beach soccer or an outdoor fitness corner.
- Keep this area spatially separated from the bar while connected by paths.
Additional main island areas:
- A small elevated viewpoint or rocky hill.
- Palm tree clusters and tropical vegetation.
- Clear paths connecting bar, sports, pool, dock, viewpoint, and beach.
- Chill lounge areas with deck chairs and umbrellas.
- A pool area if it fits the layout.
- Arrival/dock zone.
- Torches, lanterns, signs, fences, crates, surfboards, towels, coolers, rocks, cliffs, sand variations, wooden platforms, and bridges where useful.
Characters and life:
- Add many stylized low-poly people.
- Include partygoers, dancers, bar guests, sports spectators, fishers, sunbathers, swimmers, and people walking around the sand.
- Characters must make the world feel alive, not static.
- Some characters should dance or idle in place.
- Some characters must move through the world on safe routes.
- Moving people on sand must not walk into water.
- Moving people must not walk on props such as bars, loungers, stools, rocks, umbrellas, volleyball nets, docks, or vegetation.
- Moving people must not get stuck.
- Add a simple navigation/safe-route system for walking characters:
- validate terrain before placing/moving characters
- avoid forbidden obstacle zones
- keep walkers inside island bounds
- keep walkers on clear sand/path/ground
- if a route segment becomes invalid, skip to another valid segment
- Mark/debug moving guests so their positions can be validated.
Archipelago life and ecosystem:
- Add at least 10 large secondary islands with their own beaches, vegetation, docks, small resort details, lounge props, people, fishers, and walkers.
- Add boats moving around islands and through water channels.
- Add swimmers near beaches.
- Add dolphins, sharks, whales, and fish schools in the water.
- Marine animals must remain in water routes and not cross land.
- Dolphins can jump subtly, but they must not look like flying objects.
- Boats must move on water and not clip through islands.
- Add fishermen on docks or shorelines.
- Add people sunbathing on towels/loungers.
- Make the world feel like a living beach ecosystem.
Camera and controls:
- Make the world explorable in real time.
- Use a smooth third-person/free-exploration camera.
- The camera must feel usable immediately, not too high like a satellite view.
- Start near the main beach club with the island filling the screen.
- Allow mouse drag to look around.
- Do not force pointer lock on a simple click.
- Optionally allow double-click for pointer lock.
- Use WASD/arrow-key movement and Shift sprint.
- Movement must be smooth and stable.
- Prevent the player/camera from leaving the playable archipelago too easily.
- The camera should not clip badly through terrain.
- Allow exploration across the larger archipelago space, while keeping height grounded to land/water surfaces.
Atmosphere:
- Bright sunny daytime setup.
- Warm inviting sky color.
- Soft fog to make distant islands feel integrated.
- Good shadows where relevant.
- Animated ambient details: water movement, lights flickering, palm sway, people moving, boats bobbing, swimmers, marine life, small prop motion.
- Reduce excessive airborne particles or floating decorative clutter.
- Party atmosphere should be lively but not visually chaotic.
Performance:
- Keep performance reasonable in browser.
- Use instancing where helpful for repeated grass/vegetation.
- Reuse materials.
- Keep geometry low-poly and clean.
- Avoid excessive draw calls where possible.
- The scene should be detailed but still performant.
Validation expectations:
- The project must build successfully.
- No Three.js loading errors.
- No console/page errors.
- The first view should show a large fullscreen island scene.
- The beach club, sports area, water zone, docks, paths, vegetation, characters, and props must be clearly identifiable.
- There must be 10+ additional large islands.
- Moving characters must actually move.
- Moving characters must not walk on water.
- Moving characters must not walk through or on top of props.
- Boats and marine animals must remain in water.
- Islands must not overlap or look broken/floating.
- The camera must be usable and smooth. Prompt by @givros , posted on X on 2026-06-21. x.com/givros/status/2068751494405345674 . Copies include this credit.