Category: Project News

RSS Feed

Project Update – January 20th, 2015

I was hoping to have this entry posted last year, but there were still some bugs and ugly bits I wanted to iron out before writing about what I’ve been up to.

It’s been a busy few months, but progress has been good. The largest task I’ve been working on is the scripting system, and there’s finally enough of it implemented to be able to “play” a short part of the game. There is still a huge amount to do, but I’m pleased with how things are currently working.

Previously I was using a system of triggers, conditions and actions to run scriptable events. This worked well enough for simple things, such as an NPC that says one line of text, but it started to struggle once more complicated actions and cutscenes were required.

In the end I felt the best course of action was to build a scripting language into the game, rather than trying to turn the existing system into something more powerful. It took a few weeks of development, but it’s finally usable. Here’s a comparison between the old and new systems:

Before:

[template_triggers] {
    [*] {
        event*     = EVENT_INSPECT_ENTITY;
        condition* = global_flag_equals('vagabond.has_spoken_to_tensai', 0);
        action*    = display_textbox('[Text goes here]');
    }
}

The above configuration would add a “template_triggers” component to the entity, and assign a single trigger that would listen for the EVENT_INSPECT_ENTITY. When the entity receives the event, it would then check to make sure the “vagabond.has_spoken_to_tensai” flag, and would then display some text if flag wasn’t set.

It’s good for simple things like doorways and one-line NPC’s, but it quickly gets unreadable once more complicated decision trees are needed. You can very quickly end up with a dozen or more repeated conditions. Not good.

After:

(listen :event-inspect-entity
  (when (not (global-flag? "vagabond.has_spoken_to_tensai"))
    (message-box "[Text goes here]")))

I went with a Lisp style syntax, mostly because there is a wealth of information about writing Lisp parsers. The plan is to have a few dozen commands baked into the engine, and then the rest defined in the script engine itself. So far it has worked pretty well, but I expect I might not be so optimistic in a few months.

Probably the hardest problem was pausing the various script processes without blocking the rest of the application. The original script interpreter would run all functions sequentially, which made it easier to implement but impossible to pause a script for external input. In the end I added a stack-based VM and a very (very) simple “process” system, which allows multiple scripts to run in parallel. Processes can pause themselves (and other processes), which makes for some interesting possibilities.

It was a lot of work, and probably not the best way of handling things, but it’s now possible to create some more interesting behaviour purely through scripting.

Harmonia Tactics – Demo 1.4.3 Released

It looks like Christmas is coming early for Shining fans! The team behind Harmonia Tactics (previously known as Tales of Harmonia) have released a new demo, and it’s packed full of features!

As you can see from the trailer, things have come a long way since the old ASCII interface! The download is available for Windows and Linux systems, so try it out now!

Download the demo


Read more: Release Notes: Harmonia Tactics Engine Demo v1.4.3.

Shining Force PC source code now on Github

Here’s some great news for aspiring developers – bludragn has decided to release the full Shining Force PC source code onto GitHub.

I’ve decided to finally release the code for my old engine.

Hopefully it can be of use to anyone working on their own engine, or just curious as to how SFPC works. It’s possible I may come back to it to tinker again at some point, I’ve learned a lot in the years since I last touched it, but I don’t have the time or the motivation I once did to spend on it.

The project itself is written in C++, and can be built using Visual Studio 2010. The source contains everything from the 2012 summer update, which includes an A* path finding algorithm and a custom script engine. If you’re interested in creating your own Shining style project it’s well worth a look!


Read more: SFPC source code now available on Github

Project Update – August 8th, 2014

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:

Shining Online - Demo 5

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.

Legacies of Veridocia Demo Released

Legends of Veridocia

The first alpha for Shining Force Central’s community has been released!

Legacies of Veridocia has been in the works for quite some time and has involved many community members. It certainly hasn’t been a smooth ride, but thankfully everybody’s efforts have paid off with the release of the first demo.

The Demo consists of a Story Scene, a battle, and a post-battle story scene, followed by a basic free roam of the map (there’s not much there right now). Once you’ve played through to the free roam, you can reinitiate the battle as many times as desired by walking into the area where the characters begin the battle.

The demo itself is short but extremely polished. If you’ve played Shining Force 2, you’ll recognize the animation style almost immediately, and the portraits and battle scenes all suit the game perfectly. To run the demo you’ll need the latest version of Java installed.

Download the demo


Read more: Legacies of Veridocia Pre-alpha Demo Release!

P:10/61 1 2 8 9 10 11 12 60 61