Arcade › Harbor of Fire
Click the game above and it runs right here in your browser. No download, no installer, no account needed. Elnur built it with Cinevva, so it works on a phone or a tablet too.
Nobody has said anything about Harbor of Fire yet. Play it, then tell Elnur what you would add next.
Harbor of Fire was built by Elnur with the Cinevva game creator: describe the game you want in chat, watch it get built, and play it in your browser minutes later.
Remix Harbor of Fire opens the real game in the creator and forks its actual files, chat and design doc, so you start from the code rather than from a description.
Cinevva's analyzer read this game's design doc and its source, then wrote the brief below. "Make your own" hands it to the game creator as your opening message, so you start from a real spec rather than a one-line idea.
Create a 3D third-person story game titled "Harbor of Fire," set in the fictional Caspian-inspired city of Port Sahran. The player controls Rauf, a blocky human character, viewed from a trailing over-the-shoulder/third-person camera at about 7 units distance. Build the city as a broad flat urban environment with a muted blue-gray ground, foggy pale blue sky/background, strong warm sunlight and soft shadows. Lay out a grid of dark asphalt boulevards crossing the map, with repeated narrow sandy/gold strips along the streets. Place scattered stylized low-poly commercial buildings in blocks/districts, several parked vehicles (a taxi, sedans, and a police car), and about ten simple blocky civilian NPCs. Use a clean low-poly asset-pack aesthetic, with cool slate architecture and pavement contrasted by amber sunlight and gold UI accents. The core loop is exploration and objective progression. Begin with a full-screen dark translucent story menu over the 3D scene. It should show the title, the subtitle "An original crime drama in Port Sahran — inspired by Caspian skylines, not a real place," and the premise that Rauf returns after his brother disappears and follows a trail through docks, old stone streets, and glass towers while deciding who deserves his trust. Include SMOOTH, STANDARD, and ULTRA graphics buttons, with STANDARD selected by default, plus a large START STORY button. The footer should explain mobile controls (drag/left stick or arrows, FIRE, JUMP, and E) and desktop controls (WASD, Space, E, F). After starting, show a fixed HUD. At top left use a dark rounded translucent card reading "HARBOR OF FIRE," "Rauf · Port Sahran," and "Cash ₼120 · Heat 0," with a horizontal health bar beneath it initially at 100%. At top right show "Level 1/20" and "60 FPS." Beneath the top-left card show a mission card with the current mission title and hint. Create a bright cyan/blue circular or cylindrical marker on the ground at the current objective; it should rotate and bob gently. The player reaches the marker and presses E/Enter (or the on-screen interaction button) to open a bottom dialogue card. Freeze gameplay during dialogue. Show a speaker name, a line of story dialogue, and a Next button; on level 20 label it Finish. When advancing a normal mission, hide dialogue, increment the level, award ₼50, reduce heat by 1 but not below zero, update the mission text, and move the marker. Implement exactly 20 sequential mission chapters with these titles, objective hints, speakers, and lines: 1 "The First Spark" — "Reach the blue marker near the old boulevard." Speaker Rauf: "The city still smells like salt and gasoline. If my brother left a message, it will be here." 2 "A Debt in Dust" — "Meet Leyla outside the spice market." Speaker Leyla: "Your brother stole something powerful. Everyone wants it — especially the people who made him vanish." 3 "Borrowed Wheels" — "Steal the black sedan and lose the tail." Speaker Rauf: "I hate stealing. But I hate cages more." 4 "Old Stone, New Blood" — "Search the old quarter for the missing ledger." Speaker Murad: "Truth is expensive in Port Sahran. Pay with courage." 5 "Two Doors" — "Choose who gets the ledger: Leyla or Murad." Speaker Rauf: "Trust is a weapon. Point it carefully." At this fifth chapter, replace Next with two choices: "Take the risk" (choose Leyla, add ₼100, then advance) and "Play it safe" (choose Murad, add 1 heat, then advance). 6 "Glass Towers" — "Reach the tower district without raising the heat." Speaker Leyla: "The rich built mirrors so they never had to look down." 7 "Night Market" — "Protect the courier through the night bazaar." Speaker Courier: "They are closing in!" 8 "Red Sirens" — "Survive a police chase to the harbor road." Speaker Dispatch: "Unit 12, stop that vehicle now!" 9 "The Quiet Gun" — "Recover a hidden pistol from a safehouse." Speaker Rauf: "No more running empty-handed." 10 "Salt and Smoke" — "Break into the dock warehouse." Speaker Murad: "One door. Three guards. A lifetime of consequences." 11 "The Missing Brother" — "Find the recording at Pier 7." Speaker Rauf: "You left me a city-sized problem, Arman." 12 "Fault Line" — "Confront the gang that owns the dry docks." Speaker Sahir: "You think bravery makes you special? It only makes you visible." 13 "Aftershock" — "Escape through the container maze." Speaker Leyla: "Keep moving. Grief can wait." 14 "Blackout" — "Restore power to the old lighthouse." Speaker Rauf: "The beam will show us who is watching." 15 "The Witness" — "Get a witness safely to the courthouse." Speaker Witness: "I saw the man behind it all." 16 "Crown of Glass" — "Infiltrate the tower penthouse." Speaker Rauf: "No more favors. Tonight we take the truth." 17 "The Price" — "Decide whether to expose the city or save one life." Speaker Leyla: "Every victory leaves a shadow." 18 "Burning Harbor" — "Race back to the docks as the city turns on itself." Speaker Rauf: "This ends where it began." 19 "Last Crossing" — "Defeat Sahir and reach the ferry." Speaker Sahir: "You were always going to come back." 20 "Harbor of Fire" — "Make the final choice beneath the Caspian sunrise." Speaker Rauf: "A city is not its towers. It is the people who refuse to disappear." After Finish, return to the title menu and change the button to PLAY AGAIN. Movement should use a third-person controller with walking speed around 8, jump speed around 10, gravity around -24, and a slope limit around 42 degrees. Support desktop WASD plus Space for jump, E for interaction, and F for firing; support mobile/on-screen directional arrow controls, E/Enter, FIRE, and JUMP buttons. Put the controls along the bottom: directional buttons on the left and gold E/Enter, red FIRE, and JUMP buttons on the right. Keep the HUD and controls as dark navy translucent rounded cards/buttons with thin light borders; use gold for titles and interaction, red for FIRE, cyan for the objective marker, and a teal-to-gold health fill. Include the small interaction systems that are actually present: pressing E near a parked taxi/sedan/police car toggles vehicle driving, marks it stolen, adds 1 heat up to a maximum of 5, awards ₼25, and displays a temporary mission-area toast saying "Vehicle stolen — reach the marker." Leaving it displays "You left the vehicle." While driving, the stolen vehicle follows the player when close, matching the player's position and facing. Pressing FIRE briefly reveals a pistol model in Rauf's hand, adds 1 heat up to 5, awards ₼5, and shows "Shot fired — heat rising." Do not invent combat, enemy AI, police pursuit behavior, damage, or elaborate vehicle physics: the code's visible mechanics are exploration, marker interaction, simple vehicle toggling, firing feedback, heat/cash changes, dialogue, and the single level-5 choice. Retain a health bar initialized at 100%, but do not require health loss if no mechanic changes it. Use responsive rounded HTML/CSS overlays with a blurred dark navy appearance so the interface remains readable over the foggy 3D city on both mobile and desktop.