Giter Site home page Giter Site logo

viciousfish / buzzwords Goto Github PK

View Code? Open in Web Editor NEW
37.0 1.0 7.0 25.67 MB

A browser based word strategy game featuring frictionless link-based multiplayer. Try it today!

Home Page: https://buzzwords.gg

License: Apache License 2.0

HTML 0.56% CSS 0.67% TypeScript 96.23% JavaScript 1.17% Dockerfile 0.32% Swift 0.89% Ruby 0.17%
game react react-three-fiber three-js hacktoberfest

buzzwords's Introduction

Buzzwords.gg

"Scrabble meets Go" - a hexagonal word game about strategically taking territory

Follow our twitter for updates

https://twitter.com/BuzzwordsGG

Running the code for development

  1. drop a .env file in ./server with API_PREFIX=/api
  2. run yarn in this folder
  3. run yarn dev in this folder
  4. go to http://localhost:5173/ in your browser

By default, the server stores all its data in memory only. To use mongo, drop a .env file in ./server with

DB_TYPE=mongo
MONGO_URL=<your connection string>

Because we're using transactions, your mongo must be a replica set. We're using Atlas for this reason.

Running the code in production

For now, production is dockerized with docker compose. docker-compose build or docker-compose pull, then docker-compose up. You'll need a .env file in the root folder with

MONGO_URL=<your connection string>
COOKIE_DOMAIN=<the domain you're hosting the API on>
MONGO_DB_NAME=<the name of your db, should match what's after the slash in your connection string>

buzzwords's People

Contributors

chuckdries avatar dependabot[bot] avatar james-quigley avatar jayeclark avatar nguyenda18 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

buzzwords's Issues

Handle no vowel game state

The game can reach a state where a player cannot make any words.

Currently, nothing happens and the game must be abandoned.

Potential solutions:

  • Ensure at least one vowel is on the board at all times
  • When this state is reached, the player with the most tiles wins
  • When this state is reached, all tiles reset
  • The game is a draw

Loving the game!

screenshot

pass/skip turn

Allow user to "pass" if they can't find any words. Maybe also reroll parts of the board if they do?

bot moves sometimes don't sync

Some users have to refresh after every move to see their move or the bot move in bot games specifically. Originally reported by a user using Brave, who said it worked when they switched to chrome.

Spectate mode

Allow spectating on games you're not a part of

Implementation thoughts

  • Add a "spectators" array to the game model
  • POST /game/:id/join should add first caller as opponent, all subsequent callers as spectators
  • on game update events, emit socket msg to all spectators

Offline mode

  • PWA for true offline functionality
  • game playable without API (service worker or pure thunk reimplementation?)

Rematch button

Button in UI that creates a new game with the same users and navigates user to it

Socket doesn't always send authToken cookie

For whatever reason, socket.io doesn't always send the cookies header when it connects. Build a system where we manually send the authToken cookie over a socket message to authenticate the connection

Dictionary lookup is unreliable

  • often missing words
  • sometimes simply fails to load for me

solution: switch to webster's API. Requires routing calls through our backend.

Allow users to hide games, relegate to "hidden" collapsible section in gamelist

Iโ€™d like to request a way to resign a game or otherwise remove it from the sidebar. Sometimes I create an extra game by accident or someone will not play back for whatever reason
https://twitter.com/gestaltbb/status/1480070939417231360

  • store list of hidden games on user model
  • new endpoints to hide/unhide games
  • button in sidebar
  • goes hand in hand with #6: if game is empty show delete button, if game is full show hide button

Bot plays profanity

buzzword-slur

SPIC is a slur for hispanic people, which is not in our banned words list but in general we should be cross-referencing the banned words list for bot plays

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.