Project Update: Summer 2022

Hello everyone!

Time for a summer update! Hope you’re all well and enjoying your summer. Here is a GIF of a procedural fountain effect to cool you off in the summer heat:

Cat gives zero f–ks about the wonder that is Imperial plumbing!

—News—

The Demo

As you know, we’re working on an updated demo for testing and promotional purposes. We were originally planning to enter it in an event in late June. However we elected to go for a different venue and now we’re aiming for late September. HOWEVER, the community will be getting builds in late August for testing so stay posted for more info!

Your Steam Account Requires Action

Maybe. As you know we have two Steam pages: One for the main application and one for the prologue. As we move towards the new demo and eventually launch, the prologue page will have outlived its purpose. But the thing is, a lot of you guys have subscribed to, or even wishlisted (!) the prologue!

If this is you, I’d love to see you subscribe to, and wishlist the main application instead.

Some Cool Video Content

I just did a roundtable with a bunch of fellow indie RPG developers! I’m sure you can recognize some faces and names below. We had a great talk about the art and craft of making indie RPGs and I can’t wait to bring you the vid! We’re going to edit it a bit and then I’ll be sure to let you know the moment it goes live.

—Development Update—

Currently development is all about making content, evaluating the workflow and then updating the tools and engine to become faster and safer. This is the only way we can keep the code and data manageable as the project grows.

Props

Props are the most important piece of the puzzle right now. They represent all interactable objects in the world that are not characters or inventory items. A huge priority has been to make the game world a lot more interactive by adding lots of interesting objects for the player to interact with (hidden secrets, loot, workbenches, lore-heavy decorations etc),

Now your character is constantly using their perception skill to try and spot hidden doors etc but also containers that may contain minor loot and fun secrets. I loved how “Pathfinder: Wrath of the Righteous” had a lot of hidden loot laying around, really incentivising you to put points in the “perception” skill and explore the environs:

Nothing says “hero” like rummaging through random trash!

Doors and chests can now be locked and you have to decide between looking for a key or picking or forcing the lock. Be careful however, props can be trapped:

Thought you’d pilfer a bit, ehh? Have at thee ye blackguard!

All of the above might sound like stuff that has always been in the game though? Yes and no. The change is that this stuff was always possible (more or less) but it needed to be scripted on a case by case basis. Now it’s all been streamlined and standardized so that creating a trapped chest is as easy as two clicks on a dropdown menu.

Editor Updates

On the same note as above, a lot has also happened on the editor side. I’m putting a lot of effort into limiting manual data entry and instead focusing on creating objects for all kinds of data that is then linked together. This makes the data a LOT more error proof and also a lot faster to work with as so much data can now be reused.

A good example of this are “loadOut” and “appearancePack” objects. It used to be that I had to manually enter each item that I wanted to add to a character or a container. This a surprising amount of work if you want to carefully place items by hand as there are thousands and thousands of items in a game like Skald (and a big reason why the old demo had so much randomized container content). Same goes for character appearances: I had to manually pick primary, secondary, hair and skin color as well as hair styles and animations for each character and the work adds up quickly.

Now I instead create loadOuts and appearancePacks which are collections of data that can be referenced by several other types of objects. I can create a “Fighter loadout” and add in, say, a leather armor, a long sword and a shield. I can then assign it to the fighter class meaning that the items will be given to all characters with that class. I can also add that loadout to a container if I want to let players find that collection of items somewhere or even set it as a reward for a quest.

The same goes for appearances! I can assign appearancePacks to characters directly but also add them to objects like factions. That way, each character from the same faction can have the same colored livery etc. The cool part is that appearance packs can also be assigned to props so that props in certain areas can dynamically change color to reflect factions and so forth.

This will go a long way towards letting me customize the look of areas without having to create separate art assets to reflect different color schemes. And again: Doing so, is as easy as selection an appearancePack from a drop-down menu.

