Entities

Anything that can change in Intelligence will be an entity. The static parts of a map are the quadtree, the changing parts are entities. The quadtree can influence entities (collisions, treadmill floors, etc.), but for the most part it’ll be passive. I have quadtree loading and drawing working fully already, so next I clearly need to work on entities. But they’ll be basically all of the game, so I’m not really sure where to begin on them. They’re…complicated.  They will have one or more functions governing their behavior (I might conceivably want more than one; for instance, one for player controls and one for physics), a position, a texture (which may be animated, and a behavior function will take care of animation), a size, and maybe some more properties I haven’t thought of yet. They’ll need to be able to give messages to the player through text, and run around on predetermined paths. I’ll need the possibility of multiple player characters which can be switched through while playing a level, and perhaps I’ll need to be able to have the level control one of those player characters while he’s not being controlled. It’s some complicated stuff, but I think I can manage it.

Basically, once it’s done, the main loop of the game will be incredibly simple. Just update every entity, draw the quadtree, draw every entity. Do this synced to the screen’s refresh rate, and you’ve got yourself a fully playable game. Obviously, the most important part is the entities, so I need to get started on them. I guess first I need to figure out what all they need in their main structure (which I basically figured out above), and then make that structure and some functions to work with instances of it. Then put one of those in the map structure, start making some simple behavior functions, and see how it goes from there. The ones for AI and such will definitely be the most interesting, and they’ll have to have some variables which can be controlled in the map files on disk. This probably doesn’t make sense to anyone but myself, but getting my thoughts written down definitely helps me organize them.

This has been quite helpful. I’ll try writing about tricky problems to help solve them more in the future.

Time for New Sprites!

A newer version of Rae's animator.

He looks different from Rae now, yay!

A newer version of Rae

She's shorter now, and looks much better.

My sister is a really great artist, and I’ve gotten her to do the graphics for Intelligence.  Here are the new sprites for Rae and the animator, based on the old ones.  They look way better now, don’t you think?  Plus, I’ve decided on a scale for everything. 32 pixels = 1 meter.  And because of that scale, they’re shorter now.  If they hadn’t been made shorter, they both would’ve been very, very tall, and I can’t say that I want that.

Game Gears: fixed!

I finally got around to replacing the bad capacitors in my sister’s Sega Game Gear, as well as my own.  I ordered the replacement capacitors from Mouser on Monday, and they arrived Thursday.  Most of yesterday I was removing old ones, cleaning up the boards, and soldering the new ones in place.  I also got some white LEDs, with which I plan to do some backlighting experiments soon.  I got two different types, one brighter, the other less focused.  I’ll have to try it with both to see which I like more, but I’m guessing it’ll be the less focused one.  I could also try diffusing them in various ways, such as sandpaper, a translucent plastic tube (white drinking straw!) between them, etc.

I had forgotten how much I liked my Game Gear.  I got it for Christmas when I was…6-ish?…years old, I think.  We have tons of games for those things (do not be fooled, Sonic 2 is nothing like the Genesis version), and about a year ago we found the two player link cable for them, so now that both consoles are working, we can finally play games against each other.  In related news, my sister kicks my ass at Mortal Kombat.  That game, or at least the Game Gear version of it, is extremely esoteric.  She figured out how to shoot some weird rings at me, and all I could do is kick and punch.  Oh well, maybe DuckDuckGo can help me figure out that crazy game.

So much for that.

Turns out this week is busier for me than I expected.  It’s already Wednesday, and I’ve done no work to Intelligence.  Also, I’ve realized I want the game to have single-player and co-op modes, and to make that easier, I think I’ll use the client-server model for both modes.  So that means I’ll probably have to do threading, which Allegro 5 can fortunately do (if C1X were done, I could use built-in threading, but C1X isn’t done).  More things have popped up for later in the week, so I doubt I’ll be able to work on Intelligence much at all.  Maybe next week, if I’m lucky.

A Clean Keyboard is a Happy Keyboard

I noticed dust between the keys in my keyboard, and so I decided to take them all off and give the whole thing a good cleaning.  I wiped all the dust off, and was a bit surprised by how much dirt had settled between them in under six months.  It’s pretty gross when you think about it, and what’s worse is that all that came from your hands.  You use those things to put food in your mouth, and all that crap in your keyboard is from them.  Maybe we should all start eating candy bars with utensils.

The keyboard is back together now, and I’ll probably try to work on the Intelligence game this week.  If I’m lucky, I might be able to get levels to load, and have Rae walk around in them (well, slide around, since I don’t have any animations yet).  Allegro 5 seems like a nice library, and though I know very little about it, I’ve decided to use it for this project.  I’m even the package maintainer for it in the AUR.  I really think it should be in [community], but it’s not.  Not that I mind, since I get to maintain it, but it seems too important to be in the AUR.  But I digress.  I’ve made my decision.  I want to have a basic level loadable by next Sunday, and I’ll try to post more stuff on here than I have been.

Well, I screwed up.

Yep, I made a big mistake.  I picked out a SATA card that I thought would do what we wanted, and also had RAID capabilities.  But, as it turns out, it is just a SATA RAID controller, and it can’t be used without RAID.  So now we have to return the card to Newegg and pick out another one.  I swear, the page about the card made it look like it would be a normal SATA controller, and also do RAID, which we wouldn’t use.  But it wouldn’t boot when I plugged our two hard drives into it, even though it detected them.  Its BIOS screen had only options involving RAID, though, so now I’m upset with myself.

On an unrelated note, it’ll be a few days until I can work on anything Intelligence-related much.

Rae’s Animator

Rae's animator

Rae's perpetually nameless animator (working draft).

Here’s the current sprite for Rae’s animator. I’m not 100% happy with it yet, so I’d appreciate some feedback. And yes, he’s supposed to look like Rae. Olivier commented on how similar they look in episode 4.