Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
Third party software and services
This is not an exhaustive list, but these are the most important for you to know about. We rely heavily on open source code and high quality services to speed development and focus on building CodeCombat, and these tools are what inspire us to open source our own work as well: to give back to the community that has given us all this.
You don't need to learn how to use all of these tools, but please take some time to familiarize yourself with at least the ones you'll be using for the area(s) you'd like to work on.
- Sass: These are compiled in to CSS files and provide many nice features CSS does not have.
- Markdown: Used for static HTML strings, such as in database text documents or incorporated in some text-heavy Pug templates (see the legal page for an example). We use Marked as our Markdown processor.
- Backbone.js: Provides a lot of the basic structure we use. The classes they provide are subclassed and extended. Each collection in the database has a parallel Backbone Model and each page on the site has one View which can contain many more Views. The Event system is also used, though perhaps underutilized for objects other than Views.
- Validated-Backbone-Mediator: A mediator so wide-spread classes and views can communicate with one another more easily, now with JSON Schema validation.
- jQuery: Used largely for manipulating DOM elements. When it comes to utilities, Lo-Dash tends to be used instead.
- jQueryUI: autocomplete and others.
- Keymaster: Keyboard bound events.
- Moment: Formats times and dates.
- Treema: Custom built library for editing schema-defined JSON data. Used for all editors.
- jsondiffpatch: Adds support for showing diffs and patching JS objects.
- i18next: Handling our i18n needs (CodeCombat is translated into 45+ languages).
- d3: Data vis!
- Zatanna: Manages CodeCombat-style autocomplete for the ACE editor.
- nanoScroller.js: For when you need those scrollbars to get out of the way until you use them.
- Modernizr: Helps with browser feature detection and fallbacks.
- Flying Focus: Makes it easier to see what your browser focus is doing.
- Lo-Dash and Underscore.String: Great utility libraries.
- TV4: JSON-Schema validation. Whole other article on this subject.
Gameplay Libraries and Services
- CreateJS: A suite of four libraries, all of which are used extensively for animation, tweening, sound and loading resources. It has its own internal event system, so that's used in lieu of Backbone events when required.
- ACE: The code editor in game, and also used when editing code everywhere else on the site.
- Box2D: Physics engine.
- Firebase: Service that synchronizes data between multiple clients. Used for synchronizing gameplay data when multiple people are playing on the same level. We also plan to use it for other inter-player communications, like chatting with friends or inviting other players to join in a campaign.
- Firepad: Collaborative text-editor built on top of Firebase, used in CodeCombat's code editor.
- Jasmine: Used for testing.
- BrowserStack: Used for browser compatibility testing and Nightwatch automation.
- Karma: Test runner.
- webpack: Assembles the project, and is pretty much central to everything development.
- Discourse: Actually good forum software. CodeCombat is blessed by Jeff Atwood and Discourse.
- SETT: High-engagement blogging software. Good for startup blogging.
- Dexecure: Automatically lowers users’ bandwidth demands for images and CSS files.