gearleaf

Viewing posts tagged 'geas'

Battle System Targeting

Shamus

Happy 2010, guys. The end of the year saw me looking for a new job; I won't get into the whole reason because it is a long story fraught with stress and unfortunate circumstances. In any case, I have a new job which is quite cool. Unfortunately, along the way, and with the holidays crashing into my life as they do every year, things were really busy and I didn't get a whole lot of time for Geas.

Every now and then I would pick it up, shake it around, and poke at bits though. In my last post I had just gotten the battle system started. Unfortunately, the internals involving targeting were kind of sketchy and the more complex I tried to make things the worse it got.

But, somewhat like being turned into a newt, eventually it got better. About fifteen minutes ago I finally wrapped up the last of the code monkeying and decided to turn one of my big headaches (the tidying required after killing a monster) into an avenue for new features: I'm going to leave "dead" monsters, just like dead player characters, on the battlefield as fodder for skills and the like. I think this makes a lot of sense seeing as one of my main characters is a necromancer.

Download most recent alpha build of Geas!

No pictures this week, since it doesn't LOOK terribly different from the last time I posted.

Anyway, I mean to pick this up and start posting weekly again but time is a harsh mistress. We'll see. Either way, McGrue, just because I suck doesn't give you a free pass! September 21st, really? You were calling me out two weeks ago, going on about how you had so much work done. Where are the posts?

Edit: Okay, sorry, looks like Grue decided that his last post wasn't good enough for his front page. (Because his front page is sanctified in some way or something, I don't know. I guess maybe he's ashamed?) He's actually only a day behind schedule now.

Fighting It

Shamus

New version of Geas with all the changes I've made in the last few months since I've posted properly, including a battle system that sort of "works" but is incredibly simplistic and not especially fun.

Download this week's alpha release of Geas!


Discussion

Quite a bit has changed but it's not immediately obvious. Hit F1 to start a fight with some slimes. Esc exits the battle immediately, or you can just defeat the slimes. Only Attack is implemented, and anything else will just waste your turn.

I've also added a console that is currently not terribly useful but will be eventually, in theory. Since it was written to be included in KISSKISS it should be relatively simply to drop into any project, which means that we now have a (rather "feature light") console for VergeLua now. You can open the console by hitting Tab.

The other somewhat-interesting thing is that, yet again, I am using the newest version of the Verge executable, which is more up to date than the last official V3 release. This exe allows a couple of interesting things that Overkill has added and I haven't tried out yet, like allowing you to pass functions directly to the Hook* functions, instead of just string function names. It also allows you to use (some) control character escape sequences like \n and \f in VergeC, so font subsets are available to the VergeC-using masses again.

If you want to get just the newly compiled verge.exe, you can get it right here. If you do try it out with your project, please let me know how it goes, especially if you encounter any bugs.

Lamest Update Yet

Shamus

So! I discovered while unnecessarily mucking around with my menu system in an effort to further procrastinate on building my battle system that colour filters were broken in Verge3. I decided that as my update, I'd fix whatever the problem was and post it up for the whole world to see.

So I got to work. After two weeks here's what I've discovered:

  • The internal colour filter functions LOOKED like they were still working all right.
  • ColorFilter still worked when called from VergeC.
  • I updated to the latest commit in the SVN repository and HookRetrace, etc. stuff was broken because Overkill was working on callback stuff.
  • ACTUALLY updated to the ACTUAL latest commit and HookRetrace was just fine.
  • If I rewrote code to directly call stuff inside of the v3 table instead of going through vx, then it seemed okay.
  • I was using vx's ColorFilter wrappers entirely boneheadedly wrong.

So yeah it wasn't actually broken! Great, huh?

Anyway so I'm back to working on the battle system now. I'm having problems with blitting entity frames but I'm sure I'll just discover in two weeks that I'm doing it wrong.

Too Long

Shamus

It's been nearly a month; much too long. In that time I have been thinking about the battle system, rolling things around in my head trying to figure out how to lay things out. I've been trying very hard to figure out where the balance between interesting to play and easy to use falls. I'm somewhat stuck but am slowly working through it (and trying to apply my mantra of "do what's easy and make it more complicated later if you have more time"). I know that what I really need to do is start trying things out and figure out what works and what doesn't that way.

In terms of actual work I've begun to update the Character objects (basically bundles of stats and other information) to fit with the current state of the engine in preparation for using those Characters in battles. I've found a JSON decoder and slipped it into my general game-making library so that I can use it for data files (and, if I end up needing to, net communications). None of this stuff makes for terribly interesting new playing so I haven't bothered with a new zip for this week.

I've also been very busy with work.

In any case, I have also produced a little bit more artwork and I'm afraid that will have to stand for this update's pretty pictures.

What we have here are relatively "final" single frame sprites for each of the six playable characters in the game. In my original plans there were going to be twelve characters in total, and the story involved splitting them up at various times into groups of five or less. When I revamped everything to make it possible to finish, I cut out all but the first six characters that you meet, and you will never have more than five as an option for your party.

This simplified things a great deal but I admit that I was rather saddened to lose the rest of the characters and, sadly, some of the depth of the game along with them. That said, I am still convinced that it was for the best -- a game that I can actually finish is infinitely superior to one that will never make it off of paper.

On Stringtables

Shamus

Yet again, only small cosmetic changes.


Download this week's alpha of Geas!

New sprite added for Thea Wayman, Kiel's mother. Also, various under-the-hood changes.


Discussion

I did some code reorganization this week. Nothing major, but some things flow a bit better.

Also on the coding front, I've added StringTable support to Geas. What this means is that (for now, only in the speechboxes, but I plan to expand this out to all gui display functions) I can define a language file that dictates a bunch of string replacements. Whenever I go to display a block of text, it first checks its language redefines and swaps in the other language's version instead. At some point I will hack Verge up so that it supports larger character sets, and then my dream of being able to translate Geas to other languages will be doable.

Using the StringTable there's two ways to going about producing a translatable game. First, you can just write the game in your language of choice, then pull all the strings (using some magic that I haven't yet created or decided on) and just directly translate from that. Secondly, instead you can write all your text to begin with as just IDs of some sort. "kiel_c0001_ln001" or something. Then, have a language file for every language, including your first one.

I haven't decided which of these approaches I will actually use when I get down to the nitty-gritty of having real conversations and not just placeholder text everywhere. I need to decide it pretty soon though, as I'm getting sick of having a completely pointless and storyless game. That said, I'm also thinking that I probably want to write a conversation system (like the one in Neverwinter Nights, for example) so that I can handle all of this a little more sanely rather than just writing all of the game's dialogue across hundreds of lua files.

Anyway, aside from Geas, I also started work on my LuaVerge tutorial. Sadly, in writing the first section I have discovered that I'm not sure exactly the direction that I want to take, and that may end up getting delayed. In essence, I am struggling with writing a tutorial for using LuaVerge "right now" -- in other words, in a state of mild disrepair and lack of good tools. I'm not sure I want to do that!

What I am considering instead is to write the tutorial in tandem with generalizing stuff I've built for Geas into a game-makery system, KISSKISS (mentioned in the LuaVerge doc index) that makes a lot of decisions for the user and does a lot of the hard work. Unfortunately this means that I have to do all that hard work and as anyone who has been reading this site knows I'm kind of bad at getting complex projects finished. Ultimately, though, I think KISSKISS + a tutorial on it use will be more helpful to the absolute beginner than a "here's how to use Verge ONLY LUA" that has been sort of done before anyway, and it will help differentiate Verge as a useful tool as opposed to another library that handles some of the graphics stuff maybe.

So yeah, I'll keep thinking on it.

Older »