Private Lessons for Coders!

Hello! I’m Clossius 2 Dan. I am offering private lessons for people who would help develop OGS. There are some features I would like to see added, and since I can’t do them myself, I decided to support anyone who can! Below I’ve added things I would like to see added to OGS and how many lessons I will provide once the task is complete. If you feel like a task was very difficult, we can negotiate lessons, but please don’t unless something was EXTRA hard.

In order to start on a task, please post in the comments below any questions that you may have. Once you are ready to begin working on it simply post your progress below to let others know it is coming. If you get stuck, ask for help! If someone helps you out, you both can take a lesson or two together depending on how much help you got. If a team develops something, then I will give lessons to the whole team. (Class like settings, not individually.) Looking forward to seeing some cool things!

Edit: I will edit this as things happen and post my edits here.
Edit: Added Last move circle color. (Front end) 10/27/18
Edit: Added if it was front end or backend from Flovo’s reply. 10/27/2018

Things wanted for OGS :

Achievement System : 10 Lessons

The ability to gain achievements after completing certain task on the server.
- Winner : Win 1 game, 10, 50, 100, 500, 1000
- Level Up! : Get a DDK rank, SDK, Dan, High Dan 7D+
- Player : Play 1 Game, 10, 50, 100, 500, 1000
- Ko! : Start a Ko
- Atari! : Put something into Atari, Put 2 stones in atari, 5, 7+
- Capture! : Capture a stone, 3 stones, 5 stones, 7+
- Killer : Win 1 game by Res, 5, 10, 50, 100, 500, 1000
- Blitz King : Win 1 game by Time, 5 , 10, 50, 100, 500, 1000

Fixing the countdown timer. : 2 Lessons
The count down timer currently counts down during main time. It should just tell you when byo yomi starts, not count in main. It is very scary for strong players… Also, on the last byo yomi period, it should say SD or add some text stating it is the last one. Byo yomi periods should be very obvious if it is the last one.

(Frontend, but need backend tags.)
One Color Go : 3 Lessons
Forced One color Go for both sides. You can already change the colors of the stones, so in code you would have to make both sides the same graphic while keeping track of the moves separately in an array. However, after the game the stones should appear as normal.

(Same as one color go)
Blind Go : 3 Lessons
Basically don’t generate the stone graphics when a move is placed. But it should show the circle of the last move played to see where both sides play. This should be forced on both sides. When the game is finished, stones should appear as usual.

Rengo : 10 Lessons
Regular Go expect the control is passed between four people instead of two. I’m not sure how OGS handles the players, but there should be a way to increase the array of active players. In addition to this, the CSS should be updated to show active players in the Black and White player box during the game. If possible, perhaps make the array adjustable to have as many as eight players in a room. This could create a lot of fun for the server. I expect this to be difficult though as OGS doesn’t handle matchmaking like KGS did.

Simul : 10 Lessons
Have a way to play multiple live games at once without them being Correspondence. Additionally, have a way to toggle auto-switching to the next game when a move is played. Lastly, there will be a challenge on how to register if the player is disconnected or in another game. I think the last step will prove to make this the most difficult.

Bomb Go : 5 Lessons
Every x number of moves, have a bomb randomly generate on open spaces on the board. When a player places a stone on a bomb, have that stone and all the surrounding stones within 1 space removed from the board. The rules are played as usual.

Hidden Move Go : 5 Lessons
Have both players play 5 moves on the board that are invisible to the opponent before the game. If possible, have the stone graphics slightly transparent for the viewers and the players if they own that stone. Then, when an opponent plays the move, it fails and reveal the stone. Optional, depending on the rule variant, the move can just fail or you can force a pass.

(Front and Backend)
Banner Request : 2 Lessons
Have a form that users can fill out to request a banner and then notify all moderators online that a new request has been submitted. Maybe limit request to one per day. Mods should also post a policy on the same page as the form so people know what they can and cannot submit.

Set Players on Demo Board : 3 Lessons
Get the ability to set players on a demo board. This will be useful for playing teaching games or passing control to let students solve problems. You could also have two students play and then take control when you want to show something.

(Frontend, but backend for keeping list and sorting it)
Follow Players : 4 Lessons
Have a Follow list and show the followed games first before other games in the active games tab.

Add Automatch : 7 Lessons
Add an automatch feature. Set some toggle conditions and if any other automatch has conditions that are within user’s parameters, challenge them.

Audible Notification When Challenge is Accepted : 2 Lessons
Add a sound when someone joins your game. Users might be in another tab while waiting for someone to join. Let them know with a sound when someone joins and the game starts. This sound should be toggle possible.

