Hacker News new | past | comments | ask | show | jobs | submit login
Superpowers, a collaborative HTML5 2D and 3D game maker, is now open-source (superpowers-html5.com)
292 points by elisee on Jan 11, 2016 | hide | past | web | favorite | 43 comments

Just remembered I wanted to update the website with some links to the many awesome open source projects we've built upon. Just to name a few right now:

Our game engine is a thin layer on top of http://threejs.org/. Our real-time collaboration is powered by http://socket.io/ (WebSockets). Everything is written with http://www.typescriptlang.org/, http://jade-lang.com/ and http://stylus-lang.com/. The app is powered by Electron / Node.js. We use CodeMirror, Browserify, Gulp, Express, lodash and too many other awesome npm modules to name them all.

Thanks to the community for all the cool stuff we were able to reuse :)

As someone who was inspired by game development to become a programmer I must thank you. When I was in my early teen years I remember getting a bunch of programmers and artists together to try and pump out a game called "Because of War." While it never took off, I still have those assets (models, environments, music scores) and have given them to people to use in their own projects. I remember compiling my game for the first time and my OpenGL shaders being wonky but resulting in a cool effect and I ended up leaving it. Game development is truly interesting, it's 90% creativity and 10% implementation whether you're on the artist side or programmer side (Think Crash bandicoot on Playstation).

Unfortunately I lost contact with many of those friends but it helped me become what I am today. Game development is a great way to get creative minds going and link the creativity of programming to those who haven't discovered it yet.

Hehe, got the numbers mixed up? Building, shipping and maintaining a game is at least 90% tedious and boring implementation work, sprinkled with a few sparks of creativity and experimentation inbetween, no matter what framework or engine used (you just might get started a bit faster, but starting is the easy part).

Yeah I was just writing and forgot to go back and re-read my post. My mistake.

So, you've worked in game development other than your attempt as a teenager? If not then how can you say "it's 90% creativity and 10% implementation" with any authority?

Perhaps people should preface everything with "in my opinion"...


Maybe you took his user name too seriously...

That happened. :p

I would love to see a compare-contrast between Superpowers and Phaser. I've used Phaser in the past and found it to be a good tool for some game projects and pretty frustrating for others.

This is neat. Here's the demo game, showing what the maker is capable of: http://sparklinlabs.itch.io/discover-superpowers.

To OP: seems like I can jump through walls in the sample game.

