Sunday, November 12, 2006

The Gothic Fever and Other Problems

The Gothic fever hit me harder than I expected (even though the game is not as good as I hoped). I have almost fully recovered by now but unfortunately there were other problems. I won't bore you with my private life. But fact is for the duration of a month I didn't had much time to work on any RISC OS stuff. Half an hour here, half an hour there. Impossible to work productively under these conditions. Unfortunately things won't get any better in the near future.

Hence I made the decision to take a break from RISC OS work. A month or two should be enough. Hopefully I will have more time available again thereafter. Sorry to all, who wait for updates and/or the SRPG release.

Thursday, October 12, 2006

What did I say?

"hopefully I still can blogg at least once per week."

Oh, dear. Almost two weeks since I wrote that and no new entry. Sorry! Had some very hectic days and wasn't able to make much progress on any of my projects.

"unfortunately" tomorrow is the German release of Gothic 3, which means I won't be able to get any work done for several days, because I will be busy playing. It would surprise me if I even find the time to eat and drink enough to save myself from starvation and dehydration. Doing any work is totally out of question.

Sunday, October 01, 2006

Slowing down

Those of you, who are following my blogg on a regular basis, have probably noticed by now, that my posts are getting more infrequent. It looks like my RL is getting more demanding again, so the time available for RISC OS work is more limited. It shouldn't be too dramatic. I guess I will be able to devote around 50-75% as much time as before and hopefully I still can blogg at least once per week.

Back to SRPG: Today I implemented a kill count mechanism. Obviously this can be of some use for the player, since fighting will be an important part of the game and he might want to know how many creatures of a specific kind he already has killed.

But the kill count has another, even more important purpose. Apparently no self-respecting RPG can get by anymore without a "My cellar has been invaded by n rats. Please kill them for me."-quest.

Actually I am not so sure about that. It sounds rather stereotypical. On the other hand stereotypes only become stereotypes, because they work. And the rat quest gives the player an easy, familiar way to get accustomed with the battle and quest system of the game.

Friday, September 22, 2006

Various Bugs (Mine and those of other People)

While writing the encounter macros, I encountered another bug in DScript. Nothing very serious, but apparently the Byte, Half, Word, Float and Double instructions aren't working with a quantifier of 0. SRPG is becoming more and more a stress test for DScript.

I found another bug in gcc, which I overlooked in gcc 3.4.6 r1. This was pretty stupid of me, since now I have to wait for another release. This means my build system is still broken, so Graphite is on hold probably for a few more months.

The good side of this is, that I can concentrate more on SRPG. I am working on the battle system now and it proved to be more tricky than I expected.

Saturday, September 16, 2006

Encounter

The encounter system is mostly done. I still have to write some DScript macros and probably some more tests are in order. Next I will start to implement the battle system.

OK, how is the encounter system working?

Each location hat a set of possible encounters, each with a certain probability. When the player goes hunting in a location, an encounter is randomly selected. Since encounters can be invoked from a trigger it is possible to let other actions start an encounter. Let's say the player is mining in a dangerous spot. The mining action has a trigger, which has a certain chance to invoke an encounter. Makes mining much more interesting ;)

The set of encounters for each location is static (it can't change while playing the game), but the system has some dynamic components. It is possible to modify the probability of an encounter. Is is also possible to modify an encounter through a power factor, making it more or less dangerous. Both factors (probability and power) can either me modified locally or for the whole world.

Monday, September 11, 2006

Time

SRPG can now keep track of the passing of time. This can result in changes to the player state or even to the player skills, depending on what the player is doing.

I did spend the last weeks with lots of small stuff, that is required for the bigger features. Now that I am through with it, I can start to implement the combat/encounter-system. Looks like we are finally getting somewhere ...

Here is a short summarisation of my to-do list:
  • encounter system
  • battle system
  • crafting system
  • trade system
  • item usage system
  • magic system
  • + about a dozen smaller improvements and additions
I guess once encounter/battle is done, I am halfway through with the backend.

Thursday, September 07, 2006

State

The character state system is almost finished (with character state I mean things like health or mana).

Each state value consists of two party
  1. the current value (modified by various actions and events)
  2. the maximum value (determined by skills/attributes and other state)
Furthermore some state will be marked as a "life state". If one of these ever drops to 0, the player is dead.

For the world, that I am working on in parallel to writing the back end, I plan 5 state values:
  1. Body points
  2. Health points
  3. Spirit points
  4. Mana
  5. Stamina
(the first 3 are life state). More details later ...

Wednesday, August 30, 2006

Attributes and Skills

I decided to reuse the skill system for the player's attributes (like strength, intelligence, ...). An attribute will be just a special skill, that has no explicit usage (it affects the use of other skills though). This method does not require any additional implementation in the back end (it will be up to the front end to distinguish between attributes and skills).

I haven't said anything about the skill system yet. I guess I need to catch up on that, since it is mostly finished.

SRPG will have a hybrid skill system. Basically it is learning-by-doing. While using your skills, you gain XP in that skill, in your main level and sometimes in an attribute. If you get enough XP in a skill/an attribute/the main level it will rise by one point.
With the main level the hybrid aspect comes into play. For each level you gain a free point, that can be used to improve a skill (or an attribute). This way the player can develop and customize his character a bit beyond skill training. Furthermore the hybrid system allows XP rewards, which does not come from using a skill. This can be used for quests and probably some other things.

Saturday, August 26, 2006

After the Release is Before the Release

The path handling routines in DScript are causing trouble again. Looks like the latest fix created another bug. Absolute paths, that contain system variables, can't be used with Path, Insert and Include instructions, though using foo$Path variables with the foo: syntax works properly.

The problem is rather easy to fix, but I don't think that it is serious enough to justify another release at this time. Instead I will focus on SRPG for a few weeks.

Tuesday, August 22, 2006

Examples

I am very close to another release of DScript. The executable is build and I'm working on documentation and examples now.

After the release of DScript 0.10 some people complained, that there were no example scripts. Probably justified. But it isn't easy to come up with a good example. A good example is simple and self explanatory. So what data can we create? It needs to be in a format very well known by lots of people. This rules out most interesting options already. So we are left with a few standard formats: DrawFile, Template, Sprite and a few others. I finally decided for DrawFiles or rather a subset of this format, since a DrawFile is pretty complicated.

While working on the examples I found two more bugs. The first one affected the @@-expression. @@ gives you the current address, but I took the address when creating the expression object, which doesn't work from within macros. Easy to fix. I am glad, that I found this bug so early.

The second bug is something I am not happy about. It is a compiler problem, one I knew about for a long time. But I didn't notice, that it affects DScript in this particular way.

It makes a program crash, when an exception is thrown (which happens a lot in DScript's error handling), but only in the release version (which is compiled with -O2). The development version is not affected, which is the reason, why it took me so long to notice the problem.

The obvious solution is to switch from the ages old 2.95 compiler to 3.4 (done that already for SRPG). That should fix the problem. But 3.4 has another problem (I wrote about it before). It makes working on SRPG a very annoying task and I simple don't want to add these kinds of trouble to another project.

For now I compiled the release version of DScript without the -O2 switch, so it will be a bit larger and a bit slower.