Friday, March 31, 2006

Day 75 : I've been subverted

Actually, subverted is not the right term, it's more like subversioned. That's right. The Archangel Game now officially uses Subversion and the Tortoise SVN front-end to handle source control. Again, amazed at how something free and open-source could kick so much bottoms. It took me a couple of hours to completely integrate the project in a repository and all. My old automated batch-file that created dated .RAR files everyday will no longer be necessary. A system like Tortoise SVN is much better, and also lays the foundation to what hopefully will be collaborative work. Good job Tortoise!

Thursday, March 30, 2006

Day 74 : Level design has begun

Two days ago (Day 72) I begun level designing the prototype's level (which should be level 3 of the final product). The editor (as mentioned before) was a real mess. But most of it is fixed now and yesterday and today was very productive. I also did alot of code cleanup. There were still traces of the old Dark Game SDK code that I needed to clean up. The opening cinematic for level 3 is half-done. I expect to have a playable segment of level 3 at the end of the easter break. Let's see how that prediction holds up!

Sunday, March 26, 2006

Day 70 : Editor woes

Day 69 was my longest day on record. I was on the keyboard at 5h30am and got off at midnight. With about 1h30 hour break total during the day (grocery shopping and a 40 minutes nap) that was one hell of a day.

Although yesterday was long and productive, only the first half was true for today. I did work about 7-8 hours, most of it was debugging the editor, which, contrary to what I thought, was (and still is) far far from being ready to roll. I was hoping to start level-designing today, but after witnessing the state of the editor, I'd say I still have a solid week ahead of me before I get anything tangible done. Today was a frustrating day, it seemed every line I change I'd make a stupid mistake that ended in a compilation error. Spirit isn't here, so I'll punch out early.

Saturday, March 25, 2006

Day 69 : Nothing sexual about it

Started coding at 5h30am. Those days I feel I get more done by 9am than for the rest of the day. Today was no different. Still, here are a few things that got done in the past few days:

- Main character movement. That was done during the 10 days of 3D software package exploration. The main character (at least a pretty good-looking dummy of it) moves on screen with animation overloading and such. This is the first integration of a new and more powerfull feature since the migration from DGSDK.

- Talking heads. The Talking Heads are back on-line and in a much more production-ready status than they used to be in DGSDK. This is the kind of code that's kind of a chore to do. Always seem to take too long for what it does.

- Cloud layer generator. Pretty cool cloud effects that (for now) seem to go very easy on the processor. It's a weird kind of zone-thing that can move around and yet can't. Everything about it is illusion, but it works. This marks the realisation of what created the wall with DGSDK : cool transparencies. I can say that Ogre handles it all flawlessly. Go Ogre!

- Editor (again) It seems everytime I touch the game I break the editor. Which is kind of normal since the file format and such is still being finalized. I should be done re-doing the editor tonight and hopefully I'll start actual level design tomorrow.

Wednesday, March 22, 2006

Day 66 : Back to programming

I spend the last 10 days checking out 3D software packages, evaluating and spitting out a few test-models for the prototype. The main focus was 3D Studio Max. I can't very well hide my contempt for this package, but forced to recognized it is the standard in 3D gaming asset production, I had to give it my full attention. Still, at this point in time, most roads seem to lead to Blender, as it is free and thus would not put undue financial stress on what is basically a hobby project.

I'm taking a break from 3D software evaluation and going back to programming. There were a few minor untied knots in my porting. Namely the window/text system. I should be done with them by the weekend.

Sunday, March 12, 2006

Day 56 : Mission Accomplished

After 11 stressful and intense days I officially proclaim the migration of the Archangel game from Dark Game SDK to Ogre 3D and Audiere to be complete. That's right, this morning I integrated the open source audio library Audiere into the equation and it took less than 10 minutes to have it hooked up and working.

There are few minor things that are not yet in the new engine that were in the old. Minor things like text pop-ups that were half-assed in the old game anyway and needed a re-write. So they don't count.

I no longer have any anxiety about Ogre. I am sure that this engine will be with me until the project's end.

About half a week ago I made a prediction, that at the end of the migration, I would have had half as much lines of codes as before. My game had nearly 18,000 lines of code before the migration. Now, drum roll please, 7773 lines of code. That's more than 10,000 lines of code that I discarded from the old game code because Ogre does so much more than Dark Game SDK and has an API that is so much cleaner. Although it's a pain to see what basically amounts to a small novel being thrown away, there was just no point in keeping my prototypal, rushed-out code versus using the rock-solid foundation of Ogre.

