• Stars
    star
    317
  • Rank 127,799 (Top 3 %)
  • Language
    CoffeeScript
  • License
    GNU General Publi...
  • Created over 10 years ago
  • Updated over 5 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

A multi-player Vim trainer.

vimtronner

vimtronner

A multiplayer, realtime, command-line game that teaches you the core vim keys. Be the last player alive by either controlling your bike safely around obstacles or enter INSERT mode to build walls for your opponents to crash into. Just remember, you can't do both at the same time!

Inspired by Patrick Moody's vimsnake and, of course, TRON.

Quickstart Guide

Greetings, programs! Before we can enter the grid, we need to have node (http://nodejs.org) installed. There are many paths to do so; we like to install it through brew (http://brew.sh/).

$ brew install node

Install the vimtronner module via npm:

$ npm install -g vimtronner

Start a practice game:

$ vimtronner

Press i to start the game. After a countdown, the game starts. Your bike moves continuously. You can control its direction:

  • go left by pressing h
  • go down by pressing j
  • go up by pressing k
  • go right by pressing l

To start creating insert walls, enter INSERT mode by pressing i. BUT remember; you can't change your direction while in INSERT mode. To return to normal press ESC or CTRL-[. Press q to quit anytime.

When you're ready to face other players, connect as a client to the public vimtronner server, stating the number of players you want.

$ vimtronner -C -N 4

Look in the lower left-hand corner for your game name.

Game name found in lower left-hand corner

Then have the other players join that game as a client:

$ vimtronner -G simplistic-trail

The game will start once all players have declared they are ready by pressing i.

Good luck. It's in your hands to see if you're a User ... or a loser!

Controls

Your bike will continually move on its own; you only have control over which direction it is heading in or whether you can build walls. Just remember, you can't do both at the same time!

left...................h
down...................j
up.....................k
right..................l
insert mode............i
normal mode...esc/ctrl-[

Launching

Practice

Launching vimtronner with no options kicks it off in a single-player practice mode:

$ vimtronner

Use this mode to become familar with the vim keys and how to rapidly switch between INSERT mode to build walls and normal mode to control your direction.

Public Multiplayer

To play a multiplayer game, you connect as a client (with the -C or --client flag) to our public multiplayer server, passing in the number of players who want to play with the -N or --number option.

$ vimtronner -C -N 6

A game is created with a random name you can find in the lower left-hand corner.

Game name found in lower left-hand corner

You can also explicitly give a name to a game when you create it through the -G or --game option.

$ vimtronner -C -N 6 -G mygame

Other players can then join your game by starting vimtronner in client-only mode (-C or --client) and passing in the name of the game (-G or --game).

$ vimtronner -C -G simplistic-trail

The game will only start one all players have connected and declared they are ready by entering INSERT mode (pressing i). You can quit at anytime (press q) with the last bike remaining being considered the winner.

At the end of the match, you can all play again by everyone declaring they are ready by pressing i.

NOTE: Games on the public server have a time to live of 3 minutes. This is to ensure system resources are not overwhelmed with dead games. Blame the MCP.

Local Multiplayer

You can start yor own multiplayer on your local network for others to join. Simply launch vimtronner with the number of players you want before starting a game with the -N or --number option and WITHOUT the client flag (-C or --client)

$ vimtronner -N 3

This starts your own vimtronner on your machine, which you are immediately connected to. Like on the public server a random name is given to your game (displayed in the lower left-hand corner)

Game name found in lower left-hand corner

You can explicitly give a name to a game when you create it through the -G or --game option.

$ vimtronner -N 3 -G mygame

Other players can then join your game by starting vimtronner in client-only mode (-C or --client) and passing in the name of the game (-G or --game) and the address of your machine (-A or --address).

$ vimtronner -C -G simplistic-trail -A 10.0.1.144

By default, vimtronner launches and connects to port 8766. You can override this through the -P or --port flag. So when launching a local multiplayer game:

$ vimtronner -N 3 -P 8000

And when others want to join:

$ vimtronner -C -G simplistic-trail -A 10.0.1.144 -P 8000

Note: that if the game host quits, the game ends immediately and everyone is disconnected.

"Headless" Server Mode

You can launch a vimtronner server to host multiple games without also starting a game. Simply pass in the -S or --server flag.

$ vimtronner -S

Now anyone can create a game on the server by connecting as a client (-C or --client flag) to the server's address (-A or --address) to create games:

$ vimtronner -C -A 10.0.1.144 -N 5

And join them:

$ vimtronner -C -A 10.0.1.144 -N 5 -G simplistic-trail

As always they can give games a specific name (-G or --game option) when creating them. You can also set a port number for your server to listen to with the -P or --port option (it defaults to 8766). Players use the same option when connecting.

Listing Games

To see a list of all games running on a server, simply connect as a client and pass the -L or --list flag.

$ vimtronner -C -L

This works in tandem with the -A/--address and -P/--port options to specify the server we are connecting to.

All Options

  Usage: vimtronner [options]

  Options:

    -h, --help                        output usage information
    -V, --version                     output the version number
    -S, --server                      launches in server only mode
    -C, --client                      launches in client only mode
    -A, --address <address>           the address to connect the client
    -P, --port <port>                 the port to launch the server or connect the client
    -G, --game <game>                 the name of the game the client wants to join
    -N, --number <number of players>  the number of players required to play (applies to new game only)
    -W, --width <size>                the grid width
    -H, --height <size>               the grid height
    -L, --list                        list active games on the server

Development

Want to contribute to vimtronner? There are many ways to do. File bugs and features through Github. Or fork the repo to add your own changes and create a pull-request so we can bring them in! Any help is welcome!

Contributors

More Repositories

1

raygun

Rails application generator that builds applications with the common customization stuff already done.
Ruby
211
star
2

razor

Phoenix application generator that builds applications with the common C5 customization stuff already done.
Elixir
80
star
3

active_column

ActiveColumn is a data management framework for Cassandra. It includes data migrations similar to ActiveRecord, and a data mapping framework for "time line" modeled data.
Ruby
54
star
4

raygun-rails

Rails 7 application template for Raygun, the Carbon Five Rails application generator.
Ruby
51
star
5

hellod

HTTP performance testing
Java
44
star
6

log_weasel

Instrument Rails and Resque with shared transaction IDs to trace execution of a unit of work across applications and application instances.
Ruby
34
star
7

nock-vcr

Automate the recording and plack-back functionality provided by nock.
28
star
8

html5-playground

HTML 5 Playground
HTML
24
star
9

socrates

Socrates is a microframework for building stateful conversational interfaces for Slack in Ruby.
Ruby
19
star
10

shimmer

An experimental capybara driver for chrome
Ruby
16
star
11

functional-programming-weekly-challenge

16
star
12

razor-phoenix

Phoenix application prototype for Razor, the Carbon Five Phoenix application generator. https://github.com/carbonfive/razor
Elixir
12
star
13

mocha-server

JavaScript
8
star
14

spraygun

Quickly generate JavaScript apps from Carbon Five-flavored templates
JavaScript
8
star
15

funnel

little ci server for git hygiene
Elixir
7
star
16

c5vr

VR Demos we have whipped up
JavaScript
6
star
17

vrogger

JavaScript
5
star
18

nortonquest

Powering the C5 2015 Holiday Funtivity
JavaScript
5
star
19

db-migration

Java
4
star
20

reflectrospective

Carbon Five hackfest project
4
star
21

john

C5 LA's current bathroom status
Ruby
4
star
22

formbot-chrome-ext

An automated form-filler Chrome Extension for development and testing, and maybe demos, too.
JavaScript
4
star
23

devise-api-authenticatable

API key based authentication strategy for devise
Ruby
3
star
24

hi-blank-node-app

Starting point for a node application
JavaScript
3
star
25

spraygun-express

Express application prototype for Spraygun, the Carbon Five JavaScript application generator.
JavaScript
3
star
26

Sentimeter

Carbon Five Elixir Tech Radar
Elixir
3
star
27

duggit

Sample app for SXSW 2011
Ruby
3
star
28

seed-crystal

Opinionated workstation configuration tool -- From zero to productive
Shell
3
star
29

kablammo-strategy

Build your own Kablammo robot
Ruby
3
star
30

kablammo

Kablammo! the GoGaRuCo death match
Ruby
3
star
31

spraygun-react-ts

TypeScript React application prototype for Spraygun, the Carbon Five JavaScript application generator.
JavaScript
3
star
32

MUDder

JavaScript
2
star
33

spraygun-react

React application prototype for Spraygun, the Carbon Five JavaScript application generator.
JavaScript
2
star
34

exploring-client-side-mvc-with-backbonejs

Sample Rails 3 and Backbone.js app
Ruby
2
star
35

c5-conventions

2
star
36

parky

Carbon Five LA parking assistant Slack Bot
Ruby
2
star
37

ey-cloud-recipes

A starter repo for custom chef recipes on EY's cloud platform
Ruby
2
star
38

igpay_atinlay

adds String#to_pig_latin, and it's fantastic!
Ruby
2
star
39

sequencer

Simple Web Audio API sequencer.
JavaScript
2
star
40

nodebro.js

A sample Node.js Application
JavaScript
2
star
41

presti.js

JavaScript
2
star
42

akop

Angular Kit of Parts
CoffeeScript
2
star
43

hi-essence-of-coffeescript

Web-Based Tutorial Framework and Lessons for Learning CoffeeScript
CoffeeScript
2
star
44

capybara_race_conditions

Examples of race conditions and performance problems found in acceptance specs using Capybara
Ruby
2
star
45

booty_log_twitter

Ruby
1
star
46

cur8

1
star
47

c5-zine

The C5 Zine #my-forthcoming-zine
HTML
1
star
48

slacky

Carbon Five Slack bot baseline
Ruby
1
star
49

cinqshot

Andreja Premium Automation
C
1
star
50

stylegun

Living la vida Style Tiles
CSS
1
star
51

specs-rails

Strategies for writing specs for ruby on rails apps
1
star
52

db_reaper

Ruby
1
star
53

nag

Timesheet Nagbot
Ruby
1
star
54

jjbart

Template project for Carbon Five's Junior Jump Event
Ruby
1
star
55

skipper

Ruby
1
star
56

gel-test-repo

1
star
57

circuit-lab

Circuit Lab! Fun with LEDs and BeagleBones...
JavaScript
1
star
58

spokr

Ruby client for Spoke API
JavaScript
1
star
59

smarty

Asks questions, and knows answers
Ruby
1
star
60

BoxDrop

Upload files to dropbox from the command line. Requires a dropbox app (https://www.dropbox.com/developers/apps).
Ruby
1
star
61

cyberdyne-systems

A sample app demo-ing Twilio and WOPR
Ruby
1
star
62

tempo

Elixir
1
star
63

go-filecoin-rest-api

Temporary location for Filecoin REST API implementation
Go
1
star
64

n-fold

Multiplayer Space Shooter!
JavaScript
1
star
65

rusty-drummer

A drum sequencer implemented in Rust
Rust
1
star
66

gdyup

Wakeup call service
Ruby
1
star
67

5050_game

50/50 East African Famine Relief Project
Ruby
1
star
68

beginning-outside-in-rails-development

Sample app developed outside-in
Ruby
1
star
69

gel

Ruby
1
star