2012-09-23

Weekly update

AIGameDev conference was great. I didn't find any time during my stay in Vienna to look into Dragontorc, but during weekend I managed to do few things, so here we go with the changes:

  • fixed bug with loading bitmaps (vala's "private set, public get" is messed up for structs, I should report that)
  • fixed lots of AI BASIC issues:
    • fixed loading expressions
    • fixed loading "wait" command
    • fixed "or" operator
    • fixed "offset" for movement command
  • extended debug info that goes to log
  • fixed incorrect usage of Unique Event Groups (bug allowed to unlock chest with any key)
  • fixed using rating rule instead of rating for default query element
  • added default movement style
  • added default reference for library solvers
  • fixed overlapping objects check
  • fixed stats (gee's strange issue - it may only store int as value of map, it won't work with float but if you encode float as int (value of pointer to float pointing at int and vice versa), it of course works fine thanks to vala compiling to C)
  • objects may be killed/destroyed (and fixed some bugs related to it)
And last thing means that both player and enemies may be killed now - I killed few wisps with missiles/firebolts and they killed me with just going through me for some long time.

With next Milestone (I am just that small bit (that grows into more small bits) from finishing this one! More time I will spend on getting graphics from original Dragontorc, even if it is just temporary graphics) I will give numbers to Weekly updates and I will provide some video more often.

2012-09-17

Weekly update

Oh, I almost didn't made it. I am going to Vienna (not Venice as for few weeks I believed it was) for AIGameDev conference, so it is very unlikely that I will do something during the week.

But I did something during past week, but only something, as most of the time I spent at work and I had to do few things at home as well. Here's the list:
  • improvements for movement (offsets and few minor things)
  • AI BASIC:
    • chance and percentage operators
  • generalised usage and setup of AI Actions and AI Behaviours
  • added mirrored bitmaps
  • graphics!
    • wisp (grabbed and added)
    • firebolt/missile (grabbed, just two as temp, and added)
    • skeleton (grabbed, just few frames, not added yet)
And compiled two weeks of work and fixed compilation, but some stuff does not work. I am making progress even if it is not as fast as I'd like it to be.

2012-09-10

Weekly update

I did lots of small things during last week. Even with weekend spent visiting family. But I still did not finish the Milestone. And why? Because although many things that I did, I found useful, there were still some missing bits or some things that needed improving/unifying/adding. So, here's the list of things done last week:
  • added damaging overlapping actors (so wisps can damage wizard, and in future it should be possible to easily implement "bane" spell)
  • added stats rules to have some damage being ignored by default (most characters should ignore "astral" damage)
  • some objects may be invulnerable
  • AI BASIC improvements:
    • "attack" command
    • movement speed can be set with percentage
    • added new AI messages (when someone is damaged, killed, when entering new room)
    • behaviour or AI action may be accessed with "if" statement
    • unified "waiting" command
    • added "switch to" command (ends all other child behaviours, leaves or starts just requested)
    • added "is here" operator
    • added "random" operator
    • some minor technical improvements
  • renamed "action" to "interaction", so it won't be confused with AI action (I still have to find good name for "event" which was taken from original Dragontorc, but it should be "interaction event" or something like that
  • some mingling with interfaces (renaming, adding new ones)
  • all AI objects may be accessed through queries (not only actors and items, but also projectiles and doors)
  • added wisp character (still work in progress)
Why I had to do it? And does it mean that I will spend so much time on everything?
I wanted to add some improvements, because I can and because it may make my life so much easier in future. Take a look at the wisp. Adding that little fellow took me few minutes but I had to struggle with some bits and decided to make it easier and cleaner and when big part of week was spent on that. I was going to add skeleton and some projectile based enemy during that week but decided that I will do it, when I will have all that I need. Probably adding the graphics will take most of the time (currently I am using Dragontorc's graphics but this will have to change).

2012-09-03

Weekly update

During last week I did almost everything I planned. "Almost" because I forgot to do something. And it turned out that I forgot about it, when I started to test everything. On Saturday I finally took two weeks worth of coding and tried to compile it. And after some time (mind, not that long) I started to test stuff and run into two crashes  that were related to consequences of tested code, which means that new code was working just fine and the old one was broken because of two assumptions that I made earlier.

So when I was testing taking damage, death, animations etc. It was working as expected. I moved to test AI attacking me and as it was not doing anything, I looked into its AI BASIC code and then I realized that I didn't put any code related to attacks there. I looked into AI BASIC source, where I have nicely documented every AI BASIC command and... I didn't find one related to start an attack.

Plan for next week? Add that missing command, few minor things, test everything and start working on two types of enemies and I will probably use original graphics for now. Hm, maybe I will increase the number to three by adding wisp that would just randomly wander around map and from time to time attack player.

And now, as always, list of things done during this week:

  • added collision handler interface (it is assumed that projectile does damage on touch/collision)
  • added firing projectiles
  • added max state values for stats and "vital" stats
  • added play death info and death infrastructure (without AI messages, which will be important for AI to learn, who killed their allies)
  • added few events for animation
  • added condition for queries based on AI's rating (no assumption on ally/enemy/alignment in game framework)
  • minor changes to allow multithreading safe (with added checks)
There is one more thing that I'd like to mention.

During last week I bought Avalon and Dragontorc. Finally. When I was kid, we didn't have access to most of original games. Even law in my country didn't prohibit piracy. It all changed in mid 90s and I never had a chance to buy Avalon or Dragontorc. And after all those years I didn't even think about buying them as I assumed that there are no more original tapes that I could buy. Until I stumbled upon www.retrogames.co.uk.