Thursday, March 31, 2016

Walls and Goals Inherit some Class

New build is up here!

Whoa, a Sunday Is The Deadline post before Friday? Weird!

Well, I'm visiting some friends for the weekend, so this is the only time I have to post. And, sorry to say, even though a lot was shifted around behind the scenes this week, nothing should appear different in this build from last week's build. (If there is something different, then I've messed up!)

A few weeks ago I set up my solution for timers and switches, which used a separate script called "TimedBlink" which implemented the "timable" interface. Timer classes looked for objects with timable components to switch them off or on at set intervals. I realized this was awkward as soon as I went to implement switches. (Switches would need to look for timable object too, and then turn them off).

This week, I ripped the functionality for things to turn themselves on and off (which involves managing particle effects and sound effects) out of the timable interface and put that into an interface called activatableAndDeactivatable (I really hope I think of a better name for that soon). This interface has an Activate method, a Deactivate method, and a Flip method, which will activate the object if it is inactive, and vice versa.

Furthermore, I created a script for default walls (called DefaultWall, go figure) which implements the activatableAndDeactivatable interface. I then made sure that switches and timers still functioned for default walls. Right after that, I had all other wall types inherit from the DefaultWall class.

I did a similar job with goals. The base goal script now implements that obnoxiously named interface, and enemies and linked goal nodes inherit from it. Well, linked goal nodes do. I'll have enemies inheriting from the Goal script next week. And then almost all relevant objects will be able to be switched on and off in a suitably ambiguous fashion!

Charge-up sound effect, as always, is by Javier Zumer. I'm using it under this license. I have modified it.

Sunday, March 27, 2016

Switch me on, turn me up

New build is up here!

Okay, switches are working! They were actually easier to set up than I thought they'd be (and I thought they'd be easy - I didn't want to try tackling anything hard right after GDC).

So, what's next? Well, I definitely want to recalibrate the levels that switches appear in... I also consulted a friend and I might have a better, more robust implementation of both timers and switches to try. So that's next.

After that? Well, I know I said I'd be done with features, but I don't think that's quite right. I think some features are going to go away, and some features are going to appear. Here's an example: breakable walls. Breakable walls are an easy, intuitive way to require that a player charge through a certain portion of a level. Breaking through walls would also feel awesome, if done right. Finally, and most importantly: breakable walls would require the player to power-up their charge. A common mistake I find people making right now is that they never bother to power-up their charge, or they're confused about what powering-up does for them. A breakable wall would help illustrate what's really going on there.

As always, the power-up noise is by Javier Zumer. I'm using it under this license, and I've modified it.

Saturday, March 19, 2016

Post-GDC Shenanigans

This week was GDC: the Game Developer's Conference! I had a ton of fun and met a lot of great new people. I did not, however, work on Pierce. Next week, expect more developments with switches.

Saturday, March 12, 2016

Timers and Interfaces

(New build is up here!)

Hi all! Just a quick update before I head out to the Game Developer's Conference this weekend. You won't see a lot different in this week's build, but timers have been rebuilt. This does mean that the timed walls on level 10 should now NEVER BE OUT OF SYNC. Hopefully that is the case.

I argued with myself over exactly how to implement an interface through which things could be timed. I now have I timable interface (which I should probably rename ITimable) which is being implemented by a "timedblink" script which is attached to default walls. A separate game object, called a Timer, has a script which takes in a public list of game objects and, on a set interval, calls the "DoEachInterval" method of any component of type timable it can find attached to any of the objects in its list of game objects.

I know that there's probably a much neater way to implement this, but for now I'll see how this is working. Switches will likely follow a similar structure, with a switchable interface attached to things I want to be able to switch on and off and also an actual switch object that the player must charge through in order to trigger.

And as always, the charging-up noise is by Javier Zumer. I'm using it under this license and have modified it.

Sunday, March 6, 2016

Kill walls and players

(New build is up here!)

This week is just a small update. I added a level which incorporates kill walls, which are a wall type that I made a few weeks ago but never implemented. I realized in making this new level that I might want to figure out what I want to happen when the player dies *and* completes the level at the same time. For now, I've just made it difficult for the player to die and simultaneously complete the level.

I also know that I want to do away with timed walls. Instead, I should just make a "Timer" script that is able to call methods and change properties on given objects. That way I can continue to make timed walls, but I don't have to make *new* timed walls if I wanted to make, say, timed warp walls or timed bounce walls. Or even timed enemies. I can also have one timer be in charge of multiple objects. This way, I'll always know that two or more timed objects remain in sync with one another (currently, the two timed walls in level 10 sometimes become desynchronized).

Finally, I want to create switches which the player can flip by charging through. Three is often a magic number, and if I created switches then I would have switches, timers, and movement as three modifiers that can be applied to walls and enemies. I would also have bounce, warp, and wrap walls as three objects which help the player. And enemies, default walls, and kill walls are three types of obstacles. Finally, regular goals, linked goals, and enemies are three types of goals. Helping objects, hindering objects, and goals, with modifiers which can mutate all of the above. Once I have switches, I might be satisfied with features, and start rebuilding and re-editing levels.

Or maybe I end up not liking how switches play. That could happen too. Anyway, timers and switches will hopefully happen by next week.

Oh, and as always, the charging-up noise is by Javier Zumer, is being used under this license, and has been edited by me.

Wednesday, March 2, 2016

Oh no! Missed a Sunday!

Ack! I missed a Sunday! Sorry guys, but I moved last week. There was hypothetically time in my schedule to still make an update, but as time went on that window rapidly closed. I even got so busy I didn't update the blog until Wednesday! Sheesh! I should at least have *something* for the blog by this weekend, even if it's just a small update.

Oh, and I'll be heading to GDC from the 12th to the 19th, so it is likely that I won't have an update for the blog on the 20th (hoping to actually get *ahead* enough to have an update ready before I leave on Saturday the 12th though).