Sunday, August 29, 2010

Emscripten

As mentioned in the last post, I am checking out ways to bring Syntensity to the web. As part of that, I just put up Emscripten on Google Code. Emscripten is an LLVM-to-JavaScript compiler. Combined with llvm-gcc, it lets you compile C/C++ code into JavaScript, and run that on the web.

Emscripten is still in an early stage, but can already compile some benchmarks. At this point I think I will start to try to port code I am interested in, and fix bugs along the way as I find them. I'll probably begin with a tiny subset of sauerbraten (probably one out of command.cpp, rendermodel.cpp, or physics.cpp) and see how that works, then continue from there.

The long-term goal is to run Syntensity, or a smaller version of it, on the web. Aside from Emscripten this will require some other tools, and probably a lot of hard work, so I can't say when I expect this to be done. Also I am working on it in my spare time, so that will vary depending on other stuff I'm doing. But now that Emscripten is in good enough shape to start using, the fun part can begin.

Side note: I'll post updates on this blog regarding using Emscripten for porting Syntensity to the web. I'll probably post stuff about Emscripten itself, that isn't related just to Syntensity, on my more general blog, here.

Saturday, August 14, 2010

Update on Where Things are Going

It looks like the Syntensity codebase (and community) is going in two directions:
  • A few community members (quaker, BiosElement) have started CubeCreate, a fork of Syntensity that is not afraid of breaking compatibility with Sauerbraten, in that they will rewrite Sauer code and add major new features. It definitely looks very interesting and they are putting a lot of effort into it. For more details, visit their IRC channel (#cubecreate on FreeNode), or forums.

  • As for me, I have been thinking about something sort of in the opposite direction. I think gaming should move to the web - like everything else pretty much already has or is in the process of doing. To do that, things need to be - at least in the near future - lighter and simpler, to make moving to the web easier. So I've been working in my spare time on tools for that. One tool is an LLVM-to-JS compiler, which lets you run (some) C++ code inside of a web browser, by compiling it to LLVM and then to JavaScript. My goal is to move existing C++ code - Sauer, Syntensity, Bullet, etc. (or maybe simplified versions of those) - to the web that way. The tool is far from finished but already can run various benchmarks, I'll probably put the project up on some open source hosting site soon.
So those are the main directions in which things are going. They sort of go in opposite ways, but of course there's nothing wrong with that. The more the merrier ;)