Repository files navigation

This is an archive of an old version of the website. We have since rewritten the website from the ground up using more modern technologies. However, we will keep this repository up for any who are interested! The new version of the website is no longer open-source.


🎲 RoyalUr.net

A website for playing the ancient Mesopotamian board game, The Royal Game of Ur!

This repository holds the client code for RoyalUr.net. The server code for RoyalUr.net can be found in the RoyalUrServer repository.

RoyalUr.net was created based upon the ancient Sumerian board game, The Royal Game of Ur, in the British Museum. The original board game can be dated to 2600 BC, and was discovered in a royal tomb in the city-state of Ur in ancient Mesopotamia. Learn more about the game on Wikipedia, or watch a fun match between Tom Scott and Irving Finkel on YouTube!

How much of the game is luck?

The answer is, less than you might think!

If you'd like to learn more about strategy and the role of luck in The Royal Game of Ur, check out our efforts over in the RoyalUrAnalysis repository. In that repository we're currently undergoing efforts to use our computers to help us better understand the strategy and luck involved The Royal Game of Ur.

Join the community!

If you're interested in The Royal Game of Ur, we have a Discord and a Reddit that you might want to check out! These are both good places to talk about the game, its strategies, and see cool board recreations that people have made! The Discord is also a great place to find strong opponents to challenge! We also post updates about the game on our Twitter.

🖥️ Compilation

This project uses Babel to transpile all Javascript to a single ES5 compatible file, as well as a Python script to generate the resource files needed for the site.

The following commands will compile the site to ./dist:
./compile.sh release -- Full clean compilation, with minified JS.
./compile.sh dev -- No minification, no cleaning of ./dist folder.

If you run into ./res file related issues during compilation, try updating your ./res folder.

To update the contents of your ./res folder as the resources used by RoyalUrClient change, simply delete it and let the compilation script download it again for you.

🛠️ Project Architecture

A summary of the architecture of the client-side of RoyalUr.net can be found in ARCHITECTURE.md.

💾 Resource Files

The image, audio, and annotation assets required by the project are not actually stored in git, due to git's poor handling of binary files. Instead, the script to compile the site will automatically download the resources for you from https://royalur.net/res.zip.

Contributors

A massive thanks to all contributors to the RoyalUrClient project!

About

Play The Royal Game of Ur online! https://royalur.net

Topics

Resources

Code of conduct

Contributing

Stars

174 stars

Watchers

2 watching

Forks

Sponsor this project

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

This is an archive of an old version of the website. We have since rewritten the website from the ground up using more modern technologies. However, we will keep this repository up for any who are interested! The new version of the website is no longer open-source.


🎲 RoyalUr.net

A website for playing the ancient Mesopotamian board game, The Royal Game of Ur!

This repository holds the client code for RoyalUr.net. The server code for RoyalUr.net can be found in the RoyalUrServer repository.

RoyalUr.net was created based upon the ancient Sumerian board game, The Royal Game of Ur, in the British Museum. The original board game can be dated to 2600 BC, and was discovered in a royal tomb in the city-state of Ur in ancient Mesopotamia. Learn more about the game on Wikipedia, or watch a fun match between Tom Scott and Irving Finkel on YouTube!

How much of the game is luck?

The answer is, less than you might think!

If you'd like to learn more about strategy and the role of luck in The Royal Game of Ur, check out our efforts over in the RoyalUrAnalysis repository. In that repository we're currently undergoing efforts to use our computers to help us better understand the strategy and luck involved The Royal Game of Ur.

Join the community!

If you're interested in The Royal Game of Ur, we have a Discord and a Reddit that you might want to check out! These are both good places to talk about the game, its strategies, and see cool board recreations that people have made! The Discord is also a great place to find strong opponents to challenge! We also post updates about the game on our Twitter.

🖥️ Compilation

This project uses Babel to transpile all Javascript to a single ES5 compatible file, as well as a Python script to generate the resource files needed for the site.