I’ve also done a HUGE job of creating meta data for all the game data. This means the editor now knows stuff like allowed ranges for numeric data, what objects can be linked to which, it can add tooltips and even to some auto-completing. This was a pretty huge job (I had to write a separate program to automate a bunch of the coding to get it done) but once again: It will make the game data sooooo much easier to work with and debug.

—In Closing—

There is a lot more that has happened but I’m already running long so I think I’ll round it off there! I’m actually taking more or less a week off starting tomorrow so huzzah I guess. I’m also a little less active on social media in the summer since I try to limit non-essential screen time so expect me to be a bit slower in responding to messages etc.

Have a wonderful summer and try to spend some time outside!


To stay posted, be sure to follow the Skald Twitter and Discord and wishlist on Steam if you haven’t already!

Cheers,

 

AL

 

Project Update: Beta 1.3.1 is up!

Phew.

With a few intense days of receiving, processing and addressing feedback behind me, a new version of the Beta is up (already)!

What’s in the new Beta?

This one does two major things:

  • The game is now in a 16:9 ratio. This is is pretty distinct departure from the boxier look of before and the UI might need some tweaking. However, 16:9 is now such a prevalent AR for both monitors and media (such as Youtube videos) and I feel it is the right move in terms of making the game look as good as possible for the majority of costumers.
  • There is now a bunch of updates to speed up combat. You can now use SPACE to “repeat last command”, the orders execute faster, and there is a “combat log” you can view to see things like rolls and calculations (though that is till a bit primitive).

Of course, there are also a LOT of minor bug-fixes and other updates.

Where to get it?

The demo is still available to backers only (Not a backer? Go here!). This means that you have to use your download link to access it.

“Where is that link” you say?

Well, for Kickstarter backers, you received in a message from me. For Indiegogo backers you received it in an email with “SKALD RPG” as the subject line.

But easiest of all: You can just log onto your Itch.io account and you should be able to find it there if you’ve already played it before.

How to offer feedback?

Use the Discord, PM me on Twitter or send me an email at contact@skaldRPG.com!


Cheers,


AL

Project Update: Beta 1.2.0 (Combat Revision)

The beta build (1.2.0) is up on itch.io for testers right now! SKALD has gotten a huge update to its combat system (as well as some new features) and I can’t wait for you to have a look at it!

The New Combat System

Combat is now resolved directly on the map itself. In other words, it no longer swaps to a separate combat map.

As I’ve been developing the game, one of the biggest shifts in my approach to designing SKALD, has been in level design: I originally saw exploration of the physical spaces of the game to be a distinct pillar of game-play alongside combat, character development and interaction.

However, as I’ve begun designing levels, it has occurred to me that interacting with the physicality of the world, could not be seen as a separate aspect of game-play: The physical layout of the game world is the canvas that encompasses all other aspects of the game and combat, dialogue and exploration is made more interesting by the fact that it takes place in a “physical” world with components that interact with, and affect each other.

Placing combat on the map itself was a natural consequence of this. This will make it possible to interact with terrain during combat, NPCs will join fights and destruction will linger after combat ends. You can approach enemies from different directions, become surrounded or attempt to use the terrain to your advantage.

Combat isn’t the only subsystem that is being adapted to this shift in design mentality. More on that down the line.

The combat system as it is in the coming update is still pretty bare-bones. It doesn’t really take advantage of it’s new form yet, but I need to get some play-testing done none the less: Both to weed out bugs and to get a basis for improving the system.

The main design principles for combat moving forward are:

  1. Combat should feel fast and smooth
  2. Combat should stay tactically interesting from early to late game
  3. Combat should be narratively expressive (e.i. it should serve as a tool for storytelling)

There’s also a number of issues I need to explore:

  1. How much information does the player need and how do I present it in the best way?
  2. What are the best controls for combat and what is the optimal relationship between keyboard and mouse input?
  3. How do I visualize all the different options players might have during combat in a good way?
  4. What types of terrain layout make for the most fun combat whilst avoiding overly dominant strategies (such as defending doorways)?
  5. What are some interesting combat-role archetypes for both enemies and PCs?
  6. How can feats and spells take optimal advantage of the combat system?

