Giter Club home page Giter Club logo

overengineered-diplomacy's Introduction

Overengineered Diplomacy

A few of us decided to play diplomacy over Slack... then we decided to build things to delay and publicize the friend-death.

Diplomacy is a game that breaks people. It involves betreyal and backstabbing over a long period of time. The premise is simple: the players are all world powers and they control armies. Each power wants to control as much territory as possible. All moves are deterministic, there is no randomness to the game. However, people can lie about what they plan to do.

Playing diplomacy is a bad idea in itself, but writing complex code to publicly render an otherwise private, simple game is a genuine waste of raw creative energy.

Directory Structure

This repository holds the hopes and dreams of a generation by using the best technologies that web 3.0 have to offer.

  • /scripts: These scripts populate the json files in the /data directory.

  • /data: This is where all the algorithmically compiled "dynamic" information that powers the game interface are kept.

  • /css, /js, and /img: These hold the supporting content behind the ultimate Diplomacy user experience.

  • /src: Source assets.

Compiling the Maps

Map data for a game should come from diplom.org and we have scripts to convert these files to json. The json files are then used by Overengineered Diplomacy for things like move rendering and transcript parsing.

Default Emoji

Army: ๐Ÿ”ซ Fleet: โ›ต๏ธ England: ๐Ÿ‡ฌ๐Ÿ‡ง France: ๐Ÿ‡ซ๐Ÿ‡ท Germany: ๐Ÿ‡ฉ๐Ÿ‡ช Austria: ๐Ÿ‡ฆ๐Ÿ‡น Italy: ๐Ÿ‡ฎ๐Ÿ‡น Russia: ๐Ÿ‡ท๐Ÿ‡บ Turkey: ๐Ÿ‡น๐Ÿ‡ท

overengineered-diplomacy's People

Contributors

louh avatar slifty avatar knowtheory avatar crupar avatar

Stargazers

Eric Brelsford avatar Alan McConchie avatar Alex Svanevik avatar Chris Swithinbank avatar Andrew Ng avatar Sara Tasche avatar  avatar David Riordan avatar Gerald Rich avatar  avatar

Watchers

 avatar David Riordan avatar James Cloos avatar Alan McConchie avatar  avatar baron avatar  avatar

Forkers

crupar

overengineered-diplomacy's Issues

Enable viewers to "play back" turns

The game manifest will include the necessary information to re-render each move in the game. Viewers should be able to play back moves and rounds to understand how the map came to be.

Requirements

I think this is doable.

Back end

  • Node.js / Express server hosted via AWS or Azure
  • Websocket and Redis pub/sub system for real time server-client communication
  • Blockchain action log
  • PostgreSQL database

Front end // UI

  • React / Redux client side single-page application (with Babel)
  • Asset bundling via Webpack
  • Testing / code correctness via Jest / Typescript
  • Game map created from real-world boundaries in GIS, cached as map tiles at various resolutions
  • Tangram for WebGL-based rendering and animation (Leaflet base)
  • Period-influenced (1920s?) in-game artwork and UI

Absolutely necessary features

  • Character creation system
  • User accounts
  • Animation (water, turns)

Diplomatic phase spy-game

From the game rules:

Conversations, deals, schemes, and agreements among players will greatly affect the course of the game. During diplomatic negotiations, players may say anything they wish. Some players usually go to another room or organize private groups of two or three. They may try to keep their conversations secret. They may try to overhear the conversations of others. These conversations usually consist of bargaining or joint military planning, but they may include exchanges of information, denouncements, threats, spreading of rumors, and so on. Public announcements may be made and documents may be written, made public, or kept secret, as the players see fit. These discussions and written agreements, however, do not bind a player to anything he or she may say Deciding whom to trust as situations arise is an important part of the game.

While we can easily cover all of this through other conversation channels (e.g. Slack, Discord, Hangouts, phone calls, etc), these rules allow for really robust spy game mechanics to be built inside the game itself. Imagine if we had a way to have conversations, but also ways to spy on conversations, counter-spy, spread misinformation, propaganda, or lies through the game UI itself. This can be an entire self-contained sub-project of the main game project so I'll set up a new project tracker for this.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.