The following commands will compile the site to ./dist:
./compile.sh release -- Full clean compilation, with minified JS.
./compile.sh dev -- No minification, no cleaning of ./dist folder.

If you run into ./res file related issues during compilation, try updating your ./res folder.

To update the contents of your ./res folder as the resources used by RoyalUrClient change, simply delete it and let the compilation script download it again for you.

🛠️ Project Architecture

A summary of the architecture of the client-side of RoyalUr.net can be found in ARCHITECTURE.md.

💾 Resource Files

The image, audio, and annotation assets required by the project are not actually stored in git, due to git's poor handling of binary files. Instead, the script to compile the site will automatically download the resources for you from https://royalur.net/res.zip.

Contributors

A massive thanks to all contributors to the RoyalUrClient project!

About

Play The Royal Game of Ur online! https://royalur.net

Topics

Resources

Code of conduct

Contributing

Stars

174 stars

Watchers

2 watching

Forks

Sponsor this project

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

This is an archive of an old version of the website. We have since rewritten the website from the ground up using more modern technologies. However, we will keep this repository up for any who are interested! The new version of the website is no longer open-source.


🎲 RoyalUr.net

A website for playing the ancient Mesopotamian board game, The Royal Game of Ur!

This repository holds the client code for RoyalUr.net. The server code for RoyalUr.net can be found in the RoyalUrServer repository.

RoyalUr.net was created based upon the ancient Sumerian board game, The Royal Game of Ur, in the British Museum. The original board game can be dated to 2600 BC, and was discovered in a royal tomb in the city-state of Ur in ancient Mesopotamia. Learn more about the game on Wikipedia, or watch a fun match between Tom Scott and Irving Finkel on YouTube!

How much of the game is luck?

The answer is, less than you might think!

If you'd like to learn more about strategy and the role of luck in The Royal Game of Ur, check out our efforts over in the RoyalUrAnalysis repository. In that repository we're currently undergoing efforts to use our computers to help us better understand the strategy and luck involved The Royal Game of Ur.

Join the community!

If you're interested in The Royal Game of Ur, we have a Discord and a Reddit that you might want to check out! These are both good places to talk about the game, its strategies, and see cool board recreations that people have made! The Discord is also a great place to find strong opponents to challenge! We also post updates about the game on our Twitter.

🖥️ Compilation

This project uses Babel to transpile all Javascript to a single ES5 compatible file, as well as a Python script to generate the resource files needed for the site.

The following commands will compile the site to ./dist:
./compile.sh release -- Full clean compilation, with minified JS.
./compile.sh dev -- No minification, no cleaning of ./dist folder.

If you run into ./res file related issues during compilation, try updating your ./res folder.

To update the contents of your ./res folder as the resources used by RoyalUrClient change, simply delete it and let the compilation script download it again for you.

🛠️ Project Architecture

A summary of the architecture of the client-side of RoyalUr.net can be found in ARCHITECTURE.md.

💾 Resource Files

The image, audio, and annotation assets required by the project are not actually stored in git, due to git's poor handling of binary files. Instead, the script to compile the site will automatically download the resources for you from https://royalur.net/res.zip.

Contributors

A massive thanks to all contributors to the RoyalUrClient project!

About

Play The Royal Game of Ur online! https://royalur.net

Topics

Resources

Code of conduct

Contributing

Stars

174 stars

Watchers

2 watching

Forks

Sponsor this project

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

This is an archive of an old version of the website. We have since rewritten the website from the ground up using more modern technologies. However, we will keep this repository up for any who are interested! The new version of the website is no longer open-source.


🎲 RoyalUr.net

A website for playing the ancient Mesopotamian board game, The Royal Game of Ur!

This repository holds the client code for RoyalUr.net. The server code for RoyalUr.net can be found in the RoyalUrServer repository.

