Skip to content

Arcade › Diamond Duel

Diamond Duel

  • 3d
  • sports
  • baseball
  • arcade
  • timing
  • low-poly
  • browser
0
Remix it Discord

5 plays

How to play

Click the game above and it runs right here in your browser. No download, no installer, no account needed. Kimberly French built it with Cinevva, so it works on a phone or a tablet too.

Discussion

Nobody has said anything about Diamond Duel yet. Play it, then tell Kimberly French what you would add next.

Make your own game

Diamond Duel was built by Kimberly French 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 Diamond Duel 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.

Read the build brief for Diamond Duel

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 browser-based 3D baseball game titled “Diamond Duel,” using Three.js and a colorful low-poly, toy-like Kenney Mini Arena aesthetic. Show a bright sky-blue background with light fog, strong soft shadows, and a sandy/tan tiled baseball diamond enclosed by gray modular arena walls. Add repeated rear walls, side walls, corner pieces, stairs/bleachers, and red-and-gold hanging banners. Use stylized blocky soldier characters as baseball players: the player batter is in the foreground near home plate with a red helmet plume, an AI pitcher stands near the mound, a crouching catcher is behind the batter, and fielders stand around first, second, third, and center field. Use a small blue minigolf ball as the baseball and a red minigolf club as the bat. Keep the camera as a close angled third-person batting view behind and to the side of the batter (roughly looking from z=-7.8 toward the mound), with the 3D field and players filling the screen.

Implement a complete 3-inning baseball loop. In the top half of each inning, the human bats and the AI pitches automatically. Begin each at-bat with the ball at the mound, then animate it toward home plate over about 1.05–1.33 seconds. The player swings with Space, clicking the central action button, or tapping it. Swing timing relative to the ball reaching the plate determines contact: extremely accurate timing produces a home run, progressively less accurate timing produces a fly hit/double or occasional triple, a ground hit/single, a foul, or a strike. Make the red bat visibly animate through a swing. A missed pitch that is outside the randomly chosen strike zone is a ball; an in-zone pitch that is not hit is a called strike. Three strikes are an out, four balls are a walk, and fouls add a strike only while the batter has fewer than two strikes. After contact, animate the blue ball toward a ground or airborne destination, play a light impact sound for ordinary contact and a heavier bell-like sound for a home run, update the count and bases, and automatically advance runners according to the hit quality. Ground hits are singles, fly hits are usually doubles with a chance of a triple, and home runs score appropriately. Show runner characters appearing on occupied bases.

After three outs, switch to the bottom half. In the bottom half the human pitches and the AI bats. Change to a pitching camera positioned around (0,4.2,-7.2) looking toward the mound/home area. Display a strike-zone rectangle overlay and a yellow aim dot controlled by mouse movement; clamp the aim around the zone. Choose pitch type with keyboard keys 1, 2, and 3: Fastball, Curveball, and Changeup. Also allow the action button/click to throw, changing its label from “Swing” to “Throw.” On a pitch, animate the ball from mound to plate; fastball takes about 0.82 seconds, curveball 1.05 seconds and visibly curves, and changeup 1.22 seconds. A target inside the zone can result in an AI swing/miss strike, foul, ground hit, fly hit, or home run based on randomized probabilities influenced by aim, pitch type, and edge location. A target outside the zone is a ball. Return to the appropriate next batter after each result. When the bottom half ends, advance to the next inning; after inning 3, stop play, use a wider field camera, and show “Final: YOU [score] - [score] AI” with You win, AI wins, or Tie game. Do not add extra innings or other game modes.

Build the HUD as fixed translucent dark blue-gray rounded panels with white text, subtle borders/shadows, and golden highlights, matching the screenshot. At top left show “Top 1” or “Bottom 1,” “YOU 0 - 0 AI,” and the current outs, strikes, and balls. At top center show contextual messages such as “Your at-bat,” “Pitch incoming…,” “Ball. The pitch missed the zone,” “Strike,” “Foul ball,” “Ground hit — single,” “Deep fly — double,” “HOME RUN!,” “You are pitching,” and the final result, with important words in yellow. At bottom center show a large rounded yellow/orange gradient button with a dark pressed shadow, labeled Swing or Throw, plus the appropriate keyboard hint. At bottom right show a baseball-diamond indicator made of four rotated white diamond tiles: home is blue, and occupied first/second/third bases glow yellow. While pitching, show a top-right panel listing the three numbered pitch types and highlight the selected pitch. Hide the pitch panel, zone, and aim dot during batting. Make the interface responsive on small screens.

Track inning, top/bottom half, player and AI runs, outs, strikes, balls, three base occupancy flags, current pitch type, aim position, game phase, and ball position. Expose getGameState() with those values and setGameState(patch) to update score/count/bases/phase for testing. Load character, floor, walls, corners, stairs, banners, ball, and bat as external low-poly GLB assets, enable shadows, use ambient hemisphere plus directional sunlight, and provide simple impact/home-run audio that safely fails if browser autoplay restrictions prevent playback.

More free browser games

Browse the whole Arcade →