ryanb / govsgo Goto Github PK
View Code? Open in Web Editor NEWRails 3 app for playing the board game Go online.
Home Page: http://govsgo.com
License: MIT License
Rails 3 app for playing the board game Go online.
Home Page: http://govsgo.com
License: MIT License
When someone requests a game with another user, that user should have the option to reject the game. Alternatively he should be able to modify the game configuration and send the invitation back to the other user. During this one should be able to post messages to say things like "I'd rather play with no handicap".
The game should appear in "Their Turns" list while it's waiting for invitation, and "My Turns" list if they are the receiving player.
It seems it is always declaring GNU Go as the winner even though it did not win. See this game for an example.
The "My Games" column should be split up into 3 tabs: My Turn, Their Turn and Previous Games. Upon clicking a tab the new section will need to be updated through JavaScript.
lots of trolls will invade the chat box, but I usually talk about the game I played after the game is finished. I think it would be fun to discuss it right on the site (even when the game is still playing) using a chat box. a simple one will suffice.
budi from Indonesia.
cheers.
Example in this game : http://govsgo.com/games/2963
You say black won by 48.5, but White won by 3.5 according to cgoban3 score util.
The stone does not show up immediately when placing a move. This is because it must contact the server to determine if it's a legal move and how it should effect the surrounding stones.
Ideally there should be some logic in the JavaScript to handle capturing of stones so it can be displayed immediately.
If this proves too difficult we could just display the stone and then update the capturing later. Maybe add a little spinning wheel to the stone to show that it isn't done.
Sometimes it's possible for GNU Go to get stuck and take forever to determine a move. This happened in game 11832. For a quick fix I should just make it so GNU Go resigns the game in those rare cases. Currently it gets stuck in a loop trying to determine the best move.
If you try to click a location right after you placed a stone it seems to attempt to place the opponents stone there but this is fixed after a reload. Need to do more testing of this.
One should be able to mark their profile as Private if they don't want other users watching their games or viewing their profile.
The settings when creating a game should default to whatever the last created game was. So if someone prefers to play 13 x 13 games with 5.5 komi, they won't have to choose that each time.
While playing against the computer, captured stones aren't being removed for some reason.
There should be a field on the edit profile page for entering a Go rank if one knows it. Maybe one day this rank can be calculated automatically based games won and lost.
If the computer has the first move, it sometimes appears to not catch it after creating the game. For some reason the polling doesn't pick up this initial move so one has to reload for it to work.
This isn't directly related to the code, but going to www.govsgo.com should remove the www and redirect to govsgo.com.
It will probably be some time before I can get to this, but there should be a way to add alternative plays. This is perfect for a teaching game or when reviewing a game.
Not only that, but it can be used as a way to predict moves and store up responses automatically which will really help long turn-based games go quickly. Many times in Go moves are forced and there's only one or two places the opponent can go. If one adds a variation predicting the opponent's moves, it would play the response automatically.
I am picturing an "Edit" button below the Go board. When clicking this it would slide down a panel for editing the variations and add marks. It would also show a tree of the moves and variations.
It's currently not possible to play a stone on the iPhone, this may be a bug with how JavaScript handles clicking in an area on the iPhone.
Also it would be nice if there was a "Confirm Stone" button on mobile devices, but that may need to go in a separate ticket.
In fact I would like to re-do the interface for mobile devices, and maybe even make an iPhone app, but that will take some time.
Add a favicon. It would also be good to add an iPhone icon while we're at it so it shows up nice if it's bookmarked as an iPhone app.
In a player vs player game, one should be able to send private messages to the other player. This can be done below the My Game and Watch a Game columns. The polling should pick up changes to this.
The move number the comment is made on should be in the database, then we have the option to include it in an SGF file.
The computer opponent is currently unresponsive on the main site.
The pass and resign buttons are too close to the white information text above. It should be relative positioning to that. Also the buttons should hide when not the current player.
If there isn't already, there should be a javascript confirmation before passing/resigning.
Each game should have the time it was last played on. This will give them a sense if it is a live game and should consider watching. It will also be very helpful on the My Games list. It can say something like "last move 5 minutes ago".
Set up New Relic to help track slow requests which need optimization.
The resign button doesn't seem to be working.
It would be nice to be able to undo the last move. Even better would be if you could rewind to any part of a game and try a variation.
The thumbnail images look a little cramped on a full game. They are currently 76 x 76. Instead I think I should make them 80 x 80 and add a couple pixels on each side. I need to experiment.
When playing against GNU Go, it would be nice if there was an automatic level adjustment. It would look at your past playing history and automatically set the handicap, komi, and color. When creating a game against the computer, there would be an "Automatically Adjust Difficulty" checkbox which, when checked, would hide the settings and show the user's current level.
Level 1 would be black, 9 handicap, 6.5 komi. Level 2 would be 8 handicap. The default would be level 6, 4 handicap. Level 9 is 0 handicap, 0.5 komi. Level 10 is an even game with 0 handicap and 6.5 komi. Level 11 is the same but player switches to white. Then it starts giving handicap again but this time to the computer.
The user's current level will need to be determined from their past playing history. I'm not yet certain how this algorithm would work. Maybe take the past three games and add one to the level if it's a win and subtract one if it's a loss. Average that out to determine the current level.
Once the site becomes more stable, move all of the English text into the en.yml
file and request others to translate this to other languages. I would especially like Japanese, Chinese and Korean to help boost the site's popularity in those areas.
I'm not yet certain how to handle the language selection, maybe with a pop-up menu in the footer.
The chat message cannot be translated, but perhaps there can be a flag image showing which country a given user lives in to help one know if they speak the same language. That should probably go under a different ticket.
I'll probably need to refactor how the game columns work to do this.
The user_id
is currently stored in the session, instead it should store a token in a cookie so the user will be remembered when coming back. This unique token will need to be generated upon creating each user.
I'm thinking this unique token can also be used for login through other services. For example, if I supply an API, an iPhone app or other app can log-in through the token so one doesn't need to give away his password.
Alternatively I can turn this into an OAuth provider, but I don't know how that would work when logging in through another OAuth server such as Twitter. Hmm.
Captured stones should appear in the bowl lids. It can display up to 9 or so stones and then display an overlay saying how many there are after that. This makes capturing much more visible.
Once someone is signed in, there should be a Looking for Players list on the home page. This list will contain players who are looking for opponents. There should be a button below the list saying "Add Myself" which will place the current user at the top of the list. When that user is in the list there should be a "remove me" button so he can remove himself if he gets enough game offers.
Passing seems to require the user to click the button twice, and the second click seems to be for the computer. This means the user can end the game early by double passing and GNU Go does its best to estimate the score but not accurately.
Players could use some avatar images. Maybe grab from Gravatar, Twitter, or Facebook. This can show up next to the player bowl as he's playing.
The players avatars can also be displayed in the corner of the game thumbnails.
Hi Ryan,
I am willing to help to build an android version of the game. Let me know your thoughts.
the issue:
old people with bad eye-sight may have hard time trying to click the desired board point.
improvement 1:
improving the board view, so that mouse move will highlight the target position !
improvement 2:
adding animation by replacing the board drawing with html5 canvas.
improvement 3:
for gaining more popularity:
to arrange some contest between artist at http://jsdo.it to draw that board more nicely!
btw:
10x 4 all ryan !
4 being so gifted
and soo sharing.. !
:)
When a game ends, something should overlay onto the board saying either "Congratulations, you won!" or "Sorry, you lost."
Both of these would have a "Play Again" button which would bring them to the new-game screen with the same settings.
If they lost, also say "Need help? Check out the Go Resources".
The "clack" when placing a Go stone on the board is iconic. It would be great if this was in the app. I'm not certain the best way to implement the sound. I'd rather not use Flash, Java or QuickTime. Any way to do it straight through HTML 5? Time to research.
Along these lines, there should also be a sound for chat messages when they come in and a sound saying "I Pass" or "I Resign" when passing or resigning. There should also be a button for turning the sound off.
if password has forgotten
In my opinion it would be a cool feature if you can fork a game:
Now there is a new game generated with the history of the original to the specified turn. This could be helpful for learning go to try alternatives.
I'm not sure how to handle this if it was a game with two human players. Maybe have an option to select the color and play further against GNU go or invite another player?
If one is playing a turn-based game, he may want to receive a notification through email when a turn comes in.
This sort of makes it possible to mimic push notifications on an iPhone if one sets it up as a filter. A real iPhone app would be ideal but this might get us by for now.
I managed to create an account, and it loggued me in.
I tried to login from another computer with the same account, and could not find any login form, only the signup one (which told me my account was already used, as expected).
You really should add an easy to find login form.
There should be a green dot next to each user name when they are currently online. This can be done by adding an last_active_at
column to the users table which updates every time the user visits a page. It's then easy to check if a user has been active in the past 5 minutes.
This will make it easy to switch between live play and turn-based play. You can browse your list of games and play the opponents who are online.
Each player should have a profile page listing the games he has done. Also a button to challenge that player to a game when logged in.
There should be a "Download Game as SGF" option.
There should be some kind of exception notifier. Either add HopToad or use the plugin to send emails about it.
That way I can tell it's my go just by scanning the title.
Allowing for challenge via e-mail (in my mind) achieves the following.
user_name
.With the caveat(s),
2.1. Users that do not want a login can choose to play under a pseudonym
(as a Guest
).
Make the footer say the following.
Follow us on _Twitter_ and _Facebook_. This site is _open source_. Problems or suggestions? See our _Issue Tracker_.
I am trying to sign in using facebook, but I got this weird message:
Change Rejected (422)
The change you wanted was rejected. Maybe you tried to change something you didn't have access to.
If a user comes to the site who is not signed in (guest) and starts a game, then tries to log-in to an account that they previously signed in with, the games should be changed to that account.
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.