Skip to content

Web-based, free and open source, remastered 3D clone of 3DO/NWC's 2000 card game Arcomage. 14 languages. Desktop or mobile Android iOS. Online or offline PWA. Against AI or Multiplayer (P2P, no server). 🧝👾🃏 (ts+react+redux+rxjs, CSS-based anim, WebRTC)

License

Notifications You must be signed in to change notification settings

arcomage/arcomage-hd

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ArcoMage HD logo

arcomage.github.io

ArcoMage HD - Open Source Card Game

ArcoMage HD is a web-based, free and open source, remastered 3D clone of 3DO and New World Computing's 2000 PC card game, Arcomage, which was featured in the Might and Magic RPG series.

This non-profit fan remake brings the classic tower defense and resource management fantasy game to modern platforms, and is developed by @tomchen using TypeScript, React, Redux, redux-observable, RxJS, CSS animations, and WebRTC (see § Development). If you enjoy the game, please support me by starring the repository or following me on GitHub.

ArcoMage HD is available in 14 languages: English, French, German, Simplified Chinese, Traditional Chinese, Spanish, Italian, Russian, Czech, Polish, Brazilian Portuguese, Japanese, Ukrainian, and Arabic (with RTL support). (§ Translation Credits)

It's compatible with the latest versions of Google Chrome Firefox Safari 14+ Microsoft Edge Opera Samsung Internet and other modern browsers.

The game is fully responsive, supporting desktop, tablet, and mobile devices 🖥️💻📱. As a PWA, you can install it and play offline. It is fully controllable with mouse, touch device, keyboard, or gamepad 🖱️📱⌨️🎮, and includes comprehensive accessibility features for users with disabilities.

By default, you'll play against the computer AI 🤖 in Single Player Mode. You can also switch to Multiplayer Mode 🧑‍🤝‍🧑.

Click here to play it now!

ArcoMage HD screenshot

version number Actions Status License

Gameplay

ArcoMage HD Manual Image

Click to view the game rules in text format

Victory conditions vary per tavern. Build your tower, destroy your opponent's tower, or collect enough resources before your opponent does.

Large yellow numbers in column are the productions. This is how many new units of a particular resource you will receive on your next turn. Small black numbers in column are the resources. This is how many units you have available to spend on your current turn.

Cards: Each have their own cost to play, indicated in a small circle in the lower right corner of the card. The cost will be deducted from your resources according to the color of the card. Left click on a card plays the card. Right click on a card to discard without playing.

Red represents your Quarry Generator which produces your Brick 🧱 resources, blue represents your Magic Generator which produces Gem 💎 resources, green represents your Dungeon (aka. Zoo) generator which produces Recruit (aka. Beast) 🐲 resources.

Play Offline (PWA)

The image and sound files, along with your card and language settings, are automatically stored in your browser. Additionally, you can install this "Progressive Web App" (PWA) on your computer or smartphone. For installation instructions, please refer to Google Chrome's guide and Mozilla's guide.

Depending on your browser, you may need to press Ctrl + F5 to clear the cache and reload the arcomage.github.io webpage to ensure you're using the latest version of the game.

Game Controls & Accessibility

The game is fully controllable using either a mouse, touch device, keyboard, or gamepad (click these links to view detailed instructions).

The game is fully compatible with and easy to use with a screen reader. You can also disable animations in the graphics settings if desired.

Blind Friendly Color Blind Friendly Deaf Friendly Motion Sickness Friendly

Multiplayer Mode

How to Use Multiplayer Mode

multiplayer-demo.mp4
  1. Both players enable "Multiplayer" Mode (click the gear ⚙️ icon in the game to open the "Preferences" window)
  2. Bob 🧝 must copy and share his ID with Alice 👧 via Discord, forums, etc.
  3. Alice 👧 enters Bob 🧝's ID and connects to him
  4. Alice 👧 becomes the host 🏠 (her computer deals the cards), and Bob 🧝 is the guest 💼

Note: Multiplayer Mode may not function if both players are behind symmetric NAT. You can test if you're behind "bad", symmetric NAT.

Click to show technical details

Technical Details

In Multiplayer Mode, the game connects directly to the opponent (Peer-to-Peer, P2P) without using a server. However, we still rely on free public STUN servers (set up by Google and others) for peer discovery. Once connected using the ID assigned by the server, the players are directly connected and no longer need the server.

The game doesn't use any servers, so there isn't a central "list of online players" for easy matchmaking. Instead, you must share your ID with your opponent through platforms like Discord.

For more details, see WebRTC (Web Real-Time Communication) and PeerJS library.

Currently, since the game doesn't use a TURN server, it cannot connect two users who are both behind symmetric NAT (a rare scenario).

Troubleshooting

If you're experiencing performance issues while running the game, or if the game doesn't run at all in your browser (likely an older or non-major browser), you can refer to the troubleshooting guide. It includes a list of tested browsers that are known to run the game without major issues. Additionally, you may consider installing the Windows Desktop Version of the game (click to download), though please note that the current desktop version is not recommended in most cases.

If you encounter any issues, please open an issue.

Development

The stack:

Typescript React Redux redux-observable RxJS (ReactiveX) WebRTC Workbox JavaScript ECMAScript 6+ Sass Tailwind CSS Material-UI webpack Jest Enzyme Testing Library Istanbul Codecov JSS Prettier ESLint PostCSS Autoprefixer Visual Studio Code yarn bun howler.js Inkscape Adobe Illustrator Adobe Photoshop

TypeScript + React + Redux + redux-observable + RxJS. PWA (using Workbox).

The game doesn't use WebGL, rAF (except for gamepad controls), or <canvas> at all. Instead, it relies on DOM and CSS-based animations, which can improve SEO and accessibility, while making it feel more like a "standard web app." While CSS animations may not perform as well as <canvas>, they still provide excellent performance on Blink-based browsers on modern devices.

The game features P2P Multiplayer Mode without a server, utilizing only STUN servers for peer discovery and WebRTC (with PeerJS) for communication.

It also supports stereo sound, WebP and SVG images, with images upscaled using the waifu2x / waifu2x-caffe libraries. Card text is extracted using the OCR library tesseract.js.

Developer scripts and tools are located in the tools folder. For more details, see the development notes and the scripts section in package.json.

Codecov

Google Lighthouse
Google Lighthouse score
ArcoMage HD Google Lighthouse score

Changelog & Issues

Changelog file

Issues

Translation Credits

See also I18N Issue Page

Arcomage Original Game

Arcomage was initially developed by Stickman Games and later sold to The 3DO Company (3DO). The game appeared as a mini-game in Might and Magic VII: For Blood and Honor (MM7) and Might and Magic VIII: Day of the Destroyer (MM8), the seventh and eighth games in New World Computing (NWC)'s Might and Magic (MM) series. (It's similar to Gwent in The Witcher.) NWC and its parent company, 3DO, also released a standalone version in 2000, which can be played in single-player or multiplayer mode. The original standalone Arcomage has a resolution of 800 x 600 pixels and works in 16-bit color mode on Windows 10, but the graphics are unstable.

Copyright

The code for the ArcoMage HD game: MIT License (c) Tom Chen.

The assets, text, appearance, and other copyrightable elements of the game: (c) 2001 The 3DO Company.

See the CREDIT.md file for a detailed presentation of the copyright status, licenses, and credits for the game's components.