7/26/14

I didn't get as much as I'd like done today, but I should be able to wrap up in the final 13 hours of this jam.

This is what happens when the Hotgod isangered. You should have listened!

Today, I fleshed out the mechanics a bit by adding levels and a loss state. As levels progress, you get more points but the meat pours in faster. Dropping meat angers the Hotdgod, while clearing levels and juggling meat pleases him. Making the Hotgod too angry now ends the game, and I made a game over screen. It's not in yet, but I should have plenty of time to add it. I also added a simple progress bar to show level completion.

The current title screen. I've decided that th Hotgod is the one producing all of this.....produce.

Overall, I have four more things that I want to do before I run out of time:

I need to add in the title and game over screens, add highscores(this'll be easy, since I already have code for that lying around), and allow the player to restart the game.

The game is currently silent, so I should add in some sound!

If I have time, showing the player an instructions screen prior to starting the game would be nice.

I need to name this game. The original title was 'Grill Bounce,' but it's a bit too plain for my tastes.

Beyond that, I pretty much have the game covered. It's simple, but what do you expect from a game jam entry?

7/25/14

Just as I said in my last post, I'm doing a game jam! I ended up with the theme cookoff, which has led me to a very strange game.

The weird face made of hotdogs in thelower-left corner is the Hotgod. Do notanger him.

Currently titled 'Grill Bounce,' this is a game about bouncing meats (mostly hotdogs right now) across the screen with an outdoor grill. What started as a relatively innocent and normal game vaguely inspired by Bit.Trip Beat has become a bizarre and frantic game about making grilled offerings to appease the Hotgod. This involves keeping an infinite number of meat products aloft (and also grilling them) as they cross the screen. As a bonus, if you can knock one of the numerous bald eagles out of the sky with your hotdogs, you can catch it on your grill, cook it, and toss it off the screen for bonus points. Have I mentioned this game's weirdness enough yet?

A more observant reader might remark that this game's mechanics bear a suspicious similarity to those of Akradion. This is true, although I have copied almost nothing (not counting DFEngine, of course) from the latter. My decision to go with something relatively similar was mostly so that I could play it safe this time around. After all, Akradion is the only game I've made with DFEngine yet, and with such a short time span to work with now is not the time to gamble on my engine's ability to handle varied mechanics. Trust me, you'll see some more interesting stuff coming from me soon enough.

7/24/14

I've run into a really awful snag. After doing some more testing, I've found a couple of horrible crash bugs that have practically materialized overnight. I have no idea what could have caused this, and hours of trying to remove it have failed spectacularly. I could keep hammering away at these bugs, but I'm not expecting much at this point. Instead, I'm putting Akradion indefinitely on hold. This is not to say that I'll never release the game. However, I think it's best to move on for now, and I don't want to promise any particular deadline.

Despite this terrible news, I still think the project was a success of sorts. Even if I hit a roadblock like this at the end, Akradion has proved that this version of DFEngine is functional enough for game development, and I can keep going without scrapping the whole thing. That said, there are a few systems that I plan to upgrade or replace, but most of the engine is staying. I'll be making another post soon detailing my next course of action. In the mean time, I'll be participating in a new game jam this weekend, providing me with another test for DFEngine.

In addition, I've decided to be more transparent about my projects. From now on, most of the projects that I post here will have their full source code available on Github, and if you're not afraid of getting a little messy with code you'll be able to see the new additions to my projects in action every week. I plan on starting this within the next two weeks, and I'll post again when it happens.

Fixed a bug where powerups would occasionally bounce off the paddle without being collected

Fixed a bug where the split powerup could create an infinite loop and crash the game

Multiple variants of sounds can now be loaded to add more variety

Added Sound Effects for:

Explosions

Split powerup

Nitro powerup

Life powerup

Speed powerup

Slow powerup

Doom powerup

Game start

Launching a ball

Bouncing off a wall

Fixed a bug where dying and resetting the game wouldn't reset ball speed

Fixed a bug where a powerup could be collected several times

Fixed a bug where certain powerups could make the game crash when the next level loaded

DFEngine

foreach'd scripts can now include other scripts properly

loadSound now returns the sound's id

playSound can now take a numerical id instead of the sound's name

Unfortunately, despite the amount I've gotten done I don't really have much to say. Things seem to be progressing well, and I've gotten rid of tons of smaller bugs along with one or two big ones. In addition to this, I added most of the sounds I needed. I could've done all of them, but I got totally wiped out for the latter portion of the week. I think it may have been from lack of sleep. Hard to say, really.

With any luck, the game will be out next week. Sorry again for the lackluster post!

7/11/14

Changelog:

Akradion

Running out of balls now properly ends the game, sending you back to the title screen to try again.

Added switches that cause special walls to become solid/non-solid when hit.

Added 4 new levels.

Added a high score which is saved across sessions.

Fixed a random crash bug related to level clearing

Added a dangerous new 'powerup' that temporarily disables your paddle.

Added a game over message that lets you give up your score to continue on the current level, or go back to the title screen.

Added some pretty fireworks to the win screen.

Fixed a bug where levels wouldn't always end for some reason.

DFEngine

Added a command to destroy all entities.

Entities can now be marked as persistent, making them stick around when the destroy all command is run.

Entities now have a 'type' variable, for grouping entities.

Added a command to make all entities of a specific type run a script immediately. Note that this script won't have access to global data, only local.

As this project nears its close, I've started trying to do a bit more testing than usual. A certain friend of mine in particular has been quite helpful. He seems to possess the amazing ability to find bugs in just about anything. He surprises me every time I show him something, and this time was no exception. He managed to break the game in 3 or 4 different ways that I'd never seen before! I think I've fixed all of the issues he uncovered at this point, but it took a lot of effort.

It this point, there are two things left to finish up: The levels, and the audio. The game currently has 12 levels, and my goal for release is 15. I always meant for Akradion to be short, and I think 15 will give the game enough flesh to take a bit of time to beat without overstaying its welcome. I should be able to finish the last three levels easily by next week, but the audio will take a bit longer. Right now, I'm not very happy with any of the game's sound effects. it isn't too surprising, since I just haphazardly ripped them from previous projects. I need to go down the list and make new sounds for everything, as well as making sure all of the audio is around the same volume. I also need a bit of music, and I've convinced Peter to compose for me again. I'm still not sure how long that'll take He's pretty busy, but I think he can probably finish that up within the next week or two, if only because of how little is needed.

Lastly, I want to try and get a decent video of Akradion's gameplay, so that I can release it alongside the game. Recording it shouldn't be too difficult, but I want to try and edit it a bit and that could make things take longer. Overall, I think the game will be finished by July 25th, although I'll try and release it earlier if possible. I've definitely overshot my original estimate, but I managed to add plenty of cool features and engine improvements that I hadn't planned on. I'm pretty happy with my progress.

7/4/14

Changelog:

Akradion

Fixed an issue where blocks would still collide with other objects while disappearing.

Levels can now define their own background color.

Powerups now have a fancy animation displaying their name when you grab them.

Added screenshake. I'm not sure if I'll keep it, but it's there.

Removed the level begin/end animation and replaced it with a new one.

DFEngine

Scripts can now access collision mask data for entities.

Scripts can now access (and tween) the game's background color.

This week, I haven't got much to talk about. I'm also pretty tired, so this is going to be pretty short.

So, the collision mask thing was why I had objects collide while they were disappearing. I would've had this in a long time ago, but I didn't know of a decent way to alter collision masks. The main problem here is the documentation for Bullet. Bullet, while being a pretty nice physics engine, is very difficult to learn. I'd tried to find out how to alter collision masks several times before now, but to no avail. Finally, I found a forum post with the solution. (For anyone wondering, get a body's broadphase proxy with btRigidBody::getBroadphaseProxy, then alter the values there. This works for me, at least.)

This seems to be a running theme with Bullet. Whenever I need to do something, the wiki never has an answer. Then, I can't find anything in the API. Next, searches bring up forum posts providing all kinds of impractical, convoluted solutions. Finally, after what seems like an eternity, I find a simple solution in another forum thread. Checking the API again yields some more information, tucked away in a dark corner where no one will ever find it. Needless to say, it's a pain.

With that said, I suppose I should be happy that I found the answer in the end. Hopefully getting more experience with Bullet will make future searches a bit less painful.