All posts from month posts/2007/08.
Ha ha, a pun on revelry. Anyhow, healbeam7 is playable. Needs a bunch of work still, but: baby steps. Also I started work on the new healbeam level. Am I gonna want to have objects with an all-geom health? I think that makes the most sense. Also, goals to check that health? Whee.
EthanPosted Thu 30 Aug 2007 09:15:22 PM PDT
Integrating Carl's art rapid-fire, and working on healbeam7 when I get the chance. Splash damage is implemented in a hack-y way. You can now shoot the bullet down before it explodes and splashes all over you. (It does a lot of damage.) Progress, progress..
EthanPosted Thu 30 Aug 2007 12:08:22 AM PDT
Carl asked me to add a function to the recently-enhanced image-loading code that would be able to flip images in a strip automatically so that he wouldn't have to do it manually. It should be possible to do, even efficiently, but the shape of the code right now doesn't support it. The Image.make_strip function is sort of crufty and a bit of a mess, and I'd like to review it, but it's going to go in the "after 0.2" bucket for now.
The problem is that Image.makestrip can read strips in any of three different "formats". Image.makestrp('image') can mean:
a strip of one image, image.png
a strip of many images, image-n.png
a directory, image/, with images in it image/*.png. This case can be further split into:
a strip with an index, image/index.py
a strip with no index -- this case is the same as the second case.
In the first case, we return a strip of one image. In the second case, we look at the numbers of the files, and "fill in the gaps", so if the strip is [image-1, image-2, image-4], we convert this to [image-1, image-2, image-2, image-4]. That is to say, we repeat image-2 to fill in the gap where image-3 ought to be. This is a cute hack but it's largely superceded by the use of an index file. The index file contains only one expression which specifies the numbers of the images to load, in proper order. So if index.py reads [1, 4, 2, 1], we build a strip from [image-1, image-4, image-2, image-1]. To save memory, image-1 is loaded only once, and the surface is repeated in the strip. [P.S. if you modify the elements of the strip, weird stuff might happen; mostly we don't do that.]
Anyhow, I'm amenable to modifying the code, but it needs to either support all of these cases, or ditch the second one (the one I probably use least).
EthanPosted Mon 27 Aug 2007 12:10:45 AM PDT
I've been slipping in clocking time I spend working on Alexandria recently. Naughty, naughty. I don't worry about it too much, but maybe I should.
Yesterday I clipped the .oggs used as background music. This is intended to make them loop a little better, but I'll likely need to rewrok the compositions in order for them to optimally loop. I've also been looking at various music software (LMMS, Cheesetracker, MusE, etc.) and I'll probably have to write down all of what I learned in order to keep it straight in my mind. I might do that today.
I've also been working on big, bad, healbeam7. Carl also asked for some support to allow each creature's bullets to have different properties, and that's something I sort of need in order for healbeam7 to have so I'll hack that in too.
EthanPosted Wed 22 Aug 2007 11:35:29 AM PDT
After implementing some of the stuff for human mode this afternoon, I implemented the memory-saving optimization I had been thinking about for a couple of days. Basically, previously I had been reusing image files to create animations; now I use each image file once, but read a supplementary "index" file to find out what images are used in which order. This makes stretching parts of an animation a lot easier, and should cut a significant amount of RAM usage from healbeam2. But it doesn't. I'm not sure why, but adding one room takes something like 8% of my machine's RAM, and almost all of it is in this one set of 11 images. The images themselves are about 3 MB uncompressed, which should be something like 1% of my machine's RAM. Very perplexing..
[Edit: found it! The Image shape calls Image.flip_strip, which constructs new surfaces wastefully if they aren't needed.]Posted Sat 18 Aug 2007 11:35:30 PM PDT
I only clocked two and a half hours today, but I'm pretty much dead tired, so I figure I must have worked more than that, but didn't clock it, reading/writing emails especially.
At Carl's behest today I wrote up some mechanisms to allow images to be controlled by special sprite classes, for example the PulseSprite which does a rotozoom on its image before displaying it. Turns out to be a pain for efficiency, so we're dropping the use of it, but it's still there; it's pretty handy for visualizing how something will look if it shrinks/expands without actually drawing it. Also, you could optimize this by precomputing all the sprites, but in the here and now that's probably not needed.
We've been kicking ideas around for training3. The current training3 is important but too short, so we're talking about merging it with training4, but what would be a good concept for another training level? There's really not much left to cover. We can toy with the player some, but what kind of torments would the humans devise for their trainees?
Debate continues to rage regarding the space station. I wrote the code to scale the sucker and I must say it looks pretty good. Carl's pretty insistent that it's too hard to draw 14 distinct-looking overhead sprites, and I'm pretty skeptical that turning off inertia-based maneuvering but keeping the rotational dynamic is going to play well at all. Plus it might be slower, which for the station level is a big deal. I'll probably try to do what Chiz wants tomorrow, but we might keep it a zero-g station which has people inside it. Then Carl can draw people in Superman-type poses; I have no idea how he'd find the time to animate them too, but hey, gives him something to do while I finish healbeam7, create healbeam4 from scratch.
Lots of activity, and a perilous amount of rewriting stuff considering how close we are to deadline! (We wanted it to be today, but now we're talking next weekend.)
EthanPosted Wed 15 Aug 2007 11:58:09 PM PDT
Lack of postage lately; I know, I know, I'm very naughty. Anyhow, here's what's up:
Bit Shifter is too busy to do music for us; this sucks bad, since none of us have anything like the talent he does. But we'll survive somehow.
Debate rages on the alexandria-devel list regarding how to do the station levels. You can't just fly around the inside of a space station; it's unbelieveable. So maybe we'll shrink the space station, and make there be human form. I think this is my next priority -- see what kinds of changes I'd have to make to allow that and see whether it's actually fun or not. If not, of course, we ditch it.
healbeam7 is beginning to take shape; none of the game mechanics are in there yet, but at least it looks OK so far.
OK, back to work.
EthanPosted Wed 15 Aug 2007 01:28:10 PM PDT
Spent two hours today meeting, and another hour writing up minutes. Today I clocked 6:41, which is pretty good, but over half of that was "face time", during which I wasn't actually writing code. It's easier to just talk with your friends, even in a goal-directed discussion like we had tonight.
I did a little more work on the site today, but Carl wants to throw some more gfx at it. And we have most of the portraits, and I went over the training levels today to make sure they were all "up to code". Carl wants to make a title screen and I wrote the code for that, even though we don't have the title screen as such yet.
Things proceed apace.
EthanPosted Sun 12 Aug 2007 12:56:34 AM PDT
I really hate web design. I hate even tinkering with HTML templates like those ikiwiki uses. The whole thing is practically painful, even though it's just editing a matter of editing text on my laptop. So I touch it for a little while and then run screaming. Fortunately, I have plenty of other things to do too -- I just haven't been doing them. But I really need to get cracking on those level designs. And there's always more art to integrate...
EthanPosted Fri 10 Aug 2007 11:39:02 PM PDT
I've been working for most of the day, when I haven't been wandering dazedly around the house. Carl's sent me some updated graphics for the station and I've folded them in, mostly, but tomorrow I have to fix some breakage I wreaked related to doors. We're gonna be working all through the weekend but I have a feeling I have a lot more to do than Carl does. I better start doing it, then.
Major objectives: healbeam7, a new healbeam4 involving the, uh, healbeam. Dialog throughout the healbeam campaign (Chiz volunteered to take care of this, but I can do it in a pinch). Possibly new songs. Fold Carl's web design into the site. Beat the heck out of the human AI?
Minor objectives: lots of polish, including many pieces of art from Carl, some optimization in healbeam4, some sound effects.
Wish us luck, eh?
EthanPosted Thu 09 Aug 2007 11:00:53 PM PDT