A downloadable game for Windows, macOS, and Linux

Buy Now$5.00 USD or more

To whom it may concern;

Sternly Worded Adventures is a roguelite word puzzle RPG inspired by Bookworm Adventures where you travel through a forested peninsula with Yorkshire-sounding place names fighting monsters with the power of words to uncover whatever dark secrets may be lurking beyond.

Play over 8 different classes, fight over 15 different enemies, unlock over 180 items, and spell words with over 25 different letters!

Join us on Discord!

What's available in the demo?

In the demo you play as the adventurer class, which is the only class unlocked from the start regardless of version, and you can unlock but not use most of the other classes. You can play any adventure node up to and including level 3. Visiting a level 4 node triggers an event that ends the demo. You have access to every item the adventurer could normally access except for one, which is restricted because it can trigger the afore mentioned event early, and you can access both of the minigames, wordle and minesweeper, and challenge mode, without limit.

You can directly continue your save file from the demo in the full version.

Wishlist Sternly Worded Adventures on Steam!

Steam keys will be redeemable to itch owners, new and old, but wishlisting still helps.

Purchase

Buy Now$5.00 USD or more

In order to download this game you must purchase it at or above the minimum price of $5 USD. You will get access to the following files:

SternlyWordedAdventuresV44.nro 104 MB
SternlyWordedAdventuresV45.love 102 MB
SternlyWordedAdventuresV45.AppImage 86 MB
SternlyWordedAdventuresV45-macos.zip 112 MB
SternlyWordedAdventuresV45-win32.zip 85 MB
SternlyWordedAdventuresV45-win64.zip 85 MB

Download demo

Download
SternlyWordedAdventuresV45Demo.AppImage 86 MB
Download
SternlyWordedAdventuresV45Demo-macos.zip 112 MB
Download
SternlyWordedAdventuresV45Demo-win32.zip 85 MB
Download
SternlyWordedAdventuresV45Demo-win64.zip 85 MB

Development log

View all posts

Comments

Log in with itch.io to leave a comment.

(+1)(-1)

How does one acquire a Steam key after purchasing?  Just 'cause I realize that there's been updates since I purchased the game and figured it's easier to transfer it over to Steam so I can keep as up to date as possible.

I've not added Steam keys for Itch to distribute to you yet; since it's not released on Steam yet they'd function just like pre-order keys so it wouldn't let you play it there anyway yet outside of the demo. IIRC the claim button would be through your non-demo download link.

Ah, okay, sorry, hadn't even checked the Steam page.  Thanks for the reply though and well done on the game.  Really impressed with the thoroughness of the dictionary, especially when it comes to assigning traits to different words.

No worries. Thanks! Feel free to report any issues or missing words you find, or anything else.

there's a snake in my boot 🥶

I was really good at spelling bee competitions so I'd decimate this game I thin

(+1)

Woah, I saw this on my little front page and went 'Hey, this looks like bookworm adventure- holy, I played that game LONG ago. Lemme check this out-'. So I did, and even seeing that its inspired by bookworm on the front page. Seeing it all laid out. It fills me with nostalgia. (And I haven't even tried the demo yet XD)

(+1)

I tried the demo and almost immediately got this:

Error

ui/objects/text.lua:31: bad argument #1 to 'setf' (string expected, got nil)

Traceback

[love "callbacks.lua"]:228: in function 'handler'

[C]: in function 'setf'

ui/objects/text.lua:31: in function 'object'

ui/lorescreen.lua:26: in function <ui/lorescreen.lua:3>

ui/modesequence.lua:12: in function <ui/modesequence.lua:1>

classselection.lua:1163: in function 'startNewGame'

classselection.lua:1174: in function 'mousereleased'

ui/elements/button.lua:96: in function <ui/elements/button.lua:87>

utils/input.lua:323: in function 'relativeMouse'

main.lua:280: in function <main.lua:280>

[love "callbacks.lua"]:154: in function <[love "callbacks.lua"]:144>

[C]: in function 'xpcall'

(+2)

Well that's problematic. Thanks. I'll get a patch out shortly. At least it's only a one time error. It's the warning I added about when the demo ends.

(-1)

I'd totally want to play this, but I don't want to pay $5.  Can there be a demo version for web browser or a demo download for free?

There already is a free download demo. Unless you're after one for a different platform?

Web demo I've tried in the past and it didn't work; the java emulator for the engine can't handle it.

(1 edit)

I'll have to look again.  I probably didn't see the free download demo lulz.

EDIT:  Found it.  I'm fucking blind XD

(1 edit)

I played the demo to the end on Steam (after reading about it on Rock, Paper, Shotgun) and really, really enjoyed it! And I want to keep playing, dammit! Now, because the full version isn't available on Steam yet (and I'd actually prefer to buy here, so you get a larger cut): Can I transfer my save from the demo (that I played on Steam) to the Itch full version somehow?