Other New Features and Updates

There is months of work in this update so changes are too numerous to mention in a lot of cases.

One of the more notable updates, however, is the ability to customize the character model (hair, colors, clothing etc). This adds a bit of flair for players but more importantly, it reduces the need for me to create custom models for NPCs! This is going to be a huge time-saver down the line as I can now swap around outfits to make an infinite amount of variations. Needless to say, there will be A LOT more customization options down the line. It also opens the door for stuff like faction-based outfits.

I’ve polished the input system a bit and vastly improved the path-finding AI so movement and controls should also feel quite a bit more snappy. Try to keep an eye on this and be sure to report any bugs related to movement, path-finding and input.

The Next Steps

For the next weeks I’m going to keep polishing the combat system whilst working towards the press-, and content-creator demo (which will of course be available for backers as well). It will contain new, unseen narrative content as well so it’ll be fun to see you guys dig into it.

There will probably be a couple more beta updates before the press demo is ready to drop so stay posted for that as well. I REALLY appreciate it if you take even 5 minutes to test the game and reporting any bugs or impressions afterwards: It really helps to make this the game we all want it to be!

In regards to the game being ready for early access in late 2020 – we’ll see. I’m truly working as fast as I can but it’s hard to predict the flow of the project. Rest assured however, that all the time is being spent make SKALD awesome and I can guarantee you it’s paying off!

Farewell!

I’ll keep you posted on updates as I go so be sure to check in wherever you follow me from time to time (Twitter or the SKALD Discord). You guys have been beyond supportive so far and I love being on this journey with you. All I can do is offer up a big heart-felt “thank you”.

Cheers,

AL

Combat and Adventuring

With SKALD: Against the Black Priory entering the final days of a phenomenally successful Kickstarer, it’s time to squeeze in another article discussing game-play features and design.

Last time, we did some exploration into classes and stats. Today, the subject is the application of the classes and stats! In other words: “Combat and Adventuring”!

Design Pillars

Just like in the “Classes and Stats” article, let’s start with some design pillars for combat and adventuring:

Respect the players time: SKALD is developed for a modern audience and this means allowing players to pick up the game, play a short session and still have a fun experience. This includes reducing book-keeping by adding features such as a journal system and auto-mapping, avoiding grindy areas of pointless content padding, making combat fast and having a forgiving save system that allows the player to save anywhere.

Allow the player to make informed choices: The game should be mostly transparent in how the rules work and how the characters class, stats and roleplaying choices interact with the world. If information is kept from the player there should be a good reason to do so.

Provide multiple solutions to quests: Quests should be solvable by non-combat means and players should be able to play non combat-oriented characters.

Choices matter: The world should be interactive and react to players choices.

Adventuring

Adventuring in SKALD takes one of fours forms:

  • Combat (more on that later)
  • Exploring the environment through the tile-based map
  • Dialogue
  • “Choose your own adventure” sequences
Time to go adventuring! From the classic D&D module “Tomb of Horrors”.

You explore the game-world with a party of up to six characters. At the start of the game, you create a single main character and then recruit characters along the way. I’m considering allowing players to create characters at inns as well, to replace the recruitable characters if they wish.

At any given time, a single character leads the party (you can swap any time). It’s the leader’s skills and abilities that are used when interacting with the world so you should take care to have the right leader at any given time.

The SKALD scripting language is quite powerful in allowing me to reference player skills, abilities and previous player choices in the dialogue and the “choose-your-own-adventure” sequences.

Specifically, this gives me a lot of leeway in creating scenes with multiple solutions beyond combat (I’m taking a big leaf from the early Fallout games here). There should be room for all the different classes, and builds, to shine.

In the interest of transparency, I want as few hidden rolls as possible. If, for instance, a dialogue choice gives you the opportunity to use a skill, the game will tell the player so explicitly.

Combat

Combat is a staple of fantasy RPGs and SKALD is no exception. The basic combat draws upon inspiration from classics such as Wasteland 1 and Bard’s Tale, tabletop RPGs and other, more modern games.

