I prompted DeepSeek V4 Pro to build an open-world survival game — the sideways camera got fixed, the missing pickup system never did


I put DeepSeek V4 Pro (Expert Mode) to the test with a hands-on deepseek coding evaluation: build a complete open world survival game in a single HTML file using Three.js, no frameworks, no external assets. The first result loaded with the camera pointed at the sky and the world rendered on its side. Three follow-up prompts later, the game was walkable, had food, and had working terrain — but a fourth problem, item switching, never got resolved. This is the real fix log, not a cleaned-up version of it.
What I asked for: The open world survival game prompt
DeepSeek V4 Pro already had one Tier 3 test on record — a different open-world survival build that went through its own 3-pass fix log. This run uses the same detailed prompt style, testing whether the model handles the same category of ask consistently on a second, independent attempt.
You are an expert Three.js game developer.
Create a complete first-person open-world survival game in ONE SINGLE HTML FILE.
IMPORTANT:
- Output ONLY one file: index.html
- Put all HTML, CSS, and JavaScript inside this single file.
- Do not create any other files.
- Do not use external assets.
- Do not use React, TypeScript, or any frameworks.
- Use only Three.js from CDN.
- The final file must run by double-clicking index.html.
- This must be a real 3D open world with procedurally generated terrain the player can freely walk across in any direction — NOT a fixed arena, NOT a flat plane with no elevation, NOT a bounded room.
WORLD GENERATION:
- Procedurally generate terrain using Perlin/Simplex-style noise (implement a simple noise function yourself if no external library is allowed) to create rolling hills and varied elevation across a large playable area (at least several hundred units in each direction)
- Generate at least 2-3 distinct biome zones based on noise/position (e.g. grassland, forest, rocky/mountain, desert or snow) with different ground colors and different vegetation density
- Scatter 3D vegetation/props appropriate to each biome: trees (trunk + foliage from primitives), rocks, bushes — these must be harvestable resource nodes (see RESOURCES)
- Terrain should extend far enough that the player doesn't hit an obvious edge during normal play; simple fog in the distance is fine to hide the horizon/pop-in
CAMERA & PLAYER:
- First-person camera at player eye height, mouse-look with pointer lock (look up/down and turn left/right)
- Player collides with terrain height (walks on the ground surface, terrain elevation affects player Y position) and cannot walk through trees/rocks
- Controls:
- WASD: move (camera-relative), speed affected by terrain slope
- Space: jump
- Shift: sprint (drains stamina)
- Left click: interact / harvest resource / attack if holding a weapon
- E: open inventory/crafting menu
- Mouse: look
SURVIVAL STATS:
- Health (0-100): drops from hunger reaching 0, fall damage, or enemy contact if any hostile creatures are present
- Hunger (0-100): decreases steadily over real time, must be replenished by eating food items
- Stamina (0-100): drains while sprinting/jumping, regenerates when idle/walking
- All three shown as UI bars (top-left), with hunger reaching 0 causing slow health drain
RESOURCES & CRAFTING:
- Harvestable nodes: trees give Wood (click/hold to chop, node depletes then respawns after a delay), rocks give Stone, bushes give Food (berries)
- Simple inventory: track item counts (Wood, Stone, Food, and any crafted items) in a UI panel (toggle with E)
- Crafting: at least 3 craftable items from gathered resources, e.g.:
- Campfire (Wood + Stone): placeable in the world, provides light at night, can cook/consume for hunger restoration
- Axe (Wood + Stone): equippable, increases wood-harvest speed/amount
- Simple shelter wall or torch (Wood): placeable, torch can be carried and lights the immediate area
- Crafting menu shows what's craftable based on current inventory (grey out items you don't have resources for)
DAY/NIGHT CYCLE:
- A real-time day/night cycle (a few minutes per full cycle is fine) with the sun/moon position moving and ambient lighting shifting color/intensity accordingly
- Visibly darker at night, light sources (campfire, torch, player-carried light) become meaningfully useful at night
WORLD INTERACTION FEEDBACK:
- Resource nodes show a hit-flash or shrink/particle effect when harvested
- Simple crosshair in the center of the screen, changes appearance when looking at an interactable object
- Brief on-screen text/toast when gaining items ("+3 Wood") or crafting something
UI:
- Health / Hunger / Stamina bars (top-left)
- Hotbar or inventory summary (bottom of screen)
- Crafting menu (toggle with E), clearly listing recipes and required resources
- Simple day/time indicator (top-right)
- Death screen if health reaches 0, with a restart button that regenerates the world
PERFORMANCE:
- Use simple/low-poly geometry and instancing or reasonable object counts for vegetation so the world doesn't tank framerate
- Reasonable draw distance with fog to mask terrain pop-in, don't attempt to render the entire world unbounded — generating a large-but-finite terrain area upfront is acceptable
- Target a playable framerate on a mid-range machine
CODE: everything inside <script> and <style>. No explanations. No markdown. No separate files. Return only the complete index.html code.
Round one: sideways camera
The first result rendered, but the world was rotated — the horizon sat where a wall should be and the camera looked wrong from the first frame. I told DeepSeek the game was sideways and asked it to fix the rotation. It came back with the camera axes corrected in 33 seconds.
Round two: no food, no way to craft
With the camera fixed, the next problem was that no food was visible anywhere in the world and crafting didn't seem to work — I asked for a starting tool so there was at least something to test with. This round took 18 seconds and came back with the player starting pre-equipped with wood, stone, food, and an axe, rather than fixing bush spawn rates directly.
Round three: broken-looking terrain
The land itself looked wrong — flat, discolored patches with no real texture. I asked DeepSeek to fix the land texture. In 30 seconds it added a canvas-generated ground texture with repeating noise-speckled detail, layered under the existing biome-based vertex coloring.
Round four: never resolved
After three rounds the game was walkable, textured, and stocked with starting resources — but a new problem showed up that didn't get fixed. There's no way to switch to the axe once other items exist, and no separate pickup action for food; the only interaction is holding click on whatever the crosshair is aimed at. This is the state the final file shipped in.
Interactive Demo
W A S D / Arrow Keys to drive
This is the real, final file from the session above — no cleanup, no manual edits, running as a single self-contained HTML page with no build step.
Terrain and biomes
The terrain uses a hand-written value-noise class (SimpleNoise) run through a 5-octave fractal sum for elevation, plus a second noise layer for biome moisture — the mesh itself is a 240×240-segment PlaneGeometry with per-vertex height and per-vertex biome color baked in via computeVertexNormals() and a custom BufferAttribute for color. Four biome bands (mountain, forest, desert, grassland) are derived from height and moisture thresholds rather than a fixed grid, so the boundaries follow the noise rather than looking tiled.
Rolling biome terrain with mountain, forest, and grassland zones visible from the player's spawn point
Resources and crafting
Trees, rocks, and bushes are placed by a scatter() pass that rejects placements too close to existing props and biases the drop table by biome — bushes lean toward grassland and desert, rocks toward mountain. Harvesting is a hold-to-chop interaction gated behind a raycaster and a per-node harvest timer that's faster with the axe equipped; resource nodes shrink to near-zero scale on depletion and respawn after 15–35 seconds. Crafting covers an Axe, a Torch, and a placeable Campfire, with the crafting panel graying out recipes the player can't currently afford.
Crafting menu open, showing Axe, Torch, and Campfire recipes with resource costs listed
Day and night
A three-minute cycle drives the sun's orbit position, ambient/hemisphere light intensity, fog color, and tone-mapping exposure together, so the whole scene dims and warms in sync rather than the sky changing color independently of the ground lighting. A point light follows the player and scales up meaningfully at night if a torch has been crafted, and placed campfires flicker via a sine-plus-random jitter on their light intensity.
Nighttime scene lit by a placed campfire and carried torch, showing the darker ambient lighting and fog
The unresolved bug
There's a hotbar UI showing wood, stone, food, an axe slot, and a torch slot — but nothing in the input-handling code lets the player switch which item is active, and there's no distinct "pick up" action separate from harvesting. The axe is auto-equipped the moment it's crafted and stays the only tool state that exists; food in inventory can only be consumed with the F key, not picked up or handled as a separate object. This wasn't a misunderstanding on the input side — the switching logic simply isn't in the code.
Hotbar UI showing Wood, Stone, Food, and Axe slots with no way to switch which item is active
DeepSeek V4 Pro coding benchmark results: What impressed me
The terrain generation held up the best across all three fixes — DeepSeek wrote its own value-noise implementation from scratch (SimpleNoise, seeded, hashed, smoothstep-interpolated) rather than reaching for a stock Perlin snippet, and it reused that same class for two more purposes (moisture and fine-grain height detail) instead of writing three separate noise functions. The day/night lighting sync — sun angle, fog color, and tone-mapping exposure all driven off one dayF value — is a level of cross-system coordination that's easy to leave inconsistent in a one-shot.
DeepSeek V4 Pro game dev limitations: What needs work
- No item switching, ever — this is the dealbreaker. Three follow-up prompts fixed camera, food, and terrain, but the request to fix axe-switching and food pickup didn't produce a fix; the underlying input code for it was never added.
- Food starts in inventory instead of the spawn-rate bug being fixed — round two's fix sidesteps the actual "no food visible" complaint by pre-stocking the player rather than adjusting how often bushes spawn near the player start point.
- Harvesting doubles as the only interaction verb — with no separate pickup action, anything added to the world later that isn't a chop-or-mine resource would need its own new interaction system built from scratch.
Try it yourself
You are an expert Three.js game developer.
Create a complete first-person open-world survival game in ONE SINGLE HTML FILE.
IMPORTANT:
- Output ONLY one file: index.html
- Put all HTML, CSS, and JavaScript inside this single file.
- Do not create any other files.
- Do not use external assets.
- Do not use React, TypeScript, or any frameworks.
- Use only Three.js from CDN.
- The final file must run by double-clicking index.html.
- This must be a real 3D open world with procedurally generated terrain the player can freely walk across in any direction — NOT a fixed arena, NOT a flat plane with no elevation, NOT a bounded room.
WORLD GENERATION:
- Procedurally generate terrain using Perlin/Simplex-style noise (implement a simple noise function yourself if no external library is allowed) to create rolling hills and varied elevation across a large playable area (at least several hundred units in each direction)
- Generate at least 2-3 distinct biome zones based on noise/position (e.g. grassland, forest, rocky/mountain, desert or snow) with different ground colors and different vegetation density
- Scatter 3D vegetation/props appropriate to each biome: trees, rocks, bushes — these must be harvestable resource nodes
CAMERA & PLAYER:
- First-person camera at player eye height, mouse-look with pointer lock
- Player collides with terrain height and cannot walk through trees/rocks
- Controls: WASD move, Space jump, Shift sprint, Left click interact/harvest, E open inventory/crafting, mouse look
SURVIVAL STATS:
- Health, Hunger, Stamina (0-100 each), shown as UI bars, with hunger loss draining health over time
RESOURCES & CRAFTING:
- Harvestable nodes: trees give Wood, rocks give Stone, bushes give Food — nodes deplete and respawn after a delay
- Inventory panel (toggle E) tracking item counts
- At least 3 craftable items (e.g. Axe, Torch, Campfire) with recipes shown and greyed out when unaffordable
- Explicitly include a way to switch between held/equipped items once more than one exists, and a distinct pickup action separate from harvesting
DAY/NIGHT CYCLE:
- Real-time day/night cycle with moving sun/moon and shifting ambient light
- Light sources (campfire, torch) become meaningfully useful at night
UI:
- Health/Hunger/Stamina bars, hotbar, crafting menu, day/time indicator, death screen with restart
CODE: everything inside <script> and <style>. No explanations. No markdown. No separate files. Return only the complete index.html code.


