4 Hugues Ross - Blog: Akradion Update 5
Hugues Ross

6/27/14

Akradion Update 5

Changelog:

Akradion

  • Levels are now loaded from files created with Tiled Map Editor. This makes building levels so much easier.
  • Levels can define the colors of groups of bricks.
  • Made the ball's "hit a block" tween more consistent.
  • Added a powerup that doubles the number of balls in play.
  • Made some new sprites for powerups.
  • Added a powerup that creates volatile balls. These balls explode everything they touch, but accelerate extremely quickly.
  • Changed firing mechanics. Left-click fires a ball left, right-click fires right, and middle-click fires straight up.

DFEngine

  • Made half of a change that will probably save me tons of pain in a few months.
  • Scripts can now receive keyboard input.
  • Scripts now actually display their error messages.

You might be wondering what the 'half change' listed for DFEngine is, and why I only made half of it. Wonder no longer! This change relates to scripting, specifically how I implemented Lua in my engine. When using Lua, you have to manage a lua_State, which represents the environment that a Lua script runs in. With the state, you can add, remove, and otherwise manipulate data. However, transferring all of that data from one state to another is very difficult and slow. Thus, the best way to run multiple scripts that use the same data is to run them inside the same lua_State. This is the sensible way of doing things, which is naturally not what I originally did. When I added Lua, I built a new state for pretty much every script I needed to run. 
Now, I'm trying to bring everything back to a single state. There are a few other benefits to this, but moving data around is the biggest one. For starters, once I finish this change I'll be able to fully remove the storage components from the game. Next, I'll be able to use any data type, not just numbers and text. I'll be able to make full lists, structured hierarchies of data, and more. Right now, keeping track of a set of things is all but impossible, but this change(when finished) will fix that. 
Right now, only the main game object can take advantage of this feature, so only global script-defined variables get the special treatment. The second half of the change will apply this to the individual entities in the game as well. However, I'm not adding that to the engine until after I finish Akradion. Akradion is rapidly approaching the same tipping point that AMAZE reached, where making changes gets harder. Thankfully, since Akradion is more sensibly designed I won't have to worry about making large changes to the gameplay, just the underlying engine. Anyway, this just means that the engine probably won't be getting many more updates until Akradion is done.

Speaking of which, I have some good news: The first(and only) demo is almost done. I could release it today, but I still have some things that I want to add/change first. I'll probably either release it this weekend, or early next week. Either way, it's coming. The game itself is actually quite close to completion, I think. I doubt it'll need more than another couple of weeks to reach completion, thanks in part to being so small. Still, it's difficult to believe that it's only been 2 months since AMAZE was released!

No comments: