A bundle of scripts to create a scoreboard website for the roguelike game Dungeon Crawl Stone Soup..
Python HTML JavaScript CSS Shell Makefile
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
contrib
docs
scoreboard
.codeclimate.yml
.gitattributes
.gitignore
.pylintrc
.travis.yml
Dockerfile
Makefile
README.md
Vagrantfile
docker-compose.yml
loader.py
requirements-dev.txt
requirements-postgres.txt
requirements.txt
server.py
vagrant-provision.sh

README.md

DCSS Scoreboard

Tool to create a scoreboard for online DCSS games.

Code Climate Build Status

Why make another scoreboard?

  • The CAO scoreboard is old; |amethyst said 1.3 people understood it and fewer still had time for working on it. So we decided to start from scratch.
  • Faster scripts. No benchmarks just yet so you'll have to take our word for it.
  • Better streaks:
    • Streak griefers are detected with some clever heuristics and blacklisted from the stats.
    • To extend your streak you must start the next game after finishing the previous one. No more queuing up games and winning them all at once for a streak!
  • Bots are blacklisted so the min-duration leaderboard is finally useful again!
  • It’s time for a fresh new UI. New features include player search and a fancy new logo by Ontoclasm. Plus, we’re probably improving stuff as you read this.
  • Per-player tracking of many stats. We hope you like stats.
  • New improvements arriving all the time. If you like, you can even help out.

High-level program flow

  1. loader.py: CLI entrypoint
  2. sources.py: download logfiles in parallel using wget --continue
  3. log_import.py: load each game (eg each line) from logfiles into the database
  4. scoring.py: score each unscored game: 1. Handle streaks
  5. write_website.py: create the website directory 1. Write all global pages (index, highscores, streaks) 1. Write pages for players with newly scored games

How to use

Python 3.5+ is required. Install pre-requisites with pip install -r requirements.txt. If you want to use Postgres as your database server, also install the psycopg2 pip module (which requires libpq-dev on Ubuntu).

To use the code, run loader.py --help.

Windows users

  1. First, get Vagrant at https://www.vagrantup.com/ and install it.
  2. Install the vbguest plugin with vagrant plugin install vagrant-vbguest.
  3. Open in the git folder in cmd which should contain 'Vagrantfile', and run vagrant up. This will set up an Ubuntu VM and might take a while.
  4. Once the setup is complete, you should be able to visit http://localhost:8080/ in a web browser and see your development website!
  5. To update your development scoreboard, you can SSH into the machine with vagrant ssh and run ./update-scoreboard.sh.
  6. Ctrl-D will exit out of the VM's terminal. vagrant halt will shut down the VM when you're done. vagrant up will start it up again when you need it, and vagrant destroy will remove the VM entirely.

Alternatively, specify port 8000 when writing the website, cd /vagrant and python server.py & to start serving the website at http://localhost:8000/.

Postgresql Management

To create a user and database in Postgres, try the following commands:

sudo -u postgres createuser -D -A -P scoreboard
sudo -u postgres createdb -O scoreboard scoreboard

Development

You can see development status here: https://trello.com/b/9Nija4jC/dcss-scoreboard.