Join GitHub today
GitHub is home to over 36 million developers working together to host and review code, manage projects, and build software together.Sign up
Project Ideas List
###Steps to Contribute
- Get your development environment set up.
- To get a great feel for the project, make a small pull request or two.
- You should also sign up as an Archmage, follow our forum, and watch this GitHub repository.
- Play through some of our existing levels to get a feel for the game.
- Read through some of the articles on our Archmage wiki to better understand the code.
- Talk to us about the project you want to build.
- Make Aether Transpiler More Friendly
- Build More Levels
- Create More Items, Heroes, and Special Abilities
- Improve Treema (JSON editor)
- Build Automated Level Testing Harness
- Add More Programming Languages
- Improve iPad App Performance
- Upgrade the Level Editor
- Organize Multilingual Audio Recordings
- Improve Game Physics
- Add WebRTC Voice/Video Chat to Multiplayer
- Add Responsive Sound / Music
- Create Developer Tools Window
- Build Massively Multiplayer Sandbox Play
- Your Own Idea
Throughout the process of parsing, transforming, compiling, and running user-submitted code in the game world, there are hundreds of different types of info, warning, and error messages that can result. Most of these were designed for experienced programmers, like
Expected an identifier and instead saw '}'. That doesn't help anyone learn to code if they don't know what an identifier is! Our Aether transpiler can rewrite, anticipate, and friendly-ify all possible error messages, but each type of problem needs to be thought out and made more understandable to beginners. In addition to coming up with friendly error messages, you'll need to write a lot of abstract syntax tree traversals to find the problems before they become runtime errors.
Expected results: Aether's info/warning/error messages are beginner-friendly so that CodeCombat players can understand what's going wrong with their code instead of concluding that this programming stuff doesn't make sense.
Difficulty: Medium. Most of the error messages will be simple string replacements with perhaps some interpolation, but some will require some really smart parser alterations.
Want to make CodeCombat levels to teach regular expressions? Math? Physics? Recursion? Advanced RTS AI micro skills? Want to make super-hard dungeon crawl series? Want to do a level progression with your own game mechanics ideas? CodeCombat's level editor is yours to command! It's an extraordinarily powerful, drag-and-drop, live-programmable editor inspired by the StarCraft II Galaxy Editor, and you can use it to build just about anything. All Artisans share Systems and Components, so the building blocks you create to enable custom logic in your levels will be available in everyone else's levels and vice versa.
Expected results: Dozens of fun, playable, polished levels that fit into CodeCombat's existing campaigns.
Difficulty: Medium. Although the coding is easy, it takes a lot of thought to make good levels, so expect to iterate a lot on each level.
We have hundreds of items (swords and watches and rings, oh my!) and a dozen heroes done or on the way, but as we build more and more advanced levels, we can introduce many more items, heroes, enemies, and special abilities tied to those items, enemies, and heroes. Want to make a plan for what cool items and heroes to add, figure out the game balance for them, tell our illustrator what to draw, and code up the new skills? Then you can make lightsabers, portal guns, mirror shields, flying giants, or whatever you want! The game is your playground as you create powerful new Thangs that our elite players will die for.
Expected results: Hundreds fun, novel, and balanced items, enemies, heroes, or abilities that fit into CodeCombat's existing campaign progression.
Knowledge prerequisite: An interest in game design, and basic programming knowledge. You don't need to know any programming to use the Thang editor, but if you want to add special abilities, you'll need to know enough to at least copy other abilities we've already done. It will help to know CoffeeScript for this.
Difficulty: Medium. Although the coding is easy, good game design takes a lot of thought and some basic mathematical modeling to ensure balance.
Improve Treema (JSON editor)
Treema is a jQuery plugin that builds interfaces for editing large, complex, well-defined JSON data. It runs on tv4, which implements JSON-Schema validation. We use it for our Level, Article, and Thang editors, and it's generally useful in any project which wants to generate UIs for JSON data. It works pretty well, but there are a bunch of refactorings and improvements and upgrades that'll make it really shine, not just in CodeCombat, but in many other projects which need to deal with JSON.
Expected results: Treema will be polished to a gleaming shine and take over all online JSON editors.
Difficulty: Medium. Treema's code is small, but very meta, so you'll need to be able to understand some complicated schema-schemas.
As we get more and more levels, it becomes harder to make changes to the game engine while still making sure that we don't break the balance on any of the levels. A good solution for this will be to make an automated level testing harness where we can test game engine changes against all past levels to make sure that failing solutions still fail, successful solutions still succeed, etc. Then we'll be able to improve the game engine with much more confidence, as well as have a quick way to see which levels are having problems with their intended solutions. This would have a web front-end but probably mostly run on the server using our headless level simulator.
Expected results: CodeCombat has automated testing for its levels the way it has automated unit testing for its code.
Difficulty: Medium. The front-end will be easy, but the server code will be pretty involved, so it's a good opportunity to learn more about Node.js.
Expected results: Players can play all CodeCombat levels in the new language.
CodeCombat is a web app written with cross-platform HTML5 in mind from the start, and we developed a complete iPad app which wraps it in Apple's new, fast WKWebView. Unfortunately, it's still too slow and uses too much memory, so we can't release it. If you like optimizing performance, here's a challenge for you!
Expected results: Players can have fun playing CodeCombat on iPad.
Difficulty: Hard. Our current efforts get it running slowly with occasional memory crashes on iPad 3 and almost smooth enough with rare memory crashes on iPad Air. We need it to be solid and smooth on iPad 3 and up, so we'll have to pull out all the stops to optimize our JS, reduce memory usage, and bundle native resources.
The level editor is really cool: drag-and-drop, completely configurable, and even live-programmable from within the editor itself. It's a powerful tool, but the user interface is always a challenge; the learning curve is too steep right now. You could do usability testing, improve the design, polish the rough edges, add missing features, write documentation, and generally make it easier to use such that anyone can figure it out and make their own levels.
Expected results: CodeCombat's level editor should be easier to use than it is now.
Difficulty: Easy. You can watch people try to make levels, see where they get stuck, and tweak the design until they stop getting stuck there.
We've built internationalization and localization tools allowing translation of almost all of CodeCombat's text (pretty much except for the names of the player's API methods themselves), but we still have some voiceover from the heroes that is only in English. We could organize our Diplomats to record this dialogue for us in their own languages so that even younger international players can understand it (since often they want to hear, not read, the instructions, plus having flavor sound bytes in your own language is always cool). This wouldn't take much coding, although if you can code, there is some to do to be able to use the sound files in game and visualize the recording completion coverage progress. But mostly it'll take patience and communication with all of our Diplomats to get the recordings done. Alternatively, if your coding is strong, you could build an HTML5-based speech recorder node for Treema that would allow anyone to record their language's audio from their browser, normalize the audio and remove noise using the web audio APIs, and upload it to our server in mp3 and ogg.
Expected results: CodeCombat's voiceover and hero flavor audio can be localized.
Difficulty: Medium. Don't underestimate the difficulty of recording good audio and coordinating with dozens of contributors.
CodeCombat uses a 2D physics engine with Box2D for collision detection, and we've written some basic position / velocity / acceleration stuff and locomotion dynamics, but there's so much more physics that could be done, enabling more physics-based gameplay and levels. Imagine coding the laser targeting system to solve reflection-based puzzle levels in CodeCombat, or levels where you adjust your thrust to guide your rocket. You could make that happen. Plus, we can always make it more performant, like by implementing quadtrees.
Expected results: CodeCombat should have a general physics system that enables lots of emergent physics-based gameplay while still being performant.
Difficulty: Medium. The basics of the physics system are all there, so it's more about handling more mechanics and improving performance.
In CodeCombat's real-time cooperative and eventually competitive multiplayer, it's nice to be able to chat textually with other players, but it'd be even cooler to hook up voice and even video chat using the new WebRTC protocols. No more learning to code alone! You'd research and pick a high-level WebRTC library, integrate it into CodeCombat's multiplayer mode, and possibly figure out how to deal with trolls.
Expected results: Players can talk to each other and even see each other if desired.
Difficulty: Easy–WebRTC libraries do most of the work for you.
We have some great music and sound effects, but they don't do enough to add to the immersion, since the sound and music that plays is often not adapting to what's going on in the game. Doing some smart music switches and possibly audio processing in the browser could go a long way toward adding to the fun. There's some really good audio APIs that would be great to put through their paces.
Expected results: CodeCombat's music and sound would adapt to the game environment for an immersive game experience.
Difficulty: Medium. In addition to figuring out the audio processing stuff, it's going to require a good design sense to figure out what music and sounds should play when and how they should be processed.
Create Developer Tools Window
One thing that would make it much easier for Archmages to contribute to the CodeCombat code would be a way for them to see what's going on with the site as they're on it. Anywhere on the site, the developer could click a button or press a shortcut and open a Developer Tools like interface in a separate window which includes:
- Current view and subviews. They could be clicked to highlight what element that view represents. Show the module path for each one.
- Current instances of other classes and models and collections in existence.
- Events, subscriptions and keyboard shortcuts currently active, and what they call.
- Active log of events, subscriptions and keyboard shortcuts as they happen.
- Regular updating of all these as they change.
This could be used to:
- Edify an Archmage on what is going on with a given view. See what files are involved and how they're involved and how they communicate with one another.
- Debug issues involving tearing down objects and views and investigating memory leaks.
Expected results: It'll be easy for developers to find the code that's active in the app.
Difficulty: Easy. All of the info should be present in the Backbone view hierarchy at any time, so designing and implementing the UI will be most of the work.
CodeCombat currently simulates a level from beginning to end every time the code changes and replaces the past, present, and future with the new results for a live-coding experience. This limits the size of the game levels that we can run, though. It would be fascinating to experiment with a persistent game world in which players' code changes didn't change the past. We could support huge levels with many players in open sandbox play, like Minecraft but actually programming the algorithms instead of executing them with zillions of pickaxe strikes. You would create a new game mode where the synchronous multiplayer (which already works) doesn't result in history replacement, then see how big you could make it and experiment with game design to find a sandbox environment that's really fun.
Expected results: CodeCombat should support a massive, persistent game world mode for sandbox play.
Difficulty: Very hard.
Want to do something else, or some combination or remix of ideas from this list? Just talk to us and let's figure out how to do it! These ideas are just starting points; really, we want you to work on what you're passionate about doing and confident that you can pull off. Whatever it is, just keep in mind that the more players it can help, the better.
Expected results: Your brilliant idea is implemented in CodeCombat. A choir of angels rejoices.
Knowledge prerequisite: Whatever the idea is, just make sure you know enough to get started, and we can help you learn the rest along the way.
Difficulty: Up to you!