RoyalUr.net was created based upon the ancient Sumerian board game, The Royal Game of Ur, in the British Museum. The original board game can be dated to 2600 BC, and was discovered in a royal tomb in the city-state of Ur in ancient Mesopotamia. Learn more about the game on Wikipedia, or watch a fun match between Tom Scott and Irving Finkel on YouTube!

How much of the game is luck?

The answer is, less than you might think!

If you'd like to learn more about strategy and the role of luck in The Royal Game of Ur, check out our efforts over in the RoyalUrAnalysis repository. In that repository we're currently undergoing efforts to use our computers to help us better understand the strategy and luck involved The Royal Game of Ur.

Join the community!

If you're interested in The Royal Game of Ur, we have a Discord and a Reddit that you might want to check out! These are both good places to talk about the game, its strategies, and see cool board recreations that people have made! The Discord is also a great place to find strong opponents to challenge! We also post updates about the game on our Twitter.

🖥️ Compilation

This project uses Babel to transpile all Javascript to a single ES5 compatible file, as well as a Python script to generate the resource files needed for the site.

The following commands will compile the site to ./dist:
./compile.sh release -- Full clean compilation, with minified JS.
./compile.sh dev -- No minification, no cleaning of ./dist folder.

If you run into ./res file related issues during compilation, try updating your ./res folder.

To update the contents of your ./res folder as the resources used by RoyalUrClient change, simply delete it and let the compilation script download it again for you.

🛠️ Project Architecture

A summary of the architecture of the client-side of RoyalUr.net can be found in ARCHITECTURE.md.

💾 Resource Files

The image, audio, and annotation assets required by the project are not actually stored in git, due to git's poor handling of binary files. Instead, the script to compile the site will automatically download the resources for you from https://royalur.net/res.zip.

Contributors

A massive thanks to all contributors to the RoyalUrClient project!

About

Play The Royal Game of Ur online! https://royalur.net

Topics

Resources

Code of conduct

Contributing

Stars

174 stars

Watchers

2 watching

Forks

Sponsor this project

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

This is an archive of an old version of the website. We have since rewritten the website from the ground up using more modern technologies. However, we will keep this repository up for any who are interested! The new version of the website is no longer open-source.


🎲 RoyalUr.net

A website for playing the ancient Mesopotamian board game, The Royal Game of Ur!

This repository holds the client code for RoyalUr.net. The server code for RoyalUr.net can be found in the RoyalUrServer repository.

RoyalUr.net was created based upon the ancient Sumerian board game, The Royal Game of Ur, in the British Museum. The original board game can be dated to 2600 BC, and was discovered in a royal tomb in the city-state of Ur in ancient Mesopotamia. Learn more about the game on Wikipedia, or watch a fun match between Tom Scott and Irving Finkel on YouTube!

How much of the game is luck?

The answer is, less than you might think!

If you'd like to learn more about strategy and the role of luck in The Royal Game of Ur, check out our efforts over in the RoyalUrAnalysis repository. In that repository we're currently undergoing efforts to use our computers to help us better understand the strategy and luck involved The Royal Game of Ur.

Join the community!

If you're interested in The Royal Game of Ur, we have a Discord and a Reddit that you might want to check out! These are both good places to talk about the game, its strategies, and see cool board recreations that people have made! The Discord is also a great place to find strong opponents to challenge! We also post updates about the game on our Twitter.

🖥️ Compilation

This project uses Babel to transpile all Javascript to a single ES5 compatible file, as well as a Python script to generate the resource files needed for the site.

The following commands will compile the site to ./dist:
./compile.sh release -- Full clean compilation, with minified JS.
./compile.sh dev -- No minification, no cleaning of ./dist folder.

If you run into ./res file related issues during compilation, try updating your ./res folder.

To update the contents of your ./res folder as the resources used by RoyalUrClient change, simply delete it and let the compilation script download it again for you.

🛠️ Project Architecture

A summary of the architecture of the client-side of RoyalUr.net can be found in ARCHITECTURE.md.