I will take a break from programming now, and I'll move on to study exactly how the art pipeline will work in the production version of the game. So far I have used Milkshape, but that free license has now expired and I'll study other graphics packages before continuing the development. This means daily updates to this blog will stop for a while.

I can honestly say that moving to Ogre was probably the best move for the game. It is an awesome engine and I can't wait to see what it'll be able to do as the game develops.

Over and out.

Dot Net sucks ass

Here are my first official Visual Studio C++ 2005 Express (I'll refer to it as Dot Net from now on) definitions:

"Build Selection" : Throws a dice and builds whatever projects in your solution it feels like building. Will have a tendency to pick a project you haven't worked on for days.

"Faster" : Slower.

Saturday, March 11, 2006

Day 55 : Quaternions can't do magic

After bringing the editor to what it was before the migration and testing the new track system from Ogre, I realised that Quaternions weren't the be-all-end-all solution to rotational glitches. In fact, twice in my path 2 quaternion keyframes with the object heading in a similar direction produced very erratic "detour"-like interpolations, even with the "use shortest rotation" setting. This Quaternion problem is turning out to be major. Even small rotations may end up causing major interpolation problems. I thought I'd be shielded from these problems I faced in DGSDK. Bleh, I might have to move back to my old workarounds using targets and hard-rotations. This is a pain.

Friday, March 10, 2006

Day 54 : Furthering the Editor

Exactly one week into the migration and things are going according to my original optimistic predictions of 2 weeks, rather than either my original pessimistic predictions of 45 days and my later optimistic predictions of less than 2 weeks.

Worked on the editor tonight. I'm back at being able to save and load levels (w00t). Format had to change because of the use of Quaternion and the new World Class. Will go to bed a little early. Sources of (negative) stress outside the project have been added to the already high sources of (positive) stress from the project. It's starting to take it's toll. The weekend should yield great results, but tonight. Sleep.

Thursday, March 09, 2006

Day 53: Worlds and Water

Yesterday I took a break to go see Ultraviolet. That had to be some of the worst CG this side of 1986. Still a cool movie though, lots of action and fun. Totally pointless and plotless.

Tonight wasn't so much about porting my "Terrain" class from the old DGSDK game as it was about creating a new class called "World". Since Ogre handles terrain differently than DGSDK, the same rules don't apply and so a new, different class was required.

This new one will kick more asses than the old Terrain class. It'll use Ogre's advanced rendering techniques for bodies of water in the terrain and such. I'm still experimenting, but I should be done with by the weekend.

Tuesday, March 07, 2006

Day 51 : The Editor

Up to now I ported code that served in both the game and the level editor. Tonight I moved towards getting my level editor back. I have many unknowns as far as changing the way I store rotation (since DGSDK, and my old code, worked mostly in Euler and Ogre in Quaternions) so I want to be able to design a few camera paths and see which solution is better.

About halfway done with that. Should be done tomorrow.

Monday, March 06, 2006

Day 50 : A Squarey kind of Wheel

My game code now looks more like an empty shell of it's former self than anything else. As much as I'd like to think the game should be isolated from the engine to make future such migrations (always a possibility) as painless as possible, in reality it's just not practical.

Alot of my game's former code were workarounds and tweaks adapted to the engine. For example, my former game code worked in "frames" as a time unit. Ogre on the other hand uses "seconds" as time units, a more practical solution in my view. Should I just stick to frames just so my old code would still work? Or should I move on to time-based animations and make everything better?

At the beginning of this blog I mentioned that I had coded some 18,000 lines of code since the start of the project 45 days before. At this rate I make a prediction that at least half of those will be gone by the time the migration is complete. I am effectively shedding my squarey wheels for, I hope, round ones.

Sunday, March 05, 2006

Day 49 Evening : Mopping up is 90% of the job

Studying the art pipeline and converting my 3-4 assets to Ogre's .mesh format was a breeze. So all of that took a huge hour of my time (including re-boning a character, something I meant to do a while back).

It hasn't gone as fast from then on unfortunately. I thought I could #ifdef a version of the game that would support both Dark Game SDK and Ogre. I gave up on the idea. Both engines have such diametrically opposed design mentality that it just would've required too much work. So I began to completely mop out DGSDK code and clean up the rest. I did alot of maintenance on the code, stuff I was putting off doing in the old prototype. A few other classes work. A couple, like Font, Text and Terrain, will have to be started over. Unfortunately I work tomorrow, which means progress will slow down for the next five days. Still, considering the progress I made I would be surprised if it took longer than the originally planned optimistic 2 weeks to wrap up the conversion.

Day 49 Morning : Statics and Dynamics

Woke up at 6am. For a sunday that's unusual. Two of my internal classes : StaticObj and DynamicObj are now back on-line and using Ogre instead of DGSDK. Again, I am amazed at Ogre's completely logical API and the ease with which I've managed to port these two classes. I did run into what I believed to be a bug in Ogre. But instead of prematurely mouthing off on the forums (which I did with previous engines) and looking like a idiot (again) I investigated it fully and it was in my scripts. Bad programmer. Bad.

I'm pondering what to do next : either convert "playership" and "drone" classes or switch to testing out the art production pipeline. On one hand I'd like to keep going programming-wise because I'm on a roll, but on the other hand all the level scripts I have load and play models that have not yet been converted to Ogre, so I'd have to change all of those to load like "ogrehead" and then switch back once I get the real model exported into .mesh. Oh well, I guess that answers the question, now where are those export plugins?

Saturday, March 04, 2006

Day 48 Night : We have visual

After juggling with the internal structure of the game, plugging and unplugging different classes and such, I'm happy to report that the game's camera class is back on-line and if I run the game the camera is back following it's good old spline from the level's XML file exactly as it used to with DGSDK. It's the only component back on-line so far, but doing the camera work itself didn't take very long at all (an hour or so at most). Dealing with the rest of the architecture to prep this work is what took the longest. I'm starting to think my estimate of 2 weeks - 1 month 1/2 was way too pessimistic. But I'm sure there are many walls in front of me. My GameObject class will be the hardest, I'll take a look at it tomorrow. As this was my milestone of the day I'm going to go watch some anime, and maybe get some decent sleep. Decent sleep. Right.

Day 48 Morning : Crying

I finally plugged in Ogre into my code, and after a giant namespace clash (actually, stuff clashed because MY code didn't use namespace as it should, and still used defines such as #define PI 3.14something) and Ogre didn't like that. But it was pretty much all my fault :-)

But then something made me cry. In the prototype I made with Dark Game SDK I took great pride in the design I made of a spline interpolation algorythm to create smooth camera and object movement. I took alot of time designing a cool API to add and delete keyframe and then have it calculate a spline based on the keyframes. Well, as it turns out, Ogre already has that built-in. I didn't look at it in depth (looked at the Camera Track example) but it does look like had I started with Ogre from the beginnning I wouldn't have had to code that at all. Damn me. Well, I'll probably keep using mine because the prototype is already coded and it works. Still. Damn me.

Friday, March 03, 2006

Day 47 : Migration

This is the first post of the Archangel Game's development blog. But it is actually day 47 of the project. The project was started on January 15th, 2006 but I have decided just now to start a development journal. I will document here the different milestones and main events that will happen during the development. I do it mainly for myself, to keep track of how long different steps in the process have taken, and help me to better my abilities to evaluate future time-budgets on game development.

This is how the project started:

I had spend more than a year trying to make a game with the Torque Game Engine, but it would always seem I couldn't go anywhere with it unless I went exactly the way the engine wanted me to go. After giving it one last frustrating shot over the christmas holidays, I decided to give up on it and move on. As long as I was switching engine, I decided to also create a new game concept. And so the Archangel Game started. The Archangel Game is just the name of this blog, the game has a working title which is not yet public (because it could hold on to the end).

The first month and a half of the projects were created using the freeware edition of the Dark Game SDK. And although I can readily recommend it for novice programmers and prototypers, at the end of those 45 days I stumbled upon many limitations and some nasty bugs that prevented me from carrying on with it. And so yesterday, on day 46, after some 18,000 lines of code, I decided to start migrating from the Dark Game SDK to the Object-Oriented Graphics Rendering Engine, better known in the community as OGRE. That is the story so far...

I am now 24 hours into the porting and things are, I think, running smoothly. After 6 or so hours of work, I've completely "unplugged" the Dark Game SDK from the game. I also, at the same time, ported the game from VC6 to Visual C++ 2005 Express, which created another slew of compiler errors. I'm happy to report that things are now back to compiling as they were. But now I have a game with no engine. Nothing's visible, I didn't even dare to run it. Tomorrow, I start plugging in the OGRE engine. I have an E.T.A. of between 2 weeks and 1 months 1/2. That because I've never done such a thing and I don't know yet how OGRE works.

I've spend a few hours with the OGRE docs and so far I'm in love. Let's see how all this holds up.