July 16th, 2016


#1

Sign Generation

Over on this thread we were discussing names for Taverns, Armouries, etc. I took all the suggestions and built a procedural sign generator. It has a bunch of templates and words and can generate Merchant, Armoury, Tavern and Miscellaneous signs like “The Prancing Leech”, “The Six Axes”, “Honey and Wyrm”, etc.

The system is really simple, it just chooses between different patterns. For instance, 3 possible patterns for the tavern might look like this:

# TYPE1 -----> THE <COLOUR> <CREATURE> # TYPE2 -----> THE <CREATURE_ADJ> <CREATURE> # TYPE3 -----> THE <CREATURE> and <CREATURE>

When generating a name, the system then chooses one of TYPE 1, 2, or 3 at random. It then replaces each of the <BRACKETED> terms with a random entry chosen from a list. It’s more-or-less a context-free grammar-based generator. The tavern generator has about 20 of these kinds of patterns.

As I build the system I start generating names to get a feel for it and I keep adding rules and exceptions until I get a reasonable variety of decent sounding names. Then comes the matter of getting the signs into the game itself. I could either (a) convert the generator code into c++, (b) embed python into the engine (blehk!), or © just generate a huge list of names and then include those directly in the game. For now I went with © - so while the signs were technically procedurally-generated, they aren’t dynamically generated. Instead there are just huge lists (1000 signs per type) which the game pulls from.

Here is an example run of the generator:

Merchant

  • The Big Sponge
  • The Iron Torch
  • The Cork, Stick and Cork
  • The Gray Belt
  • The Toy and Arrow Store
  • The Conspicuous Rock
  • The Happy Fan
  • The Open Chasm
  • Glorious Store
  • The Snow Bag Shop
  • Eternal Well
  • The Cheap Thread
  • The Smelly Thimble
  • Snow Sponge
  • Curious Lamp
  • The Chocolate Thimble
  • The Rope’s Handle
  • The Cheap Cat Packet
  • The Coral Toy
  • The Mirror’s Lump

Blacksmith

  • Longswordsmith
  • Noggin and Cuirass
  • The Bulwark and Daggerplace
  • Silver Dustpan
  • The Dull Noggin
  • Barricadeplace
  • Ten Pickaxes
  • The Seven Tridents
  • Battleaxe and Scythe
  • The Iron Raiment
  • The Green Shovel
  • Seven Feathers
  • The Cloak and Longsword
  • Pale Pickaxe Anvil
  • The Enchanted Robe House
  • The Pale Sword
  • The Halberdhouse
  • The Perfect Stinghouse
  • The Mirror and Poker
  • Violet Sword

Tavern

  • The Gray Lobster Pub
  • The Long House
  • Magical Cave
  • Lizard and Brute
  • The Dark Place
  • The Lizard and Bloat
  • The Place Where You Get Drunk
  • The Pale Wyrm
  • The Hungry Tesseract
  • Pale Leech
  • Maverick Pit
  • The Musty Nook
  • Flamboyant Vole Brewery
  • The Chocolate Limpet
  • Golden Tesseract
  • Coral Rabbit
  • The Glass Mudcrab
  • The Lonely Cockatrice
  • The Librarian’s Nose
  • The Hound and Squirrel

Miscellaneous Signage

  • Jump Over Spare Notion
  • Give Way to the Long Nook
  • Don’t Touch the Holes
  • Loots Here!
  • Jump Over the House
  • Embrace the Pier
  • Avoid the Rabbit
  • Give Way to Awful Duty
  • Observe Unreal Cuteness
  • Cook Cave
  • Observe Lousy Style
  • Give Way to Alarming Causality
  • Cook Extreme Utility
  • Jump Over Enormous Belief
  • Don’t Touch Harrowing Brute
  • Embrace the Place
  • Embrace Keen Injustice
  • Embrace Inferior Logic
  • Live for Liberal Infallibility
  • Jump Over Bloat

And here I am testing some of the signs in the game:

And now for my favourite generated tavern name…


July 10th, 2016: Tavern names wanted!
#2

I half want the “Eternal Yam” to be a food in the game. In all seriousness, nice job. I love easy-to-edit code, so I might toy around with the sign generator if I get my hands on it. Kinda like adding silly names to Besiege soldiers.


#3

Good news, eternal yam will be in there :wink:


#4

Cursed item, no matter how many times you eat it, it is still in your inventory… it is eternal!


#5

I wonder if there’s a way to balance an eternal yam, an infinite food/health item is pretty powerful!


#6

Maybe you get the status “stuffed full” so you are slowed, while you digest.

I was just thinking about a cursed sword that you can’t unequip. If you tried to throw it away it would boomerang back, then I thought that would be awesome for combat.


#7

hmm yeah that could work. if you eat too much…


#8

oh alex just suggested that you can plant the yam and it grows more yams


#9

If you keep them too long the spoil…
But there is a small chance that your yam will be a eternal yam (doesn’t spoil)


#10

Try eating nothing but yam forever, and you’ll get sick of it! So, you could do some sort of ever decreasing effect in combination with an ever increasing reuse timer?

Also, still think the "The and " signs should be "The & " for style. :stuck_out_tongue:


#11

Diminishing returns, I like it! :laughing:

Poor Carl surcomb to yam poisoning… maybe they stop healing and become toxic?


#12

Oh yeh this is so obvious now that I see it!

Otherwise known as Zeno’s Yam.


#13

Perhaps have every day you don’t eat it, it reverts one step, so if you eat it sparingly it retains its consistant power?

Not sure what happened to my second sentence, though; that was “The [thing] and [thing]” then “The [thing] & [thing]”, but I used greater-than/less-than bracketting.


#14

But games only last 30 minutes… :stuck_out_tongue:


#15

Yeah, could work! Not sure I have a symbol for & in my tiny font though


#16

In-game day, you goof! :stuck_out_tongue: Or whatever you think would be appropriate for a time period to undo a stack of “Sick of Yams” debuff. :stuck_out_tongue:

Wouldn’t be that hard to design an ampersand, would it? If it’s too much work, forget it. I’m just thinking sign stylistics- it doesn’t make any difference to the gameplay at all.


#17

Ampersand would end up taller than the others in his font because its minimalist scale requires it to be bigger to have that much detail.


#18

This is a one-pixel-line ampersand. It’s recognizable as such. Stylizing it further to match his font shouldn’t be too difficult. (Feel free to use it either directly or as a base to modify from, if you want, Ben).