Love to hear it! In theory it should just load from the same folder. If not you can just copy paste the save files over. If you open the parallax viewer on the almanac then tell it to save it will load the save folder for that version without having to go digging for it.

Thanks for the swift reply! I'll see how it works (it's on, ahem, my work computer...) and report back.

Okay, for some reason, I was running the Steam version through Proton (I'm on Linux) which is why the save file didn't automatically transfer. But otherwise I think the Steam and Itch version save to the same folder.

Hunting down the save files from Proton is always a bit of a hassle (for me they were in ~/.steam/steam/steamapps/compatdata/2570560/pfx/drive_c/users/steamuser/AppData/Roaming/SternlyWordedAdventures) but copying them over to ~/.local/share/SternlyWordedAdventures worked just fine - and should theoretically work backwards as well, if I want to play the full version on Steam when it comes out.

For whatever reason it likes to run Proton instead of the Linux native version by default, which is definitely a choice, and based on the fact that that compatdata path includes the Steam AppID it'd load a different folder for the full game when running on Proton. (Demo is 2570560, and full version is 2562130)

Linux native version in and out of Steam and/or the demo should hit the same ~/.local/share/SternlyWordedAdventures folder regardless.

(+2)

I've just done a re-upload of V40 with a few fixes that were important enough to get out now, but not big enough to do a full hotfix for.

(2 edits)

I'm getting a consistent blue-screen crash (just the program, not the computer) whenever, as the cultist, I successfully commit murder.

Oh! Also, one of the town names contains a racial slur -- the one that refers to the Roma, starts with a G, and has no vowels other than Y. The game correctly identifies it as a slur if you use it (it's in the Profane Book) but it also showed up in a town name, G***yville, which it shouldn't.

(+1)

Do you have the text of the bluescreen? If it's not rendering correctly you can press C to copy it to clipboard.

I guess that doesn't look good, although it is a real place in Yorkshire.

I managed to get past that part on a re-play, but I'll keep an eye out and keep trying the Cultist until it happens again. Worst case scenario I can just screencap it.

Yes, I guessed that they were all real place names. Still probably worth removing that specific town from the database, though, or adding a line of code to exclude it.

(+3)

Removing it or reordering the list will affect the RNG for everywhere else, and it's an alphabetised list, so it's now Gyattsville.

It happened again and I captured it!

Error

rpg/adventure.lua:352: attempt to call field 'setAreaFlag' (a nil value)

Traceback

[love "callbacks.lua"]:228: in function 'handler'

rpg/adventure.lua:352: in function 'onTypeDeath'

rpgenemy.lua:162: in function 'onDeath'

rpgview.lua:1150: in function 'onEnd'

rpgview.lua:1374: in function 'update'

main.lua:113: in function 'update'

[love "callbacks.lua"]:162: in function <[love "callbacks.lua"]:144>

[C]: in function 'xpcall'

(+1)

This was enough to track it down and fix it, thanks.

Glad I could help!

Are you up for a co-op bundle to join?
Itch.io Roaring Summer Bundle - itch.io

I got no where else to place this bug so ig here will due (full version and latest patch (37.1)
Error
rpgenemy.lua:13: attempt to concatenate field 'state' (a nil value)

Traceback

[love "callbacks.lua"]:228: in function 'handler'

rpgenemy.lua:13: in function 'getStateData'

rpgenemy.lua:96: in function 'update'

rpgview.lua:1160: in function 'update'

main.lua:102: in function 'update'

[love "callbacks.lua"]:162: in function <[love "callbacks.lua"]:144>

[C]: in function 'xpcall'

I'm trying to work out how this could have happened unless you managed to download v37 in between me checking the analytics and seeing no downloads, and finishing uploading and publishing the amended version (that I thought I'd only privately referred to as 37.1).

Can you confirm that the issue persists on the currently available version? And if so could you describe the game state when it occurred?

The game state is right as the final person of a shrine battle dies right as the money on screen spawns and the sound is made  suddenly the game just crashes, same crash every time. I assume it could relate to sending "send" prior in the fights(which also crashes the game but I assume intentional (if not, oh no)) (also I can look at the file description and it says 37.1)

Not intentional, I'll investigate both.

I've found the source of both bugs and fixed them. I'll get a hotfix out shortly.

Nice!

I just updated today and it's doing the same thing for me. I tried different versions and several are broken, plus it's asking me to buy the game again for some reason. 

The same crash or a different one?

The button to download purchased games is at the top of the page on itch.

I had it downloaded via the itch.io launcher. It prompted for an update, so I updated. It gave me the error in the picture. So I uninstalled, then tried reinstalling each different version and none of them worked.
So I went into my purchase library and downloaded it directly and got the same error. 

Deleted 169 days ago
Deleted 169 days ago

An easy way to handle this that doesn't require waiting for me to get the fix out or edit save files, is to load the Steam demo, then quit and go back to the itch version.

It's a script that affects migrating old save data, that had a last minute addition specifically for the Steam version that shouldn't have been enabled for the Itch version.

Yo how do I cross the ocean

Other than using the capital city to regenerate the world you don't really. Have you found one of the rare seeds where there's a disconnected land mass?

Not sure where the best place is to post crashes etc. Got this one trying to fight a highwayman. Fun game. The bronze bonsai tree tiles are bit harder for my brain to process but might just be me.  

Error

ui/objects/tile.lua:198: attempt to perform arithmetic on a nil value

Traceback

[love "callbacks.lua"]:228: in function 'handler'

ui/objects/tile.lua:198: in function 'getRelativeRegularMaterial'

tileboard.lua:273: in function 'getTileLegendMaterialReplacement'

tileboard.lua:286: in function 'generateTileForRefresh'

tileboard.lua:357: in function 'fill'

tileboard.lua:504: in function 'onPlayerTurn'

rpgview.lua:854: in function <rpgview.lua:833>

rpgview.lua:1019: in function 'update'

main.lua:70: in function 'update'

[love "callbacks.lua"]:162: in function <[love "callbacks.lua"]:144>

[C]: in function 'xpcall'

Keeps crashing every few fights with the same log now :(

(1 edit)

This appears to be a conflict between the voiceless rough stone charm and the bronze bonsai. If you're able, unequip one of them until I can get a fix out.

Edit: I have a fix, I'll see if I can easily untangle it from the unfinished new update for a hotfix, or finish the update in the next day or two.

Okay, no rush I started a new game anyway. You should post the game to some Scrabble communities once you're happy with it. A lot of them would be interested. 

Lots of fun, I sunk a couple of hours right after discovering the game, at the cost of some sleep... Better to do it in spurts to have a fresh mind when going at it.

(1 edit)

Excellent fun, thank you.

[slight spolier below] 

But I'm a bit confused.  I bought the game yesterday and played through to what I thought might be the end (cleared the fiery circle location, beating all the enemies there) but then nothing happened.  No prize, no message.  Just an empty altar .   There is one change: the city now gives me the option to leave the island.  The "explore" option is still unavailable, though.  I hesitate to leave in case I've missed something.  Do I need to clear all the locations on the map?

edit:

The battles were straightforward but the statues threw me a bit: DELFS, IDIGBO, TITTLE.  Also, the statues don't reveal what the word was if you didn't get it  It was fun to try to guess them all the same.

That is the current end yes. More is planned later, but I can't say when that will be. There should be an unlock the first two times you do it though. Depart essentially takes you to a fresh world for a newgame+ on a new seed. The option is technically available the whole time, but costs 1000g if you've not done that fight. Explore is currently unimplemented.

Yeah, those can sometimes throw some super obscure words at you. If you check the stats, it'll tell you what they were on there. I should probably add a postgame screen to them.

No rush.  I've enjoyed what I played.  I look forward to seeing what you add next. 

Thanks for the quick response!

(+1)

Poison feels like it can become extremely unmanageable past level 2 or 3. Even with antidotes and potions or healing items, it feels like something that can easily end your run in an unfun way. Other than that, the game otherwise feels pretty fun to play

I've got plans to make enemies not always do the same damage each turn which should help mitigate that, but I'll make a note to take another look at spider balance.

Latest update should solve this.

I'm really enjoying the game! I just got to the second location. However, it seems like I can't rest at towns anymore - I get this error message and have to quit the game:


Error

overworldview.lua:255: attempt to index local 't' (a nil value)

Traceback

[love "callbacks.lua"]:228: in function 'handler'

overworldview.lua:255: in function 'doRest'

overworldview.lua:273: in function 'acceptfunction'

ui/confirm.lua:7: in function 'mousereleased'

ui/button.lua:197: in function <ui/button.lua:187>

utils/input.lua:53: in function 'relativeMouse'

main.lua:245: in function <main.lua:245>

[love "callbacks.lua"]:154: in function <[love "callbacks.lua"]:144>

[C]: in function 'xpcall'

Okay, I see the issue. It looks like you have the gilded leaf teabag, and it can't find any tiles to gild on resting. I'll add a fix for that.

The fix is out. Sorry it took a few days; busy weekend, and had a few other things I wanted to get done for this update.

Thank you so much! No worries, hope the weekend was a good one.

Hi, which english does the game dictionary use?

(+1)

It accepts both UK and US spellings. A few Canadian ones too.

I myself am British, but a large portion of the audience is American. Gameplay wise the British spellings are usually worth more points, just because they are usually longer.

Oooh nice!

(3 edits)

Came across a 5 letter shrine and couldn't figure out what the hell the word was. It ended up being ZIARA. ZIARA? Are you kidding me?!

I had to write a script to try and figure this one out lol, I don't even think it's in the dictionary.


Also, something will sometimes bug out the shines when switching between keyboard and mouse for hint guessing - when typing on keyboard it just doesn't register in the answer box, but then when you click a letter it will drop it into a later letter slot as if your key presses did put something in the earlier letters.

Looks like an Arabic loan word. I used wiktionary to cross reference all the entries, so they're in there with an English definition at least.

At a guess, when it's having issues you're either inputting upper-case, or some other letter-character other than basic lower-case latin script that it has no info on how to render. I'll add something to sanitise that input.

I have been enjoying the heck out of this. Trying to unlock all the classes, and see what all is out there. 

I used the AEIOU scroll and as soon as I clicked it the whole thing caused a blue screen of death. Hoping that's was just a random bug. 

(2 edits)

Thanks for the report, I've identified and fixed the problem. I'll probably drop the fix later this evening so I can get some of the new things I'm working on in the same update.

Awesome, thanks.

also, as a suggestion maybe a crafting guide that fills in once you find a combo would be great. Or some sort of hint. I can't tell why some things are highlighted and others aren't in there.

(+1)

The first one probably isn't that useful given that most crafts are permanent. I'll see if I can find a diegetic way to include some hints. though

(+1)

Almost got an entire grid of wildcards. 

Impressive.

(+1)

Hint does not work if your only vowels come in the form of wildcards (suspect the same if they are only consonants)

Hints exclude wildcards altogether, same for the insight potions and similar. I could experiment with enabling wildcards for hints since it doesn't do a full dictionary search, although for insight potions including wildcards makes the function take about a second on my hardware, rather than a few miliseconds.

There are definitely a few ways to approach this. If you want to keep it as is, just a message displayed when the hint button fails but detects 1 or more wildcards 'hint cannot use wildcards'

I don't know what sort and search method you are using for hints, but several methods come to mind to do a search that only use a fraction of the dictionary.

Also would love to talk Kickstarter/Steam/Publishing with you if you are interested in that route. You can find me on discord under the same name.

(+1)

Hints already only searched a fraction of the dictionary, and the next version uses wildcards for hints as of about 20 hours ago.

It never seemed worth specifying that it doesn't include wildcards, since if you have enough that it can't find anything outside of them, then you can probably put anything in and the wildcards will figure it out.

I've already agreed to a publishing deal with 2LeftThumbs.

Oh, congrats on the publishing!

(+1)

Also, I had no idea the other colour of tiles were worth more. You said I could hover over them, but when I hovered over the silver and gold tiles nothing came up so I had no idea.

I'll add it to the questionmark button for the to left corner of that screen that I'm working on.

(+1)

I'm not suggesting you implement this, as I have no idea what your underlying goal is around difficulty. But you could weight the generation of new tiles less towards vowels or consonants depending on how many of those are already present on the board. I too get boards full of I's very frequently.

(1 edit)

https://www.kaggle.com/datasets/rtatman/english-word-frequency is also a good reference

Word frequency is not a good statistical metric for a game where you care about letter frequency within words. If you use word frequency you end up drowning in H's and T's unless every other word you make is THE or contains TH. If you can track down a pre-V23 copy you can feel that first hand.

I is less common in shorter words than it is in longer words. Considering only words of 3-6 letters length it's around the 5th most common letter. Above that it's the most common letter by an increasing margin as the words get longer.

Making it less common on its own would make it harder to make 7+ letter words. Having the algorythm consider what's already on the board would be a possiblity, but that might inadvertedly nerf things like the Book of 4-heal.

As it currently stands for I, it's the third most common letter, which is a middle of the road compromise between short words and long words.

(1 edit)

I think you misunderstand. I'm not saying base your distribution on how often these words appear, but use that as a dictionary to run your tile improvement method against.

So instead of "The new tile rarities are based on an analysis of the in-game dictionary, weighted based on source word length with a bias curving towards 7 letter words."

It would be "The new tile rarities are based on an analysis of the most used words dictionary, weighted based on source word length with a bias curving towards 7 letter words."

edit: if you do this, delete any one or two letter words in that dictionary, there is a lot of slang and bullshit there that should be removed before running an analysis.

Also, just checking you 100% have the rights to use the dictionary you're using, because hint found a unique word that isn't in oxford or scrabble dictionaries (I googled it because I'd never heard it before). ooecia - cool word, tonnes of vowels, but not in just about any dictionary used for games. (Some dictionaries include unique words to their dictionary to test if people use it without proper authorization)

(+1)

This is an amazing game and everything, but is there something weighted towards the letter "I"? Every second or third adventure I see a board with 5 "I"s after a few fights, and every time I clear one or two, the game drops the same amount back on the board!

Being a vowel, I is more common than most, but it's not the most common letter. You're statistically more likely to see E or A.

You can see a breakdown of the odds in the V23 devlog.

(+1)

Baldurs Gate 3 take a hike!

(+1)

my fiance and I love these kinds of word games I can only hope this is a gateway drug for other roguelites for her. So thank you!

(1 edit) (+1)

Are there plans to put this on Steam? Looks like it could be a big hit.

(+1)

Yes.

(+1)

I made the mistake of asking my sister if she wanted to play a scrabble rougue lite dungeon crawler. Now she thinks this is a coop scrabble game rather then the accurate description. Could be a good spin off game though.

I've considered multiplayer, but I've not come up with an idea that's distinct enough from just streaming your game to the other person to be worth the netcode. It's admittedly not been a focus of my thoughts though.

(+1)

Having booting issue with the Win64 and Win 32 versions both with this error log:

Error

[love "boot.lua"]:276: conf.lua:35: attempt to call field 'getOS' (a nil value)

Traceback

[love "callbacks.lua"]:228: in function 'handler'

[C]: in function 'error'

[C]: in function 'xpcall'

[C]: in function 'xpcall'

Fixed.

(+1)

Fastest Patch in the west, TY

(+1)

It was my worst fears realised; a critical bug slipping through right before the game got some actual coverage.

Thank you for commenting, otherwise this could have been a total disaster.

(+1)

Is this similar to Bookworm Adventures Correct?

(+1)

Yes, it's inspired by Bookworm Adventures.

(+1)

First? First.