100 Experience Points
An Adventure in Indie Game Development

Day 28: 2 March 2013

7:16: Another weekend! Saturdays are usually the days I get the most done. But first and foremost on my list is to clean up the tasks that are remaining in my sprint backlog. That’s writing a post about what to focus on when unit testing, and make the battle/combat prototype more compelling. The interesting thing is, it used to have an enemy destroyer that you could blow up. I want to go back to that. It should be really easy to do, since it was there once. I just want people who download it tomorrow to be able to get the teeniest tiniest feel for what it is like. Both of those should be extremely easy to do, and here’s to hoping that they’re both done by 8:00.

9:21: Not even close to 8:00. And I’m still not done, though perhaps I’m almost done enough with my changes to make a more compelling battle in the combat prototype. I think I only need a few more minutes.

10:29: OK, that’s done. Now all I need to do is write my post about what to focus on when doing unit testing. The good news is, I started on it earlier in the week and I’m almost done.

Oh. Here’s a picture of the enemy destroyer escaping, because I decided not to attack it. Guess I’m just a nice guy. The scenario is set up so that if you actually try, you should be able to find the enemy before too long and if you send all of your ships to attack, you should be able to take it out without too much trouble.

Destroyer Escaping

11:00: I just published my unit testing post. That means I’m done with everything I originally set out to do for the week. And I still have quite a bit of time left. It’s time to brainstorm, and go back to my product backlog, and see what extra items will have the most value right now. I’ve got plenty of ideas.

12:46: I don’t know where the time went. I started listing out the things I thought might be a good addition to this sprint, went and grabbed some lunch, and suddenly it was noon. But now here it is, 12:46, and I’ve got another little piece completed that I think you guys will like: the ability to dynamically load any ship parts in a certain folder. This means that you, yes you, could create a ship part, create a config file for it, get everything placed in the right spot, and use your own object in the game!

I’m going to write about how you actually do that, but not quite yet. Maybe tonight or tomorrow, but for sure before the new release at the end of the day tomorrow. Some of the things that I’ll be doing before then will mean small changes to the config file for ship parts, so I don’t want to write up documentation that will immediately change.

The next thing I’m going to try to tackle is allowing you to rotate your ship parts. That way, if you want a gun or dish pointing in a particular direction, you can.

13:28: Well, I can see that my rotation matrix code is working, but to actually allow the user to rotate it is going to be kind of tough. I think what will happen is, when you select an object, a ring will appear around the object. This ring will be drawn relative to the object that you’ve got selected. When you click on the ring, it will begin the rotation process. As you move around in a circle, it will rotate the object that you’ve got selected. It sound easy in principle, but there’s a lot of little steps that go into it:

  • Create a ring to draw. Different objects will have different sizes, so the ring will need to look nice at a wide variety of sizes. This probably means generating it dynamically.
  • Draw the ring in the right place.
  • Handle selection of the ring.
  • Calculate the desired rotation amount from the current location of the mouse.
  • Don’t let people rotate an object in such a way that it overlaps other objects. If they try, revert back to the place it was originally. Color it red in the meantime.
  • Not all parts will be rotatable. Add stuff in to the definition of a ship part to define whether an object can be rotated around like this or not.
  • Much of that is like what happened with moving objects, so I know the path forward. It’s just going to take a little longer than I had initially thought.

14:48: Well here’s my rotation ring. It’s gigantic. And ugly.

Giant Rotation Ring

17:09: My rotatable objects are coming along. There’s still a lot of cleanup to do. Now that I’m where I’m at, I think I’ll be a little surprised if I get this cleaned up tonight. There’s a lot of little things to do with it still, but the general concept works pretty well.

18:20: I just spent some time responding to a few emails from some people. Thank you everyone, for the positive encouragement, both about this site, and about my XNA tutorials. It’s amazing how much of a difference a simple email can make.

I also got a lot (but not quite all) of my rotation bugs worked out. In a little bit, I’ll be posting some more images of it. First, I need to go find some food…

20:42: I said I’d upload some pictures, so here you go. This shows a bunch of objects that have been rotated around. It also shows the green rotation ring. That’s what you click on to actually start the rotation. Then just drag it in a circle. I think it will be pretty intuitive, but I have yet to do any usability testing with it to verify that.

Selection Ring

The last two things to do are to make it so that you can’t rotate an object into/on top of another object, and to make it so that parts can be rotatable or not. Neither of those are terribly difficult.

21:43: As far as I can tell, rotatable objects are complete. I was also going to set up constraints for bending the objects forward and backward, and side to side. That might be a lot of work for right now, but I’m tempted to do it, just because I’m already in that mode.

22:02: I was thinking about staying up late and programming, but it’s been a long day already, and I’m starting to drag. I’ve gotten a lot accomplished, so maybe it makes sense to just call it a day and come back in the morning.

I feel tired, but I feel really good about what I accomplished today and all of this week. That’s a good feeling, knowing that things are coming along, even if there’s still way too much to do.