As combat begins, the game switches from the tile-map to the tactical map. The tactical map consts of a background with the combatants animated upon it.

Combat is resolved in order of initiative until all the combatants on one side is either dead or somehow incapacitated.

Combatants do not move freely around the battlefield and combat is not tile-based. Instead the combatants occupy either the front, or rear rank of their formation. The player is of course, free to reorder the party formation during combat to move characters between the front and rear rank.

In general a melee weapon (excluding spears and pole-arms) can only attack the adjacent enemy rank, whilst ranged weapons and exceptionally long weapons can attack more distant ranks.

Bard’s Tale inspired combat in SKALD

For each turn, each combatant can perform a single action (in general). This may be either a normal attack, casting a spell or using an ability. I intend for there to be interactions between different spells and abilities that reward clever planning and an attention to detail.

For now I’m hoping to make combat difficult but not unfair. Party-members are very rarely killed outright in combat. Instead they are knocked out and failure only comes if the entire part is somehow incapacitated. Knocked-out party members come around after combat (albeit at reduced total HP). I’m also playing around with having a sanity score in the game and taking a lot of beatings might impact sanity in the long run.

I’ve chosen to go with this decision because I don’t want combat to prompt constant save-scumming. I would rather you survive most combats but have to make decisions of how far into a dungeon you can push your luck and then having to plan how to get back to a safe port with an injured party. I feel it will make for more memorable gameplay in the end.

Finally, combat has an auto-resolve feature that can be used to resolve full rounds of combat allowing players to blow through easier encounters or finishing combats quickly once they have them “locked down”.

That’s it for now!

This is a work in progress and it might look very different a year from now.

As always, I would love to hear from you if you have questions or comments. Feel free to reach out on twitter or get in touch at (contact at skaldrpg dot com)! Most importantly: SKALD is on Kickstarter till July 3rd and we would love to have your support!

Have a great day!

Kickstarter: The Rewards

The Kickstarter goes live on June 3rd and crunch is upon me!  One of the coolest aspects of running a Kickstarter campaign is designing awesome rewards for passionate fans!

SKALD: Against the Black Priory will feature a range of rewards from the game itself, the sound-track, a printed hand-drawn map, manuals and perhaps even a collectible big-box edition!

The Anatomy of Rewards

My strategy for the Kickstarter is simple: Run a low risk – low rewards campaign with a low target number and an emphasis on digital rewards. There’s a couple of good reasons for this:

First of all, my primary motivation for running a Kickstarter is to put SKALD: Against the Black Priory in your hands as soon as possible whilst making it the best game it can be. For a one-man team, even whilst working with freelancers, this means prioritizing coding, writing and designing the game itself.

Second, I’m based in Norway. Most of my backers are not. Neither are most of the production facilities for physical rewards. Shipping costs and logistics add up.

Digital Rewards

One of the (many) advantages of Kickstarting a video-game is that the final product tends to be digital! This allows for easy distribution which in turn cuts down on logistics, cost and risk! I like this.

Samples from the lower “digital rewards” tiers. 1 Dollar = 8.7 NOK.

Shown above are three of the lower reward tiers (1 Dollar = 8.7 NOK). Up to 300 NOK (approx. $35) the rewards are all digital and include the game itself, a demo (due in July 2019), access to the BETA version, sound track and digital copies of the manual, campaign guide and map.

The manual and campaign guide will outline the SKALD system as well as describing Idra and it’s surroundings and the most prominent characters, items and monsters. All in a classic old-school RPG style!

Concept for the manual cover-art!

Whilst serving as a hint book for SKALD: Against the Black Priory, the campaign guide will also contain enough information to allow you to drop the setting into a tabletop RPG and create your own adventures in the SKALD universe!

Image result for ad&d 2 edition manuals
A page from the Monster Manual 2 for 1. edition AD&D . I want this!

As for the map, it will be hand-drawn and colored and available either as a digital file, a paper print or an exclusive cloth map depending on the reward tier.

Physical Rewards