Ah, can you explain how? We have a check for the contact normal (https://github.com/superpowers-extra/discover-superpowers-ga...) so you shouldn't be able to jump multiple times while walking towards a wall as was once possible.

All I can see is the ability to jump just before the doorway to hop over whatever it is that triggers the transition to the next room and be stuck past the door.

Giving it another shot since it didn't take off when I submitted it a few days ago. Quoting my comment on the original submission (https://news.ycombinator.com/item?id=10864402):

Hi! I've been working on live collaborative game development software for about 4 years (some of you might remember me from CraftStudio). For the past year and a half, we've been working on Superpowers with my two friends Bilou and Pixel-boy and now we've open sourced it, as promised back in March when we launched early access for supporters.

Superpowers at its core (http://github.com/superpowers/superpowers) is more than a game maker. It's a generic collaborative client/server Web app for building all kinds of projects. A project type is defined by what we call a system, and you can have any number of systems installed on your Superpowers server.

We spent most of the last year building the core along with a system called Superpowers Game (https://github.com/superpowers/superpowers-game), which is a TypeScript game engine built on top of Three.js along with a bunch of collaborative asset editors.

Now that the platform is maturing, we've started work on other systems. For instance, Superpowers LÖVE (https://github.com/superpowers/superpowers-love2d) lets you build Lua games for the LÖVE framework. Demo: https://i.imgur.com/yLybycP.jpg

Another example: Superpowers Web is (https://github.com/superpowers/superpowers-web) a Superpowers system for building static Websites. We've used it to build the official website (https://github.com/superpowers/superpowers-html5.com) in real-time collaboration. We have plan for a "Superpowers Node.js" system, and hopefully the community will embrace this extensibility and build cool tools for all sorts of engines and creative endeavours.

You can find lots of pictures of the app in the release notes: https://github.com/superpowers/superpowers/releases and many games made with Superpowers Game here: http://sparklinlabs.itch.io/. The devlog album has cool stuff too: http://imgur.com/a/NdIuH

I think this is really cool, and really appreciate what you guys are doing. I have a particular passion for game creation tools as that is how I started down the path of becoming a developer over 20 years ago.

To show my appreciation, I've set up a $5/month pledge on Patreon. It's not much but I hope it helps! Should Crapule meow my name, please send me the recording. ;)

Thank you so much! Here's a picture of Crapule singing your name (in his head): http://i.imgur.com/wRwTSgh.png

Hey, so I had a question about http://docs.superpowers-html5.com/en/getting-started/scripte...

How do you find this impact performance, especially when a behaviour might need to communicate with other behaviours, also how would that be done?

I've looked at several solutions, e.g Apple has a "BehaviourSystem" (called ComponentSystem) where you can fetch Behaviours (Components) per class from all other actors.

Behaviors are simply added to a list of components on the actor (aka "game object") and once a tick, the whole actor tree is update()'d. There are probably optimizations to be done here, but we haven't hit the wall yet so we're trucking along on more urgent stuff :)

Communicating with another behavior can be done like so:

    Sup.getActor("Some actor").getBehavior(BehaviorClass).someMethod();
If you use an actor or a behavior often, you'll want to cache it into a member variable so you don't look it up every frame.

By the way, we have open sourced all the games we've made for Ludum Dare and the Global Game Jam over the last year, you might like checking them out: https://github.com/superpowers-extra

As someone in a similar space (libGDX creator), i wonder how you finance development. Could you give insights on that?

Hi! I heard great things about libgdx :)

During our 10 months of early access, we had a recurring / one-time support option on the website. We got (very roughly) about $1000 from that thanks to many generous people. After taxes and all, that doesn't leave much but we are pretty frugal, we live and work together so we've been able to afford it so far.

We're hoping to make a decent living with a mix of donations (we just setup a Patreon - http://patreon.com/SparklinLabs), maybe some sponsors? as well as part-time contract work around Superpowers or game development in general. If it doesn't pan out, well, we're very happy with what we've been able to accomplish so far, so we get to keep that! ^_^

Sounds like a plan :D Wishing you the best of luck, Superpowers looks promising!

As someone in a similar space, I work part time on data consulting contracts. I spend 10 to 20 hours a week working for clients, usually at the end of the week, trying to cram it all in before the billing cut off. Then I go back to spending all week working on my project.

Looks really awesome! I can't wait to dive in and see what all it can do.

I suggest you modify your title to start with "Show HN: ", as that will signal to the HN community that it is a project you are both releasing for general use and presenting for feedback.

Thanks! I don't believe I can edit the title after submitting though.

Ah no problem, it's alright as it is. I'm sure dang will update it accordingly if he passes through and feels the need to do so.

If you want to, you can email the mods to get them to change it. In any case congrats! I look forward to trying this out.

Just a minor nitpick, the last line of the build instructions is repeated twice("open the dev tools with F12 and type the following in the console: and type the following in the Console"):


Thanks, fixed! https://bitbucket.org/superpowers/docs.sparklinlabs.com/comm... (this is one of the last repos we haven't migrated to GitHub yet ^_^)

If you haven't already, post about this on /r/gamedev as well.

Posted it before the week-end, it was well received :) https://www.reddit.com/r/gamedev/comments/3zw1b2/superpowers...

Awesome, it uses TypeScript. Biggest reason I avoid Phaser is because it's always short on type definitions, especially at updates.

Nice to see this being written from scratch in TS(?).

We actually started with CoffeeScript 15 months ago, because TypeScript wasn't quite far along yet (I don't quite remember why, but we definitely considered it and said "maybe later"). We also started by writing our own scripting language for games... and then after a few months of development we converted the whole codebase to TypeScript and we haven't looked back ^_^

Seems like Phaser's developer initially considered TypeScript but felt it was too early at the time too: http://www.html5gamedevs.com/topic/13599-reconsidering-build.... It looks like he's decided to go with Babel for Phaser 3 / Lazer: https://github.com/photonstorm/lazer

At some point WebAssembly will mean you can rewrite it in any language.

Agreed on TypeScirpt being awesome! I'm happy SuperPowers decided to encourage it.

Does Phaser tend to overlook type definition updates? I know the language has TypeScript files, but I wasn't aware that they tended to be lacking. I use Phaser with ES6 a lot, but I'd be keen to use TypeScript.

It's an issue with projects in general. Phase and type definitions aren't always one to one in most libraries. Even React.

I feel like TypeScript users get a lot of oppurunties to submit small pull requests for JavaScript libraries, then.

Superpowers is shaping up to be something really incredible. I'm so glad that Sparklin Labs has decided to open source this project. It really iterates on what made CraftStudio special. I just hope I have enough free time to do some hacking on it soon!

Thanks, that's very nice :)

This looks really great and I am definitely going to be giving it a solid try!

If I could nitpick about something...it really bothers me that all the links on that page open in a new tab! Ahh! It shouldn't matter, but I just found it a little frustrating. /rant

Nice, gonna give it a try. Is there anything that the scene builder can do that scripting cant?

Nope, the scene editor is just a way to setup a "recipe" of actors with their transform in space and pre-added components so you can load them all at once when needed. Very useful, but you can definitely do the same in code instead.


Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact