Here is a link to a preview video of the updated External Resources system. Hopefully you good folk find it much improved!
Have Fun!
RobP
Here is a link to a preview video of the updated External Resources system. Hopefully you good folk find it much improved!
Have Fun!
RobP
Howdy Folk!
This is post to give you a preview for what’s coming to Sojour.
The screenshots and video are from a very early build and there is still much more to do, but, hopefully you good folk will see some value in it.
Firstly, what do I mean by external resource?
An external resource is any web based resource.
Right now the system is coded to deal with just web pages, but in the future it will support direct API communications for the more advanced users here.
I guess the next question is, what can I do with external resources?
At their most basic level you will be able to embed web pages into Sojour as an asset:

External resources have several advantages over using a web browser.
Firstly, the resource is easier to find and you don’t need yet-another-window open to use that resource.
Secondly, if the resource tab is left open and Sojour is closed down and restarted, it will reload that resource from exactly where you left off. In the above example it would remember your last map position.
Ok, we have established that we can embedded external resources into Sojour, but can it do anything else?
Yes. Yes it can!
Sojour’s external resources can have one or more triggers added to them. These triggers allow functionality within Sojour to be triggered based on various criteria from the external resource.
For example, if I wanted to integrate a third party dice roller, say DDDice, I could add a trigger to look out for when a dice is rolled in DDDice:

More triggers can be added or the existing ones edited by using the assets browser:
Now that DDDice is wired in, I can roll dice in it and have them trigger table rolls in Sojour automatically!