There’s no doubt about it: Backers LOVE feelies! The printed manuals, cloth maps and trinkets that came in gorgeous boxes are a big part of the experience for a lot of players!

Image result for Ultima feelies
The feelies from Ultima IV.

At higher reward tiers (Approx. $55 and up) the Kickstarter will feature printed versions of the manual, campaign guide and map (paper and cloth prints). If all goes according to plan, I’ll even throw in an exclusive collectible “big-box” edition with extra feelies for hard-core backers.


That’s it for now (it’s back to work for me). Be sure to subscribe to this blog and follow on Twitter to stay posted!

See you on Kickstarter June 3rd!


The Shores of Idra

With the Kickstarter in June fast approaching it’s time for another update! As always I wish I had more time to spend on this devlog. Time however, is currently my most precious asset on this project. What time I have is still being put into actual development and I think that’s a good idea.

The animation-system really makes the world pop!

So far everything is on track for Kickstarter in June. There is still a lot of work to be done to get the campaign ready but work is progressing at a steady pace.

During Easter-crunch I spent a lot of time repaying technical debt as I plugged memory leaks and optimized the draw pipeline. The payoff is that the game now consistently runs at 60 FPS+ and has a much smaller memory footprint with no leakage. Oh, and I also added animation for characters and the environment!

Another big reason I keep making steady progress is that I’ve had the opportunity to work with some more amazing freelance artists for music and some of the graphics. The result is some pretty cool assets I can’t wait to feature in the game:

The theme for the demo by @surt_r

It’s incredibly fun and rewarding to work with people that go the extra mile to help realize your vision.

“Your debt is due” A trio of bandits by @MementoMoree

Finally I really want to shout out the “Nox Archaist” project by 6502 Workshop. This little gem of an indie-game is currently on Kickstarter where it has had amazing success so far! As a modern 8-bit game for the Apple 2, this game is a love-letter to all the games that inspired SKALD!

I can’t wait to sink my teeth into this!

The project looks really solid with a large chunk of the game being complete already. More importantly, Mark and the other members of 6502 Workshop seem like great people who deserves all the support the retro-gaming family has to offer.

I support and endorse “Nox Archaist” 100% and so should you!


That’s it for now! Be sure to follow this blog and look me up at twitter if you want to keep posted!

See you on Kickstarter in June!

Let slip the dogs of war

Beware, beware the horrid sleep,
That bring you dreams of ebb and flow,
The churning seas and dreadful deep,
And waves that lay the mountains low
.

But fear the mother most of all!
Awake before you hear her bell!
A thousand young will hear her call,
And that was how the giants fell.

(Children’s rhyme from Idra)


A splash screen by Marco Pedrana (Aeon of Sands)

Easter is fast approaching. For me this means 10 days of crunching to make “SKALD: Against the Black Priory” ready for Kickstarter! First and foremost this time will be spent preparing a short, playable “proof-of-concept” demo.

In general, I would say spending time making a demo is not a good use of resources. However, at the time there appears to be a slight crisis of confidence towards Kickstarting projects and a demo might go some way towards showing backers that SKALD is legit.

SKALD is a passion project and I love working on it. For me, publishing a less that awesome product is out of the question. At the same time, NOT publishing is also not an option! This means that I need to be highly disciplined in avoiding feature- and scope creep. Both in the game itself and in the Kickstarter campaign.

The latest iteration of the GUI. With a slight “retro” filter applied.

My primary goal is to have the Kickstarter make me break even with expenses and allow me to commission a handful of freelancers for a couple of tasks (music comes to mind).

A big upside with developing an RPG is that it’s pretty easy to scale the project up if I get more funding than expected: More professional art, more music, larger dungeons, more dialog and so forth.

For rewards I’m tending towards caution. I would love to use feelies for rewards: Maps, booklets, dice – you name it! However this would scale the complexity, and thus the risk, exponentially. SKALD is pretty much a one-man project and any task that takes me away from actually writing code delays the release of the game.