Avatars : 12 Lessons
Customizable avatars. This would be a big project but would be a lot of fun for the server in my opinion. Let people collect avatars and/or pets and customize them with items. Players could buy items with OGS currency that they earn by playing games and earning achievements. Logging in every day could also earn some coins. Then let the players make the coolest avatar by spending points. Like I said, big project but maybe a small team could handle it and then get lessons as a group. A cool prototype would be currency to buy custom images and then set those images as their avatar. Last note could be to add a feature to pay real money for currency to generate funds for the server, but that gets into admin territory.

Teacher Role : 2 Lessons
Distinguish Teachers among other players in the list of players. Maybe give them a special color. That way others can ask them questions or get help from them. This feature should have a toggle to turn on or off and should only be earned by getting a certain amount of karma or something of the sort. Mods should also be able to take away teacher privileges.

(Frontend, unless a new field is needed.)
Streamer Role : 3 Lessons
Let users add a twitch or Youtube URL in their profile and then have an icon pop up next to their name when their channel is live. A plus would be to allow anyone to follow that user on OGS and pop up a notification when that user goes live.

Capture Go : 7 Lessons
Let players set the win condition to be whoever captures x amount of stones first wins. If both players pass, then the game can be considered a draw.

More Sounds for Countdown Timer : 3 Lessons
Giver users more options that they can set for the time sounds. You could also implement different languages and/or set the time to count up or down.

(Frontend, but own turn is backend)
Better Undo Request : 3 Lessons
Allow undo request on your own turn. Sometimes the opponent plays too fast to click it. Also, the request should be WAY more obvious. Popup window or giant red letters. Anything that makes it apparent that a request has been made.

Circle for last move color
When playing one color Go, you cannot see the last move because the circle is the color of the other stones. So, if the stones are set to the same color, it is not possible to see it.

In Progress :



I think this is a pretty neat idea! It’s great to see someone donating their time in order to support the development of the site.

However, I want to point out that only the front-end of this go server seems to be open-source. Thus, while some bugs can be fixed and features can be added by community contributors, many other potential features/fixes require modification of back-end code, which is not publicly available. Only the small group of official developers (I believe it’s only 2 people) could implement many of the features that you would like to see.


If someone would be willing to add an achievement system. I will offer 10 private lessons for the completion of such a system. The system should have basic achievements and the moderators should be able to easy add new achievements over time.

If you are interested, please respond below!


1 Like

I would also like to see achievements.

But what achievements?

First win?
First win against a dan player?
1000 wins?

I would like to see situational achievements, but that would be so hard to implement. Like…
The Crab for the clamp tesuji
The Ninja for skillful sabaki
The Barbarian for successfully invading a moyo
The Artist for beautiful shape

1 Like

I think you are on the right track.

Win 1 games, 10 games, 50 games, 100 games, 500 games, 1000 games.

Achieve SDK, DDK , Dan, High Dan 7D+

Dan Killer, 1st win, 5th win, 10th, 50th, 100th

Stuff like this would be a good start. Users can always vote to add more and then moderators can add them as they see fit.

1 Like

Did you ever see the DS game they made for Hikaru no Go?

I think it had achievements in it, or at least some form of “oh wow you made the shape” effects for some things.

It was obviously a bit rough and some things didn’t always make sense, but it did somewhat work to give automated positive feedback about details of play.

1 Like

The ability to gain achievements after completing certain task on the server.
- Winner : Win 1 game, 10, 50, 100, 500, 1000
- Level Up! : Get a DDK rank, SDK, Dan, High Dan 7D+
- Player : Play 1 Game, 10, 50, 100, 500, 1000
- Ko! : Start a Ko
- Atari! : Put something into Atari, Put 2 stones in atari, 5, 7+
- Capture! : Capture a stone, 3 stones, 5 stones, 7+
- Killer : Win 1 game by Res, 5, 10, 50, 100, 500, 1000
- Blitz King : Win 1 game by Time, 5 , 10, 50, 100, 500, 1000

Some starting ideas I wrote out.

1 Like

This has been discussed before.


If you guys are adding achievements there should absolutely be one for losing your first 100 games. Which I accomplished recently tyvm :0)

Also I like the idea of having a currency system which rewards playing games where you can purchase silly titles or avatars or what have you.


More ideas…

  • Greatest Loser! : Lose 1 game, 10 games, 50, 100, 500, 1000
  • 9x9 Dominance : Win 1 9x9 game, 10, 50, 100, 500, 1000
  • 13x13 Dominance : Win 1 13x13 game, 10, 50, 100, 500, 1000
1 Like

Win a game using a standard opening: Orthodox, Chinese, Kobayashi, Sanrensei, and more


