Add some stuff
This commit is contained in:
		| @@ -1,2 +1,4 @@ | |||||||
| Flask~=2.2 | Flask~=2.2 | ||||||
| Flask-SocketIO~=5.3 | Flask-SocketIO~=5.3 | ||||||
|  | # Prevent polling sockets. | ||||||
|  | simple-websocket~=0.9 | ||||||
|   | |||||||
| @@ -76,20 +76,22 @@ document.addEventListener("DOMContentLoaded", () => { | |||||||
|                 barrier.resolve(data); |                 barrier.resolve(data); | ||||||
|                 break; |                 break; | ||||||
|  |  | ||||||
|             case "CLAIM": |             case "ACT": | ||||||
|                 if (data.author !== currentPlayer().id) { |                 if (data.author !== currentPlayer().id) { | ||||||
|                     return; |                     return; | ||||||
|                 } |                 } | ||||||
|  |  | ||||||
|                 // Claim a region in the pregame. |                 if (!allRegionsClaimed()) { | ||||||
|                 if (currentPlayer().claim(data)) { |                     // Claim a region in the pregame. | ||||||
|                     // Increment to next player. |                     if (currentPlayer().claim(data)) { | ||||||
|  |                         // Increment to next player. | ||||||
|  |                         currentPlayer().endTurn(); | ||||||
|  |                     } | ||||||
|  |                 } else if (!allReinforcementsPlaced()) { | ||||||
|  |                     currentPlayer().reinforce(data); | ||||||
|                     currentPlayer().endTurn(); |                     currentPlayer().endTurn(); | ||||||
|                 } |                 } | ||||||
|  |  | ||||||
|                 if (allRegionsClaimed()) { |  | ||||||
|                     console.log("switching to initial reinforcements"); |  | ||||||
|                 } |  | ||||||
|                 updateDom(); |                 updateDom(); | ||||||
|                 break; |                 break; | ||||||
|         } |         } | ||||||
|   | |||||||
| @@ -27,15 +27,6 @@ class Region { | |||||||
|         return REGIONS[name]; |         return REGIONS[name]; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /** |  | ||||||
|      * Test if all regions are claimed or not. |  | ||||||
|      * |  | ||||||
|      * @returns {boolean} |  | ||||||
|      */ |  | ||||||
|     static allClaimed() { |  | ||||||
|         return Object.values(REGIONS).find((r) => r.owner === null) === null; |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     claim(player) { |     claim(player) { | ||||||
|         this.owner = player; |         this.owner = player; | ||||||
|         this.strength = 1; |         this.strength = 1; | ||||||
| @@ -64,3 +55,20 @@ const E = new Region("E", WEST); | |||||||
| function allRegionsClaimed() { | function allRegionsClaimed() { | ||||||
|     return Object.values(REGIONS).find((region) => region.owner === null) === undefined; |     return Object.values(REGIONS).find((region) => region.owner === null) === undefined; | ||||||
| } | } | ||||||
|  |  | ||||||
|  | let allPlaced = false; | ||||||
|  |  | ||||||
|  | function allReinforcementsPlaced() { | ||||||
|  |     if (allPlaced) { | ||||||
|  |         return true; | ||||||
|  |     } else { | ||||||
|  |         let totalStrength = Object.values(REGIONS).reduce( | ||||||
|  |             (counter, region) => counter + region.strength, | ||||||
|  |             0 | ||||||
|  |         ); | ||||||
|  |         let numPlayers = Object.values(players).length; | ||||||
|  |  | ||||||
|  |         allPlaced = totalStrength >= numPlayers * 5 * (10 - numPlayers); | ||||||
|  |         return allPlaced; | ||||||
|  |     } | ||||||
|  | } | ||||||
|   | |||||||
| @@ -35,7 +35,14 @@ class Packet { | |||||||
|  |  | ||||||
|     static createRegionClaim(region) { |     static createRegionClaim(region) { | ||||||
|         return { |         return { | ||||||
|             ...this._createBase("CLAIM"), |             ...this._createBase("ACT"), | ||||||
|  |             region: region, | ||||||
|  |         }; | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     static createReinforce(region) { | ||||||
|  |         return { | ||||||
|  |             ...this._createBase("ACT"), | ||||||
|             region: region, |             region: region, | ||||||
|         }; |         }; | ||||||
|     } |     } | ||||||
|   | |||||||
| @@ -46,6 +46,22 @@ class Player { | |||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|  |     /** | ||||||
|  |      * Reinforce a region of the map. | ||||||
|  |      * | ||||||
|  |      * @param data Data received via socket. | ||||||
|  |      */ | ||||||
|  |     reinforce(data) { | ||||||
|  |         let region = Region.getRegion(data.region); | ||||||
|  |  | ||||||
|  |         if (region.owner === this) { | ||||||
|  |             region.reinforce(1); | ||||||
|  |             return true; | ||||||
|  |         } else { | ||||||
|  |             return false; | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  |  | ||||||
|     /** |     /** | ||||||
|      * Start a player's turn. |      * Start a player's turn. | ||||||
|      */ |      */ | ||||||
|   | |||||||
							
								
								
									
										
											BIN
										
									
								
								whitepaper/demonstration/Risk_game_board.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								whitepaper/demonstration/Risk_game_board.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 440 KiB | 
							
								
								
									
										170
									
								
								whitepaper/demonstration/Risk_game_board.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										170
									
								
								whitepaper/demonstration/Risk_game_board.svg
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| After Width: | Height: | Size: 117 KiB | 
							
								
								
									
										91
									
								
								whitepaper/demonstration/Risk_game_graph.svg
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										91
									
								
								whitepaper/demonstration/Risk_game_graph.svg
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,91 @@ | |||||||
|  | <?xml version="1.0" encoding="utf-8"?> | ||||||
|  | <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> | ||||||
|  | <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="100%" height="100%" viewBox="-50 12 1000 750"> | ||||||
|  |  <title>Risk game graph</title> | ||||||
|  |  <desc>The Risk game board as a graph by CMG Lee and Duomillia, the asterisk denoting the route missing in the 40th Anniversary Collector's Edition.</desc> | ||||||
|  |  <style type="text/css"> | ||||||
|  | .main { font-family:Helvetica,Arial,sans-serif; font-size:20px; text-anchor:middle; | ||||||
|  |         fill:#000000; stroke:none; stroke-width:25px; stroke-linejoin:round; } | ||||||
|  | .huge { font-family:Bookman,Bookman Old Style,serif; font-weight:bold; font-size:90px; text-anchor:start; fill:#cccccc; } | ||||||
|  | .big  { font-weight:bold; font-size:35px; letter-spacing:-1px; } | ||||||
|  | .pack { letter-spacing:-1px; } | ||||||
|  |  </style> | ||||||
|  |  <defs> | ||||||
|  |   <filter id="filter_shadow"> | ||||||
|  |    <feGaussianBlur in="SourceAlpha" stdDeviation="2"/> | ||||||
|  |    <feColorMatrix type="matrix" values="0,0,0,0,0 0,0,0,0,0 0,0,0,0,0 0,0,0,0.5,0"/> | ||||||
|  |    <feOffset dx="0" dy="4"/> | ||||||
|  |    <feBlend in="SourceGraphic"/> | ||||||
|  |   </filter> | ||||||
|  |   <ellipse id="node" cx="0" cy="0" rx="48" ry="43" stroke="none" filter="url(#filter_shadow)"/> | ||||||
|  |   <g id="na"><use xlink:href="#node" fill="#eecc00"/></g> | ||||||
|  |   <g id="sa"><use xlink:href="#node" fill="#ff9999"/></g> | ||||||
|  |   <g id="eu"><use xlink:href="#node" fill="#0099ff"/></g> | ||||||
|  |   <g id="af"><use xlink:href="#node" fill="#ff9900"/></g> | ||||||
|  |   <g id="as"><use xlink:href="#node" fill="#00cc00"/></g> | ||||||
|  |   <g id="au"><use xlink:href="#node" fill="#cc99ff"/></g> | ||||||
|  |  </defs> | ||||||
|  |  <circle cx="0" cy="0" r="99999" fill="#ffffff"/> | ||||||
|  |  <g class="main"> | ||||||
|  |   <g fill="none" stroke="#cccccc"> | ||||||
|  |    <path d="M -10,105 q 0,-70 50,-70 h 790 q 70,0 70,70 v 100 M 200,100 l 100,100 M 0,400 v 100 M 100,500 h 300 M 400,400 v 100 l 100,-100 v 100 l 100,-100 M 600,200 l -100,100 h 100 m -100,0 l 100,100 h -100 M 800,400 v 100"/> | ||||||
|  |    <path d="M 600,400 v 100 q 0,100 -100,95" stroke-dasharray="8,2"/> | ||||||
|  |    <path d="M 200,200 v -100 h -200 v 300 z h -200 l 100,-100 v 200 h -100 l 200,-200" stroke="#cc9900"/> | ||||||
|  |    <path d="M 0,600 h 100 v -100 z v -100 h 100" stroke="#cc6666"/> | ||||||
|  |    <path d="M 400,300 l 100,100 v -100 l -100,-100 h -100 v 100 l 100,100 v -200 l -100,100 h 200 m 0,100 h -100" stroke="#0066cc"/> | ||||||
|  |    <path d="M 400,700 v -200 l 100,100 z h 100 v -200 h -100 m 0,100 h 100" stroke="#cc6600"/> | ||||||
|  |    <path d="M 800,100 v 200 l 100,-100 z l -100,100 v 200 l -100,-100 h 300 v -100 h -300 v 200 h 200 l -200,-200 m 100,0 l 100,100" stroke="#009900"/> | ||||||
|  |    <path d="M 800,600 h 100 v -100 z v -100 h 100" stroke="#9966cc"/> | ||||||
|  |   </g> | ||||||
|  |   <g transform="translate(  0,100) scale(0.9,1)"><use xlink:href="#na"/><text y="-1.5ex"><tspan class="big" >1</tspan><tspan x="0" dy="3ex">Alaska</tspan></text></g> | ||||||
|  |   <g transform="translate(100,100) scale(0.9,1)"><use xlink:href="#na"/><text y="-1.5ex"><tspan class="big" >6</tspan><tspan x="0" dy="2ex">Northwest</tspan><tspan x="0" dy="1em">Territory</tspan></text></g> | ||||||
|  |   <g transform="translate(200,100) scale(0.9,1)"><use xlink:href="#na"/><text y="-1.5ex"><tspan class="big" >5</tspan><tspan x="0" dy="3ex" class="pack">Greenland</tspan></text></g> | ||||||
|  |   <g transform="translate(  0,200) scale(0.9,1)"><use xlink:href="#na"/><text y="-1.5ex"><tspan class="big" >2</tspan><tspan x="0" dy="3ex">Alberta</tspan></text></g> | ||||||
|  |   <g transform="translate(100,200) scale(0.9,1)"><use xlink:href="#na"/><text y="-1.5ex"><tspan class="big" >7</tspan><tspan x="0" dy="3ex">Ontario</tspan></text></g> | ||||||
|  |   <g transform="translate(200,200) scale(0.9,1)"><use xlink:href="#na"/><text y="-1.5ex"><tspan class="big" >8</tspan><tspan x="0" dy="3ex">Quebec</tspan></text></g> | ||||||
|  |   <g transform="translate(  0,300) scale(0.9,1)"><use xlink:href="#na"/><text y="-1.5ex"><tspan class="big" >9</tspan><tspan x="0" dy="2ex">Western</tspan><tspan x="0" dy="1em">US</tspan></text></g> | ||||||
|  |   <g transform="translate(100,300) scale(0.9,1)"><use xlink:href="#na"/><text y="-1.5ex"><tspan class="big" >4</tspan><tspan x="0" dy="2ex">Eastern</tspan><tspan x="0" dy="1em">US</tspan></text></g> | ||||||
|  |   <g transform="translate(  0,400) scale(0.9,1)"><use xlink:href="#na"/><text y="-1.5ex"><tspan class="big" >3</tspan><tspan x="0" dy="2ex">Central</tspan><tspan x="0" dy="1em">America</tspan></text></g> | ||||||
|  |   <g transform="translate(  0,500) scale(0.9,1)"><use xlink:href="#sa"/><text y="-1.5ex"><tspan class="big" >4</tspan><tspan x="0" dy="3ex" class="pack">Venezuela</tspan></text></g> | ||||||
|  |   <g transform="translate(100,500) scale(0.9,1)"><use xlink:href="#sa"/><text y="-1.5ex"><tspan class="big" >2</tspan><tspan x="0" dy="3ex">Brazil</tspan></text></g> | ||||||
|  |   <g transform="translate(  0,600) scale(0.9,1)"><use xlink:href="#sa"/><text y="-1.5ex"><tspan class="big" >3</tspan><tspan x="0" dy="3ex">Peru</tspan></text></g> | ||||||
|  |   <g transform="translate(100,600) scale(0.9,1)"><use xlink:href="#sa"/><text y="-1.5ex"><tspan class="big" >1</tspan><tspan x="0" dy="3ex">Argentina</tspan></text></g> | ||||||
|  |   <g transform="translate(300,200) scale(0.9,1)"><use xlink:href="#eu"/><text y="-1.5ex"><tspan class="big" >2</tspan><tspan x="0" dy="3ex">Iceland</tspan></text></g> | ||||||
|  |   <g transform="translate(400,200) scale(0.9,1)"><use xlink:href="#eu"/><text y="-1.5ex"><tspan class="big" >4</tspan><tspan x="0" dy="2ex">Scandi-</tspan><tspan x="0" dy="1em">navia</tspan></text></g> | ||||||
|  |   <g transform="translate(300,300) scale(0.9,1)"><use xlink:href="#eu"/><text y="-1.5ex"><tspan class="big" >1</tspan><tspan x="0" dy="2ex">Great</tspan><tspan x="0" dy="1em">Britain</tspan></text></g> | ||||||
|  |   <g transform="translate(400,300) scale(0.9,1)"><use xlink:href="#eu"/><text y="-1.5ex"><tspan class="big" >3</tspan><tspan x="0" dy="2ex">Northern</tspan><tspan x="0" dy="1em">Europe</tspan></text></g> | ||||||
|  |   <g transform="translate(500,300) scale(0.9,1)"><use xlink:href="#eu"/><text y="-1.5ex"><tspan class="big" >6</tspan><tspan x="0" dy="3ex">Ukraine</tspan></text></g> | ||||||
|  |   <g transform="translate(400,400) scale(0.9,1)"><use xlink:href="#eu"/><text y="-1.5ex"><tspan class="big" >7</tspan><tspan x="0" dy="2ex">Western</tspan><tspan x="0" dy="1em">Europe</tspan></text></g> | ||||||
|  |   <g transform="translate(500,400) scale(0.9,1)"><use xlink:href="#eu"/><text y="-1.5ex"><tspan class="big" >5</tspan><tspan x="0" dy="2ex">Southern</tspan><tspan x="0" dy="1em">Europe</tspan></text></g> | ||||||
|  |   <g transform="translate(400,500) scale(0.9,1)"><use xlink:href="#af"/><text y="-1.5ex"><tspan class="big" >5</tspan><tspan x="0" dy="2ex">North</tspan><tspan x="0" dy="1em">Africa</tspan></text></g> | ||||||
|  |   <g transform="translate(500,500) scale(0.9,1)"><use xlink:href="#af"/><text y="-1.5ex"><tspan class="big" >3</tspan><tspan x="0" dy="3ex">Egypt</tspan></text></g> | ||||||
|  |   <g transform="translate(400,600) scale(0.9,1)"><use xlink:href="#af"/><text y="-1.5ex"><tspan class="big" >1</tspan><tspan x="0" dy="3ex">Congo</tspan></text></g> | ||||||
|  |   <g transform="translate(500,600) scale(0.9,1)"><use xlink:href="#af"/><text y="-1.5ex"><tspan class="big" >2</tspan><tspan x="0" dy="2ex">East</tspan><tspan x="0" dy="1em">Africa</tspan></text></g> | ||||||
|  |   <g transform="translate(400,700) scale(0.9,1)"><use xlink:href="#af"/><text y="-1.5ex"><tspan class="big" >6</tspan><tspan x="0" dy="2ex">South</tspan><tspan x="0" dy="1em">Africa</tspan></text></g> | ||||||
|  |   <g transform="translate(500,700) scale(0.9,1)"><use xlink:href="#af"/><text y="-1.5ex"><tspan class="big" >4</tspan><tspan x="0" dy="2ex">Mada-</tspan><tspan x="0" dy="1em">gascar</tspan></text></g> | ||||||
|  |   <g transform="translate(800,100) scale(0.9,1)"><use xlink:href="#as"/><text y="-1.5ex"><tspan class="big">12</tspan><tspan x="0" dy="3ex">Yakutsk</tspan></text></g> | ||||||
|  |   <g transform="translate(600,200) scale(0.9,1)"><use xlink:href="#as"/><text y="-1.5ex"><tspan class="big">11</tspan><tspan x="0" dy="3ex">Ural</tspan></text></g> | ||||||
|  |   <g transform="translate(700,200) scale(0.9,1)"><use xlink:href="#as"/><text y="-1.5ex"><tspan class="big">10</tspan><tspan x="0" dy="3ex">Siberia</tspan></text></g> | ||||||
|  |   <g transform="translate(800,200) scale(0.9,1)"><use xlink:href="#as"/><text y="-1.5ex"><tspan class="big" >4</tspan><tspan x="0" dy="3ex">Irkutsk</tspan></text></g> | ||||||
|  |   <g transform="translate(900,200) scale(0.9,1)"><use xlink:href="#as"/><text y="-1.5ex"><tspan class="big" >6</tspan><tspan x="0" dy="2ex">Kam-</tspan><tspan x="0" dy="1em">chatka</tspan></text></g> | ||||||
|  |   <g transform="translate(600,300) scale(0.9,1)"><use xlink:href="#as"/><text y="-1.5ex"><tspan class="big" >1</tspan><tspan x="0" dy="2ex">Afgha-</tspan><tspan x="0" dy="1em">nistan</tspan></text></g> | ||||||
|  |   <g transform="translate(700,300) scale(0.9,1)"><use xlink:href="#as"/><text y="-1.5ex"><tspan class="big" >2</tspan><tspan x="0" dy="3ex">China</tspan></text></g> | ||||||
|  |   <g transform="translate(800,300) scale(0.9,1)"><use xlink:href="#as"/><text y="-1.5ex"><tspan class="big" >8</tspan><tspan x="0" dy="3ex">Mongolia</tspan></text></g> | ||||||
|  |   <g transform="translate(900,300) scale(0.9,1)"><use xlink:href="#as"/><text y="-1.5ex"><tspan class="big" >5</tspan><tspan x="0" dy="3ex">Japan</tspan></text></g> | ||||||
|  |   <g transform="translate(600,400) scale(0.9,1)"><use xlink:href="#as"/><text y="-1.5ex"><tspan class="big" >7</tspan><tspan x="0" dy="2ex">Middle</tspan><tspan x="0" dy="1em">East</tspan></text></g> | ||||||
|  |   <g transform="translate(700,400) scale(0.9,1)"><use xlink:href="#as"/><text y="-1.5ex"><tspan class="big" >3</tspan><tspan x="0" dy="3ex">India</tspan></text></g> | ||||||
|  |   <g transform="translate(800,400) scale(0.9,1)"><use xlink:href="#as"/><text y="-1.5ex"><tspan class="big" >9</tspan><tspan x="0" dy="3ex">Siam</tspan></text></g> | ||||||
|  |   <g transform="translate(800,500) scale(0.9,1)"><use xlink:href="#au"/><text y="-1.5ex"><tspan class="big" >2</tspan><tspan x="0" dy="3ex" class="pack">Indonesia</tspan></text></g> | ||||||
|  |   <g transform="translate(900,500) scale(0.9,1)"><use xlink:href="#au"/><text y="-1.5ex"><tspan class="big" >3</tspan><tspan x="0" dy="2ex">New</tspan><tspan x="0" dy="1em">Guinea</tspan></text></g> | ||||||
|  |   <g transform="translate(800,600) scale(0.9,1)"><use xlink:href="#au"/><text y="-1.5ex"><tspan class="big" >4</tspan><tspan x="0" dy="2ex">Western</tspan><tspan x="0" dy="1em">Australia</tspan></text></g> | ||||||
|  |   <g transform="translate(900,600) scale(0.9,1)"><use xlink:href="#au"/><text y="-1.5ex"><tspan class="big" >1</tspan><tspan x="0" dy="2ex">Eastern</tspan><tspan x="0" dy="1em">Australia</tspan></text></g> | ||||||
|  |   <g transform="translate(600,600)"><text y="0.7ex" class="huge"><tspan>*</tspan></text></g> | ||||||
|  |   <g transform="translate(-42,710)"><text y="0.7ex" class="huge"><tspan>Risk</tspan></text></g> | ||||||
|  |   <g transform="translate(180,360)"><text y="0.7ex" class="big"><tspan>North</tspan><tspan x="0" dy="2ex">America</tspan></text></g> | ||||||
|  |   <g transform="translate(230,580)"><text y="0.7ex" class="big"><tspan>South</tspan><tspan x="0" dy="2ex">America</tspan></text></g> | ||||||
|  |   <g transform="translate(400,110)"><text y="0.7ex" class="big"><tspan>Europe</tspan></text></g> | ||||||
|  |   <g transform="translate(615,680)"><text y="0.7ex" class="big"><tspan>Africa</tspan></text></g> | ||||||
|  |   <g transform="translate(650,100)"><text y="0.7ex" class="big"><tspan>Asia</tspan></text></g> | ||||||
|  |   <g transform="translate(850,680)"><text y="0.7ex" class="big"><tspan>Australia</tspan></text></g> | ||||||
|  |  </g> | ||||||
|  | </svg> | ||||||
| After Width: | Height: | Size: 11 KiB | 
							
								
								
									
										
											BIN
										
									
								
								whitepaper/demonstration/fog-of-war.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								whitepaper/demonstration/fog-of-war.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 879 KiB | 
							
								
								
									
										
											BIN
										
									
								
								whitepaper/demonstration/fog-of-war.webp
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								whitepaper/demonstration/fog-of-war.webp
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 78 KiB | 
										
											Binary file not shown.
										
									
								
							| @@ -1,6 +1,8 @@ | |||||||
| \documentclass{beamer} | \documentclass{beamer} | ||||||
| \usetheme{default} | \usetheme{default} | ||||||
|  |  | ||||||
|  | \graphicspath{.} | ||||||
|  |  | ||||||
| \setbeamertemplate{frametitle}[default][center] | \setbeamertemplate{frametitle}[default][center] | ||||||
|  |  | ||||||
| \title{"Risk" in an untrusted setting} | \title{"Risk" in an untrusted setting} | ||||||
| @@ -16,13 +18,19 @@ | |||||||
| 		\item A player owns a region of the map by stationing troops within the region. | 		\item A player owns a region of the map by stationing troops within the region. | ||||||
| 		\item Players fight for regions by gambling some of their troops against the troops in the other player's region. | 		\item Players fight for regions by gambling some of their troops against the troops in the other player's region. | ||||||
| 	\end{itemize} | 	\end{itemize} | ||||||
|  | \begin{center} | ||||||
|  | 	\includegraphics[width=6cm]{Risk_game_board} | ||||||
|  | \end{center} | ||||||
| \end{frame} | \end{frame} | ||||||
| \begin{frame}{Risk} | \begin{frame}{Risk} | ||||||
| 	\begin{itemize} | 	\begin{itemize} | ||||||
| 		\item \textit{Risk} has a variant called "fog of war". | 		\item \textit{Risk} has a variant called "fog of war". | ||||||
| 		\item In this variant, players cannot see the number of troops stationed within regions they don't control, or don't neighbour. | 		\item In this variant, players can only see the number of troops stationed within regions they neighbour. | ||||||
| 		\item This variant is therefore only played online, in a \textbf{trusted setup}. | 		\item This variant is therefore only played online, in a \textbf{trusted setup}. | ||||||
| 	\end{itemize} | 	\end{itemize} | ||||||
|  | \begin{center} | ||||||
|  | 	\includegraphics[width=6cm]{fog-of-war} | ||||||
|  | \end{center} | ||||||
| \end{frame} | \end{frame} | ||||||
| \begin{frame}{Proposition} | \begin{frame}{Proposition} | ||||||
| 	\begin{itemize} | 	\begin{itemize} | ||||||
| @@ -35,6 +43,7 @@ | |||||||
| 		\item \textbf{Federation} \begin{itemize} | 		\item \textbf{Federation} \begin{itemize} | ||||||
| 			\item Federated platforms can have longer lifespans than centralised platforms. | 			\item Federated platforms can have longer lifespans than centralised platforms. | ||||||
| 			\item Federated platforms are more resistant to censorship and can help promote anonymity and privacy. | 			\item Federated platforms are more resistant to censorship and can help promote anonymity and privacy. | ||||||
|  | 			\item Federated platforms encourage user freedom. | ||||||
| 		\end{itemize} | 		\end{itemize} | ||||||
| 		\item \textbf{Security} \begin{itemize} | 		\item \textbf{Security} \begin{itemize} | ||||||
| 			\item Constantly looking for ways to secure against threats specific to federated and decentralised infrastructures. | 			\item Constantly looking for ways to secure against threats specific to federated and decentralised infrastructures. | ||||||
| @@ -66,4 +75,7 @@ | |||||||
| \begin{frame}{Results} | \begin{frame}{Results} | ||||||
| 	Implementation of Risk. | 	Implementation of Risk. | ||||||
| \end{frame} | \end{frame} | ||||||
|  | \begin{frame}{Citations} | ||||||
|  | 	\textit{Image} Risk game board by CMG Lee, the asterisk denoting the missing link in the 40th Anniversary Collector's Edition, based on shapes from http://commons.wikimedia.org/wiki/File:Risk\_board.svg. 11 November 2008. CC-BY-SA 4.0 | ||||||
|  | \end{frame} | ||||||
| \end{document} | \end{document} | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user