Coder Social home page Coder Social logo

iimog / x-game-master Goto Github PK

View Code? Open in Web Editor NEW
1.0 4.0 1.0 14.26 MB

X Game Master - your companion app to organize a fun game night (or day)

Home Page: https://markus.ankenbrand.me/x-game-master

License: MIT License

JavaScript 0.43% TypeScript 99.57%

x-game-master's Introduction

X Game Master

Your companion to organize a fun game night (or day).

Important: This is not a game in itself it is just a tool to help you organize a match made from your own games.

Get the app

  • Android: Play Store
  • iOS: It was available on the App Store for a year, but I refuse to pay $99 every year just to keep this free app available. You can use Expo to get it on your iPhone (you might need to fork it)
  • Web: Experimental Web Interface

Idea

You absolutely need two things for a fun game night:

  1. Players
  2. Games

You probably have both of these and don't need an app for that. But this app is your X factor to combine separate games to a unique gaming experience. So grab some friends and your favorite games and let the X Game Master transform it into an awesome competition.

Synopsis

Enter a list of players and games and press start. The games will be played in a randomized order with new random teams for each game. The winners of each game get points (1 for the first game, 2 for the second, ...). In the end the player with the highest score wins.

How it Works

Note: a game refers to the thing you play in one round while a match refers to the whole sequence of games.

New Match

Start a match by entering the list of players (one per line) and the list of games (one per line). Feel free to use Emojis πŸš€ Player names have to be unique while you can duplicate game names (in separate lines) for the number of times you want to play them. A good game is one that can be played with two teams and a clear winner. The order of games will be shuffled but if you want a game to be played in a certain position just prepent "X. " with X being the position, e.g. 3. (space after the dot is optional).

Procedure

You play all entries in the game list in a random order exactly once. For each game the active players are assigned to one of two teams randomly. All players from the winning team get points according to the number of the round (1 in the first round, 2 in the second, and so on). The player with the highest sum after the last round is the overall winner.

Game View

In the game view you see the name of the game and the players of each team. After you played the game in real life just press the button for the winning team accordingly.

Leaderboard View

The leaderboard view is shown before and after every game. It shows the rank of each player together with the sum of their points and their status (active/inactive).

If a player can not play a round you can set them inactive by clicking on them in the leaderboard view. This player will not participate in any games until it is set active again and hence will not receive any points.

Matches

In the matches view you can resume previous games (just tap them). Long press to export the game to clipboard or delete it. The exported game is plain json that you can save to a file or send via any messanger. In order to import a match, copy it to the clipboard and press the Import button at the bottom left.

Long press interaction, native alerts, and copy to clipboard don't work in web. So in web after clicking a game you are asked whether to resume, if you click cancel, you are asked whether to delete it.

Design Principles

The app is designed to be clean and simple to use. The UI is meant to be intuitive and pretty without unnecessary clutter. Only features that proof to be desirable when playing the game will be considered to be included.

Issues

If you find bugs or unexpected behaviour or if you have ideas for any kind of improvement please open an issue on GitHub.

Logo

The game logo was designed by Tobias Ankenbrand

X Game Manager Logo

Data Privacy

As outlined in our data privacy statement this app does not collect any user data.

Third Party Libraries

The app is built using a collection of open source libraries including

Change Log

1.2.0

2022-04-16

  • add match export/import (via clipboard)
  • update expo and other dependencies
  • web version functional (not yet pretty, import works, export doesn't)

1.1.1

2020-09-20

  • make space after game position optional (i.e. allow '1.First Game' instead of '1. First Game')

1.1.0

2020-09-16

  • add possibility to set game position in advance
  • [internal] change game type from string to Game

1.0.0

2020-03-14

  • add unplayed games
  • add help info
  • minor bug fixes
  • remove unnecessary permissions on android
  • UI improvements

0.5.0

  • add list of played games with winners
  • add ability to change winner of a finished game
  • add ability to remove games from match

0.4.0

  • fix early finish bug #18
  • multiple matches are saved independently
  • finished matches are kept

0.3.1

  • game state persists restarts of the app

0.3.0

  • simplified design and game play
  • complete re-write from <=0.2.1

x-game-master's People

Contributors

iimog avatar dependabot[bot] avatar

Stargazers

GAURAV avatar

Watchers

James Cloos avatar  avatar  avatar  avatar

Forkers

icodein

x-game-master's Issues

Add possibility to reset game list

There should be a way to reset the game list to the stock version. It is also imaginable to have backup/restore or export/import functionality for game collections.

Edit existing games

It should be possible to edit existing games, e.g. modify the number of rounds, etc.
The "new game screen" should be re-used as much as possible.

Prevent duplicate game win actions

While trying a game with a single win I accidentally tapped the button for one player twice. This team was awarded two wins then (as it was game 5 they won 5 and 6). This needs to be prevented.

Add possibility to set some games at fixed position

The order in which games are played is random by default. However, there should be a way to define a game to happen at a specific position if wanted. E.g. select the first game to kick-off or the finale. It might also be desirable in some circumstances to define the order of all games.

Early finish bug

The game is considered finished when the last game starts (not when it ends). This is visible by a flash of the trophy on the leaderboard screen when starting the last game. Also if you navigate back to the leaderboard screen it will not offer to return to the last game but only to the main menu.

Change list of players during match

From my experience it happens that some players join late, have to leave early or want to sit out some rounds. This should be better supported:
In club mode:

  • Add players during match (they start with 0 points)
  • Set players to inactive (they will not be part of any team and will not earn points)
  • Set player back to active

In classic mode:

  • Add player during match (assign to team with less active players, else: randomly)
  • Set player to inactive
  • Set player back to active
  • Move player to different team (manual balancing)

Improve design

The design of all components in the game is rather rudimentary. This can be improved πŸ™‚

Reset game list when starting a new game

As the game list is not reset when starting a new game it is possible to delete an active game which can then no longer be deactivated. Alternatively deleting a game should also remove it from the active games list.

Improve button component

Make style of button component easier to configure by passing the properties through. Add property disabled so no onTouch events are handled and the button is visually changed to apear non-functional.

Add new game dialog

It should be possible to add a new game via the app itself.
All properties available in the json file need to be supported.

Edit list of games

Make list of games editable. Add edit and remove games via game preferences:

  • Add new game (#8)
  • Edit existing game (#9)
  • Remove game (#10)
  • Reset game list (#11)
  • Copy game (useful to have the same game with default pre-settings)

Continue game

If the app is stopped/crashes with a running game add a button to the home screen to "Continue game".

Bad 6

Implement the game "BΓΆse 6" as first instance of a game which is not a simple configured default game. Instead it should know (and enforce) the rules. It provides two alternative interfaces.

  1. Players can use a virtual die emulated by the app or
  2. players can play with a real die and enter the result of each roll

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.