Most likely, the rewards will include access to the demo, the finished game and beta access, as well as in-game rewards (a thank you note, your portrait in the game etc). I’m currently setting up a discord server for backers.

SKALD will release for windows on Steam first. Other platforms will follow in short order.


SKALD lives and dies by the love and support of it’s fans! If you want to help out the two most important things you can do are to subscribe to this blog and follow SKALD on twitter! Don’t be afraid to reach out for questions or comments – I love talking about my project 🙂

Have a great day!

Introducing SKALD: Against the Black Priory

You awaken to the sound of seagulls. Their crying reminds you of your childhood. Have you gone to your ancestors?

The last thing you remember is chaos and the sea swallowing your vessel. Freezing water and then darkness. How could you possibly have survived?

Legs shaking, you stand up and survey the shores upon which you have landed. There is no mistaking it: Idra. By some miracle, the Emperor has delivered you to this cold, forsaken island. Now, you must find the strength to do his work!

A sickness has taken hold here: Carroleth. Carroleth the heretic! Master of the Black Priory. That foul order of enlightened men, which has strayed so far from orthodoxy. It is to them that you must deliver the Emperors justice – by steel and by fire!

You shudder in the cold breeze.

It feels as though the very land sets itself against you. You will find few allies on Idra and even less hope. Pray your sanity holds…


Hi everbody! It’s time for another update on the SKALD engine and the upcoming title: “Against the Black Priory” (AtBP)!

AtBP sees you in the role of an imperial agent dispatched to the island of Idra to uproot a mystical religious order, turned apocalyptic cult. The expedition is off to a disastrous start however, and surviving Idra will take all your wits and skill.

For AtBP I have chosen to go with a strong retro look and feel. The game draws heavily on inspiration from classic “Golden Age” RPGs like the early Ultima games, the Gold Box Series and the Magic Candle series. In other words: Games we love!  

The game will (hopefully) feature a good mix of each of the four basic RPG pillars:

  1. Explore the enviroments and plot – overland, underground and on the high seas!
  2. Interact via dialogue and “choose-your-own-adventure” style sequences
  3. Fight using a menu-based, fast-paced, tactical combat system.
  4. Develop your party of up to 6 characters.

Visually, I have chosen to work with 16 colors on AtBP. To get the proper retro-feel, I went with the classic C64 color palette:

The basic tile size is 16 x 16 and, for the desktop version, the game runs at 640 x 480 resolution. Note that the SKALD engine is built in Unity3D and is flexible enough to handle any number of graphical settings. However, working within some self-imposed constraints has really helped focus the design of AtBP.

Thematically, the SKALD universe is dark, grounded and unforgiving and I really want AtBP to dip its toes into the cold and dark waters of eldritch horror. I try to stay clear of binary good/bad characters and enjoy writing difficult choices that have real (often painful) consequences.

The Current State

At the time of writing, the SKALD game-engine (and thus AtBP) is 90% feature-complete. There are a couple of important systems that still need implementing as well as a bunch a smaller “nice-to-have” systems I would like to have down the line (but that can wait for now).

The big task ahead however, is adding content. This means designing, writing and drawing stuff. The flexibility of the SKALD engine and its tools makes adding new content a breeze. However, actually creating stuff will take time nonetheless. Fortunately, this is also a lot of fun and it will allow me to start engaging more and more with the community as the focus shifts more from the technical development to actually crafting a roleplaying experience.

The SKALD engine can publish to any platform that Unity supports. AtBP will release first on Steam. Mobile will follow.

The Road Ahead

It’s no secret that SKALD and AtBP is a one-man project that, whilst immensely enjoyable, is taking up a lot of my spare time. Now there are also expenses on the horizon in the form of software licenses, new hardware and, potentially, freelance content-creators (for some of the art and music). This means that I need to find funding somewhere.

After a lot of consideration, it’s starting to look like Kickstarter might be a good way to getting some funding whilst building a stronger community around the game. If everything goes according to plan, May 2019 might be a good time for a Kickstarter campaing (but more on that down the line).


