Shining Online

December 27th, 2013 18:51 Development Diary

Project Update – December 27th, 2013

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.


October 9th, 2013 02:05 Development Diary

Project Update – October 8th, 2013

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!

June 14th, 2013 00:24 Development Diary

Update – June 14th, 2013

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 :)

April 30th, 2013 13:40 Development Diary

Update – April 29th, 2013

So it’s been a little while since the last Shining Online development diary. As usual, there’s been no activity for a long time, but recently things have picked up so it seemed like a good idea to make an update whilst I’m in the mood.

Engine-wise things are shaping up nicely. As I’ve mentioned in the Shining Online update thread, the engine data is extremely flexible right now. Weapons, armour and items are all loaded from template files rather than being hard-coded. Since then, things have been updated so all resources (graphics, sounds, maps etc) are all loaded from resource files as well.

This has added some overhead (and probably explains why things have been so slow), but it’s made modifying the game much easier. Adding a new weapon is now a matter of updating the weapons file and adding a sprite resource. All of this fits in nicely with the new kernel-based game loop, so resources and content can be loaded during gameplay, either when a file changes or manually through the debug console.

Along with the new resource and content setup, there’s also a new render pipeline and entity management system.

The rendering system isn’t particularly complex, but it handles stuff like rendering tilemaps and sprite animations. And yes, animations are handled by the resource system so they can be tweaked in realtime :)

The entity system is a topic for another day. Right now it’s still a little early, so the details haven’t been nailed down, but there’s already support for player movement as well as NPC’s. The NPC’s don’t do anything yet, but with a bit of luck they’ll be walking around soon.

The game isn’t the only thing that’s been receiving attention lately – the website will be getting an overhaul as well. The design probably won’t change (I still suck at that), but the backend is being re-written to handle the online features and tie everything together.

Until next time!

February 20th, 2012 22:15 Development Diary

Back in the Saddle

It’s been a while since the last dev diary, and it’s a bit of a mixed bag. Lots of things have changed, but there’s not really much to show. At the moment I’m writing a pretty hefty set of articles on the technical side of the game. There’s a lot of notes to go through so I’m not really sure when it will be ready, but it seemed like a waste to do so much work behind the scenes without sharing it.

The biggest change was the switch to a kernel based engine. It’s added a bit of overhead, and it’s probably over-engineering things, but it makes adding new functionality to the main loop a lot easier. Services can be added and removed dynamically, and can either be called every loop (like the screen renderer) or just sit in the background (like the resource database).

Once example of how useful this can be is with the debug listener. A DebugListener service object can be created and added, and it watches for changes to certain directories. Once a change is detected, it send an event so the resource manager can reload things. Because it’s added dynamically, it can be left out of non-debug releases, or even added via the debug console during runtime.