💾 Resource Files

The image, audio, and annotation assets required by the project are not actually stored in git, due to git's poor handling of binary files. Instead, the script to compile the site will automatically download the resources for you from https://royalur.net/res.zip.

Contributors

A massive thanks to all contributors to the RoyalUrClient project!

About

Play The Royal Game of Ur online! https://royalur.net

Topics

Resources

Code of conduct

Contributing

Stars

174 stars

Watchers

2 watching

Forks

Sponsor this project

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

This is an archive of an old version of the website. We have since rewritten the website from the ground up using more modern technologies. However, we will keep this repository up for any who are interested! The new version of the website is no longer open-source.


🎲 RoyalUr.net

A website for playing the ancient Mesopotamian board game, The Royal Game of Ur!

This repository holds the client code for RoyalUr.net. The server code for RoyalUr.net can be found in the RoyalUrServer repository.

RoyalUr.net was created based upon the ancient Sumerian board game, The Royal Game of Ur, in the British Museum. The original board game can be dated to 2600 BC, and was discovered in a royal tomb in the city-state of Ur in ancient Mesopotamia. Learn more about the game on Wikipedia, or watch a fun match between Tom Scott and Irving Finkel on YouTube!

How much of the game is luck?

The answer is, less than you might think!

If you'd like to learn more about strategy and the role of luck in The Royal Game of Ur, check out our efforts over in the RoyalUrAnalysis repository. In that repository we're currently undergoing efforts to use our computers to help us better understand the strategy and luck involved The Royal Game of Ur.

Join the community!

If you're interested in The Royal Game of Ur, we have a Discord and a Reddit that you might want to check out! These are both good places to talk about the game, its strategies, and see cool board recreations that people have made! The Discord is also a great place to find strong opponents to challenge! We also post updates about the game on our Twitter.

🖥️ Compilation

This project uses Babel to transpile all Javascript to a single ES5 compatible file, as well as a Python script to generate the resource files needed for the site.

The following commands will compile the site to ./dist:
./compile.sh release -- Full clean compilation, with minified JS.
./compile.sh dev -- No minification, no cleaning of ./dist folder.

If you run into ./res file related issues during compilation, try updating your ./res folder.

To update the contents of your ./res folder as the resources used by RoyalUrClient change, simply delete it and let the compilation script download it again for you.

🛠️ Project Architecture

A summary of the architecture of the client-side of RoyalUr.net can be found in ARCHITECTURE.md.

💾 Resource Files

The image, audio, and annotation assets required by the project are not actually stored in git, due to git's poor handling of binary files. Instead, the script to compile the site will automatically download the resources for you from https://royalur.net/res.zip.

Contributors

A massive thanks to all contributors to the RoyalUrClient project!

About

Play The Royal Game of Ur online! https://royalur.net

Topics

Resources

Code of conduct

Contributing

Stars

174 stars

Watchers

2 watching

Forks

Sponsor this project

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

This is an archive of an old version of the website. We have since rewritten the website from the ground up using more modern technologies. However, we will keep this repository up for any who are interested! The new version of the website is no longer open-source.


🎲 RoyalUr.net

A website for playing the ancient Mesopotamian board game, The Royal Game of Ur!

This repository holds the client code for RoyalUr.net. The server code for RoyalUr.net can be found in the RoyalUrServer repository.

RoyalUr.net was created based upon the ancient Sumerian board game, The Royal Game of Ur, in the British Museum. The original board game can be dated to 2600 BC, and was discovered in a royal tomb in the city-state of Ur in ancient Mesopotamia. Learn more about the game on Wikipedia, or watch a fun match between Tom Scott and Irving Finkel on YouTube!

How much of the game is luck?

The answer is, less than you might think!

If you'd like to learn more about strategy and the role of luck in The Royal Game of Ur, check out our efforts over in the RoyalUrAnalysis repository. In that repository we're currently undergoing efforts to use our computers to help us better understand the strategy and luck involved The Royal Game of Ur.

