Navy Boards

Navy Boards

Developing Narrative
Experiences for
Amazon Alexa

© 2020

todo todo - Adventures In Developing For Alexa

Last Update 17/07/2020

So here’s the list of thing I feel I’ve left hanging in the project, or remain to be explored next. I’m not sure what happens with this site going forward, but I’ll be continuing to develop for Alexa. More happening, not less.

Skill Flow Builder / Warlock of Firetop Mountain

Putting the prototype together for this was a lot of fun. I’d love to come back to using the SFB for a roleplaying type experience with a very minimal set of rules behind it. The audio tools are ace, and it’s possible to put things together very quickly. An evocative experience with atmosphere audio courtesy of FMOD would be fun. Especially with custom-developed extensions and Discord integration for things like inventory & stat management.


Getting eyeballs on skills remains very much an unknown. Paths for user acquisition, and ideal marketing content, is something I need to look at in earnest as part of planning the next quarter.

Lambda function and layer versioning strategies

I’m sure the approach to this will evolve with needs, but it’d be good to sit and think about how to get the most facility out of versioning strategies for both, particularly looking at supporting live skills & ongoing development of new functionality.

Mixins for Python

I’ve never used Mixins (there’s a lot of Python 3 that is new to me) and there’s likely a lot of power here.

How to change code behaviour automatically between dev & production

Particularly logging verbosity, but also disabling development testing tools implemented as part of intent logic.

Alexa icon recommendations

This is one for the near future - what are the recommended approaches around icon design?

Synonyms and resolution

I’ve seen this pop up a few times as a way of resolving ambiguity with precision, but haven’t sat down and looked at exactly how synonyms can be resolved back to their primary value. Tied up in this is also Alexa’s provision of multiple possible answers for a slot resolution, with confidence values for each possible resolution.

Catalogs and management for slots

This will be a big one going forward. For say, a space skill, a catalog containing all possible faction names, or planet names. Anything where there’s weird, non-standard word that needs to be said. With the Bounty Hunter prototype, the word ‘corvette’ presented enough of a challenge.

Best way to get sample requests

I’ve been using the Alexa Simulator to grab sample requests for intents by hand, but there has to be a better way than that. Possibly a matter of sitting down and really understanding the request JSON, so I can just build it by hand/script.

Using Dialog.Delegate to populate data for complex requests

I’d mostly ignored this due to thinking that delegation could only be done with text-to-speech, but it is possible to have delegation managed by intent requests. This is a HUGE part of a good user experience.

The book ‘The English Language’

I didn’t get time to read through this during the project, but I’ll be sitting down with it over the next quarter. It feels like there’s a LOT of potential in managing skills as real conversations, and that means a deft understanding of the language. (let’s ignore internationalisation issues here)

Emotional simulation based on word choices and phrasing

Tying into the last point, trying to read into the user’s emotional state or tone by word choice and phrasing, particularly for character interaction.

‘Aging’ responses and understanding repeated requests

I talked about this a bit during the Point and Click prototype, but didn’t get a chance to play with it in earnest. The idea of having a memory of recent utterances, and showing life by understanding when something is repeated.

Looking at game opening expositions

Circling back to games like Dead Space, Last of Us and Alien Isolation to look at how they teach the player about their setting and tone. How they manage exposition, and communicate their world.

Extending python-statemachine with a dictionary of flags

Looking at ways to eloquently manage a number of flags as part of game state, or a collection of individual state machines. Particularly looking at “point and click” style adventure games.

Error handling - showing a good experience

I’d love to come back to this and put together a robust example of handling errors and providing a solid user experience (ideally in-world)

Alexa Presentation Language

APL is something I’ve not even looked at as part of this project, focusing instead on narrative & audio.

Dynamic sound design with individual “components” of a sound

This came up during the mixing consults - the idea that individual sound effects consist of a series of stages, and to create variety, those stages can be teased apart and varied individually. (for example, for a fireball, the incantation, the fireball soaring towards its target, the explosion, then collapse)

Serialization of objects

Having to write boilerplate code for every object is a pain - a generic Python solution for recursing through objects to create JSON representations might be optimistic, but it’d be ideal.

Enhancing recording spreadsheet template

I’d like to expand this with macros to make adding individual entries much easier - reduce the amount of manual entry. I’d also love to circle back on the idea of flagging lines based on the number of words, to identify potentially flabby dialogue.