Sojour will initially support two types of trigger: A table roll trigger and a journal injection trigger. There are plans for a further 6 trigger types, but the implementation of these is further off.
Obviously, DDDice is just an example. This system can be used to integrate any web resource that uses HTTP/S! 😎
You can see external resources in action by watching the You-Tube video below:
That’s it for this post!
Please bear in mind that it’s an early preview of a very early iteration of brand new functionality. This will only get better as we go down the road!
Have Fun!
RobP
I’ll start by saying that this is NOT the custom folders release. Work is still ongoing for that release, but I do have a video of it in action!
Instead, this release is focused on bug fixing and maintenance that addresses the following issues:
RPG-396 When Sojour crashes (on load), we should not be overwriting the main save files: This is an important one. I have had 3 reports over the last year of customer’s save games being corrupted.
When I examined their saved games, it looked like the save files had become partial save files. I finally traced a potential use-case where this can occur…
There are occasions where Sojour could crash during loading resulting in incomplete data being resident in memory. The global exception handler would then try and save that data resulting in partially complete saved files.
This will no longer happen. In addition, I have changed the code for closing down Sojour post crash so that it more reliably closes its process down.
RPG-397 Sojour shouldn’t crash if there are missing data directories on load. A week or two back I had a customer report that their Sojour game was crashing during loading and there was nothing they could do.
On investigation, I discovered that some of the customer’s data folders were missing. This upset Sojour and caused it to crash.
Sojour is now a lot more tolerant with regard to missing folders or data. In addition, if a crash is detected whilst loading, Sojour will now offer the option to pick a different data directory, restore from a back up, or simply exit:
RPG-399 Sojour crashing when dragging character to map with journal open. This was an odd one in that the investigation had found some corrupt internal data within the customer’s save file which, alas, I hadn’t been able to reproduce.
This corrupt data was centred around token characteristics. All token characteristics code has now been updated to be more fault tolerant.
RPG-400 Adding or editing a map-link with no campaign selected crashes Sojour. Sojour used to use the assets browser to get the current campaign or ruleset. The flaw with this approach is that if a user selects a different campaign, or no campaign at all, it can lead to Sojour having problems.
This code has been entirely re-written and all places that used to rely on the assets browser for the active ruleset or campaign, no longer do so, and instead, use the updated code.
RPG-401 Adding or editing a map-link when the map is set to show all, doesn’t show them! This is a minor issue where adding or editing a map-link would result it in not respecting the current map’s Show Map Links option. This has now been fixed!
Work has been slowed down a little by the fact that Sojour currently has three work streams associated with it:
Having three streams of parallel work means that any issues I find in one of them has to be merged into the others. This is normally pretty easy using my source control system.
However, the fly in the ointment is that the Custom Folders branch sports a radically different UI architecture from the other two branches, which means that some fixes have to be hand coded as opposed to merged!
Normally I try to work on one thing at a time, but I soon realised that if I stayed on the calendar work, my customers would see very little new from me as that work is such a large undertaking.
Custom folders sprung up as a result of many customer requests and of seeing Lord Gwydion struggle with his data during the live streams. As with most things software related, I had thought it would be a quick and easy update, but it has turned out to be a little more complex. Hopefully the video above will provide ample evidence that we are headed the right way.
Finally we have the main branch where all the hot-fixes and high priority changes go.
My end game is to get back to one branch again, but this is predicated on me delivering the Mk2 Calendar and Custom Folders functionality! 🙂
That’s it for this post!
Have Fun!
RobP
This is a fly by update to let folks know that development is still ongoing in the Sojour world despite time pressures.
As per previous posts, the current development focus remains with the Calendar Mk2 system (which I should really give a name!).
One of the things that I have realised whilst developing this system is that it has many complex algorithms that interact with each other. As a result it can be quite easy to upset them and not know that they have been upset.
In the end I decided that this is an area of Sojour that absolutely needs some automated testing around it.
Automated tests will automatically ensure that the complex algorithms in the Mk2 Calendar are performing as they should. These tests also highlight existing potential issues and pitfalls – many of which have since been fixed after being identified by these tests.
We are now up to 134 integration tests that are automatically run by my development environment every time I merge code:
Writing the tests takes a fair bit of time, including the time required to integrate them with the automated build pipeline – it’s why the build server screenshot above shows a lot of red as I try to get the server to run the tests correctly.
Despite the time cost, these tests enable me to write code faster and more efficiently.
If I do break something it will be flagged on the build server and also in JIRA as shown below, top left (the red rectangles are builds where tests failed):
If any of the tests do fail, they will provide detailed information as to why they failed that should speed up my job and also help to produce a warm fuzzy feeling that things are working properly and headed in the right direction.
Ok, so that’s what I have been doing on the new calendar system, but, what’s Dorian when it’s not at home?
Dorian is a new graphics engine that I’m working on. It will replace Ionian which is the one currently used by Sojour (and by Ancient Armies).
Why a new graphics engine?
The primary reason is that Ionian is preventing Sojour from being a 64 bit application, which limits the memory it can access. This can lead to limitations with image sizes etc.
Dorian will be fully 64 bit compatible, it will support Direct-X 9, 11 and 12, plus it will allow rendered surfaces to be embedded in WinForms – much like the current Ionian engine.
The above demo shows it running successfully in a 64 bit application in a WinForm – a big milestone for the engine.
There is still a lot of work to do and once the engine is ready, Sojour will need to be updated to be able to work with the new engine. It will be a non-trivial job, but it’s a piece of tech debt that has to be tackled to allow me to take Sojour to the new places it has to go.
That’s it for this post!
Have fun!
RobP
This is a shout out to Lord Gwydion who has started filming some great You-Tube videos using Sojour to run a solo adventure using Ker Nethalas (click to go to its store page).
So far there are three videos, an introduction to Sojour:
And the adventures of Samuel through what looks to be a fairly dangerous dungeon:
Lord Gwydion also created a video demonstrating using Sojour to create a ruleset for Ker Nethalas:
The system is very interesting one in that it is solo focused, but also provides the player with a lot of agency. I highly encourage that you pop over to Lord Gwydion’s channel to follow the adventures of Samuel!
Also, don’t forget to thumbs up Lord Gwydion – producing videos for You-Tube is not an easy task and takes considerable effort!
On the development front, work is happening on Sojour, albeit at a very slow pace as I’m finding it hard to get the time together.
The current plan still stands: A calendar update to version 2, followed by tables enhancements, followed by dice enhancements. Once they are all in, I’ll ask the community what they want to see next!
In the meantime….
Have Fun!
RobP
Have Fun!
RobP
It’s a little late as the previous four renders of the video failed with terrible artefacting and I had to figure out how to fix this.
The result is a compromise – in that I had to pick a sub-optimal codec, but at least the video is out!
Still working on dark mode and making some great progress there!
Happy gaming!
RobP

I’m pleased to announce that Sojour v1.1 has now been released! As with all updates, this one is completely free for all existing customers!
The main new feature is trackable characteristics. These are very flexible and impact most parts of the system. I highly recommend watching the video below to get a good overview as to how they work.
It should be noted that I have much more in store for characteristics and many more things Sojour related! Sojour is an evolving product and will only get better with time.
If you aren’t a customer and are interested in purchasing it, Sojour costs a one off payment of $10 USD. There are no servers or DRM – so it’s yours to keep forever and you will get free updates – just like this one – as I release them.
You can purchase Sojour from DriveThru RPG using this button:
In the meantime I’d like to thank my existing customers for purchasing Sojour and also providing me with many great ideas!
Happy gaming folks 🙂
RobP