Skip to content
This repository has been archived by the owner on Feb 2, 2021. It is now read-only.

Latest commit

 

History

History
61 lines (37 loc) · 5.08 KB

README.md

File metadata and controls

61 lines (37 loc) · 5.08 KB

KGS Leben

KGS Leben is a client for the KGS Go Server, written for modern, standards-compliant web browsers such as Chrome, Firefox and Microsoft Edge. It connects to the server via the JSON API for KGS and has no other dynamic, server-side dependencies. The source-code for the client is released under the MIT License and a list of contributors and noteable people can be found in the root of the source tree.

The KGS Leben project is only a few months old and not presently suited for general consumption. The following features have been implemented:

  • Spectating -- Games played by other people can be joined and the user can watch as play continues. Kibitz messages sent to the chat box will be broadcast to other spectators in the channel but the chat feature is currently non-functional in game channels so the user will see neither these nor the messages typed by others.
  • Game Playing -- Once a game has started in which the user is a player, the user can play moves, pass, resign, win and lose on time and mark live and dead groups, should the game proceed to the scoring phase, and agree on the game's result. Sound cues are played for stones and pass moves.
  • Joining open Challenges -- The user can join an existing game challenge in a room, negotiate the terms of the game via the usual dialogue and proceed to play.
  • Auto-match -- On the Home view, in the sidebar, a selection of controls allows the user to set their preferences for the automatic match-making queue and provides a button to join (and leave) the queue. Preferences are synchronised with the server automatically.
  • Chatting in Rooms -- Conversing in rooms is operational in both directions. Upon a successful sign-in, the user will join the rooms that they were in when they last signed out of the server, from the Leben client or the legacy one, Cgoban. Joining new rooms is not implemented simply because no room-list screen has been created - behind the scenes, work to do this is complete.

##Project Status

KGS Leben is currently on hold. That is to say, I simply do not have time to work on the project at present due to a career-related change in priorities. Ilya Kirillov's Go Universe looks like another promising project for Go players to follow.

##Technologies

KGS Leben is implemented low-tech, without undue dependence on third-party frameworks or packages. The artefacts produced by the build-script are all static content which can be served by even the most primitive HTTP web-server and they depend only on the JQuery Javascript library.

Development dependencies are limited:

  • Node.js and its package manager, NPM
  • Sass for convenient and maintainable style-sheets
  • TypeScript provides type-safety for scripts and insulates the code-base from obscure JavaScript quirks
  • Gulp is used as a flexible and scriptable build system
  • Mocha provides a framework for testing domain models and algorithms

##Building the Source

Prior to compiling artefacts to be served, one must first install Node.js and clone the source repository. Thereafter, simply follow the instructions below. (Command-line commands should be executed relative to the root of the cloned source tree; paths are also relative.)

  1. Use NPM to fetch the dependencies and development dependencies defined in package.json

    npm install

  2. Execute the build script defined in package.json. This will run the Gulp task: build

    npm run build

  3. A sub-directory named dist will be produced, containing all artefacts required to host KGS Leben.

##Running the Unit-Tests

The suite of automated tests for various domain models and algorithms within the project, powered by Mocha, can be built and executed with a single NPM script:

    npm test

##Serving KGS Leben

Any HTTP web-server should be able to serve the KGS Leben web application but the path to the JSON API is currently not configurable so the ability to serve Java Servlets is also required. Apache Tomcat is recommended. The web-server must be configured to serve two routes:

  • / should route to the static content found in the dist sub-directory produced by the build script
  • /jsonClient/ should route to the KGS JSON Client Servlet (distributed as a .WAR archive)

##See Also