You can subscribe to updates using the worklog category RSS feed.
It’s been a while since my last worklog entry. I’m currently working on improving the scripting system so that it can handle more complex stuff like cutscenes and actual interaction. It’s a bit tough and is taking longer than I’d like, but that’s how these things go. I was originally using a simple trigger/action system, but it didn’t really support some of the more complex things I needed. I have a habit of getting distracted I guess.
I also spent far too long rebuilding the entity system to separate the graphical representation (the actual sprite image) from the logical position (co-ordinates on the map). The main reason was so the server doesn’t need image libraries in order to run. Plus it doesn’t really need to know the actual image details, just the position of the character. I probably wasted a week getting it all switched, but I think it’s better to do it now than later.
Another thing I’ve been working on is getting the various menus up and running:
This is my first effort at the status screen. It’s a little different from the usual Shining Force style, but I think it works. There’s still some changes I’d like to make (such as the health bars), but overall I’m pretty happy with the layout.
Nothing too exciting in this update, as most of the work lately has been on getting the scripting system working in a nicer fashion.
- Treasure chest now stores its state in the game session, which can then be checked during trigger evaluation. In other words, it knows if it has been opened
- NPC’s can respond to events and display messages (as seen in the screenshot)
- Cleaned up the rendering system so screens don’t have to access the render service directly. Each screen has its own render group which it can add items to, and these are automatically added and removed from the global queue
Like I said, nothing too exciting, but progress is progress.
The holiday break is always productive for me, and this year was no exception:
- Added a new trigger-based event system to the overworld
- Added basic actions for playing sounds, animations and displaying messages
- Added basic session service, so that entities can store some state information between play sessions
- Updated the treasure chest script – it now plays sound and animates as it opens
- Lots of little bits of internal code re-shuffling to try and make things easier to manage
So far I’m quite pleased with how things are going. The whole kernel-based system has really helped, and coupled with the entity system approach I’m finding it easier to add the basic game functionality. It’s still tricky to add some of the more complex stuff, such as shops and cut-scenes, but overall it’s starting to look a little more like a game each time I work on it.
I’m afraid it’s another boring update. The last few weeks have brought some good progress, and it’s starting to feel like the seed of a game is in there somewhere. There’s still a very long way to go, but each week brings a little more functionality. Recent changes to the engine include:
- A new camera system for the town — Previously it automatically centered on the player’s character, but if you’ve played Shining Force II you’ll know the camera has an almost elastic quality to it. It took a while to get everything working the way I wanted it to, but it’s pretty faithful to Shining Force II.
- An NPC — They don’t move (yet), but I plan to add path-based movement so the game can finally have people walking around.
- Something interactive — The first level now contains a treasure chest that can be inspected. Nothing happens in the game, but internally it recognizes the action and can keep track of if it’s been opened. It’s all data-driven, too, so nearly all the behaviour comes from the scripting system. There’s a lot more to add to this part of the engine, but the basics are there and seem to work quite well.
That’s it for now. I promise the next update will have something to look at!
A nice short worklog entry today. Here’s a picture from the latest build.
Nothing exciting from a graphical point of view. It’s exciting for me though, because this is the first time everything has been loaded from disk and not hard-coded. All the graphics come from the resource manager and everything is rendered using the new (stupidly overcomplicated) render pipeline. The entities (Cody and the chest) are built from templates loaded off disk, which is defined in the story file.
It’s the small victories that matter :)