Join the community!

If you're interested in The Royal Game of Ur, we have a Discord and a Reddit that you might want to check out! These are both good places to talk about the game, its strategies, and see cool board recreations that people have made! The Discord is also a great place to find strong opponents to challenge! We also post updates about the game on our Twitter.

🖥️ Compilation

This project uses Babel to transpile all Javascript to a single ES5 compatible file, as well as a Python script to generate the resource files needed for the site.

The following commands will compile the site to ./dist:
./compile.sh release -- Full clean compilation, with minified JS.
./compile.sh dev -- No minification, no cleaning of ./dist folder.

If you run into ./res file related issues during compilation, try updating your ./res folder.

To update the contents of your ./res folder as the resources used by RoyalUrClient change, simply delete it and let the compilation script download it again for you.

🛠️ Project Architecture

A summary of the architecture of the client-side of RoyalUr.net can be found in ARCHITECTURE.md.

💾 Resource Files

The image, audio, and annotation assets required by the project are not actually stored in git, due to git's poor handling of binary files. Instead, the script to compile the site will automatically download the resources for you from https://royalur.net/res.zip.

Contributors

A massive thanks to all contributors to the RoyalUrClient project!

About

Play The Royal Game of Ur online! https://royalur.net

Topics

Resources

Code of conduct

Contributing

Stars

174 stars

Watchers

2 watching

Forks

Sponsor this project

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

This is an archive of an old version of the website. We have since rewritten the website from the ground up using more modern technologies. However, we will keep this repository up for any who are interested! The new version of the website is no longer open-source.


🎲 RoyalUr.net

A website for playing the ancient Mesopotamian board game, The Royal Game of Ur!

This repository holds the client code for RoyalUr.net. The server code for RoyalUr.net can be found in the RoyalUrServer repository.

RoyalUr.net was created based upon the ancient Sumerian board game, The Royal Game of Ur, in the British Museum. The original board game can be dated to 2600 BC, and was discovered in a royal tomb in the city-state of Ur in ancient Mesopotamia. Learn more about the game on Wikipedia, or watch a fun match between Tom Scott and Irving Finkel on YouTube!

How much of the game is luck?

The answer is, less than you might think!

If you'd like to learn more about strategy and the role of luck in The Royal Game of Ur, check out our efforts over in the RoyalUrAnalysis repository. In that repository we're currently undergoing efforts to use our computers to help us better understand the strategy and luck involved The Royal Game of Ur.

Join the community!

If you're interested in The Royal Game of Ur, we have a Discord and a Reddit that you might want to check out! These are both good places to talk about the game, its strategies, and see cool board recreations that people have made! The Discord is also a great place to find strong opponents to challenge! We also post updates about the game on our Twitter.

🖥️ Compilation

This project uses Babel to transpile all Javascript to a single ES5 compatible file, as well as a Python script to generate the resource files needed for the site.

The following commands will compile the site to ./dist:
./compile.sh release -- Full clean compilation, with minified JS.
./compile.sh dev -- No minification, no cleaning of ./dist folder.

If you run into ./res file related issues during compilation, try updating your ./res folder.

To update the contents of your ./res folder as the resources used by RoyalUrClient change, simply delete it and let the compilation script download it again for you.

🛠️ Project Architecture

A summary of the architecture of the client-side of RoyalUr.net can be found in ARCHITECTURE.md.

💾 Resource Files

The image, audio, and annotation assets required by the project are not actually stored in git, due to git's poor handling of binary files. Instead, the script to compile the site will automatically download the resources for you from https://royalur.net/res.zip.

Contributors

A massive thanks to all contributors to the RoyalUrClient project!

About

Play The Royal Game of Ur online! https://royalur.net

Topics

Resources

Code of conduct

Contributing

Stars

174 stars

Watchers

2 watching

Forks

Sponsor this project

Used by

Contributors

Languages