Which features do you think are front end or back end? I honestly don’t know so I just wrote most of them down.

1 Like

FYI, I merged the two “private lessons for coders” topics to keep things tidy, since it’s the same basic idea in both.


Lol, thanks. I got really confused for a second hehe

1 Like

Unfortunately, I think most of the features that you are wishing for would require some back-end modifications.

Front-end code refers to the code (HTML, CSS, JavaScript, etc.) that is downloaded and run inside the user’s web browser. The code that runs on OGS’s servers is called the back-end code. The interaction between these two parts of the overall code is crucial for the proper functioning of the site.

It’s hard to generally say exactly when a proposed feature requires back-end changes, since it requires careful consideration of how the system is currently designed and if there is any sort of clever way to implement the feature with only front-end changes.

However, generally speaking, if the proposed change requires server-side storage (even just for persistence of new settings across multiple devices), new ways of interacting with the server, or major game rules changes, then back-end code changes seem unavoidable.

1 Like

I thought there was open API and even a github with stuff though. Is there nothing on there that can be used for some of the features?

1 Like

My guesses are:

  1. Achievement System: mainly backend.
  2. Fixing the countdown timer: front-end only.
  3. One Color Go: you can do it mainly in frontend. Games need a tag that they are one color go though, that’s backend
  4. Blind Go: same as one color go
  5. Rengo: mainly backend.
  6. Simul: is already possible as far as I know. Autorotation worked last year?
  7. Bomb Go: mainly backend
  8. Hidden Move Go: mainly backend
  9. Banner Request: front and backend
  10. Set Players on Demo Board: backend?
  11. Follow Players: mainly frontend. backend has to keep the list. backend does the sorting as well?
  12. Add Automatch: backend
  13. Audible Notification When Challenge is Accepted: frontend only
  14. Avatars: many backend stuff in there
  15. Teacher Role: backend
  16. Streamer Role: frontend, if new field needed that’s backend
  17. Capture Go: mainly backend
  18. More Sounds for Countdown Timer: frontend
  19. Better Undo Request: frontend, undo while own turn backend

The API is open accessible, the backend-stuff is when the API don’t provide the needed information at the moment. Unfortunately this is the case for everything that requires to store information on the server.

The stuff on github is the front-end (the user interface). You can change there colors and sounds and can even save settings in the browser, but only in the browser.

I want to add that anoek has the final say on the front-end as well.


@Clossius1 While I think the ideas here are pretty good, I don’t think they are possible.

Here is the code on github:
Notice that there is only the front end UI code + score estimator here as well as an api for bots + repos for fonts etc.

There is no back end code. This is not open source as far as I know. Without this, we can’t do much (or any?) of what your suggested.

Also, even if we could implement a feature that your suggest, we would create a “Pull Request” for that feature. However it is up to @anoek if he wants to accept thos changes. There is 101 reasons why he might not accept changes but he is ultimately the gate keeper of all code that gets into the codebase. The code mightn’t fit well with existing code or it might conflict with another feature that anoek is working on behind the scenes or etc.

For example, I can imagine that the one-color go idea could be implementable on the front end only, however that doesn’t mean that it should be implemented on the front end only. There is design considerations to take into account and what ever decision anoek makes in this regard is the correct decision as he is the one that will be managing/maintaining/fixing/updating that code going forward

I would like to hear @anoek thoughts on all of this


Now my thoughts on some of your proposals:

Achievement System

If there is a achievement system I start trying to get them instead of for fun or to get better.
Most achievements are medals for being here for long / spending all my time playing anyways (I would just try to get them faster).

  • The win 500 games for example is either equal to play 1000 games (winrate should be 50%) or it is a medal for smack 500 much weaker players (the later is the fast track to that achievement).
  • Level Up: We have this already. It is displayed on the right side of your user name :wink:
  • Player, Ko, Atari, Capture: just play, you will get them by accident anyways.
  • Killer: I get this by smacking weak players as well
  • Blitz King: This will increase the number of 1s per move games by a huge amount.

Fixing the countdown timer.

good idea :+1:

Game variants

Why not. Capture Go is fun and would probably help beginners.
I would like to see multicolor go as well.

Add Automatch

It’s called Quick match finder :wink:
If you add more options there it will be impossible to find any game within a reasonable waiting time.


I don’t get it. You mean something other than the profile pictures, right?
To be honest, I’m here to play go. If I want to collect animals I play some other browser games.

Teacher Role

especially a list of players who are willing to give a teaching game right now could be handy.

Better Undo Request

This should be optional. I’m not a big fan of big red letters appearing in the middle of the screen.