For all those who don't know what an MQP is, it's WPI's way of killing its seniors. And if you happen to be a CS major, you have it no easier or harder, but you are at a disadvantage. The MQP really is suppose to be a team-based project that spans approx 21 weeks and at the end you have a tangable thing that you can show off as your project, accompanied by a paper the thickness of common WPIer's skull.
My project is to make a domain specific language, Video Game Language (ViGL), which is based on XML, that will generate a video game in a target language of the user's choice. This language will sit ontop of a game development framework that we are also building, and provide a much nicer way to work with the API rather than just using it. Plus, the framework is written in Ruby, so you would have to know how to program in Ruby before using it. Currently the project is only scoped for 2D graphics, simple sound control, keyboard and mouse input, and defining game specific stuff like game type, player model, object interactions, etc. The framework is a heavy wrapper around Ruby SDL, so it's capabilities are there for expanding to 3D. So in a nutshell, we are creating a language, a framework to power everything, and a compiler to convert the language into a target language (currently only Ruby, but future platforms could be Java, C/C++ w/opengl or directx, or even Flash). Also, the code generation patterns must be plugable, allowing users to install/make their own generators and switch between them easily.
This is a pretty involved project, but for 21 weeks ... if scheduled properly, is definitely possible. But here's the catch, we only have 5 more ... yeah. The past 14 weeks have been spend coming up with designs, throwing them out, finally deciding on one, prototyping it, throwing it out, ... repeat. Why so many reworks? Answer: I'm the only set of creative eyes. This has all been my vision and my design work, and that's why this project is taking so long.
This week we are to have the framework's graphical abilities designed/prototyped/implemented and have the graphical language features of ViGL designed and documented, then building the compiler to interpret the ViGL code and generate the appropriate target code, just for graphics. Basically these next 5 weeks are a high gear implementation time where we take all our older code and experience and pound out these features. One week all graphics, next week add events (including sound and collision detection), next week who knows. With 2 grad classes, a biology class, and all the other stuff I'm doing, I see these hours of the morning way too often.
Other great things have happened in the past 20+ days that I haven't talked about, and I promise to, but for now I was pissed at this code and I needed to yell about it.