For now, if you want to support SKALD: “Against the Black Priory” the two most important things you can do are to subscribe to our newsletter and follow us on twitter! Don’t be afraid to reach out for questions or comments!

Have a great day!

The SKALD Markup Language

The Basics

SKALD is a game engine specifically written for digital gamebooks and interactive novels. The design vision for SKALD has been to create an engine that allows for a strong narrative to be built upon a foundation of classic RPG features (character development, tactical combat, loot etc.) as well as certain rouge-like features (procedural generation). The game engine is designed with a strong separation between data and logic in mind. The reasoning being that it must be possible for a designer with minimal technical expertise to add content. Also keeping all data separate from the logic will allow multiple gamebooks to be published using SKALD without making changes to the engine itself.

A mage
The mark-up language is where the magic happens

The SKALD markup language has three main components:

  • The XML that encases all the data
  • A simple string markup used to create procedural content and to set the order of resolution for any embedded dynamic code.
  • The formatting for embedding dynamic code.

The XML

SKALD uses ordinary XML to store data about all its game objects (scenes, items, NPCs). I briefly considered using JSON. However, after doing some research I arrived at the conclusion that the advantages of using JSON over XML were nil for this application. JSON would perhaps have been more relevant if I had a stronger emphasis on developing for a web-based service (as JavaScript loves JSON).

XML

 

The String Markup

All the data in the XML files are parsed to strings. Those strings are then run through a processString() function that performs any action prescribed by the string markup, resolves any embedded code and returns a copy of the processed string.

One of the first things I found that I wanted was a short-hand for returning random strings from the XML. My solution was simply to use the ‘/’ character. Adding ‘/’ to any string will cause the processString() function to return the result on either the left or right side of the ‘/’. For example:

processString(“I like hamburgers/I like sushi/I like ramen”)

returns either “I like hamburgers”, “I like ramen” or “I like sushi”.

Right of the bat you can see that this can get verbose. The solution was to add parenthesis. Now the previous string can be shortened like so:

processString(“I like (hamburgers/sushi/ramen)”).

By nesting parenthesis (resolves from inner, to outer) you can make complex string such as:

processString(“I like ((cheese-burgers/bacon-burgers/BBQburgers)/sushi/ramen)”)

The applications for this is to create variety in the text (especially for scenes that the player keeps returning to) or to provide randomized output from certain XML tags.

For instance, each scene has one or more exits that lead to the next scene. That exit contains a tag called <tar> (target) which is basically the id of the next scene to load. Since the value of <tar> is stored as a string and ran through the processString() function, you can write an exit with a target like this:

<tar>2/3/4</tar>

The result is an exit that randomly sends you to scene 2, 3 or 4. Pretty neat for making things like random encounters.

Dynamic Code

So far, the system is completely stateless. Processing the string

processString(“I like (hamburgers/sushi/ramen)”)

will return a random output every time. The next logical step was to add a system for storing and modifying variables at run-time. The solution is for implemented by using “Reflection” in C# to access functions in the code via strings passed from the XML. For instance I have a function addVariable(key, value) that creates a variable (named key) and sets it to value. So

addVariable(“food”,”hamburgers”)

will set the variable “food” to “hamburgers” and

getVariable(“food”)

now returns “hamburgers”. Using my own notation to embed functions in the xml datafiles the functions must be wrapped in curly braces like this:

{addVariable|food;hamburgers}

It is now possible to write:

processString(“I like {addVariable|food;(hamburgers/sushi/ramen)}”)

This line of code will return for instance, “I like sushi”. And then

processString(“My favorite food is still {getVariable|food}”)

Will utilize the value stored above and return “My favorite food is still sushi”. Note that the “processString” function will substitute everything wrapped in curly brackets for the return value of the function wrapped in the curly brackets. 

The SKALD system contains about a dozen functions that can be called dynamically. In large part these are used to manipulate and perform logical operations on variables (allowing for conditional branching etc.). The result is that the number of scenes that need to be written can be reduced drastically. It also allows procedural content to be added by the designer, working only through the XML file.

