|
|
[[!meta title="How I play TTRPGs in Emacs"]]
[[!meta copyright="Copyright © 2023 Howard Abrams"]]
[[!inline pages="internal(2023/info/solo-nav)" raw="yes"]]
<!-- Initially generated with emacsconf-publish-talk-page and then left alone for manual editing -->
<!-- You can manually edit this file to update the abstract, add links, etc. --->
# How I play TTRPGs in Emacs
Howard Abrams - Website: <https://www.howardism.org> - Mastodon: @howard@emacs.ch, <mailto:howard@howardabrams.com>
[[!inline pages="internal(2023/info/solo-before)" raw="yes"]]
- Ironsworn Emacs project code: <https://gitlab.com/howardabrams/emacs-ironsworn>
- Note that this code depends on my earlier project: <https://gitlab.com/howardabrams/emacs-rpgdm>
- The alpha version of a RPG Toolkit code: <https://codeberg.org/howardabrams/emacs-rpgtk>
As an eternal Dungeon Master, I have a long history of collecting my notes
in Emacs. When my son was very young, I would export my Org files to
an HTML page that would include some magic JavaScript, so that when
displayed on my iPad, I could touch a table to have it randomly return a
line, or touch a phrase like `3d6+1`, to have the web page return a dice
roll.
Lately I’ve been getting into Solo versions of tabletop role playing games
(TTRPG), and have had a fun time writing Lisp to support this style of
play, and thought I’d share my code and my fun.
I’d like to begin by showing my game play in action: I’m currently playing
Ironsworn with the Mythic GM Emulator and various other tables and
procedures to stike a balance between *playing a game* and *writing a
book*. Next I would like to show the code that supports the interface, and
perhaps dive a bit deeper into some of the underlying mechanisms and
functions, especially that function that randomly chooses entries from Org
tables. I’ll end with a plan for turning my code into a community project,
if people are interested.
Format (10 minutes, 20 minutes, description of other format) and outline:
20 minutes, but I could do less if you have too many submissions.
About the speaker:
Howard often gives technical, work-related talks at EmacsConf, but here he
is talking about playing games in Emacs.
# Discussion
## Questions and answers
- Q: Where can I get this?
- A: <https://gitlab.com/howardabrams/emacs-ironsworn>
- Q: How well would this suppliment freefoxm writing. short novels or
novels?
- A: I think it would be a good start. It is just an org file, so
you can go as far as you'd like with the writing.
- Q: Does the current version also have some utilities for doing
multiplayer? (either physically or digitally) (since you mentioned,
you previously did multiplayer sessions as well..)
- A: Nope, it is just Solo, but that does sound like a fun idea.
- Q: This game + CRDT (collabrative editing
<https://github.com/emacs-straight/crdt.git>) should be great for
non-solo playing?
- A: Perhaps, I'd like to try it out.
- Q: How does one become super awesome like Howard Abrams??
- A: "There's no secrets! Just follow your passions!"
- Seriously inspiring.
- Q: Please talk a little about how you produced such a slick
presentation video! Everything looked completely professional!
- A: <https://emacs.ch/@howard/111506614571155011> "My son helped
me record my presentation for #emacsconf and we were able to
achieve an over-the-top show that will evoke the feels ... from
snickers to eyerolls."
- Q: Does table data allow for recursion? I have a table that when I
roll on it, a result comes up that references another table (e.g.
result that returns "There are [random monster] haunting the
cavern entrance" and we'd roll on [random monster] and inject
them into the result.)
- A: Yes.
- Q: With your toolkit a list of good books would be nice to be
included. example d&d, space, steampunk, cyberpunk settings
- Q: Hi Howard and Thanks for an outstanding presentation!!! What did
you use to create the graphics in your presentation?
- A: I don't really know. I will have to ask my son, as he did
the editing and directing.
- Q: Any plans to borrow tables from Dungeon World, or
Ironsworn:Starforged and publish in the toolkit repository?
(<https://github.com/lifelike/Dungeon-World-Org-Mode>)
- A: That does sound like fun.
- Q: How has this impacted your imagination on the scenes? (e.g.
constraints by algorithms)
- A: Yes, writing creatively can be very helpful in many other
aspects of your life.
- Q: Your essay/video "Literate DevOps" I consider a classic, and
it's really opened my eyes on org-babel and what you could do. Do
you still use those techniques at work? Have you come up with any
improvements or changes to your workflow?
- Yup. Still do.
## Notes
- Ironsworn Emacs project code:
<https://gitlab.com/howardabrams/emacs-ironsworn>
- Note that this code depends on my earlier project:
<https://gitlab.com/howardabrams/emacs-rpgdm>
- The alpha version of a RPG Toolkit code:
<https://codeberg.org/howardabrams/emacs-rpgtk>
- Really cool project! - Also the enthusiasm for the topic is really
contagious!
- "Every time Howard publishes a talk, I end up doing one more thing
in a new radical or literate way inside Emacs - currently looking
into how to go about literate snow shoveling for the winter ahead."
- I can see this one is going to be a classic
- the camera and lighting already has me sold
- Such a vibe!
- can I just (require 'howardism) and be done with it all?
- i love this so hard
- "Howard's talk is published on the site now" "I'll be in my bunk"
- Holy CRAP Howardism WINNING EmacsConf2023
- Could we add this to emacs beside dunnet?
- Howard's stuff is always great. this particular thing is totally unchained. :D
- "Howard approaches your table in the tavern. Do you (1) buy him a tanker of mead (2) kill him and eat his brain"
- "Not showing-off," he said.
- That was epic
- Happy Hacking!
- What's the emoji for a crowd picking Howard up on our shoulders and carrying him around
- there's a peaceful aspect of having non web based stuff to play
- Non-web, and not-networked!
- the web is horrible. lisp machines are the future.
- Imagine playing D&D with colab (from the previous talk)!
[[!inline pages="internal(2023/info/solo-after)" raw="yes"]]
[[!inline pages="internal(2023/info/solo-nav)" raw="yes"]]
|