Setup a blog at my personal webspace over at http://www.scisbot.com/
Will post about any updates here as well.
Latest update was about a game I'll start work on July, for a game development competition in the SomethingAwful forums. It's going to be called hexatron and would play like some dual stick shooter where you explore rooms. It will incoporate some roguelike elements like random level generation and some RPG stuff. Been making demos about it as I can't start any real work until July, but I'm awfully excited to get started!
Just came out of GDC, kind of got me thinking I should keep posting on what I'm doing.
I'm gonna get back to work on my XNA implementation as I've just started work with another developer who wants to get their game on Humble Bundle. It has some graphical glitches but it was a much better starting point than I had with Bastion, not to mention I have some readable code to work with. After I actually get to gameplay, I'll get back on the audio horse, though I'm not sure if I should just get it working with mp3s and waves or work on the audio pipeline of XNA.
I've got into the PSS beta a little while ago, so I've been actually trying to port my framework to it, which is a little interesting. I'm going to be helping with MonoGame in getting that framework into PSS as well. If I can actually get Bastion running on my Vita, that'd be really dang cool. Hopefully Sony thought about supporting PSS for official PSN releases, as well as some PS3 support, though I can see the difficulty in that. I'm not sure how the rendering performance would be using purely managed C# code on the PS3 without utilizing the PS3's SPUs in some way. It seemed to work well enough on the 360, but I'm not sure if the 360 is taking advantage of all three cores when using the .NET runtime.
I've started a project using Unity3D; some Metroidvania Shadow Complex-clone, using Doom3 assets for now. Got in some basic gameplay elements going right now, like movement, shooting and weapon switching. I've imported the imp into the game and got started coding my first AI, which really is using a state machine. Right now it patrols the full length of the platform its on (or when it runs out of the patrol timer), goes idle for a little while then back to patrolling the other direction. It also has a blip state that checks for visibility of the player. If the check is true, it'll do that freak out animation but then straight to idle. I haven't implemented any attacks in the imp yet but it'll get there soon enough. Hopefully once I get something a bit more polished I'll throw up a demo. My aim for the game as a whole is to have some roguelike elements in there, hopefully with some random levels, weapons and enemies.
Speaking of Unity3D, I also pseudo-started on a project that'll reimplement Unity3D's engine to a pure C# implementation. I say pseudo started as I'm not sure if I should make a new project or use FastFoward's recently released XNA exporter. It'd probably require some refactoring in order to support different export targets (from the start I want to export it as a PSS project but probably Linux as well).
My C/C++ engine/game project is progressing a bit slowly but that's the price of trying to implement everything myself. I've finally got a real deferred rendering pipeline in there, but no real material system yet. I'm just excited to see my object/component system working as I've planned.
Other than that, GDC was pretty great. Got to meet folks from Supergiant Games, learned a lot from the talks and made some cool contacts. Definitely will go again next year.
I started another project in C/C++, which amounts to a game engine/framework that kind of ribs off of Unity. Not the user-friendly aspect of it, just the general code architecture. Really, it's less of an engine and a lot more framework like XNA, but with a lot of game stuff in it, like collisions and particle effects. I do intend to make a game with it but my original intentions was to look at my architectural chops, though I've obviously fallen into the hole where others that'd be more experience than I would pelt me endlessly with the mantra "make games, not engines."
They're right, of course, but I'm learning much from what I'm doing now. I've had a clear goal in my mind to keep system related things very abstracted and it's starting to pay off; that is to say, my codebase can be run on both PC (SDL/OpenGL) and the PS3. Right now, the rendering pipelines on either are very simplistic, but my original intent was to have a deferred shading pipeline on all platforms that this framework will eventually support. It doesn't have to be deferred, though. I've abstracted the framework enough that I can write any sort of renderer I want, I just like the idea of deferred shading. I will also write a specific Windows version of the framework so I can learn some Direct3D.
I'm hoping to get most of the framework done by the end of the week, at least to the point where I can get started writing a game on it.
I will get back on the C#/XNA horse soon, wanted to take a break away from obnoxious OpenAL audio programming. It makes 3D audio pretty dang easy, sure, but who thought ONLY making it for 3D audio programming was a great idea? Thanks Creative.
In other news, I've bought a ticket to Game Developer's Conference this March. Will be my first time in San Francisco... I'm kind of afraid getting a cheap hotel near the Moscone Convention Center as I'm sure I'd get stab.
Been going slow lately, but I swear I'm trying to do stuff.
I've doc'd out the XGS format (most of it, anyways) and just got started on some audio programming. Since I didn't really do much audio before, I went off easy and started off with the SoundEffect classes of XNA. OpenAL seems easy enough, but doesn't really have any sort of 2D audio functionality so I can't do something like panning. I could try to do some fallback thing with SDL but at that point I would think it'd consume too much memory just to have a buffer with OpenAL and whatever construct SDL uses to store sounds in memory with... SDL. I'd be a lot happier if there were a way to use AL buffers with SDL or vice-versa but for now, I'll just keep messing with OpenAL.
One very little snag I hit was with the whole multiple listener thing for the Apply3D functions. XNA allows you to localize sound effects with multiple listeners around, but OpenAL only has one. The solution wasn't particularly difficult, I just treated it more like OpenGL. That is to say, I've calculated the relative offsets of the emitter from each listener then created as many OpenAL sources as there are XNA listeners. I've created a transformation matrix based on the listener orientation, created a position for the source based on the offset, then transformed that with the aforementioned matrix. Basically I mimicked the effect of multiple listeners through creating multiple sources with relative positioning off one listener. Again, it's not particularly difficult if you're used to thinking about graphics. I'm more concerned how it would perform under load if there are a bunch of listeners since it has to go through the whole rigmarole of matrix calculation and so forth.
Been poking at the PS3 some, as well. Dunno how much I should do concerning Mono, though. I probably should just do fancy graphics stuff.
I've been hitting my head against the wall to have these two offsets to show up and finally got them to. They were the last two offsets that I needed to look into, but there are still a couple that seem redundant or have no idea what they're for. After I map the last two offsets, I'll try to figure out the other offsets (two of them point to DWORD offsets that were already in the header, the other two just point to shorts that seem to have the same values across XGS files). I've got maybe %80 of the format mapped out, but it seems enough for Bastion, so I'll just write up a doc and get started on my implementation.
I've also been awfully curious about the PS3, and just recently spent some cash monies on an exploitable one for the express purpose of writing software for it. Last night I've been able to load up the homebrew toolchain under my Linux VM and some tools on the PS3 itself and got some samples running. I'm a little excited to work on graphics on a much lower level than the standard graphics libraries used on PCs, and learning how to utilize the PS3's SPUs. What I would think would be awfully cool is to get Mono and MonoXNA running using the homebrew libraries the PS3 development community has set up, but this is completely uncertain as there maybe a lot of work ahead of me just to get Mono running a simple Hello World program.
As from my previous edit, I want to finish up what I started and get Bastion running under my XNA reimplementation efforts without any modification to the original code (aside from a dummy SteamWrapper.dll). I would like this to include parsing HLSL byte code over to GLSL shader code but I technically don't need to modify Bastion for that, just replace the effects with OpenGL ones.
For now, though, I've been doing some reverse engineering on the XACT Global Settings file the XACT tool spits out. I forgot how annoying it is trying to map out a file format you have no idea about, but it could be much worse, like having no access to a tool to generate these files. I'm making some significant progress but the part that's killing me is not writing any code. I've written a quick tool that'll scan a file for offsets to a specific position of the file as it'd be tremendously useful, only to find out the XGS files don't use any sort of offsets and just refer to the direct file position. This will eventually lead me to start implementing the audio system of XNA. There was already some work done on wavebanks and soundbanks but I'm a little worried about soundbanks as I've only seen the non-streaming version of them implemented. I think Bastion uses some streaming soundbanks.
After I get Bastion running, I'd like to try my hand at Magicka as it uses XNA 3.1 as well, but not sure yet.
Bastion is on Chrome now, available to be played on other platforms. If they got it running under OpenGL and Mono, they're open to release it on any other platform. Go play that!
Just as well, I actually got it pretty much playable with the bloom post process working exactly as it should aside from very minor graphical issues.
Honestly I still want to finish my port, as I've done so much progress in two weeks. I'm not sure if it'd be a detriment to me though if people would go YAWN SO WHAT ITS ALREADY ON MAC/LINUX/MY NOKIA PHONE.
EDIT: I think I'll continue, just for the hell of it. I'll fix the straggling graphic glitches, code in the audio system and possibly get it running without modification to the Bastion assembly. From there I'll roll in all my changes into MonoXNA and MonoGame. If any of you got suggestions for some other XNA game to port over, let me know. I've done a lot of work to the open XNA frameworks and I'm curious if I can get other games running on them.
Didn't make too much progress in making Bastion work correctly, but I've got it running under Mac which was an enormous pain in the ass; strange in of itself as the Linux version ran with no problems. Here are some screenshots.
There are some weird problems, like the window not being active or capturing the mouse. It'll be something I'll figure out but I mostly did this just to confirm its running on all three platforms (Windows is kind of pointless but the tools available are way better). I've done a bunch of other miscellaneous stuff but, again, I'll talk about it later. Not sure if people read this for my commentary on my own bumbling around code, anyways.
Quick disclaimer, this is a personal project of mine that has nothing to do with Supergiant Games. Please don't think otherwise!
I got a little bit further than the main menu, duders!
So yeah, it isn't perfect, but I'm getting there. For those that are just tuning in, I'm working on an open source implementation of Microsoft's XNA framework (which Bastion uses) using Mono, OpenGL and other open source goodies. The point of this is to get it running on other platforms, mainly Mac OS X and Linux (though tablets might be alright?). The screenshots are from Windows though as Visual Studio is my preferred development environment for .NET/Mono and I don't have Linux or Mac handy at the moment. It's all OpenGL, though.
Tomorrow I'll probably post about my escapades, I just want to go to bed right now.