Topic: void Run(Project* proj) { Run(new SideProject); Run(proj); }
That title wasn't as obvious as I expected it to be.
But yeah, I am still working on my "personal" project She Wore White. But that's lead me to start a side project of writing a new tool set. Which has also started me off with something else. I will warn people now, this will be a long message, but I think it's about time for me to give a little insight into what I've been up to.
======================================================
She Wore White.
So, unfortunately things have been moving incredibly slowly for this. Having to work in free time in a team means that quite often we have to wait for schedules to overlap, which can take longer than would be preferable. However, we have made some progress. My writer has informed me that the script is getting written, my environment artist is preparing a video for demo purposes, and we've been going through the VO auditions.
===========================
MIngEd
This is where my side project spurred another side project. I was going through a roadmap of what I needed to do for She Wore White. One issue with the project is that, on the code side, for now, it's just li'l ol' me. Maratis is a very capable little engine, but I don't want to be stuck coding absolutely everything.
The game is technically "my" vision, but, I will admit to having the creativity of a dead fish. I couldn't tell you which camera pans might look nice, how a room should be layed out, what colours to use etc. What I really want is to be able to offload this work onto the people who would do the work better than me.
I've actually had a discussion with Anael about this. He said (quite rightly) that you can do all of what I'm likely to need within Maratis using the editor and with lua scripts.
However, I do know that, especially when you're asking people to give up their free time, especially if you can't afford to pay them (much) then any minor annoyance is a huge problem as every time it happens, they are more and more likely to just say "forget it" and ask me to sort it. The example I think that I gave to Anael was that my writer isn't a programmer at all (in fact, he studied Biology at university). If he has to dive into lua scripts to modify dialogue trees, it's going to get tedious for him very quickly.
So, I want to make some tools to work with Maratis. There is a significant chance that I will spend more time doing this than making my actual game, but the way I see it anyway, a programmer should be the person who provides other team members (designers, artists etc) with the medium for which to express themselves. Plus, hopefully I'm going to be contributing to the Maratis community a bit by doing this.
My first plan was to extend the Maratis Editor, as it already has a lot of the basic functionality needed. I have (I have to say, against Anael's better judgement) decided against this. For what I would like to do, I think the current editor system is not really suitable for large scale extension. The "ideal" situation, in my eyes, for this editor to be in is that it's easily extensible. Probably most of the functionality would be provided in several lua files. If this works well, I can implement a pretty simplistic editor in reality, and then, through use, extend it by writing little helper scripts to do common repetitive tasks. New features (like the particle system, which I'm totally still working on) can define their own extension to the lua API and their own set of base scripts etc.
Anyway, this design obviously needs a robust and flexible GUI solution. I have spent a good deal of time looking into what is available. I had started writing my own GUI library in lua, using Löve, out of frustration of there being no nice data driven GUI solutions, but I have come to the decision that I can't even hope to maintain that, on top of everything else I'm piling on myself. As a recommendation, I looked at Awesomium. This looked...well, awesome. I chose not to use it, however it doesn't support mobile platforms and, for larger scale projects, would require a $2900 license. Not sure this is too much of a problem, but as Maratis is entire free software so far, I'd like to keep with that. Next, I looked at libnui. It also had a commercial license, but was far more reasonable, and the author has suggested that he may release libnui under a more flexible license. However, I spent several days (almost literally) banging my head off integrating this, getting error after error. One of the main things is that libnui wants to be an application framework, instead of just a GUI library as I needed. For this reason it had almost as many external dependencies as Maratis itself and included things like a TCP server. The final compiled lib was 170MB (in debug, release was 17MB). Far too much stuff to rip out. Then I came across libRocket. This has been a LOT less painful to integrate and (almost) have it plugged into Maratis properly. In fact. I did most of the integration in one train journey (I am currently working 12 hour days, so my side project coding can only be done during my commutes). I'm getting a segfault when running it, but I'm sure that, once I get around to having a look at this when I'm not insanely tired, the problem will just evaporate.
I have forked the Maratis player code, but I've barely changed anything in it. The main reason for doing this is to just add a new command line parameter support, so we can load the Maratis INGame EDitor plugin with Maratis.exe --preload=minged.dll (or ./Maratis --preload=minged.so or ./Maratis --preload=minged.dylib) The idea being that there's no Editor application as such, you just load your game as normal, but then hit a hotkey (F-key as personal preference) and it pauses the game (?) and displays a customisable editor overlay.
Anyway, as I've said, it doesn't run yet. I've got it up on Github though as I want people to be able to see what I'm working on. As soon as I have a prototype in a working condition, I will only ever submit code that I know runs though. If you feel like checking it out, it's over at http://github.com/nistur/MIngEd With any luck, this will be running this weekend. I might even get simple 3D picking working and displaying transform information, who knows.
Oh, and it doesn't even begin to compile on OS X, but I don't have much dev-time available on a Mac, so if anyone would want to offer for this...
===========================
Maratis-PSP
I have absolutely no reason for doing this. The PSP is old now. Very few people are going to be very interested in making a game to run on the PSP, however, I have a PSP flying around my flat, and I have had the unofficial PSP SDK installed on my computer for years now and done very little with it. During my train journeys, I've got frustrated with the GUI integration and wanted something new and different to sink my teeth into, so I thought I'd try and get Maratis running on PSP.
To be honest, I've not done an awful lot. I'm using the premake4 project files that I created for MIngEd to build Maratis, just generated GNU makefiles and changed CC=gcc to CC=psp-gcc and the like. A few include directories and cflags and that's more or less all I've done. I have, so far, compiled all of the 3rdparty libs that Maratis depends on, and tested a couple by linking into a PSP example program (and calling a couple of functions). Not a particularly thorough test, but enough to make me confident that I'm compiling them correctly. I've also got MCore and MEngine compiling. The next thing would be MGui, "Common" and the Maratis player. Of course MGui and Common require at least partial rewrites to support the PSP graphics system, and audio system but I've looked into this and... well... doesn't look like it's too much work as the homebrew pspsdk was based largely around OpenGL it seems. (Of course, most graphics libraries work in roughly the same way due to the architecture of the underlying hardware)
As I said, this is a mostly pointless side project, as I don't think many people would even be interested in porting to PSP any more, but it's sort of fun, plus it would be cool to be able to show a Maratis game running side by side on a Windows computer, a Mac, a Linux machine, an iPhone, a PSP, and anything else anyone cares to port it to Speaking of which... I think my work has a PS3 devkit...
===========================
Tutorial
I have promised to continue with the tutorial series. I do definitely still intend to. The problem for me (apart from my serious lack of time) is that I promised to cover the first tutorial stage in a video... I've tried it several times and... well, I hate my own voice, so editing and sorting it has made it frustrating I will try again when I have time, but I've definitely not forgotten it.
===========================
Particle system
Along with some of the other things, this has got put on the back burner. I definitely intend fo continue this, especially as I will need it for She Wore White, but until I have the editor framework sorted, I would like to leave it.
((Which reminds me, I am intending for all plugins I write, including hopefully MIngEd to be compatible with "stock" Maratis. What might have a custom crafted editor panel, like a particle system, might just show up in Maratis Editor as a MBehavior))
===========================
Profiler
As with the particle system, I'm holding off on doing much more of this, mainly because I want to have somewhere to write the information to, like a custom panel in MIngEd.
======================================================
So, that's about it. As usual, I've started a lot of things. For once, though. All of them are focused on pushing one of them forward (She Wore White [SWW]). I might be quicker coding SWW myself and forgetting about all the tools and side projects, but this is really a labour of love, as I'm sure Maratis has been for Anael. As I said, I get very frustrated if I end up implementing other people's ideas as it always ends up with "can you change the order of X and Y?" "can you move Z up by 2px?" etc. So I really feel that my "best" role would be to make things to make this as easy as possible for them. Also, I do actually enjoy this, if possible, more than game programming.
I'm not really a fan of Twitter, but I've got one for my project, as I think that any attention is good attention. So if anyone's interested here it is. Also, if anyone has any designs/ideas on any of the things I've mentioned, I would really love to hear them. Especially if it's tech/tool related, as I'm obviously intending to make them to be usable for other people.