Thursday, June 28, 2007

Game Project Update

Lots of progress on the game front, sort of. We have a name for the project, finally: Y.M.F.A.S. Or Ymfas, or ymfas... not sure of the format, but that's definitely what it's called.

About two days after the last post on the subject, we scrapped the "roll your own" route and decided to go with Irrlicht for rendering and ODE for graphics. Both are C/C++ native, so we used IrrlichtNETCP and Tao.Ode, respectively, as .NET wrappers. IrrlichtNETCP is pretty solid, but Tao.Ode had some issues.

For one, ODE is fairly low-level. This isn't all that bad for C/C++, but Tao.Ode is (I believe) one big PInvoke, so you end up with something fairly unusable in C#. For instance, the math types do not have overloaded operators in C# (though they do with C++). Furthermore, all of the ODE resources are translated into IntPtr's, which screams of type safety for any large-scale use. I even started building a wrapper on top of all this to cover up the gritty non-managed details, but that'll have to wait a little bit.

I later learned that MonoDevelop also sucks. Well, that's not quite true. Mono is great, and MonoDevelop is decent. However, it's a long way from SharpDevelop, the IDE that it was orignally a port of. OTOH, SharpDevelop is a long way from VS 2005, which I also get for free. So, with this in mind, I decided to scrap the lofty goal of cross-platform goodness.

So now that development is officially Windows-only, our options open a little bit (not as much as they would if we were using C++, but still...). So, after looking at the other side of the fence, we're tentatively using MOGRE and MogreNewt, .NET wrappers for Ogre3D and Newton Game Dynamics. This has the unfortunate downside that most of the code that I've already written pretty much goes to waste. Oh well. Let's see where it goes.

The 'Next Big Language' sucks

So there's lots of talk about how Steve Yegge considers Javascript to be the "Next Big Language". God I hope not.

For one, has you ever seen a nice-looking piece of JS code? Seriously, maybe it's just because so many non-programmers use it, but a lot of Javascript code out that is utter garbage (even compared to other languages IMHO). With enough discipline, you can make as structured as other languages, I suppose. Well, almost. There is no module or packaging system, for instance.

Javascript is an absolute pain to develop for, moreover. As great as Firebug is, it is nowhere near Eclipse , VS 2005, or emacs even.

I don't even think Javascript satisfies Steve's bare minimum for the NBL. For instance, it doesn't have operator overloading (yet). It doesn't have quantifiers either, and those seem much less likely to be added.

Of course, nit-picking aside, it probably is. Or at least, it probably is according to Steve Yegge. And, given how many people are paying attention to his predictions, it may end up that whether it was going to before or not. So it goes.

Sunday, June 10, 2007

plans for summer

So this summer I'm working as an intern at TechEmpower. It's a fairly small software company, but it seems like a pretty cool place to work. At the very least, I'll learn a lot about webdev.

I'm also working on a game for the summer with a fellow Techer. We're trying to make not too ambitious so we can actually get something playable in three months. Details are a little skimpy, but for now, suffice it to say that it's a 3d fast-paced multiplayer space shooter. We're building it with OpenGL + SDL (my idea) in C# (his idea). We'll probably use as much pre-built stuff as possible (including but not limited to DevIL, lidgren, OpenAL, and ODE) since it has such a short schedule. I should actually propose the idea of using Ogre3D, but we can try reinventing the wheel a little bit ourselves :-P. Seriously though, I imagine Ogre3D would have a steeper learning curve, since I already know some OGL.

Who's to say for now how it's going to turn out, but I have high hopes.

So with those to, as well as learning Erlang and Chinese, I have a pretty busy summer. sigh. (Yes, I know one's a foreign language and the other's a computer language. So it goes.)