joshzcold / cold-family-feud Goto Github PK
View Code? Open in Web Editor NEWHost your own Family Feud game. Mobile friendly with built in buzzers.
Home Page: https://famf.app
License: MIT License
Host your own Family Feud game. Mobile friendly with built in buzzers.
Home Page: https://famf.app
License: MIT License
Revealing an answer resizes the column that it's in, would be cool if that didn't happen. Maybe the boxes could be fixed and the text could change size to fit?
Can you add Indonesian in your game
To reproduce:
Family/team names get reset until you type in those fields again.
If someone is casting the game screen then the audio should be playing from the game screen instead of the admin console.
This would require play/pause functionality for the theme triggered by websocket.
after creating script/parse_csv
this project now has the ability to load up csv data into the cold_family_feud format.
The operation would go as follow:
question,answer,points
or
question,answer,answer
(points get generated)
after the file picker we send it to the server (assuming its not too large)
run the csv through script/parse_csv
and JSON.parse() the output from server.
For certain types of people this would be 1 step easier than using the game creator.
I'm thinking school teachers who are familiar with google docs more so than a website's custom form.
Currently contenstants have to yell out "buzz!" when they are buzzing in for a question.
Problem is VOIP program's latencies might give a competitve edge.
giving a UI buzzer conected over the socket would level the playing field however you would still have an advantage if you were closer on the network to another player.
Best way to solve this in my mind to is take the player's system time and compare to the server's system time.
You would also have to account for timezones and any offset in time difference between the system clocks.
so for each buzzer connected (lets assume that many users pull up a buzzer) you would save an offset and then later use that offset to calculate who actually clicked the button first no matter where they are in the world.
There would be a possibility of cheating if a user connected then changed their system time, but for family feud it is assumed that you are playing with people you know and you wouldn't really want to cheat.
Putting in a buzzer pretty much assumes that the admin would deploy this project publically on a VPS and their friends/family would connect to the public instance. This leads the way to more public features.
if the project gets big enough I would probably have to rebrand off of "Family Fued"
Family played this last night, i was really fun, nice job again! I've taken some notes of things I will try to submit for a PR, because I can see us using it again. I wasn't sure how to finish the game, though, after the money round. It seems there wasn't a way to total up the points and determine if they won the bonus round, but I assume that may not have been added yet...
When start_timer is kicked off in game.js, an interval is started. When the interval's limit (which also acts as an iterator index) hits zero, the interval is cleared. However, the admin page never receives this information. A message needs to be sent back through the socket so that the admin's button can be reset to the "Start Timer" state.
With the addition of hosted rooms with room codes it would be feasible to launch this application publicly allowing people to just start a game without deploying the application themselves.
It would also benefit locking off the admin console to the administrator when the game starts so other players don't sneak in. Which would be something weird for a person to do, but I also plan on giving this game a try with 60+ people so who knows ๐คท
Currently on https://famf.app if I want to deploy a new version of code I wait until no-body is playing the game before I can deploy.
This is because the current state of the application would be wiped when I swap out the docker container.
I would like the option to store that game state in some kind of storage service.
Redis seems like a good bet for data that doesn't have to live forever and I can probably keep games alive for 24 hours instead of 1.
Another option is sqlite or postgres, but I would like it to be as plug-n-play as possible for others who also want to host the site.
if you go to index then the client will connect to the server.
This serves no purpose and should really only be done when the user clicks to host or join a game.
As a side issue. When the user click to host or join and the websocket is in a closing state, then the client should make a new connection.
games/lang/de/german-game.json
Need to do a bit of research on best library/practice for my use case. When ive seen internationalization in the past there is a usually a file where the actual text gets brought in and each string text within the client pulls from that file.
Elements/Pages where internationalization needs to be placed:
lots of work, probably can't hash this out in one session just based on the amount of text ill have to replace with variables, but I will make incremental pull requests on stages within this feature. Once I have all text replaced with english ill create a doc for helping with internalization. I do have a couple friends who know spanish so I can probably ask for their help ๐
/game
is self explanitory, but the admn console does need a bit of training to get the hang of all the controls.
This would be a good chance to start a github wiki where I also put in other helpful information.
The help docs should be accessible from the admin window.
I want to change the title from Family Feud to Super Family 100.
Hello, it is possible to publish the last merge on the production website ? thanks
For web searching and for general help there should be some traditional website content for people to read.
https://jackbox.tv/#/
doesn't need content on its login page, but that game doesn't rely on search engines for traffic
Play a sound when pressing the buzzer.
Would be pretty fun to hear player's phones go off if they are playing in the same physical room.
After enabling the mobile buzzer screen to see the game board, if you host the game purely on mobile then you miss out on the game sounds.
Current registered buzzers can get out of the game by refreshing.
This is low risk as they can just re-regesiter with the same name.
It would be nice if the client attempted to get back in the game.
If the host adds a logo image but then removes it and adds a different one, the buzzers/users will not update the image. I believe this is because the browsers cache the URL.
For fast money we have to pick two team mates from 1 team.
We have to tell 1 player to "leave the room" or video call while we run the 1st fast money round.
While they leave the room the game board is still visible on their joined device.
Most people in spirit would choose not to look, however the game should up hold the rules of the game.
It would be nice if the admin had a choice on who to "hide" the game board from during fast money.
Instead of needing to use a computer with two monitors, one hooked up to the shared screen, it would be nice if the game window could join a session and be hosted from a separate computer.
I would use that to connect on one of the devices with a browser attached to a TV like an XBox, Playstation, Firestick, or Chromecast device.
The code could be the same as the main game, or one generated and shown only on the host screen.
The "Final Round Title" input has onl=
instead of onChange=
. It is broken.
very small bug.
disallow negative in the html inputs for numbers.
When starting the app with npm run build, I get an error from the NODE_OPTIONS:
[email protected] build
NODE_OPTIONS=--openssl-legacy-provider next build
sh: 1: next: not found
Any ideas? Thank you!
The games folder's JSON files are filled with unnecessary game state such as "selection" and "input". These things can be added when the state is initialized and greatly alleviate the readability of the library data.
along with
we should have another picker that just reads from the /games
directory of pre-commited games for the user to select from.
While internationalization isn't done I will be looking within /games/lang/eng/*
When internationalization is done, selecting a language will then show those language's games.
what should happen is that round answers should reset when going between rounds.
I played this game with my work and I had to keep refreshing the game windows to reconnect the websocket.
This happened on all screens within family fued on https://famf.app
This might be a problem with heroku and not the code. Perhaps if heroku has a limit on how long a connection can stay up on the free tier.
Help, I can't get past this error
Error: error:0308010C:digital envelope routines::unsupported at new Hash (node:internal/crypto/hash:71:19) at Object.createHash (node:crypto:133:10) at BulkUpdateDecorator.hashFactory (C:\VSCode\family-feud\node_modules\next\dist\compiled\webpack\bundle5.js:133790:18) at BulkUpdateDecorator.update (C:\VSCode\family-feud\node_modules\next\dist\compiled\webpack\bundle5.js:133692:50) at C:\VSCode\family-feud\node_modules\next\dist\compiled\webpack\bundle5.js:56905:9 at processTicksAndRejections (node:internal/process/task_queues:82:21) at runNextTicks (node:internal/process/task_queues:64:3) at process.processImmediate (node:internal/timers:442:9) { opensslErrorStack: [ 'error:03000086:digital envelope routines::initialization error' ], library: 'digital envelope routines', reason: 'unsupported', code: 'ERR_OSSL_EVP_UNSUPPORTED' }
Title music is currently hardcoded to the family feud theme.
We can allow users to load music on their computer for customize the game for their event.
This would be a good oppertunity to remove the copy written family fued theme from the repo.
for the remainer of the sound effects we should create non-licensed equivalents.
there is error checking within the game creator, but none in /admin.
I assume that if someone loaded a bad .json currently it would prevent game play.
Disclaimer: Forgive me if I'm missing something as I'm still discovering everything in this repo.
While I can see the value of being able to control anything at any time from the admin page, there is a certain level of game play cognitive load that comes with that.
I propose a second admin page that follows the flow of the game. For example, loads as title page, button for start game, buzzers appear to first users, admin clicks answer or strike, etc...
The idea being that only the currently relevant information is displayed as the game progresses. Of course, catastrophic bugs can sometimes appear out of nowhere so I'd keep the current admin page as a failsafe.
it seems that as the host if i accidentally misclick and e.g. award the incorrect team points, there is no way to undo this. supporting an undo function would be useful in certain scenarios. I think this could be done by maintaining a stack of last actions that occurred in game state?
I just tried the latest commit and the Game and Admin pages both get stuck on "Loading..."
Hi,
I am trying to get your project running.
However, when navigating to http://localhost:3000/admin
I get a 404
.
/new
and /game
work fine.
In the .next/server/pages
there are new.html
and game.html
, but no admin.html
.
Has anything changed that is not recorded in the README.md?
Hi, i deployed this to my own server but i can't refresh all the names. i will look into the code and see if i can add code to clear it but i am not a react developer, so ill check.
But i would like to request a feature to show all the players in dash where you can just delete them so you dont have duplicates. or if player looses connection it removes them automatically and they must just sign in again
When an admin has a game already in progress and opens a new game window, it opens to the title card instead of the round that they are currently on.
Fast money round isn't super self explanitory. The operation you take is:
either the ui needs to be super obvious or i need to put in some instructions in a modal or something.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.