Skip to content

Arcade › Model Duel

Model Duel

  • 3d
  • fighting
  • arena
  • duel
  • action
0
Remix it Discord

0 plays

How to play

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

Discussion

Nobody has said anything about Model Duel yet. Play it, then tell Teagon Dreher what you would add next.

Make your own game

Model Duel was built by Teagon Dreher 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 Model 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 Model 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 simple 3D browser fighting game titled “Model Duel,” using Three.js with a dark navy-purple background and a fixed elevated perspective camera. The arena is a square 25x25 floor plane centered at the origin, colored dark gray-purple, bounded on the left and right by tall dark wall blocks at x=-12 and x=12; use ambient and directional lighting so the scene has a basic shaded 3D look. Place a small green 1x1x1 test cube visibly at world position (0,2,3), as in the original scene.

Load two supplied OBJ character assets from ZIP files if available: use the first archive for the player and the second for the enemy. Parse the OBJ contents and any PNG texture inside each ZIP. Render the player model tinted blue (base color #4488ff with a subtle dark-blue emissive tint), and the enemy tinted red (#dd4444 with a subtle dark-red emissive tint), using double-sided Phong materials. Scale each imported model approximately (2.5, 2.5, 1.5). If an asset fails to load, substitute a simple rectangular humanoid-like box mesh. Start the player at (-4,0,0) and the enemy at (4,0,0). Position model visuals at their logical x/z positions and y plus about 1.2, with a subtle synchronized idle bob. Both models should continuously face one another; tilt the flat imported models backward around X by about -0.8 radians. During attacks, animate a temporary roll around Z.

The game is a one-on-one arena duel. Both fighters have 100 HP. The player moves with WASD in the horizontal arena plane: W moves toward negative Z, S toward positive Z, A toward negative X, and D toward positive X. Movement sets velocity to about 8 units/second in the selected direction, with diagonal movement normalized. Apply gravity of about 25 units/second squared, allow jumping with SPACE only while grounded, setting upward velocity to about 12. Keep both fighters inside x/z bounds of -11 to 11 and apply friction/damping to horizontal velocity each frame. The enemy is AI-controlled: it moves toward the player at about 5 units/second until within 3 units, then waits roughly 1.2 seconds between attacks. Its attack is randomly either the light or heavy attack.

Player attacks are triggered by J for a light attack or K for a heavy attack, provided the player is not already attacking. A light attack lasts 0.4 seconds, deals 15 damage, and applies a knockback impulse of about 8 units in the direction from attacker to target. A heavy attack lasts 0.6 seconds, deals 25 damage, and applies knockback of about 12 units. Attacks affect the opposing fighter immediately when started if the horizontal x/z distance is less than 4 units. Clamp HP between 0 and 100. On a successful hit, briefly flash the struck model white for approximately 120 ms and play simple oscillator-based impact/attack sounds; jumping should also have a short higher-pitched sound. There is no blocking, dodge, cliff, spike, projectile, combo, or score system: victory is determined only by reducing the opposing HP to zero.

Create an HTML overlay HUD over the canvas. At the top, show PLAYER on the left and ENEMY on the right, each with a dark rectangular HP bar about 220x22 pixels and a gray border; fill the player bar with a green gradient and the enemy bar with a red gradient. Update the bars continuously as damage is dealt. At the bottom center display small gray instructional text: “WASD: Move    SPACE: Jump    J: Attack    K: Heavy Attack” and below it “Knock the enemy around the arena. Reduce HP to 0 to win. R: Restart”. While playing, do not show a center message. When the player reaches zero HP, show a large centered yellow message with black shadow: “DEFEATED. R to try again”. When the enemy reaches zero HP, show “YOU WIN! R to restart”. Pressing R in either terminal state resets both fighters to their starting positions, velocities, HP=100, attack state, and resumes play. Use a full-window responsive WebGL canvas with no scrolling and Arial-like HUD typography.

More free browser games

Browse the whole Arcade →