IRUL — THE LAST NIGHT (இ\xe0\xae\xb0\xe0\xaf\x81\xe0\xae\xb3\xe0\xaf\x8d — கடைசி இரவு) is a complete, playable, browser-based 3D Tamil psychological horror game. The protagonist receives a mysterious message and returns to an abandoned Tamil village, deserted after a strange incident twenty years earlier. Across seven chapters the player must discover what happened to the missing children, why the temple is sealed, who is following them, why the entity knows their name, and what happened on the final night.
This document specifies the game as an actual playable product built inside the workspace — not a demo, landing page, static 3D scene, or fake UI. It is written for the engineering team that will build, run, test, debug, and continuously improve the game, and it is the single source of truth for scope, behavior, ownership, and acceptance.
The audience is a single active human role — the Player (Protagonist) — playing first-person on a modern desktop browser. The game is delivered as a first-party web application with a public entry surface and a cohesive in-game workspace.
IRUL — THE LAST NIGHT is a first-person horror experience rendered in real time in the browser. The player explores a connected night-time Tamil village environment, manages movement, stamina, flashlight and battery, interacts with the world, collects inventory items and clues, solves environmental puzzles, and survives encounters with a sophisticated entity named TheEntity / அவள் that hears footsteps, investigates noise, reacts to the flashlight, searches rooms, stalks, and initiates major chase sequences.
The game is built with React + TypeScript + Vite + Three.js, using React Three Fiber where useful, Drei, the Web Audio API, CSS, and GLTF/GLB asset support, in a clean modular architecture with no single giant component. The world is a connected environment spanning an abandoned road and bus stop, a Tamil village with houses, tea shop, water tank and shrine, a large abandoned old house, an abandoned school, a rural temple, a dark forest, and an underground final chamber. Environmental storytelling is carried by old photographs, diaries, toys, radios, broken furniture, Tamil writing, footprints, locked doors and hidden passages.
Horror is built through silence, shadows, distant movement, footsteps, hallucinations, environmental changes and uncertainty — the monster is not constantly shown. A reusable HorrorEventManager drives random and scripted events, including a bathroom mirror sequence and a school child-whisper event. Tamil subtitles and dialogue, positional 3D audio, and strategic silence carry the atmosphere. Five environmental puzzles gate progression, each with discoverable clues. The story runs through seven chapters and resolves into at least three endings based on clues and choices. The player has no conventional weapons and survives through hiding, running, light, puzzles and strategy.
The product is a first-party, browser-delivered game. Delivery and access ownership are as follows:
localStorage, not by a server account.No application-owned account, login, registration, or permission system is part of the current scope. Identity continuity is local-device only. There is no differentiated role-based visibility or permission control over shared product state; the single active human role has full access to the game's own state.
Current scope covers everything specified in this document: the playable game, its world, player systems, entity AI, horror events, Tamil audio, puzzles, seven chapters, three endings, cinematic visuals, and performance optimization.
Future scope is not defined by the source. No future features are committed here.
Not applicable. No reference directive with content_source authority was supplied.
The page inventory is the closed, ordered page contract: Landing and Game.
localStorage; endings.Each requirement is a distinct story point with provenance, lifecycle facts, and observable acceptance. Provenance is explicit (source-stated), basic_default (accepted default), or required_inference (indispensable inferred mechanics).
FR-1 — Playable game delivery As the Player (Protagonist), I should play a complete, playable browser-based 3D Tamil psychological horror game inside the workspace, so that I experience an actual game rather than a demo, landing page, static 3D scene, or fake UI.
FR-2 — Technology and architecture As the Player (Protagonist), I should play a game built with React + TypeScript + Vite + Three.js, React Three Fiber where useful, Drei, the Web Audio API, CSS, and GLTF/GLB support, in a clean modular architecture, so that the game is maintainable and performant.
FR-3 — Premise and setting As the Player (Protagonist), I should play a first-person horror experience set in an abandoned Tamil village at night, where the protagonist receives a mysterious message and returns to a village abandoned after a strange incident 20 years ago, so that the story has its intended context.
FR-4 — Mystery questions to discover As the Player (Protagonist), I should be able to discover what happened to the missing children, why the temple is sealed, who is following them, why the entity knows their name, and what happened on the final night, so that the central mysteries resolve through play.
FR-5 — Connected world As the Player (Protagonist), I should explore a connected environment containing an abandoned road and bus stop, a Tamil village with houses, tea shop, water tank and shrine, a large abandoned old house, an abandoned school, a rural temple, a dark forest, and an underground final chamber, so that the world is cohesive and traversable.
FR-6 — Environmental storytelling As the Player (Protagonist), I should encounter realistic environmental storytelling through old photographs, diaries, toys, radios, broken furniture, Tamil writing, footprints, locked doors and hidden passages, so that the world tells its story.
FR-7 — Player movement and look As the Player (Protagonist), I should use WASD movement and mouse look with pointer lock, so that I can navigate the world in first person.
FR-8 — Sprint, crouch, and stamina As the Player (Protagonist), I should sprint and crouch, with stamina governing exertion, so that movement has tactical cost.
FR-9 — Flashlight and battery As the Player (Protagonist), I should use a flashlight with a battery, so that light is a resource and a survival tool.
FR-10 — Interaction using E As the Player (Protagonist), I should interact with the world using E, so that I can open doors, pick up items, read objects, and operate puzzle elements.
FR-11 — Inventory As the Player (Protagonist), I should have an inventory, so that collected items and clues are tracked and usable.
FR-12 — Objectives As the Player (Protagonist), I should have objectives, so that I know the current goal.
FR-13 — Fear/sanity As the Player (Protagonist), I should have a fear/sanity state, so that horror has a mechanical dimension.
FR-14 — Save/load using localStorage
As the Player (Protagonist), I should save and load using localStorage, so that my progress persists on my device.
localStorage; failure/recovery = corrupt or unreadable saves are handled with a clear message and the ability to start fresh; continuation = the player resumes from the saved state.localStorage and handles failure gracefully.FR-15 — TheEntity and AI states As the Player (Protagonist), I should encounter a sophisticated entity called TheEntity / அவள் with AI states IDLE, PATROL, INVESTIGATE, SEARCH, STALK, CHASE, ATTACK, and DISAPPEAR, so that the threat behaves believably.
FR-16 — Entity senses and behavior As the Player (Protagonist), I should have TheEntity hear footsteps, investigate noise, react to the flashlight, search rooms, stalk me, and initiate major chase sequences, so that my actions have consequences.
FR-17 — Horror through restraint As the Player (Protagonist), I should experience fear built through silence, shadows, distant movement, footsteps, hallucinations, environmental changes and uncertainty, with the monster not constantly shown, so that dread is sustained.
FR-18 — HorrorEventManager As the Player (Protagonist), I should experience a reusable HorrorEventManager driving random and scripted events — door opening, objects moving, radio activation, whispers, footsteps, lights failing, shadows, distant silhouettes, mirror events and sudden appearances — so that horror is varied and reusable.
FR-19 — Bathroom mirror sequence As the Player (Protagonist), I should experience a bathroom mirror sequence where the reflection stops following the player and slowly turns its head, so that a signature horror moment occurs.
FR-20 — School child-whisper event As the Player (Protagonist), I should experience a school event where a child whispers "அண்ணா... இங்க வ\xe0\xae\xbe\xe0\xae\x99\xe0\xaf\x8d\xe0\xae\x95..." and later "நீ\x20\xe0\xae\x8fன் வந்த?", so that the school chapter carries its scripted horror.
FR-21 — Tamil subtitles and dialogue As the Player (Protagonist), I should see natural Tamil subtitles and dialogue, so that the story is told in Tamil.
FR-22 — Audio design As the Player (Protagonist), I should hear rain, insects, distant dogs, wind, wooden doors, footsteps, radio static, temple bells, whispers, and positional 3D audio, with silence used strategically, so that the soundscape carries the horror.
FR-23 — Environmental puzzles As the Player (Protagonist), I should solve meaningful environmental puzzles involving an old clock, a school number sequence, temple symbols, a radio frequency, and an underground final door, so that progression requires thought.
FR-24 — Discoverable clues for every puzzle As the Player (Protagonist), I should find discoverable clues for every puzzle, so that solutions are earned rather than guessed.
FR-25 — Seven chapters As the Player (Protagonist), I should progress through seven chapters — The Village → The House → The School → The Forest → The Temple → The Truth → The Last Night — so that the story has its intended structure.
FR-26 — Major chase As the Player (Protagonist), I should experience a major chase through the house, village and forest, so that the game has its central pursuit sequence.
FR-27 — No conventional weapons As the Player (Protagonist), I should have no conventional weapons and survive through hiding, running, light, puzzles and strategy, so that survival is tactical.
FR-28 — At least three endings As the Player (Protagonist), I should reach at least three endings based on clues and choices — escape without complete truth, discover the truth and escape, or become trapped underground — so that my choices matter.
FR-29 — Cinematic night visuals As the Player (Protagonist), I should see cinematic night lighting, fog, rain, moonlight, lanterns, flashlight shadows, particles, subtle bloom, vignette and film grain, with playable visibility, so that the game is atmospheric and readable.
FR-30 — Cinematic title/loading screens and premium dark UI As the Player (Protagonist), I should see cinematic title/loading screens and a premium dark UI, so that presentation matches the game's tone.
FR-31 — Performance optimization As the Player (Protagonist), I should experience smooth performance on modern desktop browsers, achieved through frustum culling, lazy loading, limited dynamic lights, efficient particles, resource disposal and distance-based AI updates, so that the game runs well.
FR-32 — Systematic development and testing As the Player (Protagonist), I should receive a game built systematically (architecture → renderer → player → world → flashlight → interaction → inventory → puzzles → audio → horror → entity AI → chase → story → endings → optimization → testing), with the project run after every major step, console/build errors inspected and fixed, and no core TODOs, fake functions, broken imports or unfinished gameplay, so that the final product is complete.
FR-33 — Anonymous entry before gameplay As the Player (Protagonist), I should reach the anonymous Landing entry before starting gameplay, so that I can understand the game and begin.
FR-34 — Begin or resume a local-device save As the Player (Protagonist), I should begin or resume a local-device save through the Game experience, so that I can start fresh or continue.
FR-35 — Load locally stored progression on return As the Player (Protagonist), I should have my locally stored progression loaded when I return, so that continuity is preserved on my device.
FR-36 — Clues and puzzles gate later chapters and endings As the Player (Protagonist

Tamil psychological horror
இருள் — கடைசி இரவு
“இருள் உன்னை நினைவில் வைத்திருக்கிறது.”The dark has kept you in mind
A message arrives on a night with no sender and no explanation. It carries one instruction — come back to the village you left as a child. You return to find the road empty, the tea shop cold, the shrine untouched, and every door still barred from the inside. No one has lived here for twenty years, yet someone has been waiting for you to arrive.
Twenty years ago an incident emptied the village in a single night. The children were never found, the temple was sealed, and the story was never written down. You were the only one who left carrying a memory you could not prove — and the dark has been patient ever since.
ஒரு தமிழ் உளவியல் திகில் அனுபவம்A Tamil psychological horror experience told in first person.
இரவு தொடங்குகிறது
No local save on this device yet — Begin starts a new night from the abandoned road. Progress is kept in this browser only.

Tamil psychological horror
இருள் — கடைசி இரவு
“இருள் உன்னை நினைவில் வைத்திருக்கிறது.”The dark has kept you in mind
A message arrives on a night with no sender and no explanation. It carries one instruction — come back to the village you left as a child. You return to find the road empty, the tea shop cold, the shrine untouched, and every door still barred from the inside. No one has lived here for twenty years, yet someone has been waiting for you to arrive.
Twenty years ago an incident emptied the village in a single night. The children were never found, the temple was sealed, and the story was never written down. You were the only one who left carrying a memory you could not prove — and the dark has been patient ever since.
ஒரு தமிழ் உளவியல் திகில் அனுபவம்A Tamil psychological horror experience told in first person.
இரவு தொடங்குகிறது
No local save on this device yet — Begin starts a new night from the abandoned road. Progress is kept in this browser only.
No comments yet. Be the first!