Got some more stuff done today.
I forgot to mention that I put together a basic user input class, which simplifies handling user input a lot for me and cleans up the code nicely. Right now it supports the keyboard and an Xbox 360 controller. I really want to add support for non-Xbox controllers – I looked into it a while back but I couldn’t get it to work. It’s one of those things that’s important to implement though, if I expect people to play it for any length of time.
More shader stuff
Today I decided to do a better “trippy-looking” shader effect. It didn’t take long, I got it as you can see in the video above.
I then made a class for these sorts of effects and hooked them into the appropriate places, allowing me to fire off whatever shader effects I come up with whenever I want.
Right now I just have the trippy effect, a nice “shaking” effect that reminds me of earthquake shaking in SNES RPGs, and an effect that flips everything on the screen horizontally. It makes stuff very disorienting, but deep down I don’t think I’ll actually end up using it.
I then sat around mulling over what to work on next. There’s so much to be done, but I didn’t want to do much. Eventually I started working on getting it so that individual screen/room info is stored in the world XML file. This means I can now assign attributes to each individual screen, like specific colors, backgrounds, foregrounds, music, enemies, objects, npcs, and more. It was kind of a pain because XNA’s XML content pipeline can be annoying to work with sometimes, but I got it working eventually.
Once I get some more stuff squared away, I’ll need to update the map editor (which already needs lots of updating anyway) to add this functionality in. It’s a huge step toward the project’s progress, though.
I’ve noticed over the past week or two that the way I’ve been implementing things or redoing things is a lot like how EarthBound handles things internally. Maybe it’s because I’m so familiar with how the EarthBound ROM works, or maybe that’s just the way games like this natually end up being implemented, I dunno.
Today, for instance, I realized I was one step away from implementing NPCs and the entire map/text system the way EarthBound does it. So I made that step, and now it’s pretty much exactly the same basic framework. I need to do a lot of beefing up of the functionality, but in a way, I should be able to use this overworld system in an EarthBound-like RPG game too. The only big thing is that I’d need to implement 8-directional walking I guess. It’s interesting.