Overall, I’m pleased with the functionality of the SKALD markup language, as it exists today. It’s expressive enough tell any kind of story and to give a direct binding between the story elements and the underlying RPG mechanics. It also supports the concept of separating data and logic and it greatly reduces duplication of data by cutting down on the number of scenes that need to be written. At the same time, it’s still possible to write an entire module by using only XML and entirely forgoing the use of the string markup and dynamic.

Now, off to write some adventures!

Design Goals for the SKALD Engine

The SKALD Roleplaying System consists of three components:

  • A set of RPG rules usable for pen-and-paper as well computer RPGs.
  • A game engine for making gamebooks, interactive fiction and text-heavy roleplaying games.
  • The games published using the SKALD engine.

The current focus of the project is to finish the game engine. This post will attempt to summarize the design goals for the engine. For more information about the project in general, see the welcome post.

NOTE: I’m writing this post as much for myself as anyone else. As such, this post will be highly prone to edits as i update and change the design goals.

SKALD is a Storytelling Tool

First and foremost, I want to create something that will allow me to tell stories. I was a pen-and-paper RPG game master for years but as I grew older, holding together a gaming group became near impossible. I began to miss the creative outlet that GMing represented. This was been a big driving force in deciding to develop a game engine for text based roleplaying games and gamebooks.

Specifically, I chose text-heavy games because I feel comfortable with using text as a narrative device. Text is easy to add (if you don’t consider the hardships of writing prose) and very flexible. Flexibility was another important point as it gives me the option of choosing between an infinite variety of settings: From sci-fi and fantasy to historical and educational. This was an important rational for beginning this project by creating a setting-agnostic game engine.

SKALD is a roleplaying game

In addition to creating a system for writing choose-your-own-adventure style gamebooks I also want SKALD to be rooted in a proper RPG system. At a minimum the SKALD game engine must allow for the following game mechanics:

  • a character creation and advancement system complete with skills and feats
  • skill checks
  • tactical combat (in one way or another)
  • looting, buying and selling items
  • magic and / or psionics

An important part of implementing the RPG features is that the system must be modular enough that it should be fully possible to choose away any and all parts of the RPG system at the design level and without changing the source code. In other words: Using the same game engine, it must be possible to make a vanilla gamebook with no features beyond one paragraph leading to the next, as well as gamebooks with full RPG game mechanics.

SKALD has rogue-like features

In addition to the rpg game-mechanics it’s also important for me that the SKALD game engine allows for certain rogue-like features. In particular I want to have the ability to add procedurally generated content to the game. This, combined with an underlying RPG system will make it possible to essentially write a text based rogue-like. At the same time, just as with the RPG system, it must be fully possible to write a gamebook without using a single rogue-like feature.

Why add rogue-like features? Well, my reasoning thus far is that this will make it a lot easier to add to the runtime of the game. I have a vision of the narrative of the gamebooks being superimposed on relatively open worlds and thus adding a lot more replay value to the game beyond just going through the main plot over and over.

Again: This is an optional feature I’ll add to give myself the full breadth tools to tell the kinds of stories I would like.

Engineered with Sustainability in Mind

Not only is SKALD a labor of love, but it will also serve as a tool I could potentially be relying on for years to come. In the long term, it might even be adopted by other game developers interested in working within the gamebook genre.

As with all code that sees long-term use, there’s a lot to be gained by “measuring twice and cutting once“. In other words I intend to take my time and keep the source code architecturally sound, compact and well documented.

The notion of strictly separating the logic from the data and making all aspects of the game itself modifiable via the data is the prime tenet I’m currently building the engine around.

SKALD as a Brand

Lastly, it would be pretty neat if the SKALD system and the game engine in particular becomes a recognizable brand. It would be awesome to see “Powered by the SKALD engine” and “SKALD Roleplaying System presents:”  on games!

 

That’s it so far. Thanks for reading and be sure to keep following the SKALD devlog! In the meantime, follow Scape-IT and SKALD on Twitter for all things RPG!