WEBVTT
00:00:08.559 --> 00:00:16.074
CORWIN: Okay. So I'm gonna start with my demo Emacs here.
00:00:16.074 --> 00:00:18.000
Erik, we're ready.
00:00:18.000 --> 00:00:31.840
AMIN: We are live.
00:00:31.840 --> 00:00:35.440
ERIK: Okay, so you're starting then.
00:00:35.440 --> 00:00:39.200
CORWIN: I guess I'll start right now. Here we go.
00:00:39.200 --> 00:00:43.440
So I'm a Windows user, as we talked about yesterday.
00:00:43.440 --> 00:00:47.440
I'm going to try to start Emacs for you now.
00:00:47.440 --> 00:00:49.360
I've got it pinned to this thing,
00:00:49.360 --> 00:00:52.879
but mostly what I actually do
00:00:52.879 --> 00:00:56.320
is grab a file explorer and head to my desktop
00:00:56.320 --> 00:01:00.559
where I have all sorts of Emacs.
00:01:00.559 --> 00:01:10.840
Erik, can you make sure that your VLC is muted?
00:01:10.840 --> 00:01:39.360
ERIK: Okay, give me a second, please.
00:01:39.360 --> 00:01:41.920
CORWIN: I do. Okay. All right.
00:01:41.920 --> 00:01:44.560
We should be working again now. My apologies for that.
00:01:44.560 --> 00:01:47.360
All right. Handling technical problems in real-time
00:01:47.360 --> 00:01:49.600
is what Emacs is all about.
00:01:49.600 --> 00:01:52.799
As we're coding, we're constantly making errors, and fixing them,
00:01:52.799 --> 00:01:54.880
and learning from the kinds of errors that we make,
00:01:54.880 --> 00:01:57.759
and adjusting the editor to be easier to use.
00:01:57.759 --> 00:02:02.640
So today we'll try to build on some of the ideas we introduced yesterday
00:02:02.640 --> 00:02:07.280
around how a community can help us learn Emacs faster,
00:02:07.280 --> 00:02:12.160
and how we can think broadly about the people in our team
00:02:12.160 --> 00:02:15.920
when we decide how what kind of Emacs configuration
00:02:15.920 --> 00:02:18.000
we're going to have going for our project.
00:02:18.000 --> 00:02:21.120
So I'm just going to fire up my normal Emacs config now,
00:02:21.120 --> 00:02:24.720
so that we get hopefully a nice pretty demo
00:02:24.720 --> 00:02:28.080
or at least some slides.
00:02:28.080 --> 00:02:30.720
For safety, we're going to avoid the server,
00:02:30.720 --> 00:02:33.360
because I hate it when it crashes.
00:02:33.360 --> 00:02:41.120
It's a little less stable under Windows, I think.
00:02:41.120 --> 00:02:43.200
And well, while this starts up,
00:02:43.200 --> 00:02:44.800
I'll just briefly introduce
00:02:44.800 --> 00:02:47.680
my lifelong friend Erik Elmshauser
00:02:47.680 --> 00:02:50.400
who's hanging in the wings and waiting impatiently
00:02:50.400 --> 00:02:54.400
for us to be able to start our slides.
00:02:54.400 --> 00:02:58.560
ERIK: Hello, everybody. I'm Erik.
00:02:58.560 --> 00:03:03.200
CORWIN: So you've heard plenty from me already this conference,
00:03:03.200 --> 00:03:09.120
I suppose, so I'm just going to...
00:03:09.120 --> 00:03:10.560
So Erik and I have worked things out
00:03:10.560 --> 00:03:12.400
so that he'll do most of the talking today.
00:03:12.400 --> 00:03:14.159
I'll drive us through some code parts,
00:03:14.159 --> 00:03:16.159
but the hope is that we'll just focus
00:03:16.159 --> 00:03:17.599
a little more on the game.
00:03:17.599 --> 00:03:19.360
If you have questions about the game at all,
00:03:19.360 --> 00:03:28.480
please don't hesitate to ask those as well as your Emacs questions.
00:03:28.480 --> 00:03:30.840
I think we're starting out.
00:03:30.840 --> 00:03:41.200
Welcome. Let's cut away here so we can show some faces.
00:03:41.200 --> 00:03:43.920
I lost you, Erik.
00:03:43.920 --> 00:03:45.040
ERIK: Why would you do that?
00:03:45.040 --> 00:03:48.319
CORWIN: There he is.
00:03:48.319 --> 00:03:50.000
Let's just do one more thing
00:03:50.000 --> 00:03:53.280
because that's just kind of offensive.
00:03:53.280 --> 00:03:55.439
I'm going to kill off that cute wallpaper
00:03:55.439 --> 00:03:59.360
we all were playing with yesterday,
00:03:59.360 --> 00:04:02.640
although that's not so bad anymore.
00:04:02.640 --> 00:04:04.480
Oh, that's terrible. It's got to come back.
00:04:04.480 --> 00:04:11.120
I'm sorry, everybody.
00:04:11.120 --> 00:04:16.720
Oh my dear. All right.
00:04:16.720 --> 00:04:25.040
We just opened Emacs, so I have to open my slideshow,
00:04:25.040 --> 00:04:28.479
and there we are.
00:04:28.479 --> 00:04:32.560
Okay, Erik, I think I'm about as ready as I get.
00:04:32.560 --> 00:04:35.120
ERIK: Cool. Well, let's begin here.
00:04:35.120 --> 00:04:37.840
Welcome to the dungeon, everybody.
00:04:37.840 --> 00:04:38.320
As you're aware, I'm Erik,
00:04:38.320 --> 00:04:43.040
and this is the Dungeon project that we've been working on
00:04:43.040 --> 00:04:45.120
for about a year now.
00:04:45.120 --> 00:04:52.000
The Dungeon game is based on
00:04:52.000 --> 00:04:53.360
a tradition of gaming
00:04:53.360 --> 00:04:55.520
that came out of the University of Minnesota
00:04:55.520 --> 00:04:57.520
back in the 1950s,
00:04:57.520 --> 00:05:00.320
as far as we can tell.
00:05:00.320 --> 00:05:03.360
It is a predecessor, an ancestor of
00:05:03.360 --> 00:05:05.199
most of the commercial role-playing games
00:05:05.199 --> 00:05:07.919
that you have heard of or maybe tried out
00:05:07.919 --> 00:05:11.919
from various stores and friends, what
have you.
00:05:11.919 --> 00:05:14.800
So one of the first things we want to talk about is:
00:05:14.800 --> 00:05:17.039
What is it that sets Dungeon apart?
00:05:17.039 --> 00:05:19.680
why is it... what is it about this game
00:05:19.680 --> 00:05:22.479
that makes us want to continue bringing it forward,
00:05:22.479 --> 00:05:26.479
when there are so many games already commercially available
00:05:26.479 --> 00:05:28.479
that are descended from it?
00:05:28.479 --> 00:05:34.160
Dungeon is kind of a simpler game.
00:05:34.160 --> 00:05:40.400
Like we don't do a lot of the mechanics that you think about.
00:05:40.400 --> 00:05:44.560
What is it that defines your character? Stats and skills and attributes?
00:05:44.560 --> 00:05:48.080
We just don't deal with it in Dungeon.
00:05:48.080 --> 00:05:54.720
But Dungeon... The simplicity of it allows it
00:05:54.720 --> 00:06:01.840
to be a vehicle for creativity more than just a numbers project.
00:06:01.840 --> 00:06:04.240
So that's kind of why we like it,
00:06:04.240 --> 00:06:08.533
but also it makes it a tricky problem
00:06:08.533 --> 00:06:12.567
when it comes to writing a computer game
to mimic
00:06:12.567 --> 00:06:16.400
the game that we played with paper and
dice around a table.
00:06:16.400 --> 00:06:24.000
CORWIN: So when we look at it as kind of a technology problem... Whoops...
00:06:24.000 --> 00:06:27.919
When we try to... Heyo. I'm sorry. I got ahead of us.
00:06:27.919 --> 00:06:32.160
I'll cut back.
00:06:32.160 --> 00:06:35.520
ERIK: I thought we were doing fine
00:06:35.520 --> 00:06:40.319
CORWIN: Okay, well then. I'll just... yeah. Either way.
00:06:40.319 --> 00:06:43.360
ERIK: So we've been friends since...
00:06:43.360 --> 00:06:46.479
It was our parents' idea, basically.
00:06:46.479 --> 00:06:53.120
Our parents are friends, and we learned this game from our parents.
00:06:53.120 --> 00:07:02.479
Specifically, I learned it from Corwin when I was 7 or 8.
00:07:02.479 --> 00:07:06.400
CORWIN: Yeah, that's where... that's my cue in, right?
00:07:09.599 --> 00:07:14.560
My folks and Erik's folks were were really tight.
00:07:14.560 --> 00:07:17.360
They used to run science fiction conventions together.
00:07:17.360 --> 00:07:22.400
Our play featured imaginative role-playing.
00:07:22.400 --> 00:07:28.639
Usually we would find ways to work the computers into things.
00:07:28.639 --> 00:07:35.000
I don't know. I hardly have memories that precede Erik.
00:07:35.000 --> 00:07:39.199
ERIK: Also, it turns out we're both kind of nerds.
00:07:39.199 --> 00:07:46.560
I learned to program from my mother back in the early 80s,
00:07:46.560 --> 00:07:49.039
and for as long as we've been friends,
00:07:49.039 --> 00:07:52.800
basically we've also been into playing with computers.
00:07:52.800 --> 00:07:56.720
Over the years, we've worked with many, many different systems.
00:07:56.720 --> 00:07:59.700
We've played with Ataris, Apples, and
Amigas
00:07:59.700 --> 00:08:03.567
for a long time before either of us got PC clones
00:08:03.567 --> 00:08:07.967
and Windows or DOS or Linux or any of those systems.
00:08:07.967 --> 00:08:11.360
We went through all of them, and kinda liked them.
00:08:11.360 --> 00:08:17.919
So we also always thought, like,
00:08:17.919 --> 00:08:22.639
how is it that we can use these cool computers that we're into
00:08:22.639 --> 00:08:25.967
to build this Dungeon game that we're
into?
00:08:25.967 --> 00:08:28.319
'Cause that's what you do, right?
00:08:28.319 --> 00:08:32.080
CORWIN: That's certainly what we did.
00:08:32.080 --> 00:08:35.039
So after some decades of bike-shedding
00:08:35.039 --> 00:08:39.039
where we saw really a lot of changes in the technology field,
00:08:39.039 --> 00:08:40.159
cell phones were invented,
00:08:40.159 --> 00:08:41.919
smartphones were invented...
00:08:41.919 --> 00:08:45.360
Text messaging in particular had a dramatic impact
00:08:45.360 --> 00:08:49.519
on what we thought Dungeon would have to be able to do to be more fun
00:08:49.519 --> 00:08:54.720
than scribbling in graph paper.
00:08:54.720 --> 00:08:58.480
Yeah, either way.
00:08:58.480 --> 00:09:01.519
ERIK: We've been using Linux since the mid 90s
00:09:01.519 --> 00:09:06.160
I don't remember exactly when I did my first Linux install,
00:09:06.160 --> 00:09:11.200
but I really liked it from the get-go,
00:09:11.200 --> 00:09:17.267
and I think it was shortly after I
installed it on a 486,
00:09:17.267 --> 00:09:18.900
I went over to Corwin's house
00:09:18.900 --> 00:09:23.360
and we spent a couple of months screwing around with it.
00:09:23.360 --> 00:09:28.800
CORWIN: I'll add, I remember the day that I learned about the formation of GNU.
00:09:28.800 --> 00:09:33.440
It had a life. I mean, I read lots of licenses.
00:09:33.440 --> 00:09:38.480
I think a lot of us have written our own SWAG license code
00:09:38.480 --> 00:09:42.080
and I definitely credit the formation of GNU
00:09:42.080 --> 00:09:48.640
to my being interested in thinking about that.
00:09:48.640 --> 00:09:50.720
Right. I am working the slides here. Okay.
00:09:50.720 --> 00:09:54.800
Well. So yeah, this is your turn.
00:09:54.800 --> 00:09:57.360
I already mentioned Jeff yesterday,
00:09:57.360 --> 00:10:00.399
so your turn to take it for a few slides.
00:10:00.399 --> 00:10:07.600
ERIK: Along with learning Linux, we started learning the various tools
00:10:07.600 --> 00:10:11.680
that were available through the GNU free software movement.
00:10:11.680 --> 00:10:16.560
It didn't take very long before we got into using Emacs.
00:10:16.560 --> 00:10:21.839
When we were working as software developers back in the 90s,
00:10:21.839 --> 00:10:25.200
we both were using Emacs in an office environment
00:10:25.200 --> 00:10:28.959
with some other developers.
00:10:28.959 --> 00:10:32.367
It was obviously a very powerful tool,
00:10:32.367 --> 00:10:40.560
and we have really enjoyed using it for a couple of decades since then.
00:10:40.560 --> 00:10:48.880
CORWIN: I'm not going to go on at length about my love for Emacs here.
00:10:48.880 --> 00:10:52.480
So we put together a project.
00:10:52.480 --> 00:10:54.033
Each time we rehearse this,
00:10:54.033 --> 00:10:56.320
Erik introduces it with it's my story to tell,
00:10:56.320 --> 00:10:58.000
but since our flow is already to hell
00:10:58.000 --> 00:11:00.880
and we're just having a conversation with you today,
00:11:00.880 --> 00:11:05.920
I'll just jump in and say from a project standpoint,
00:11:05.920 --> 00:11:08.160
the project owes its inception
00:11:08.160 --> 00:11:10.320
to a tremendous number of people in fandom
00:11:10.320 --> 00:11:15.680
that encouraged us to just do crazy projects.
00:11:15.680 --> 00:11:17.760
In this case, to our friends
00:11:17.760 --> 00:11:20.640
that were hanging out with us on Discord all the time
00:11:20.640 --> 00:11:22.560
while we played different games.
00:11:22.560 --> 00:11:25.200
And through that, and while I was
00:11:25.200 --> 00:11:26.640
fooling with Emacs,
00:11:26.640 --> 00:11:34.000
generally other people played games,
00:11:34.000 --> 00:11:35.519
the pieces fell into place.
00:11:35.519 --> 00:11:37.279
We were all there, so we could talk about it,
00:11:37.279 --> 00:11:39.760
and the idea got exciting again.
00:11:39.760 --> 00:11:41.920
We started going back to all the places
00:11:41.920 --> 00:11:44.160
that we had had trouble with it in the past.
00:11:44.160 --> 00:11:45.760
It really did seem to add up.
00:11:45.760 --> 00:11:48.880
We built proof of concepts to do hard stuff quickly.
00:11:48.880 --> 00:11:54.880
I guess we'll probably head into that that area now.
00:11:54.880 --> 00:11:59.300
ERIK: This slide mentions: Why build a role-playing game in Emacs?
00:11:59.300 --> 00:12:03.360
I was watching the last presentation
00:12:03.360 --> 00:12:08.167
and there was a slide about all of the
problems
00:12:08.167 --> 00:12:10.333
that Emacs poses for retro gaming,
00:12:10.333 --> 00:12:14.100
where it interrupts the game loops and
it waits for user input.
00:12:14.100 --> 00:12:17.667
That was a whole list of reasons why
00:12:17.667 --> 00:12:21.233
Emacs actually does exactly what we want in our project
00:12:21.233 --> 00:12:31.360
and why Dungeon is a natural fit for Emacs.
00:12:31.360 --> 00:12:36.480
CORWIN: Hey there. Yeah, go ahead and continue.
00:12:36.480 --> 00:12:38.639
I just got a phone call, I think from Leo,
00:12:38.639 --> 00:12:40.639
so I'm going to mute.
00:12:40.639 --> 00:12:47.279
ERIK: So what we did in the project was basically
00:12:47.279 --> 00:12:49.680
come up with our minimum play-testable candidate.
00:12:49.680 --> 00:12:50.959
We listed all of the things
00:12:50.959 --> 00:12:54.240
that we need to be able to make the project do
00:12:54.240 --> 00:12:59.519
in order to recreate the Dungeon experience that we had
00:12:59.519 --> 00:13:01.279
with paper and dice sitting around a
00:13:01.279 --> 00:13:05.600
table when we were kids
00:13:05.600 --> 00:13:09.680
and
00:13:09.680 --> 00:13:12.079
I mean we you know it took a while for
00:13:12.079 --> 00:13:13.839
us to kind of
00:13:13.839 --> 00:13:16.079
tease apart the problem in a way where
00:13:16.079 --> 00:13:18.000
we could actually list out all of the
00:13:18.000 --> 00:13:19.120
features like
00:13:19.120 --> 00:13:20.959
what are the problems we have to solve
00:13:20.959 --> 00:13:27.760
and how do we solve them
00:13:27.760 --> 00:13:30.959
so creating any free software any
00:13:30.959 --> 00:13:33.040
self-organizing free software project
00:13:33.040 --> 00:13:36.000
is is challenging to start with and
00:13:36.000 --> 00:13:37.200
we're generally
00:13:37.200 --> 00:13:38.480
people with a bunch of other
00:13:38.480 --> 00:13:40.320
responsibilities by the time we get to
00:13:40.320 --> 00:13:40.560
it
00:13:40.560 --> 00:13:44.000
so it's it's not just hey
00:13:44.000 --> 00:13:47.040
you know the general herding cats it's
00:13:47.040 --> 00:13:47.680
it's
00:13:47.680 --> 00:13:49.120
you know trying to make it a part of
00:13:49.120 --> 00:13:51.040
your life to
00:13:51.040 --> 00:13:54.399
that being kind of a
00:13:54.399 --> 00:13:57.680
you know challenging battle we we
00:13:57.680 --> 00:14:00.480
kind of aligned on some some principles
00:14:00.480 --> 00:14:02.639
that we wanted to adhere to
00:14:02.639 --> 00:14:04.079
once we started taking the project
00:14:04.079 --> 00:14:05.680
seriously
00:14:05.680 --> 00:14:09.519
like pre you know particularly
00:14:09.519 --> 00:14:12.720
recognizing gnu in specific as we focus
00:14:12.720 --> 00:14:15.199
on giving back to the community
00:14:15.199 --> 00:14:16.480
taking what we learned as pearl
00:14:16.480 --> 00:14:18.240
programmers and
00:14:18.240 --> 00:14:22.079
you know bringing that spirit forward
00:14:22.079 --> 00:14:24.320
into into our work and maybe
00:14:24.320 --> 00:14:26.399
specifically support making sure that we
00:14:26.399 --> 00:14:27.120
can
00:14:27.120 --> 00:14:30.639
you know write functions for the
00:14:30.639 --> 00:14:31.760
game
00:14:31.760 --> 00:14:35.199
in pearl if we want to
00:14:35.199 --> 00:14:38.079
and then to use the game as a vehicle to
00:14:38.079 --> 00:14:40.320
make people look beyond
00:14:40.320 --> 00:14:43.360
the
00:14:43.360 --> 00:14:46.800
typically open source or sorry typically
00:14:46.800 --> 00:14:49.600
nominally open source at best
00:14:49.600 --> 00:14:52.160
generally pretty closed world of
00:14:52.160 --> 00:14:54.160
computer gaming a lot of windows users
00:14:54.160 --> 00:14:55.440
out there a lot of free
00:14:55.440 --> 00:14:57.519
non-free communication tools and a lot
00:14:57.519 --> 00:14:59.760
of
00:14:59.760 --> 00:15:01.839
you know a lot of ground to cover from a
00:15:01.839 --> 00:15:03.360
free software perspective
00:15:03.360 --> 00:15:05.920
so what can Emacs do from a gaming
00:15:05.920 --> 00:15:07.360
standpoint to
00:15:07.360 --> 00:15:12.160
to open that up
00:15:12.160 --> 00:15:14.880
and not to mention the hubris of the you
00:15:14.880 --> 00:15:16.720
know the two of us with a few friends
00:15:16.720 --> 00:15:18.399
basically deciding to take on what
00:15:18.399 --> 00:15:19.440
amounts to a
00:15:19.440 --> 00:15:21.839
huge project you know we're
00:15:21.839 --> 00:15:24.720
essentially a year in now and we haven't
00:15:24.720 --> 00:15:27.839
really gotten over halfway to our
00:15:27.839 --> 00:15:30.000
minimum playtestable candidate
00:15:30.000 --> 00:15:32.880
it's a it's a work in progress we've
00:15:32.880 --> 00:15:34.320
got a long row to go
00:15:34.320 --> 00:15:36.800
there's at least 50 items on the things
00:15:36.800 --> 00:15:38.399
that we think are critical to
00:15:38.399 --> 00:15:40.320
to be able to introduce it to my younger
00:15:40.320 --> 00:15:44.720
kids for example
00:15:44.720 --> 00:15:48.399
okay so we're in the accomplishments
00:15:48.399 --> 00:15:49.279
section
00:15:49.279 --> 00:15:50.959
so we're supposed to be talking about
00:15:50.959 --> 00:15:52.639
the things that we have
00:15:52.639 --> 00:15:55.920
succeeded in doing in our first year
00:15:55.920 --> 00:15:58.880
we have succeeded in working with data
00:15:58.880 --> 00:16:01.199
in org documents using org mode
00:16:01.199 --> 00:16:04.480
tables to store the data that we're
00:16:04.480 --> 00:16:05.360
going to use
00:16:05.360 --> 00:16:09.279
in the various parts of our game
00:16:09.279 --> 00:16:12.519
and we've had a lot of success with
00:16:12.519 --> 00:16:14.160
SVG.el
00:16:14.160 --> 00:16:16.639
it started withdrawing maps and we
00:16:16.639 --> 00:16:17.279
have
00:16:17.279 --> 00:16:19.440
another talk about our mapping
00:16:19.440 --> 00:16:21.440
specifically coming up next so we'll
00:16:21.440 --> 00:16:23.759
put off some of that discussion for a
00:16:23.759 --> 00:16:25.199
separate talk
00:16:25.199 --> 00:16:28.720
but we've also succeeded in
00:16:28.720 --> 00:16:32.320
getting into a bunch of different
00:16:32.320 --> 00:16:35.680
elements of the game where
00:16:35.680 --> 00:16:38.160
we're you know making a lot of progress
00:16:38.160 --> 00:16:38.959
using this
00:16:38.959 --> 00:16:41.920
drawing engine we developed to also draw
00:16:41.920 --> 00:16:43.759
this other thing and also draw this
00:16:43.759 --> 00:16:45.279
other thing and also draw this other
00:16:45.279 --> 00:16:46.079
thing and it's
00:16:46.079 --> 00:16:49.519
you know we kind of backed into
00:16:49.519 --> 00:16:52.560
we've got this aesthetic and we're
00:16:52.560 --> 00:16:54.720
using it to draw interfaces for all of
00:16:54.720 --> 00:17:03.120
the different parts of the game
00:17:03.120 --> 00:17:05.600
so let's talk let's talk a little bit
00:17:05.600 --> 00:17:06.959
about what
00:17:06.959 --> 00:17:10.880
what works now
00:17:10.880 --> 00:17:13.360
first of all there's the mapping part
00:17:13.360 --> 00:17:14.640
that Erik mentioned
00:17:14.640 --> 00:17:18.480
and we'll jump here into we'll start
00:17:18.480 --> 00:17:20.880
opening up some files and looking around
00:17:20.880 --> 00:17:22.160
but then
00:17:22.160 --> 00:17:25.520
also later we'll we'll fire up an eye
00:17:25.520 --> 00:17:26.959
elm and look at some of the
00:17:26.959 --> 00:17:28.400
some of the other proofs of concept so
00:17:28.400 --> 00:17:30.240
hopefully we can
00:17:30.240 --> 00:17:32.240
pivot the second talk more toward the
00:17:32.240 --> 00:17:34.320
demos as as we skip some of the
00:17:34.320 --> 00:17:35.520
interactive stuff that might be
00:17:35.520 --> 00:17:43.200
mentioned in the slides that we go by
00:17:43.200 --> 00:17:46.880
so maps
00:17:46.880 --> 00:17:50.080
visual battle board
00:17:50.080 --> 00:17:53.120
the battle board I'm just going to I'm just
00:17:53.120 --> 00:17:54.160
going to skip it Erik
00:17:54.160 --> 00:18:02.000
we'll hit it in the next one okay
00:18:02.000 --> 00:18:08.480
hang on
00:18:08.480 --> 00:18:09.919
okay so I'm just going to go ahead and
00:18:09.919 --> 00:18:11.840
open up maps and
00:18:11.840 --> 00:18:13.760
let you talk from the from the SVG
00:18:13.760 --> 00:18:15.039
process itself
00:18:15.039 --> 00:18:16.480
because that's the interesting part to
00:18:16.480 --> 00:18:22.240
me that to me
00:18:22.240 --> 00:18:26.080
okay talk about the SVG
00:18:26.080 --> 00:18:28.640
process like what what are you thinking
00:18:28.640 --> 00:18:30.640
exactly we want to talk about how
00:18:30.640 --> 00:18:33.760
we turn our data into an image or
00:18:33.760 --> 00:18:37.919
what what are you hoping for yeah so
00:18:37.919 --> 00:18:39.760
I mean did you did you want to talk more
00:18:39.760 --> 00:18:41.200
from from the
00:18:41.200 --> 00:18:45.679
SVG the hand-drawn SVG graphics at all
00:18:45.679 --> 00:18:47.039
I thought we were going to save that
00:18:47.039 --> 00:18:49.760
stuff for the passing talk okay
00:18:49.760 --> 00:18:52.000
right now if you want yeah I mean so
00:18:52.000 --> 00:18:53.440
we've got about
00:18:53.440 --> 00:18:56.559
10 minutes before the turn where we
00:18:56.559 --> 00:18:58.400
thought we would first take any
00:18:58.400 --> 00:19:00.400
questions that are hanging out there
00:19:00.400 --> 00:19:02.320
I unfortunately closed the ether pad but
00:19:02.320 --> 00:19:04.799
I can open it again real quick
00:19:04.799 --> 00:19:08.480
and or you can jump
00:19:08.480 --> 00:19:11.440
jump into the to the pathing stuff now
00:19:11.440 --> 00:19:12.320
or I can just
00:19:12.320 --> 00:19:13.760
throw up an animal and we can start the
00:19:13.760 --> 00:19:15.440
demos so
00:19:15.440 --> 00:19:18.880
let me invite almond or sasha back in
00:19:18.880 --> 00:19:19.840
if you guys
00:19:19.840 --> 00:19:22.160
or leo if any of you want to join the
00:19:22.160 --> 00:19:22.960
conversation
00:19:22.960 --> 00:19:25.840
make a suggestion as to how we balance
00:19:25.840 --> 00:19:27.120
between the remaining time
00:19:27.120 --> 00:19:29.840
the rest of what we have left starts in
00:19:29.840 --> 00:19:32.480
on toward the technical so especially
00:19:32.480 --> 00:19:35.120
if there would be questions questions
00:19:35.120 --> 00:19:36.840
about the game right now that would be
00:19:36.840 --> 00:19:40.160
awesome
00:19:40.160 --> 00:19:48.720
and I'm going to get seated again
00:19:48.720 --> 00:19:51.200
I'm not sure if I talk over the stream
00:19:51.200 --> 00:19:53.200
if you'll hear it because I'm just
00:19:53.200 --> 00:19:54.720
watching your stream
00:19:54.720 --> 00:20:01.200
but I can try writing an irc
00:20:01.200 --> 00:20:04.640
sure yeah questions would be cool or
00:20:04.640 --> 00:20:07.360
yeah well Erik why don't you just go
00:20:07.360 --> 00:20:08.559
ahead and start walking us through the
00:20:08.559 --> 00:20:09.120
hand
00:20:09.120 --> 00:20:11.440
hand-drawn SVG stuff just a little bit
00:20:11.440 --> 00:20:12.960
because I think
00:20:12.960 --> 00:20:14.640
if that isn't interesting to people we
00:20:14.640 --> 00:20:17.120
can just preempt for a question
00:20:17.120 --> 00:20:21.120
okay so historically when we
00:20:21.120 --> 00:20:24.080
decided to actually start writing
00:20:24.080 --> 00:20:25.840
code one of the very first things we
00:20:25.840 --> 00:20:26.720
wanted to do
00:20:26.720 --> 00:20:30.080
was the maps because initially it seemed
00:20:30.080 --> 00:20:31.919
like the maps were going to be one of
00:20:31.919 --> 00:20:33.840
the biggest challenges
00:20:33.840 --> 00:20:35.760
in terms of how do we get a text editor
00:20:35.760 --> 00:20:38.000
to draw pictures for us
00:20:38.000 --> 00:20:42.159
we pretty quickly decided we wanted
00:20:42.159 --> 00:20:45.280
to work with svgs because it allowed us
00:20:45.280 --> 00:20:48.559
to leverage the power of Emacs as a text
00:20:48.559 --> 00:20:52.159
editor and a text manipulator to write
00:20:52.159 --> 00:20:56.080
text graphics with the SVG format
00:20:56.080 --> 00:20:59.520
so we did some SVG graphics by hand
00:20:59.520 --> 00:21:01.440
we went in and just started hand coding
00:21:01.440 --> 00:21:02.640
things that looked
00:21:02.640 --> 00:21:05.440
visually like the maps we used to draw
00:21:05.440 --> 00:21:07.440
by hand on graph paper when
00:21:07.440 --> 00:21:08.960
we were you know sitting around the
00:21:08.960 --> 00:21:11.360
table
00:21:11.360 --> 00:21:14.559
yep absolutely what emerged from that
00:21:14.559 --> 00:21:17.840
is as we started working on some of
00:21:17.840 --> 00:21:20.400
these files this particular image is a
00:21:20.400 --> 00:21:24.000
test of some 20 wide water
00:21:24.000 --> 00:21:26.240
with some beaches around it and a
00:21:26.240 --> 00:21:28.000
special chamber kind of off to the side
00:21:28.000 --> 00:21:29.679
called a clapper
00:21:29.679 --> 00:21:33.760
and this was the way we would code is by
00:21:33.760 --> 00:21:36.559
sketching by hand all of these things to
00:21:36.559 --> 00:21:37.600
look right
00:21:37.600 --> 00:21:39.440
and then we would take that code and we
00:21:39.440 --> 00:21:42.080
noticed it became real repetitive
00:21:42.080 --> 00:21:43.919
as we would go like chunk of water chunk
00:21:43.919 --> 00:21:45.440
of water chunk of water
00:21:45.440 --> 00:21:46.880
and we're like okay so what we really
00:21:46.880 --> 00:21:48.559
need is to define a
00:21:48.559 --> 00:21:52.000
set of we called it tiles but like
00:21:52.000 --> 00:21:53.600
you could think of it as rubber stamps
00:21:53.600 --> 00:21:55.760
where we write this graphics code
00:21:55.760 --> 00:21:57.440
and then we're able to repeat it in
00:21:57.440 --> 00:22:00.400
different places around the map
00:22:00.400 --> 00:22:03.039
you want to flip over to code view
00:22:03.039 --> 00:22:07.120
and show that or do we want to move into
00:22:07.120 --> 00:22:10.240
tiles code
00:22:10.240 --> 00:22:12.720
so you know you can see just really
00:22:12.720 --> 00:22:14.320
obviously here the only thing that's
00:22:14.320 --> 00:22:15.200
changing from
00:22:15.200 --> 00:22:18.240
chunk of water to chunk of water is the
00:22:18.240 --> 00:22:21.600
x and y coordinates
00:22:21.600 --> 00:22:24.640
we're you know we can skip getting into
00:22:24.640 --> 00:22:26.000
the SVG directives
00:22:26.000 --> 00:22:29.360
and how all of the path statements
00:22:29.360 --> 00:22:30.640
actually work
00:22:30.640 --> 00:22:33.679
but you can trust us
00:22:33.679 --> 00:22:36.480
all of these d equals and there's m's
00:22:36.480 --> 00:22:39.039
and h's and v's that turns out to be
00:22:39.039 --> 00:22:41.039
horizontal lines and vertical lines and
00:22:41.039 --> 00:22:42.480
cursor moves and it's kind of like
00:22:42.480 --> 00:22:44.159
turtle graphics if anyone
00:22:44.159 --> 00:22:46.640
remembers that far back and we're
00:22:46.640 --> 00:22:48.720
picking up our pen and dropping it and
00:22:48.720 --> 00:22:54.720
drawing lines around on our map
00:22:54.720 --> 00:22:56.240
so we do have a few questions if you
00:22:56.240 --> 00:22:58.000
want to take them now otherwise
00:22:58.000 --> 00:23:01.200
we can also jump in
00:23:01.200 --> 00:23:03.120
let's get them while they're fresh okay
00:23:03.120 --> 00:23:04.559
sounds good
00:23:04.559 --> 00:23:07.520
so we'll probably shift to question
00:23:07.520 --> 00:23:08.000
and answer
00:23:08.000 --> 00:23:10.799
mode for up to 15 minutes here so if you
00:23:10.799 --> 00:23:11.919
do have questions
00:23:11.919 --> 00:23:14.480
maybe stack rank go ahead and sort
00:23:14.480 --> 00:23:15.679
the questions
00:23:15.679 --> 00:23:17.600
a little for us or comment on them to
00:23:17.600 --> 00:23:18.960
let us know which ones you want to see
00:23:18.960 --> 00:23:19.760
us get here
00:23:19.760 --> 00:23:21.280
if we start getting a little long-winded
00:23:21.280 --> 00:23:23.600
or nudges along we'll take direction
00:23:23.600 --> 00:23:26.960
but thanks for your questions I'd
00:23:26.960 --> 00:23:28.799
like to see a demo as well we'll look at
00:23:28.799 --> 00:23:30.720
that with the remaining time after this
00:23:30.720 --> 00:23:32.159
question block
00:23:32.159 --> 00:23:35.200
more about what the game is
00:23:35.200 --> 00:23:38.720
okay sure so let's let's take our
00:23:38.720 --> 00:23:40.720
one minute each swing at what the
00:23:40.720 --> 00:23:42.799
game is you want to go first I called
00:23:42.799 --> 00:23:45.120
weapons
00:23:45.120 --> 00:23:48.840
okay Dungeon
00:23:48.840 --> 00:23:52.720
is like role-playing games
00:23:52.720 --> 00:23:55.440
but you don't really do role-playing
00:23:55.440 --> 00:23:56.159
like the
00:23:56.159 --> 00:23:57.919
for me the thing the core of being a
00:23:57.919 --> 00:23:59.520
role-playing game is you
00:23:59.520 --> 00:24:02.080
take on the role of being your character
00:24:02.080 --> 00:24:03.039
and you play
00:24:03.039 --> 00:24:06.000
your character and Dungeon's not like
00:24:06.000 --> 00:24:06.400
that
00:24:06.400 --> 00:24:10.320
Dungeon you can play
00:24:10.320 --> 00:24:12.640
so the Dungeon party always has eight
00:24:12.640 --> 00:24:13.840
characters in it
00:24:13.840 --> 00:24:15.840
there's four in the front row and four
00:24:15.840 --> 00:24:17.679
in the back row and you march through
00:24:17.679 --> 00:24:18.720
the Dungeon
00:24:18.720 --> 00:24:22.159
fighting whatever you encounter and if
00:24:22.159 --> 00:24:24.000
there's one player you play all eight
00:24:24.000 --> 00:24:25.200
characters
00:24:25.200 --> 00:24:27.120
and depending on how many players you
00:24:27.120 --> 00:24:28.720
have you split up the party
00:24:28.720 --> 00:24:30.799
in whatever way seems fair and equitable
00:24:30.799 --> 00:24:32.960
to everybody
00:24:32.960 --> 00:24:34.880
similarly I said the Dungeon is kind of
00:24:34.880 --> 00:24:36.720
a simple game like there's only
00:24:36.720 --> 00:24:38.320
three races and there's only three
00:24:38.320 --> 00:24:40.080
classes all of your characters are
00:24:40.080 --> 00:24:41.760
either human elf dwarf
00:24:41.760 --> 00:24:44.080
they're all a warrior a priest or a
00:24:44.080 --> 00:24:44.880
wizard
00:24:44.880 --> 00:24:46.640
and all of these characters have you
00:24:46.640 --> 00:24:48.320
know special properties
00:24:48.320 --> 00:24:51.279
and special talents that is why they
00:24:51.279 --> 00:24:53.760
come together in this party of eight
00:24:53.760 --> 00:24:56.240
but essentially Dungeon is a game about
00:24:56.240 --> 00:24:57.600
making up all of these
00:24:57.600 --> 00:25:00.000
eight characters and stomping through
00:25:00.000 --> 00:25:01.679
the Dungeon killing things taking their
00:25:01.679 --> 00:25:03.840
stuff
00:25:03.840 --> 00:25:05.120
well you're way over but I don't know
00:25:05.120 --> 00:25:06.960
how much I have to add to that
00:25:06.960 --> 00:25:10.080
I will just add that if if you're
00:25:10.080 --> 00:25:14.159
if if one's passion as a Dungeon
00:25:14.159 --> 00:25:16.559
master is killing player characters this
00:25:16.559 --> 00:25:17.120
game
00:25:17.120 --> 00:25:19.600
is meant for you you don't have to build
00:25:19.600 --> 00:25:21.039
your game like that
00:25:21.039 --> 00:25:22.559
but that's definitely a thing that
00:25:22.559 --> 00:25:24.400
people do with this game
00:25:24.400 --> 00:25:27.360
and then as Erik said it just
00:25:27.360 --> 00:25:28.960
encourages you to put your creativity on
00:25:28.960 --> 00:25:30.320
the table to bring all the different
00:25:30.320 --> 00:25:31.039
elements
00:25:31.039 --> 00:25:33.760
and this hopefully this may be clear
00:25:33.760 --> 00:25:35.039
in our slides since we were a little
00:25:35.039 --> 00:25:36.400
fumbling for the first few minutes of
00:25:36.400 --> 00:25:36.960
the talk
00:25:36.960 --> 00:25:40.480
but there's also a kind of a player's
00:25:40.480 --> 00:25:41.200
guide
00:25:41.200 --> 00:25:43.760
that that I started a few years ago
00:25:43.760 --> 00:25:45.919
that's that's not super complete
00:25:45.919 --> 00:25:48.400
but but does cover some of the high
00:25:48.400 --> 00:25:50.159
level basics of the game that Erik's
00:25:50.159 --> 00:25:52.320
been talking from
00:25:52.320 --> 00:25:55.679
and I would add that some of the things
00:25:55.679 --> 00:25:56.960
you know some of what makes Dungeon
00:25:56.960 --> 00:25:58.480
great is that there's a lot of mystery
00:25:58.480 --> 00:25:59.360
about it
00:25:59.360 --> 00:26:01.120
like the player's handbook doesn't tell
00:26:01.120 --> 00:26:02.880
you all of the rules
00:26:02.880 --> 00:26:06.080
or like really mystery
00:26:06.080 --> 00:26:08.080
and like there's mazes and there's
00:26:08.080 --> 00:26:09.679
puzzles and
00:26:09.679 --> 00:26:12.240
you have to figure out how things work
00:26:12.240 --> 00:26:12.799
and like
00:26:12.799 --> 00:26:14.559
we've got all of these treasure items in
00:26:14.559 --> 00:26:16.640
there that could help you deal with a
00:26:16.640 --> 00:26:18.480
particular monster if it occurs to you
00:26:18.480 --> 00:26:19.919
to use it
00:26:19.919 --> 00:26:22.720
and you know like that there's a lot
00:26:22.720 --> 00:26:23.360
of
00:26:23.360 --> 00:26:25.279
you don't know what's going on you're
00:26:25.279 --> 00:26:27.039
dropped in the middle of this situation
00:26:27.039 --> 00:26:28.559
and you have to try and survive
00:26:28.559 --> 00:26:31.919
and level up and figure it out and
00:26:31.919 --> 00:26:33.840
if you succeed in doing that for long
00:26:33.840 --> 00:26:35.520
enough eventually you start realizing
00:26:35.520 --> 00:26:37.520
that there are big picture puzzles
00:26:37.520 --> 00:26:40.000
that there are you know there is more to
00:26:40.000 --> 00:26:41.760
this than just killing things and taking
00:26:41.760 --> 00:26:43.360
their stuff
00:26:43.360 --> 00:26:46.000
and that's where the joy of designing
00:26:46.000 --> 00:26:47.279
these games comes in
00:26:47.279 --> 00:26:49.679
for me is like designing the mazes and
00:26:49.679 --> 00:26:51.679
designing the puzzles and like
00:26:51.679 --> 00:26:53.200
oh yeah and then they're going to come
00:26:53.200 --> 00:26:54.240
out of this room and you know what
00:26:54.240 --> 00:26:55.919
they're going to do they want to
00:26:55.919 --> 00:26:58.240
go that way so I'm going to put the trap
00:26:58.240 --> 00:26:59.600
right there
00:26:59.600 --> 00:27:01.360
and they'll walk right into it every
00:27:01.360 --> 00:27:03.840
time and then when the party does get in
00:27:03.840 --> 00:27:05.440
your map and they do exactly what you
00:27:05.440 --> 00:27:07.200
thought and they hit the trap it's just
00:27:07.200 --> 00:27:09.279
really satisfying to watch the look on
00:27:09.279 --> 00:27:10.960
their little faces as they squirm and
00:27:10.960 --> 00:27:12.320
struggle to stay alive
00:27:12.320 --> 00:27:13.760
yeah that's that's what I was trying to
00:27:13.760 --> 00:27:15.520
get at thanks all right that was perfect
00:27:15.520 --> 00:27:16.320
for me
00:27:16.320 --> 00:27:19.200
all right so so highlight your
00:27:19.200 --> 00:27:20.320
question for me if you think it's
00:27:20.320 --> 00:27:21.840
important we grab it here before we jump
00:27:21.840 --> 00:27:22.960
into demos
00:27:22.960 --> 00:27:25.039
but otherwise I think it's time to try
00:27:25.039 --> 00:27:27.919
running some code
00:27:27.919 --> 00:27:31.279
what say okay I say do it
00:27:31.279 --> 00:27:33.840
okay so you less less camera more more
00:27:33.840 --> 00:27:36.480
Emacs now
00:27:36.480 --> 00:27:39.120
and hopefully I could find the right e
00:27:39.120 --> 00:27:39.840
max
00:27:39.840 --> 00:27:42.960
the right desktop all right there we are
00:27:42.960 --> 00:27:48.799
so we'll try to fire up
00:27:48.799 --> 00:27:54.000
and right now and I usually like to do
00:27:54.000 --> 00:27:59.120
the full path to Emacs
00:27:59.120 --> 00:28:07.279
when I'm going to run it under minus q
00:28:07.279 --> 00:28:13.120
all right
00:28:13.120 --> 00:28:16.720
let's have some iom
00:28:16.720 --> 00:28:19.360
all right and then I'm also going to do
00:28:19.360 --> 00:28:20.000
a
00:28:20.000 --> 00:28:24.000
load file on the init script that you
00:28:24.000 --> 00:28:25.840
can find in the repository
00:28:25.840 --> 00:28:30.480
in the Emacs user and it's
00:28:30.480 --> 00:28:34.960
init scripts
00:28:34.960 --> 00:28:40.159
users folder
00:28:40.159 --> 00:28:48.080
user folder nice
00:28:48.080 --> 00:28:49.919
and it's called init dm because that
00:28:49.919 --> 00:28:51.840
happened to fit with my naming scheme
00:28:51.840 --> 00:28:55.360
potentially terrible all right and with
00:28:55.360 --> 00:28:56.320
that loaded
00:28:56.320 --> 00:28:58.320
in theory some very basic stuff will
00:28:58.320 --> 00:29:00.159
work even without us doing anything in
00:29:00.159 --> 00:29:02.159
iom so I think the the last thing Erik
00:29:02.159 --> 00:29:04.399
was talking about was the SVG code
00:29:04.399 --> 00:29:06.000
behind the maps
00:29:06.000 --> 00:29:10.720
there as kind of the technical thread
00:29:10.720 --> 00:29:13.760
so we'll just fire open the maps pick a
00:29:13.760 --> 00:29:15.440
Dungeon level
00:29:15.440 --> 00:29:18.480
let's pick a pretty one okay if I show
00:29:18.480 --> 00:29:19.840
this
00:29:19.840 --> 00:29:23.440
yeah whatever
00:29:23.440 --> 00:29:27.679
is that the surface yeah
00:29:27.679 --> 00:29:30.799
and let's scale it here I think if I
00:29:30.799 --> 00:29:32.159
wrap
00:29:32.159 --> 00:29:34.960
like once once we got the engine up and
00:29:34.960 --> 00:29:36.399
running a little bit
00:29:36.399 --> 00:29:39.120
we decided to do some experimentation
00:29:39.120 --> 00:29:42.480
about seeing what we could do to push
00:29:42.480 --> 00:29:46.080
the limits of our tile
00:29:46.080 --> 00:29:49.360
and gender so we more or less on the
00:29:49.360 --> 00:29:50.080
surface
00:29:50.080 --> 00:29:53.120
map I
00:29:53.120 --> 00:29:56.399
basically started with almost no
00:29:56.399 --> 00:29:58.399
tiles from below like the water and the
00:29:58.399 --> 00:30:00.240
beaches and the general store and the
00:30:00.240 --> 00:30:01.279
stairs
00:30:01.279 --> 00:30:03.679
were existing tiles but then we were
00:30:03.679 --> 00:30:05.200
like this is going to be a surface map
00:30:05.200 --> 00:30:07.279
so we're outdoors so I want hills and I
00:30:07.279 --> 00:30:08.399
want trees
00:30:08.399 --> 00:30:11.760
and I want grass and it took a little
00:30:11.760 --> 00:30:12.399
while
00:30:12.399 --> 00:30:15.039
playing with SVG to come up with some
00:30:15.039 --> 00:30:16.320
acceptable code
00:30:16.320 --> 00:30:18.480
but once the like the grass gets tiled
00:30:18.480 --> 00:30:19.840
out it
00:30:19.840 --> 00:30:21.600
kind of you know gives the illusion of
00:30:21.600 --> 00:30:23.039
grass and
00:30:23.039 --> 00:30:24.880
you know these are all in my estimation
00:30:24.880 --> 00:30:26.399
kind of crude graphics
00:30:26.399 --> 00:30:28.640
but we're at the proof of concept stage
00:30:28.640 --> 00:30:30.399
and it definitely proves that we can use
00:30:30.399 --> 00:30:31.679
our graphics engine
00:30:31.679 --> 00:30:34.640
to decide what we want our maps to look
00:30:34.640 --> 00:30:35.279
like
00:30:35.279 --> 00:30:39.440
and real quickly compose new map tiles
00:30:39.440 --> 00:30:44.240
and stamp out a bunch of new maps
00:30:44.240 --> 00:30:46.880
so now I'll show off one of the other
00:30:46.880 --> 00:30:48.640
things so the next thing we did once we
00:30:48.640 --> 00:30:50.559
once we had the maps doing
00:30:50.559 --> 00:30:51.919
and we haven't gotten into the features
00:30:51.919 --> 00:30:53.600
of the maps we can we can appoint time
00:30:53.600 --> 00:30:54.960
to that or not
00:30:54.960 --> 00:30:58.960
but there are a number of
00:30:58.960 --> 00:31:00.720
featured features there that we can
00:31:00.720 --> 00:31:02.840
look at the
00:31:02.840 --> 00:31:05.760
we then wanted to
00:31:05.760 --> 00:31:08.640
try to see if that could make other
00:31:08.640 --> 00:31:10.399
interfaces more appealing so we built
00:31:10.399 --> 00:31:11.360
stuff like
00:31:11.360 --> 00:31:14.320
oop that's going to be the map again
00:31:14.320 --> 00:31:15.919
I'll just run it here through I
00:31:15.919 --> 00:31:18.320
am so it's more obvious what I'm doing
00:31:18.320 --> 00:31:20.080
00:31:20.080 --> 00:31:21.679
so let's look next to the character
00:31:21.679 --> 00:31:26.080
sheet oops
00:31:26.080 --> 00:31:32.880
back and alt p doesn't work okay
00:31:32.880 --> 00:31:35.840
that's a bummer that is not
00:31:35.840 --> 00:31:38.240
autoloaded
00:31:38.240 --> 00:31:40.559
so this this project is a bit of a mess
00:31:40.559 --> 00:31:41.600
right now y'all
00:31:41.600 --> 00:31:43.120
it does some stuff that's really
00:31:43.120 --> 00:31:45.120
exciting to us but the code is terrible
00:31:45.120 --> 00:31:47.039
and we need all the help we can get
00:31:47.039 --> 00:31:48.399
being told what our problems are and how
00:31:48.399 --> 00:31:49.279
to fix them
00:31:49.279 --> 00:31:51.360
so that is if you take nothing away from
00:31:51.360 --> 00:31:52.559
this talk
00:31:52.559 --> 00:31:54.799
take away from it that we could use
00:31:54.799 --> 00:32:00.480
your help
00:32:00.480 --> 00:32:02.399
yeah that doubles back to when we
00:32:02.399 --> 00:32:04.640
were talking about larry wall's cardinal
00:32:04.640 --> 00:32:06.320
virtues of programming like we
00:32:06.320 --> 00:32:07.440
definitely
00:32:07.440 --> 00:32:09.760
took on some hubris thinking we could do
00:32:09.760 --> 00:32:10.640
this
00:32:10.640 --> 00:32:13.519
and we might not be wrong but we
00:32:13.519 --> 00:32:14.799
could do it easier with
00:32:14.799 --> 00:32:16.799
more hands you know many hands make
00:32:16.799 --> 00:32:18.240
light work all right
00:32:18.240 --> 00:32:21.760
I'll bite yeah
00:32:21.760 --> 00:32:23.360
and the character she won't load for us
00:32:23.360 --> 00:32:24.799
today I had some problems with my
00:32:24.799 --> 00:32:26.960
version control I had to revert my thing
00:32:26.960 --> 00:32:29.360
I threw all my local changes in a stash
00:32:29.360 --> 00:32:31.200
and it's it's a terrible mess let's look
00:32:31.200 --> 00:32:32.080
at stuff I
00:32:32.080 --> 00:32:37.519
tested already today before
00:32:37.519 --> 00:32:40.559
you got the battle board available
00:32:40.559 --> 00:32:43.760
let's find out first we'll load library
00:32:43.760 --> 00:32:45.760
it
00:32:45.760 --> 00:32:48.000
in fact actually your basic require
00:32:48.000 --> 00:32:57.440
should work
00:32:57.440 --> 00:33:00.480
no I can try load library
00:33:00.480 --> 00:33:02.640
you know what let's forg I'm just
00:33:02.640 --> 00:33:03.760
going to go ahead and give it to you as a
00:33:03.760 --> 00:33:04.960
lab beast
00:33:04.960 --> 00:33:09.919
since that's probably more fun to watch
00:33:09.919 --> 00:33:11.600
we'll take it from my own inet
00:33:11.600 --> 00:33:16.640
this is more likely to be healthy
00:33:16.640 --> 00:33:19.840
since only some of the time first we
00:33:19.840 --> 00:33:20.880
have to
00:33:20.880 --> 00:33:24.799
ctrl x alt I d m
00:33:24.799 --> 00:33:28.559
all right and having then loaded
00:33:28.559 --> 00:33:31.760
the init control u f9
00:33:31.760 --> 00:33:34.080
should give me the maps and we can
00:33:34.080 --> 00:33:35.200
verify
00:33:35.200 --> 00:33:37.200
things work in a basic way just by
00:33:37.200 --> 00:33:38.640
changing level
00:33:38.640 --> 00:33:43.200
let's look at something else
00:33:43.200 --> 00:33:46.399
I mentioned there were a number of
00:33:46.399 --> 00:33:47.360
bindings
00:33:47.360 --> 00:33:51.600
show them briefly we wrote our own
00:33:51.600 --> 00:33:54.080
functions to handle movement some of
00:33:54.080 --> 00:33:56.640
those in SVG.el the left
00:33:56.640 --> 00:33:59.679
left and right movements didn't
00:33:59.679 --> 00:34:02.640
didn't seem to work quite quite likely
00:34:02.640 --> 00:34:03.120
coding
00:34:03.120 --> 00:34:06.720
of course
00:34:06.720 --> 00:34:09.760
all right enough
00:34:09.760 --> 00:34:11.760
so let's let's see if battleboard works
00:34:11.760 --> 00:34:13.040
now
00:34:13.040 --> 00:34:15.760
I really thought that was on f7 up
00:34:15.760 --> 00:34:17.040
that's the character sheet
00:34:17.040 --> 00:34:19.679
sweet that's why you stay out of user
00:34:19.679 --> 00:34:24.879
bindings
00:34:24.879 --> 00:34:28.079
so that looks a little better
00:34:28.079 --> 00:34:33.919
so let's talk about the character sheet
00:34:33.919 --> 00:34:35.919
yeah
00:34:35.919 --> 00:34:38.000
so the character sheet was our first big
00:34:38.000 --> 00:34:39.839
repurposing
00:34:39.839 --> 00:34:42.560
of the engine that we couldn't do the
00:34:42.560 --> 00:34:44.159
battle board program
00:34:44.159 --> 00:34:53.599
that let's see if that runs now too
00:34:53.599 --> 00:35:00.880
it's not interactive if it does
00:35:00.880 --> 00:35:04.960
good
00:35:04.960 --> 00:35:08.480
no
00:35:08.480 --> 00:35:11.760
try let cemex guess no joy all right I'm
00:35:11.760 --> 00:35:13.040
not sure what's up with the battle board
00:35:13.040 --> 00:35:14.079
Erik
00:35:14.079 --> 00:35:15.280
we haven't messed with that one for a
00:35:15.280 --> 00:35:17.119
while in fact
00:35:17.119 --> 00:35:18.880
we had discussed using its code as an
00:35:18.880 --> 00:35:21.040
example so maybe we'll debug it with you
00:35:21.040 --> 00:35:22.640
I'll certainly check for questions
00:35:22.640 --> 00:35:25.359
first
00:35:25.359 --> 00:35:28.079
the so the character sheet which is
00:35:28.079 --> 00:35:31.280
not scaling ideally here
00:35:31.280 --> 00:35:35.680
see if reloading it does anything
00:35:35.680 --> 00:35:39.440
nope not as far as I can tell assuming
00:35:39.440 --> 00:35:40.960
you don't have this scale implemented
00:35:40.960 --> 00:35:42.800
for character sheet
00:35:42.800 --> 00:35:44.960
that's right there's everything in scale
00:35:44.960 --> 00:35:46.800
it take in order to get what you were
00:35:46.800 --> 00:35:54.079
looking at there
00:35:54.079 --> 00:35:58.640
all right this
00:35:58.640 --> 00:36:02.240
this whole thing is hard-coded
00:36:02.240 --> 00:36:05.440
basically to the gills except
00:36:05.440 --> 00:36:09.040
for things like this this program
00:36:09.040 --> 00:36:10.640
represents a re-implementation of the
00:36:10.640 --> 00:36:11.040
draw
00:36:11.040 --> 00:36:14.880
engine using all of the same things
00:36:14.880 --> 00:36:19.599
let's see that's selected so
00:36:19.599 --> 00:36:21.680
we'll just try bringing up a map
00:36:21.680 --> 00:36:23.119
again
00:36:23.119 --> 00:36:26.320
there's one and you'll notice dm
00:36:26.320 --> 00:36:28.560
map doesn't know anything about the new
00:36:28.560 --> 00:36:29.839
draw engine
00:36:29.839 --> 00:36:31.599
and there are a couple of places where
00:36:31.599 --> 00:36:33.520
the new draw engine is still
00:36:33.520 --> 00:36:36.480
hooked in to the s for example
00:36:36.480 --> 00:36:37.440
particularly
00:36:37.440 --> 00:36:39.680
the sizing of the graph paper background
00:36:39.680 --> 00:36:41.119
so I've started the work
00:36:41.119 --> 00:36:44.240
in dmdraw.el
00:36:44.240 --> 00:36:47.040
of trying to show how exactly we did
00:36:47.040 --> 00:36:47.440
this
00:36:47.440 --> 00:36:50.160
removing the how did we get data out of
00:36:50.160 --> 00:36:51.760
org mode that I talked about yesterday
00:36:51.760 --> 00:36:53.280
with our etl flows
00:36:53.280 --> 00:36:56.480
and just focusing on
00:36:56.480 --> 00:36:58.960
how did we solve the problem of
00:36:58.960 --> 00:37:00.160
predicated drawing
00:37:00.160 --> 00:37:01.839
which I realized we didn't really talk
00:37:01.839 --> 00:37:05.200
about so should I jump into that
00:37:05.200 --> 00:37:07.760
yeah I guess how are we on time we
00:37:07.760 --> 00:37:09.280
have time for detours
00:37:09.280 --> 00:37:11.359
yeah it looks like we could spend two
00:37:11.359 --> 00:37:12.800
or three minutes on that and then
00:37:12.800 --> 00:37:15.599
come back for the questions cool do
00:37:15.599 --> 00:37:17.680
it
00:37:17.680 --> 00:37:20.480
and I'm just going to peek into my org mode
00:37:20.480 --> 00:37:20.800
by
00:37:20.800 --> 00:37:23.200
into my chat conference and I don't see
00:37:23.200 --> 00:37:24.960
anybody talking to me from the organizer
00:37:24.960 --> 00:37:25.520
channel
00:37:25.520 --> 00:37:26.560
so I'm going to assume that's a good
00:37:26.560 --> 00:37:28.800
guess
00:37:28.800 --> 00:37:32.079
all right so let's let's go ahead and
00:37:32.079 --> 00:37:34.160
play with the map a little then that is
00:37:34.160 --> 00:37:37.760
pretty fun and and so much fun
00:37:37.760 --> 00:37:39.440
that we had to curtail play sessions in
00:37:39.440 --> 00:37:41.760
order to keep working on the project
00:37:41.760 --> 00:37:45.119
00:37:45.119 --> 00:37:48.480
so I'll
00:37:48.480 --> 00:37:51.839
I'll do the
00:37:51.839 --> 00:37:55.920
we'll try to find something different
00:37:55.920 --> 00:38:01.040
from any gif I've shared here right
00:38:01.040 --> 00:38:03.359
so here we are in a random go ahead Erik
00:38:03.359 --> 00:38:05.760
you phil
00:38:05.760 --> 00:38:08.240
oh okay so what what what corwin is
00:38:08.240 --> 00:38:10.000
doing here is he's about to put the
00:38:10.000 --> 00:38:13.359
the map into play mode
00:38:13.359 --> 00:38:16.800
which is going to turn on the fog of war
00:38:16.800 --> 00:38:19.920
and then we're going to use
00:38:19.920 --> 00:38:23.040
the fog of war and the the play mode to
00:38:23.040 --> 00:38:24.560
kind of reveal the map
00:38:24.560 --> 00:38:26.240
one square at a time like we would
00:38:26.240 --> 00:38:28.160
during a play session
00:38:28.160 --> 00:38:29.920
so we'll just drop the party randomly
00:38:29.920 --> 00:38:31.280
somewhere onto this map
00:38:31.280 --> 00:38:33.839
looks like we're on alpha maze level
00:38:33.839 --> 00:38:36.079
three here
00:38:36.079 --> 00:38:40.800
and
00:38:40.800 --> 00:38:46.320
-oh then we'll walk around a little
00:38:46.320 --> 00:38:50.480
okay there we go we're halfway there
00:38:50.480 --> 00:38:52.160
I'll have to I'll have to do a full
00:38:52.160 --> 00:38:53.520
redraw
00:38:53.520 --> 00:38:55.920
the sketch the sketching stuff has
00:38:55.920 --> 00:38:58.480
has has broken things here like I said
00:38:58.480 --> 00:39:00.240
the two aren't separated once I run them
00:39:00.240 --> 00:39:01.599
in the same instance they're not
00:39:01.599 --> 00:39:03.520
predictable
00:39:03.520 --> 00:39:05.359
okay so let me elaborate here when he
00:39:05.359 --> 00:39:07.040
says the sketching stuff
00:39:07.040 --> 00:39:10.560
the current focus of our work is to
00:39:10.560 --> 00:39:13.520
turn all of this map stuff we've got
00:39:13.520 --> 00:39:14.320
into
00:39:14.320 --> 00:39:17.920
a basically a wysiwyg map editor
00:39:17.920 --> 00:39:20.880
where we can get into the tiles and
00:39:20.880 --> 00:39:22.160
we'll be able to
00:39:22.160 --> 00:39:24.480
select the tile and basically rubber
00:39:24.480 --> 00:39:26.560
stamp it into a map
00:39:26.560 --> 00:39:29.680
graphically and then save the map file
00:39:29.680 --> 00:39:30.000
out
00:39:30.000 --> 00:39:33.280
and load it back in later so that
00:39:33.280 --> 00:39:36.720
we're able to you know just pound out
00:39:36.720 --> 00:39:38.480
these maps real fast
00:39:38.480 --> 00:39:42.000
using a graphical editor rather than
00:39:42.000 --> 00:39:43.200
having to hand code
00:39:43.200 --> 00:39:45.440
every symbol and every square of the
00:39:45.440 --> 00:39:48.000
tables
00:39:48.000 --> 00:39:52.960
so the process of doing that
00:39:52.960 --> 00:39:54.800
things are a mess we've got covers off
00:39:54.800 --> 00:39:56.720
there's wires hanging out
00:39:56.720 --> 00:39:58.720
different stuff works on different
00:39:58.720 --> 00:40:03.119
days
00:40:03.119 --> 00:40:05.200
well I will say in our defense this is
00:40:05.200 --> 00:40:07.119
exactly why we staged a complicated
00:40:07.119 --> 00:40:07.520
thing
00:40:07.520 --> 00:40:09.680
and probably we should have just gone
00:40:09.680 --> 00:40:11.119
with that instead of
00:40:11.119 --> 00:40:14.160
trying to give you the experience
00:40:14.160 --> 00:40:17.760
of of of what it's like to use Emacs
00:40:17.760 --> 00:40:19.200
to do this which is
00:40:19.200 --> 00:40:21.359
which is sort of the last minute thought
00:40:21.359 --> 00:40:23.280
there and my apologies for that
00:40:23.280 --> 00:40:25.119
if that's made it harder to follow the
00:40:25.119 --> 00:40:27.200
thread let's check back now for
00:40:27.200 --> 00:40:28.240
questions
00:40:28.240 --> 00:40:30.000
and see if anybody wants to redirect at
00:40:30.000 --> 00:40:36.640
all
00:40:36.640 --> 00:40:39.599
so yep this so what you're looking at
00:40:39.599 --> 00:40:40.800
all uses prog
00:40:40.800 --> 00:40:44.880
pragmatic SVG
00:40:44.880 --> 00:40:47.760
SVG generation for question number
00:40:47.760 --> 00:40:49.119
four there have you played with
00:40:49.119 --> 00:40:52.000
generating svgs pragmatically in Emacs
00:40:52.000 --> 00:40:55.119
that is what the maps are doing in
00:40:55.119 --> 00:40:55.680
terms
00:40:55.680 --> 00:40:58.480
of we should have been maybe more
00:40:58.480 --> 00:41:00.400
explicit about that we started hand
00:41:00.400 --> 00:41:01.680
coding things and
00:41:01.680 --> 00:41:05.119
once we got the idea of what the code
00:41:05.119 --> 00:41:06.400
was going to look like
00:41:06.400 --> 00:41:09.359
we switched to doing it programmatically
00:41:09.359 --> 00:41:10.000
so
00:41:10.000 --> 00:41:12.880
we were going to open up maybe now if
00:41:12.880 --> 00:41:14.640
we've got time we can get into the tile
00:41:14.640 --> 00:41:15.839
set real quick
00:41:15.839 --> 00:41:18.640
sure we definitely didn't do any of the
00:41:18.640 --> 00:41:20.560
pathing slides and so now we've skipped
00:41:20.560 --> 00:41:23.040
over some stuff we were going to present
00:41:23.040 --> 00:41:25.040
yeah that's right we skipped a whole
00:41:25.040 --> 00:41:26.880
bunch of slides and I can certainly
00:41:26.880 --> 00:41:28.160
go back to them they're open here
00:41:28.160 --> 00:41:31.040
obviously
00:41:31.040 --> 00:41:33.599
right I was just showing off the
00:41:33.599 --> 00:41:34.480
sketching
00:41:34.480 --> 00:41:36.880
tool briefly in that context but I
00:41:36.880 --> 00:41:38.000
think you're right let's
00:41:38.000 --> 00:41:40.000
we can jump over to the actually I
00:41:40.000 --> 00:41:41.280
should finish with this now having
00:41:41.280 --> 00:41:42.000
teased it
00:41:42.000 --> 00:41:45.119
so let's do the same thing here ctrl h m
00:41:45.119 --> 00:41:47.119
and you'll see in this case there are
00:41:47.119 --> 00:41:48.560
very few keyboard
00:41:48.560 --> 00:41:52.160
key bindings that are set up even
00:41:52.160 --> 00:41:55.359
this shift delete has a tera
00:41:55.359 --> 00:41:59.280
or shift with
00:41:59.280 --> 00:42:02.560
yeah control delete it would seem to be
00:42:02.560 --> 00:42:05.680
so that has couple obvious bugs with it
00:42:05.680 --> 00:42:07.119
right didn't pick it didn't pick up
00:42:07.119 --> 00:42:09.280
those control points until I reused them
00:42:09.280 --> 00:42:11.280
not clearing that stack
00:42:11.280 --> 00:42:13.760
and also should probably think about
00:42:13.760 --> 00:42:14.480
whether
00:42:14.480 --> 00:42:16.720
the origin should return and hey marking
00:42:16.720 --> 00:42:18.400
that origin would be nice
00:42:18.400 --> 00:42:19.839
so there's a tremendous amount to do
00:42:19.839 --> 00:42:21.680
here this is just
00:42:21.680 --> 00:42:24.400
showing that it is possible to use
00:42:24.400 --> 00:42:26.079
essentially like a touch input
00:42:26.079 --> 00:42:31.680
to
00:42:31.680 --> 00:42:35.119
yeah and then also we can switch over to
00:42:35.119 --> 00:42:35.760
our place
00:42:35.760 --> 00:42:39.040
tool and
00:42:39.040 --> 00:42:43.040
hopefully we can get a nice big menu
00:42:43.040 --> 00:42:45.040
of all the tiles that Erik prepared for
00:42:45.040 --> 00:42:49.440
the game maps
00:42:49.440 --> 00:42:51.680
that was probably a terrible choice
00:42:51.680 --> 00:42:53.119
but there you have just a bit of
00:42:53.119 --> 00:42:56.800
corridor right
00:42:56.800 --> 00:43:00.480
that looks
00:43:00.480 --> 00:43:04.560
and even the click yep and this this
00:43:04.560 --> 00:43:06.160
glitch action here is the last thing I
00:43:06.160 --> 00:43:07.280
was working on before I dropped
00:43:07.280 --> 00:43:08.079
everything to
00:43:08.079 --> 00:43:10.079
to build the decks that we will soon
00:43:10.079 --> 00:43:14.240
share for this conference
00:43:14.240 --> 00:43:19.680
so okay back to the tile sets
00:43:19.680 --> 00:43:22.160
right so the way we approached drawing
00:43:22.160 --> 00:43:23.440
it programmatically
00:43:23.440 --> 00:43:25.200
is we broke our code up into little
00:43:25.200 --> 00:43:27.280
snippets we called tiles
00:43:27.280 --> 00:43:29.280
corman's going to open up the tile
00:43:29.280 --> 00:43:32.160
set here basically each tile has a name
00:43:32.160 --> 00:43:35.280
and then with that name we place data
00:43:35.280 --> 00:43:37.920
into different layers of the image
00:43:37.920 --> 00:43:40.640
some of the layers are just SVG paths
00:43:40.640 --> 00:43:41.280
and
00:43:41.280 --> 00:43:44.880
the data is just SVG commands
00:43:44.880 --> 00:43:47.920
like we saw in that handwritten code and
00:43:47.920 --> 00:43:50.960
some of it is compositions of other
00:43:50.960 --> 00:43:54.160
tiles so a tile can be made up of other
00:43:54.160 --> 00:43:56.160
tiles
00:43:56.160 --> 00:43:58.000
furthermore some of these tiles have
00:43:58.000 --> 00:43:59.599
conditional code in it
00:43:59.599 --> 00:44:02.319
where like some of this stuff is talking
00:44:02.319 --> 00:44:02.720
about
00:44:02.720 --> 00:44:06.560
elf and bang elf so the map is going to
00:44:06.560 --> 00:44:08.079
be drawn differently depending
00:44:08.079 --> 00:44:09.440
on whether or not there's elves in the
00:44:09.440 --> 00:44:11.200
party
00:44:11.200 --> 00:44:16.880
so and that's the demo they broke
00:44:16.880 --> 00:44:18.240
the engine has to make all those
00:44:18.240 --> 00:44:20.000
decisions
00:44:20.000 --> 00:44:21.599
and that's what we're calling predicated
00:44:21.599 --> 00:44:23.280
drawing oh there's a
00:44:23.280 --> 00:44:25.200
special room here do you have any elves
00:44:25.200 --> 00:44:26.480
you do so I draw
00:44:26.480 --> 00:44:32.880
there is elf's way
00:44:32.880 --> 00:44:35.839
yeah so we built up the set of tiles and
00:44:35.839 --> 00:44:36.319
then
00:44:36.319 --> 00:44:39.920
we basically made map files which
00:44:39.920 --> 00:44:43.760
take our map and break it up into xy
00:44:43.760 --> 00:44:47.839
grids and then we drop these tiles into
00:44:47.839 --> 00:44:50.240
positions on the map so we can use the
00:44:50.240 --> 00:44:52.000
same tile square after square after
00:44:52.000 --> 00:44:52.480
square
00:44:52.480 --> 00:44:54.720
when there's a corridor north south it's
00:44:54.720 --> 00:44:55.680
the same tile
00:44:55.680 --> 00:44:59.119
over and over again and that makes it
00:44:59.119 --> 00:45:02.400
easy to reuse the code and then also
00:45:02.400 --> 00:45:05.920
when
00:45:05.920 --> 00:45:10.560
when we go to present the
00:45:10.560 --> 00:45:13.520
what am I trying to say the the drawing
00:45:13.520 --> 00:45:15.839
in in fog of war mode as we move down
00:45:15.839 --> 00:45:18.000
the corridor we can just add the
00:45:18.000 --> 00:45:20.640
necessary code one bit at a time to the
00:45:20.640 --> 00:45:23.440
visible image so that what we're
00:45:23.440 --> 00:45:24.960
displaying doesn't contain
00:45:24.960 --> 00:45:27.359
any data except what the party has
00:45:27.359 --> 00:45:30.240
already discovered
00:45:30.240 --> 00:45:32.319
and thus we have kind of spoiler rich
00:45:32.319 --> 00:45:34.400
documents sitting on the gm
00:45:34.400 --> 00:45:37.359
server and then less you know and
00:45:37.359 --> 00:45:38.400
spoiler-free
00:45:38.400 --> 00:45:41.440
data that flows down to the org mode
00:45:41.440 --> 00:45:44.000
files on the player system and the only
00:45:44.000 --> 00:45:47.040
real challenge is making sure that the
00:45:47.040 --> 00:45:50.160
the nothing that the game does can mess
00:45:50.160 --> 00:45:50.960
with the
00:45:50.960 --> 00:45:54.480
the the users the the players data file
00:45:54.480 --> 00:45:55.280
in case they
00:45:55.280 --> 00:45:57.680
might have their own notes and things in
00:45:57.680 --> 00:46:00.160
it that that would be the one
00:46:00.160 --> 00:46:06.160
you know number one thing to avoid
00:46:06.160 --> 00:46:08.000
another thing we can talk about here is
00:46:08.000 --> 00:46:09.680
that there are layers
00:46:09.680 --> 00:46:11.839
you can see this table at the bottom has
00:46:11.839 --> 00:46:13.520
tile and overlay
00:46:13.520 --> 00:46:15.119
the overlay column is just going to
00:46:15.119 --> 00:46:17.040
contain some actual SVG
00:46:17.040 --> 00:46:20.800
xml style tags so that's where we can
00:46:20.800 --> 00:46:21.599
add whatever
00:46:21.599 --> 00:46:25.359
text elements or other SVG like raw SVG
00:46:25.359 --> 00:46:26.720
tags we want
00:46:26.720 --> 00:46:28.880
whereas a lot of the other layers are
00:46:28.880 --> 00:46:30.560
going to be like path layers we've got
00:46:30.560 --> 00:46:32.960
water layers and beach layers
00:46:32.960 --> 00:46:35.359
and our plan was to have a style sheet
00:46:35.359 --> 00:46:37.680
that defines how each of those layers
00:46:37.680 --> 00:46:38.720
are represented
00:46:38.720 --> 00:46:40.720
so like when the water gets drawn blue
00:46:40.720 --> 00:46:42.160
and it's got arrows on it
00:46:42.160 --> 00:46:45.520
giving it direction all of that
00:46:45.520 --> 00:46:47.680
can be customized with a style sheet to
00:46:47.680 --> 00:46:49.200
change the water to be
00:46:49.200 --> 00:46:51.200
whatever you want and like we have
00:46:51.200 --> 00:46:52.960
beaches as yellow but maybe you like
00:46:52.960 --> 00:46:54.319
beaches as red or
00:46:54.319 --> 00:46:57.359
you know whatever so we also built
00:46:57.359 --> 00:47:01.200
some test programs
00:47:01.200 --> 00:47:04.079
and various of the I'm not not sure what
00:47:04.079 --> 00:47:05.359
kind of shape we're going to find these in
00:47:05.359 --> 00:47:07.040
but we can try running them
00:47:07.040 --> 00:47:10.640
here for example is just a
00:47:10.640 --> 00:47:12.960
very basic all of using a saint using
00:47:12.960 --> 00:47:15.119
the same file to define
00:47:15.119 --> 00:47:18.560
the tiles and and then
00:47:18.560 --> 00:47:24.880
the layout so to speak oh look at that
00:47:24.880 --> 00:47:26.640
there's the layout okay so that
00:47:26.640 --> 00:47:28.960
actually looks fine tile
00:47:28.960 --> 00:47:30.960
and it's pat so this is defining a tile
00:47:30.960 --> 00:47:32.400
named seas
00:47:32.400 --> 00:47:35.440
and it's going to have a list of tiles
00:47:35.440 --> 00:47:38.720
defined above and you'll notice also
00:47:38.720 --> 00:47:41.839
that we can just sort of freely define
00:47:41.839 --> 00:47:44.559
and redefine and it sort of figures out
00:47:44.559 --> 00:47:46.160
oh this must still be part of the b
00:47:46.160 --> 00:47:50.839
row we could also have done
00:47:50.839 --> 00:48:00.000
this
00:48:00.000 --> 00:48:02.160
okay so this would this would work as
00:48:02.160 --> 00:48:08.480
would this
00:48:08.480 --> 00:48:11.599
one of early on in development when
00:48:11.599 --> 00:48:12.720
we were talking about
00:48:12.720 --> 00:48:14.400
getting data in and out of these org
00:48:14.400 --> 00:48:15.839
tables it
00:48:15.839 --> 00:48:19.440
was kind of a priority to us to
00:48:19.440 --> 00:48:22.319
leave the way the data is organized open
00:48:22.319 --> 00:48:23.040
to
00:48:23.040 --> 00:48:26.960
the users and to the Dungeon masters so
00:48:26.960 --> 00:48:30.720
while we set our tile set apart from our
00:48:30.720 --> 00:48:32.559
map sets
00:48:32.559 --> 00:48:35.440
this clearly shows that you can cram a
00:48:35.440 --> 00:48:38.319
tile set and a map into a single file
00:48:38.319 --> 00:48:41.040
so in situations like the surface where
00:48:41.040 --> 00:48:43.040
we're using different tiles from other
00:48:43.040 --> 00:48:43.760
maps
00:48:43.760 --> 00:48:46.559
maybe it makes sense to move you know
00:48:46.559 --> 00:48:48.079
those tiles just into the file
00:48:48.079 --> 00:48:50.559
with your map or like it's hard for us
00:48:50.559 --> 00:48:52.400
to predict how other people are going to
00:48:52.400 --> 00:48:54.319
want to use this when they design their
00:48:54.319 --> 00:48:55.119
games
00:48:55.119 --> 00:48:57.359
so we wanted to leave it as versatile as
00:48:57.359 --> 00:48:58.160
possible
00:48:58.160 --> 00:49:01.599
about how you can use it where it
00:49:01.599 --> 00:49:02.640
matters right
00:49:02.640 --> 00:49:04.319
not support every feature in the world I
00:49:04.319 --> 00:49:05.920
can't count the number of times I said
00:49:05.920 --> 00:49:07.280
Erik Erik Erik
00:49:07.280 --> 00:49:09.200
hey if we do it like this people will be
00:49:09.200 --> 00:49:10.800
able and he just like
00:49:10.800 --> 00:49:14.000
does it have to do that do we do we does
00:49:14.000 --> 00:49:14.480
it like
00:49:14.480 --> 00:49:17.920
do we need it right away
00:49:17.920 --> 00:49:19.599
do you have to really rewrite everything
00:49:19.599 --> 00:49:21.040
so it can all do that
00:49:21.040 --> 00:49:24.160
and a lot of those
00:49:24.160 --> 00:49:26.880
a lot of those conversations too but the
00:49:26.880 --> 00:49:28.240
the key flexibilities
00:49:28.240 --> 00:49:31.200
are really there people might want to
00:49:31.200 --> 00:49:32.559
use a lot of different files they might
00:49:32.559 --> 00:49:34.160
want to lay the tables out however they
00:49:34.160 --> 00:49:35.760
want they have to be able to say hey
00:49:35.760 --> 00:49:37.440
this is a table that has
00:49:37.440 --> 00:49:39.440
data that's controlled by the game and
00:49:39.440 --> 00:49:40.720
everything else in the file
00:49:40.720 --> 00:49:44.079
is not the game's problem
00:49:44.079 --> 00:49:45.920
on our table some of our tables started
00:49:45.920 --> 00:49:47.440
getting really wide so we started
00:49:47.440 --> 00:49:48.960
striping the tables
00:49:48.960 --> 00:49:51.119
where we'll repeat the same table over
00:49:51.119 --> 00:49:52.640
and over and over again to
00:49:52.640 --> 00:49:56.400
get all of the columns in there without
00:49:56.400 --> 00:49:59.119
making it you know a million miles wide
00:49:59.119 --> 00:49:59.599
yeah
00:49:59.599 --> 00:50:01.040
do you want to should I go ahead and
00:50:01.040 --> 00:50:02.640
pull open like a level here
00:50:02.640 --> 00:50:06.079
do you think sure just to have shown it
00:50:06.079 --> 00:50:08.319
the aisle set's a great example of
00:50:08.319 --> 00:50:09.680
striped tables if you
00:50:09.680 --> 00:50:11.119
look down like in the level change
00:50:11.119 --> 00:50:18.800
feature oh sure
00:50:18.800 --> 00:50:20.240
sorry I'm not quite sitting well to my
00:50:20.240 --> 00:50:22.400
keyboard here I can just readjust things
00:50:22.400 --> 00:50:30.079
real quick
00:50:30.079 --> 00:50:33.280
so what you know you can see here
00:50:33.280 --> 00:50:35.200
like some of these tables got real wide
00:50:35.200 --> 00:50:36.800
when we're stuffing SVG
00:50:36.800 --> 00:50:40.559
tags into them and what we
00:50:40.559 --> 00:50:44.160
oh maybe it's not in these
00:50:44.160 --> 00:50:50.079
I thought it was
00:50:50.079 --> 00:50:52.960
special probably yeah no there it is
00:50:52.960 --> 00:50:54.240
yeah
00:50:54.240 --> 00:50:56.000
it was in level change it does the table
00:50:56.000 --> 00:50:58.720
can you repeat okay great
00:50:58.720 --> 00:51:00.640
up and down so fast I didn't realize so
00:51:00.640 --> 00:51:01.920
this first table
00:51:01.920 --> 00:51:05.680
we've got path and what is that stairs
00:51:05.680 --> 00:51:08.800
so the stairs level is one that draws in
00:51:08.800 --> 00:51:10.079
like a pink color
00:51:10.079 --> 00:51:11.920
to highlight the places where you can
00:51:11.920 --> 00:51:13.440
change level
00:51:13.440 --> 00:51:15.200
and then if we scroll down to the second
00:51:15.200 --> 00:51:17.200
half of this section
00:51:17.200 --> 00:51:19.359
the second table is going to have all of
00:51:19.359 --> 00:51:20.960
these same tiles in it but
00:51:20.960 --> 00:51:22.800
instead of path and stairs we're going
00:51:22.800 --> 00:51:24.720
to have other
00:51:24.720 --> 00:51:27.920
columns can we
00:51:27.920 --> 00:51:31.680
see the next table
00:51:31.680 --> 00:51:33.839
there we go so the same tiles only here
00:51:33.839 --> 00:51:35.359
we've got overlay
00:51:35.359 --> 00:51:38.720
documentation and behavior and I guess
00:51:38.720 --> 00:51:40.319
we haven't talked about this at all the
00:51:40.319 --> 00:51:41.839
behavior column
00:51:41.839 --> 00:51:44.880
was our concept of a way that we could
00:51:44.880 --> 00:51:47.520
attach
00:51:47.520 --> 00:51:49.680
functions basically to these different
00:51:49.680 --> 00:51:51.359
areas of the map
00:51:51.359 --> 00:51:54.720
because sometimes when you enter an area
00:51:54.720 --> 00:51:57.760
we want it to do something like
00:51:57.760 --> 00:51:59.920
when you enter a stairs down maybe we
00:51:59.920 --> 00:52:02.319
want it to change to the next level
00:52:02.319 --> 00:52:04.559
and draw the stairs up behind you and
00:52:04.559 --> 00:52:06.160
draw you where you are
00:52:06.160 --> 00:52:09.200
on the next level so
00:52:09.200 --> 00:52:11.040
these are like hooks where we could
00:52:11.040 --> 00:52:12.240
attach functions
00:52:12.240 --> 00:52:16.400
or you know macros or whatever to
00:52:16.400 --> 00:52:18.480
make the map have these behaviors as we
00:52:18.480 --> 00:52:23.440
get further towards automation
00:52:23.440 --> 00:52:26.559
cool so that's that
00:52:26.559 --> 00:52:30.839
should be pretty close to our time
00:52:30.839 --> 00:52:33.920
questions or just say goodbye
00:52:33.920 --> 00:52:36.880
yeah so there's the I'm sorry we
00:52:36.880 --> 00:52:38.559
couldn't show it earlier there is the
00:52:38.559 --> 00:52:40.000
battle board
00:52:40.000 --> 00:52:44.240
and so this is used just to keep
00:52:44.240 --> 00:52:48.079
track of hit points so with this example
00:52:48.079 --> 00:52:49.319
battle board
00:52:49.319 --> 00:52:51.680
dmbattleboard.el there's there's a
00:52:51.680 --> 00:52:53.760
complete example of not only
00:52:53.760 --> 00:52:57.200
in a single file repub filling out the
00:52:57.200 --> 00:53:00.480
the cells and the tiles but then coming
00:53:00.480 --> 00:53:00.960
in
00:53:00.960 --> 00:53:04.640
and keeping the org mode file in sync
00:53:04.640 --> 00:53:05.280
with
00:53:05.280 --> 00:53:09.040
with clicks so and I can press the star
00:53:09.040 --> 00:53:12.319
key and set my damage to -1 and
00:53:12.319 --> 00:53:15.359
take the damage back off I just haven't
00:53:15.359 --> 00:53:16.400
spent a lot of time
00:53:16.400 --> 00:53:18.079
building up fancy bindings for this
00:53:18.079 --> 00:53:20.800
you'll also find that the crew
00:53:20.800 --> 00:53:23.119
probably find how I figure out what was
00:53:23.119 --> 00:53:23.839
clicked on
00:53:23.839 --> 00:53:26.880
in the code hard but if I just assign
00:53:26.880 --> 00:53:28.000
something recognizable
00:53:28.000 --> 00:53:33.520
for damage and then come into
00:53:33.520 --> 00:53:35.440
it will now have opened the org mode
00:53:35.440 --> 00:53:37.040
file behind the scenes because it's
00:53:37.040 --> 00:53:41.280
changing it
00:53:41.280 --> 00:53:44.640
and we can then look at that file a
00:53:44.640 --> 00:53:47.599
little bit and hopefully
00:53:47.599 --> 00:53:51.040
that is un
00:53:51.040 --> 00:53:53.440
large enough you can kind of see
00:53:53.440 --> 00:53:55.520
there's our 17 damage landed
00:53:55.520 --> 00:53:59.119
in armor the logic that sits behind that
00:53:59.119 --> 00:54:01.200
to figure out the part of the screen
00:54:01.200 --> 00:54:08.880
is not necessarily our finest work
00:54:08.880 --> 00:54:11.839
but it but it does work and it's
00:54:11.839 --> 00:54:12.319
one for
00:54:12.319 --> 00:54:14.000
the stuff was used on the map a little
00:54:14.000 --> 00:54:15.920
bit too we didn't really need to show
00:54:15.920 --> 00:54:17.520
that in the demo but as you're scrolling
00:54:17.520 --> 00:54:19.680
around there's like a highlighter
00:54:19.680 --> 00:54:22.960
that that you know we were drawing on
00:54:22.960 --> 00:54:24.720
shaft to show you which square you've
00:54:24.720 --> 00:54:26.160
got selected
00:54:26.160 --> 00:54:28.800
because we were having trouble with
00:54:28.800 --> 00:54:29.839
that code
00:54:29.839 --> 00:54:31.280
initially and we were sometimes
00:54:31.280 --> 00:54:36.839
revealing the wrong
00:54:36.839 --> 00:54:38.720
okay
00:54:38.720 --> 00:54:40.480
and I don't know how we're set for time
00:54:40.480 --> 00:54:42.160
but I just saw a message
00:54:42.160 --> 00:54:44.400
from trixie that she could jump on if
00:54:44.400 --> 00:54:46.480
we want her oh that would be amazing
00:54:46.480 --> 00:54:47.920
yeah go ahead and invite her in I'll
00:54:47.920 --> 00:54:51.680
just cut to the scene as soon as she's
00:54:51.680 --> 00:54:56.160
I in yeah so we're reaching the ask
00:54:56.160 --> 00:54:56.799
me any
00:54:56.799 --> 00:54:58.960
anything portion of the program here
00:54:58.960 --> 00:55:01.200
with what with what time we have left
00:55:01.200 --> 00:55:02.559
for your questions
00:55:02.559 --> 00:55:05.200
please correct me if we're still like
00:55:05.200 --> 00:55:06.160
10 minutes
00:55:06.160 --> 00:55:08.799
you know if we're if we're more than
00:55:08.799 --> 00:55:10.000
like
00:55:10.000 --> 00:55:12.640
15 to 20 minutes from our time but I I
00:55:12.640 --> 00:55:13.760
suspect we've less weight
00:55:13.760 --> 00:55:16.640
left way less than that and out of
00:55:16.640 --> 00:55:17.440
respect for
00:55:17.440 --> 00:55:24.319
all the other presenters
00:55:24.319 --> 00:55:28.720
oh I don't want to close that actually
00:55:28.720 --> 00:55:30.640
I think I may have found an old version
00:55:30.640 --> 00:55:32.839
of my slides that could have some good
00:55:32.839 --> 00:55:35.200
stuff
00:55:35.200 --> 00:55:36.799
it's been an event for a couple of weeks
00:55:36.799 --> 00:55:38.799
here I had a break in and
00:55:38.799 --> 00:55:41.359
my somebody got into our bank accounts
00:55:41.359 --> 00:55:43.599
and
00:55:43.599 --> 00:55:46.880
nasty business just a lot going on over
00:55:46.880 --> 00:55:50.720
over this whole year I think
00:55:50.720 --> 00:55:53.040
do we have more questions to shag or
00:55:53.040 --> 00:55:53.839
where
00:55:53.839 --> 00:55:56.960
sure so I think
00:55:56.960 --> 00:55:58.799
there was at least one we deferred a
00:55:58.799 --> 00:56:01.040
little bit what the game
00:56:01.040 --> 00:56:05.040
is
00:56:05.040 --> 00:56:06.799
always eight characters that can be
00:56:06.799 --> 00:56:08.400
divided right that's so always eight
00:56:08.400 --> 00:56:10.000
characters that can be divided between
00:56:10.000 --> 00:56:12.160
the party is the classic formula
00:56:12.160 --> 00:56:14.319
it actually works pretty well for a
00:56:14.319 --> 00:56:16.240
conversational group remember that
00:56:16.240 --> 00:56:17.760
role-playing games are about talking to
00:56:17.760 --> 00:56:18.480
each other
00:56:18.480 --> 00:56:20.000
and being good at them is about taking
00:56:20.000 --> 00:56:22.079
excellent notes so
00:56:22.079 --> 00:56:23.200
when you're sitting around with a group
00:56:23.200 --> 00:56:24.559
of people and you're going to have to
00:56:24.559 --> 00:56:25.920
wait for them while they dig through
00:56:25.920 --> 00:56:26.880
their notes
00:56:26.880 --> 00:56:28.720
and listen to all of the things they
00:56:28.720 --> 00:56:30.319
find interesting to say
00:56:30.319 --> 00:56:32.240
and try to reach an imaginative place
00:56:32.240 --> 00:56:34.160
that you can stay together
00:56:34.160 --> 00:56:36.160
while you're doing all that and working
00:56:36.160 --> 00:56:38.319
in dice and remembering the rules
00:56:38.319 --> 00:56:40.880
it's actually a complicated activity I
00:56:40.880 --> 00:56:43.200
liken it more to a bridge game
00:56:43.200 --> 00:56:46.240
than to like
00:56:46.240 --> 00:56:48.960
you know parcheesi or perhaps even like
00:56:48.960 --> 00:56:51.359
risk or access and allies or other games
00:56:51.359 --> 00:56:52.160
that
00:56:52.160 --> 00:56:54.319
have have definitely the strategy to
00:56:54.319 --> 00:56:56.160
them but
00:56:56.160 --> 00:57:00.160
I don't Erik your thoughts
00:57:00.160 --> 00:57:03.920
yeah I mean I think that's fair
00:57:03.920 --> 00:57:06.640
you know yes definitely the the
00:57:06.640 --> 00:57:08.160
tradition is to always have eight
00:57:08.160 --> 00:57:09.440
characters in the party
00:57:09.440 --> 00:57:12.079
and you know one of the great things
00:57:12.079 --> 00:57:13.760
about Dungeon is that everybody who
00:57:13.760 --> 00:57:15.200
writes their own Dungeon
00:57:15.200 --> 00:57:18.000
gets to write their own rules and is
00:57:18.000 --> 00:57:19.440
free to change whatever
00:57:19.440 --> 00:57:21.760
you want and that being said I've
00:57:21.760 --> 00:57:22.720
certainly seen
00:57:22.720 --> 00:57:25.839
people try to take on challenging that
00:57:25.839 --> 00:57:28.079
always eight characters in a party
00:57:28.079 --> 00:57:30.640
thing I've seen people take
00:57:30.640 --> 00:57:32.640
approaches like every player gets two
00:57:32.640 --> 00:57:34.640
characters and then you can have a party
00:57:34.640 --> 00:57:36.319
ranging from two to ten
00:57:36.319 --> 00:57:38.079
or there's always going to be ten or
00:57:38.079 --> 00:57:40.000
there's you know this or that or people
00:57:40.000 --> 00:57:43.200
have tried stuff and none of it has
00:57:43.200 --> 00:57:45.280
really worked out very satisfactorily we
00:57:45.280 --> 00:57:45.839
always
00:57:45.839 --> 00:57:48.319
seem to keep coming back to our party
00:57:48.319 --> 00:57:49.680
of eight
00:57:49.680 --> 00:57:54.160
yeah it's I I I I it's one of the things
00:57:54.160 --> 00:57:55.839
Dungeon that you can't change when you
00:57:55.839 --> 00:57:57.359
write your own Dungeon
00:57:57.359 --> 00:57:58.720
and that's the reason it's so
00:57:58.720 --> 00:58:00.960
complicated as a as a software
00:58:00.960 --> 00:58:03.119
project why it's taken us decades
00:58:03.119 --> 00:58:04.559
because
00:58:04.559 --> 00:58:08.000
trying to model the data for example or
00:58:08.000 --> 00:58:11.280
really any attempt to
00:58:11.280 --> 00:58:14.160
quantify it in specific terms always
00:58:14.160 --> 00:58:15.680
falls to examples
00:58:15.680 --> 00:58:18.880
well you know Dungeons usually have
00:58:18.880 --> 00:58:22.079
elves dwarves and humans they have
00:58:22.079 --> 00:58:25.280
priests wizards and warriors they
00:58:25.280 --> 00:58:27.599
have eight characters in the party
00:58:27.599 --> 00:58:30.000
the bell rocks are particularly nasty
00:58:30.000 --> 00:58:31.680
and live in a room of some
00:58:31.680 --> 00:58:35.119
specific shape spoilers
00:58:35.119 --> 00:58:38.319
right and we don't tell you the rules
00:58:38.319 --> 00:58:39.520
and that's what you know
00:58:39.520 --> 00:58:40.960
and you sit down at the table and you
00:58:40.960 --> 00:58:42.640
say what's your character name and
00:58:42.640 --> 00:58:44.480
what's your special power
00:58:44.480 --> 00:58:48.400
and and then I say I
00:58:48.400 --> 00:58:51.599
I I'm zelda and
00:58:51.599 --> 00:58:53.839
I I have this bridge that I can put down
00:58:53.839 --> 00:58:56.000
that always gets me across the river
00:58:56.000 --> 00:58:59.040
so let's touch on special power real
00:58:59.040 --> 00:58:59.359
quick
00:58:59.359 --> 00:59:01.119
since that's one of the things that is
00:59:01.119 --> 00:59:03.280
kind of unique to Dungeon
00:59:03.280 --> 00:59:06.160
and one of the things that is the
00:59:06.160 --> 00:59:06.720
biggest
00:59:06.720 --> 00:59:08.960
challenge to us in trying to code a
00:59:08.960 --> 00:59:10.240
system like this for
00:59:10.240 --> 00:59:13.200
automated play and that's that every
00:59:13.200 --> 00:59:14.319
character gets a
00:59:14.319 --> 00:59:17.119
unique special power and traditionally
00:59:17.119 --> 00:59:18.000
you negotiate
00:59:18.000 --> 00:59:19.520
your special power with the Dungeon
00:59:19.520 --> 00:59:21.839
master when you create your character
00:59:21.839 --> 00:59:24.079
and occasionally throughout the course
00:59:24.079 --> 00:59:25.839
of the character's life their special
00:59:25.839 --> 00:59:27.359
power might change
00:59:27.359 --> 00:59:29.920
due to game circumstances usually it
00:59:29.920 --> 00:59:33.280
improves but sometimes not
00:59:33.280 --> 00:59:34.960
and that's those are the most fun
00:59:34.960 --> 00:59:36.960
conversations right sometimes we have
00:59:36.960 --> 00:59:39.440
fun gaming sessions where we barely get
00:59:39.440 --> 00:59:41.760
all the characters created and started
00:59:41.760 --> 00:59:43.680
because we get off into arguing about
00:59:43.680 --> 00:59:45.440
the special powers no zelda special
00:59:45.440 --> 00:59:48.319
powers obviously the candle come on
00:59:48.319 --> 00:59:53.359
also that was link not zelda
00:59:53.359 --> 00:59:56.240
I still have my t-shirt hey there she is
00:59:56.240 --> 01:00:01.440
let's cut scene
01:00:01.440 --> 01:00:05.839
you get video fun filters today because
01:00:05.839 --> 01:00:07.359
that's what we got going on over here
01:00:07.359 --> 01:00:08.799
today all right I'm going to recut
01:00:08.799 --> 01:00:18.079
everybody hang on tight
01:00:18.079 --> 01:00:20.799
all right there's Erik this is going to be
01:00:20.799 --> 01:00:23.200
Erik for a second hope
01:00:23.200 --> 01:00:25.200
no worries. welcome to the welcome to
01:00:25.200 --> 01:00:27.440
the stream trixie horror
01:00:27.440 --> 01:00:30.960
who is
01:00:30.960 --> 01:00:32.720
one of our project team members
01:00:32.720 --> 01:00:34.559
somebody who's learning Emacs as part of
01:00:34.559 --> 01:00:35.440
the project
01:00:35.440 --> 01:00:38.480
and yeah I
01:00:38.480 --> 01:00:40.720
I I particularly wanted to invite you on
01:00:40.720 --> 01:00:42.160
to talk about your experience learning
01:00:42.160 --> 01:00:42.640
Emacs
01:00:42.640 --> 01:00:44.640
I think you have run into places
01:00:44.640 --> 01:00:46.799
where it's a pain in the butt to learn Emacs
01:00:46.799 --> 01:00:47.839
and that this is a safe
01:00:47.839 --> 01:00:56.000
space to talk about that
01:00:56.000 --> 01:01:00.640
TRIXIE: I'll jump into that by saying the Emacs cheat sheet,
01:01:00.640 --> 01:01:03.680
I think it's the one that GNU puts out,
01:01:03.680 --> 01:01:06.559
is a lifesaver.
01:01:06.559 --> 01:01:09.440
A little bit of a vocabulary disconnect.
01:01:09.440 --> 01:01:13.359
This actually kind of comes up a lot
01:01:13.359 --> 01:01:15.200
in conversation with Corwin and Erik and
01:01:15.200 --> 01:01:18.000
I but copy paste versus
01:01:18.000 --> 01:01:21.920
what yank and w
01:01:21.920 --> 01:01:27.920
whatever w
01:01:27.920 --> 01:01:30.000
why would you even do that to us right
01:01:30.000 --> 01:01:31.200
where where were you
01:01:31.200 --> 01:01:33.359
when zero's park happened no I I
01:01:33.359 --> 01:01:38.480
understand that makes sense what else
01:01:38.480 --> 01:01:39.520
I mean you don't have to sit here and
01:01:39.520 --> 01:01:41.440
rag on Emacs but we're here for that
01:01:41.440 --> 01:01:43.119
that's all I'm saying
01:01:43.119 --> 01:01:46.799
TRIXIE: No, I'm like that's been the biggest thing.
01:01:46.799 --> 01:01:52.799
I'm used to the very binary nature, like, nope that didn't work.
01:01:52.799 --> 01:01:53.839
Try something else.
01:01:53.839 --> 01:01:59.200
So as long as you're willing to try other stuff,
01:01:59.200 --> 01:02:02.880
Emacs will be fine.
01:02:02.880 --> 01:02:06.559
it's a tough cookie I can take it
01:02:06.559 --> 01:02:08.960
worst thing that happens is you have to
01:02:08.960 --> 01:02:11.119
really install it
01:02:11.119 --> 01:02:13.520
throw your ignite file that you
01:02:13.520 --> 01:02:19.920
hopefully have a backup of
01:02:19.920 --> 01:02:21.520
all right fine
01:02:21.520 --> 01:02:24.640
ERIK: Are there more questions in the hopper?
01:02:24.640 --> 01:02:26.480
yeah if anybody does have any questions
01:02:26.480 --> 01:02:27.680
up there
01:02:27.680 --> 01:02:29.839
for hope for Erik or I so just to
01:02:29.839 --> 01:02:32.000
summarize I've known Erik
01:02:32.000 --> 01:02:34.240
I've known Erik my whole life I've known
01:02:34.240 --> 01:02:36.160
hope around a decade we
01:02:36.160 --> 01:02:39.599
worked together on a project for
01:02:39.599 --> 01:02:44.559
for a science fiction convention yeah
01:02:44.559 --> 01:02:46.880
we got conventions and then I also
01:02:46.880 --> 01:02:48.960
helped with I just wrote a bio
01:02:48.960 --> 01:02:50.799
so this should like all theoretically be
01:02:50.799 --> 01:02:53.599
in my head right
01:02:53.599 --> 01:02:58.079
I want I refer to my own bio
01:02:58.079 --> 01:03:00.160
I'm the project coordinator for Dungeon
01:03:00.160 --> 01:03:10.799
mode
01:03:10.799 --> 01:03:14.000
that's nice
01:03:14.000 --> 01:03:16.400
we've gotten a ton of support from a lot
01:03:16.400 --> 01:03:18.000
of our lifelong friends people
01:03:18.000 --> 01:03:20.480
and also people that we just met maybe
01:03:20.480 --> 01:03:22.319
that's a that's a great segue
01:03:22.319 --> 01:03:25.039
do throw your questions in there I'm
01:03:25.039 --> 01:03:26.400
going to fill for just a second and then
01:03:26.400 --> 01:03:27.839
we'll probably cut away
01:03:27.839 --> 01:03:32.319
but
01:03:32.319 --> 01:03:34.960
I mean thematically actually that's
01:03:34.960 --> 01:03:36.319
that's too abrupt so we need to go
01:03:36.319 --> 01:03:37.200
around the room
01:03:37.200 --> 01:03:39.119
Erik you had hours and hours to rehearse
01:03:39.119 --> 01:03:40.720
hope kind of jumped in on the last
01:03:40.720 --> 01:03:41.359
minute
01:03:41.359 --> 01:03:43.520
so let's let's is it okay to pick on you
01:03:43.520 --> 01:03:46.319
or do you want me to give mine
01:03:46.319 --> 01:03:48.880
to what are you asking me to do what
01:03:48.880 --> 01:03:50.000
do you what do you want people to take
01:03:50.000 --> 01:03:51.359
away from this talk
01:03:51.359 --> 01:03:54.240
you know as we think about Dungeon and
01:03:54.240 --> 01:03:55.280
sharing it's
01:03:55.280 --> 01:03:57.520
sharing its tradition as we think about
01:03:57.520 --> 01:03:58.799
learning Emacs
01:03:58.799 --> 01:04:02.799
and like making that awesome
01:04:02.799 --> 01:04:04.880
and just you know generally what's up
01:04:04.880 --> 01:04:07.599
with free software and trying to make
01:04:07.599 --> 01:04:12.480
computers a tool to make people freer
01:04:12.480 --> 01:04:15.200
wow that's like five questions yeah so
01:04:15.200 --> 01:04:15.920
I'm going to start
01:04:15.920 --> 01:04:18.960
with jumping I think
01:04:18.960 --> 01:04:22.240
that Dungeon is a lot of fun and
01:04:22.240 --> 01:04:25.359
you know I'm I've played many
01:04:25.359 --> 01:04:27.599
commercial role-playing games over the
01:04:27.599 --> 01:04:28.480
years
01:04:28.480 --> 01:04:31.680
and I've enjoyed all of them and there
01:04:31.680 --> 01:04:32.000
are
01:04:32.000 --> 01:04:34.720
very few of them that I've had as many
01:04:34.720 --> 01:04:36.319
belly laughs and as much
01:04:36.319 --> 01:04:40.160
just joy playing as from Dungeon
01:04:40.160 --> 01:04:42.799
and I think you know the magic of it is
01:04:42.799 --> 01:04:43.280
you know
01:04:43.280 --> 01:04:45.520
like any game like the real magic is the
01:04:45.520 --> 01:04:47.200
people you play with and having fun with
01:04:47.200 --> 01:04:49.599
your friends
01:04:49.599 --> 01:04:51.280
and what I would hope that people can
01:04:51.280 --> 01:04:53.440
take away from is that Dungeon has the
01:04:53.440 --> 01:04:55.920
ability to be that magical thing
01:04:55.920 --> 01:04:59.280
and hopefully we can get our project to
01:04:59.280 --> 01:05:00.000
the point
01:05:00.000 --> 01:05:02.160
where it gets out of the way and lets
01:05:02.160 --> 01:05:04.960
you have that fun with your friends
01:05:04.960 --> 01:05:07.200
but there's a lot of work to do we
01:05:07.200 --> 01:05:08.240
could use some help
01:05:08.240 --> 01:05:10.880
so if you're interested in having fun
01:05:10.880 --> 01:05:20.960
come help us build this fun tool
01:05:20.960 --> 01:05:22.319
all right so I just got the call that
01:05:22.319 --> 01:05:24.079
we've got just about two to three
01:05:24.079 --> 01:05:25.039
minutes left
01:05:25.039 --> 01:05:28.160
and we should start our wrap-up
01:05:28.160 --> 01:05:31.440
okay wrap up so
01:05:31.440 --> 01:05:34.240
yeah so I'll I'll see if I can charge
01:05:34.240 --> 01:05:35.920
the room with some energy unless you're
01:05:35.920 --> 01:05:38.480
ready to have at it hope
01:05:38.480 --> 01:05:40.720
here here's here's what I want people to
01:05:40.720 --> 01:05:42.799
take away
01:05:42.799 --> 01:05:47.039
were you like no okay
01:05:47.039 --> 01:05:53.599
I'm not getting your audio hope
01:05:53.599 --> 01:05:55.839
it's okay on my end maybe I just need to
01:05:55.839 --> 01:05:57.359
speak up
01:05:57.359 --> 01:05:58.880
is this better let me know when I'm
01:05:58.880 --> 01:06:00.640
coming through yeah you're coming
01:06:00.640 --> 01:06:01.680
through now
01:06:01.680 --> 01:06:05.359
okay cool oh no I
01:06:05.359 --> 01:06:08.799
was going to say go ahead I didn't okay
01:06:08.799 --> 01:06:10.559
I mean I I don't know that I know what I
01:06:10.559 --> 01:06:12.880
want to say either except a whole ton of
01:06:12.880 --> 01:06:13.599
thank yous
01:06:13.599 --> 01:06:16.480
so I will I will save those for the for
01:06:16.480 --> 01:06:17.200
the literal
01:06:17.200 --> 01:06:20.880
end here and instead
01:06:20.880 --> 01:06:24.160
what I would say is as we build
01:06:24.160 --> 01:06:27.839
our amazing innovations and
01:06:27.839 --> 01:06:32.160
explore our ideas in Emacs
01:06:32.160 --> 01:06:35.119
we are fighting our own ego for the will
01:06:35.119 --> 01:06:36.079
to get them done
01:06:36.079 --> 01:06:37.680
it's hard and we're not sure if they're
01:06:37.680 --> 01:06:38.960
going to be a good idea and will it
01:06:38.960 --> 01:06:40.000
excite people and part of our
01:06:40.000 --> 01:06:41.680
responsibility is to excite people so
01:06:41.680 --> 01:06:43.440
that they can feel good about liking
01:06:43.440 --> 01:06:44.240
them
01:06:44.240 --> 01:06:45.680
if you come off and you're like hey this
01:06:45.680 --> 01:06:47.359
is a terrible idea it's really hard to
01:06:47.359 --> 01:06:47.920
be like
01:06:47.920 --> 01:06:49.760
no I love that idea it works
01:06:49.760 --> 01:06:51.200
theatrically but
01:06:51.200 --> 01:06:55.680
in larger groups may not scale
01:06:55.680 --> 01:06:58.400
so that's a crucible for ideas and a
01:06:58.400 --> 01:07:00.400
crucible for teams
01:07:00.400 --> 01:07:03.280
the first part is definitely healthy the
01:07:03.280 --> 01:07:04.240
second part
01:07:04.240 --> 01:07:07.440
there's a lot we can we can do you know
01:07:07.440 --> 01:07:08.640
having upfront
01:07:08.640 --> 01:07:10.880
and and and good faith conversations on
01:07:10.880 --> 01:07:15.440
that subject
01:07:15.440 --> 01:07:17.520
anybody else wanted I want to weigh it
01:07:17.520 --> 01:07:19.119
in after that sorry that that was more
01:07:19.119 --> 01:07:23.200
of a calm down than a then a fire out
01:07:23.200 --> 01:07:27.280
oh that's okay
01:07:27.280 --> 01:07:29.280
I mean the first part of this but I
01:07:29.280 --> 01:07:30.960
think
01:07:30.960 --> 01:07:32.960
we would be remiss not to highlight org
01:07:32.960 --> 01:07:34.880
mode a little bit
01:07:34.880 --> 01:07:37.839
yeah like that's that's our bread and
01:07:37.839 --> 01:07:38.480
butter
01:07:38.480 --> 01:07:40.240
yeah our whole project is built on org
01:07:40.240 --> 01:07:42.720
mode right and I'm just really excited
01:07:42.720 --> 01:07:46.240
because like I have I don't have adhd
01:07:46.240 --> 01:07:49.680
but I have like something similar and so
01:07:49.680 --> 01:07:51.119
like to know that there's something that
01:07:51.119 --> 01:07:54.880
exists that is like purely hierarchical
01:07:54.880 --> 01:07:57.760
is incredible like I can just run a
01:07:57.760 --> 01:07:58.559
report
01:07:58.559 --> 01:08:01.839
basically and get all of my like
01:08:01.839 --> 01:08:03.839
to-do lists that I didn't have to put in
01:08:03.839 --> 01:08:05.760
one specific place
01:08:05.760 --> 01:08:10.559
and like that's kind of been
01:08:10.559 --> 01:08:14.559
a complex issue for me of like
01:08:14.559 --> 01:08:16.480
okay I have all these to-do lists like
01:08:16.480 --> 01:08:18.080
in google keep or whatever like what do
01:08:18.080 --> 01:08:18.319
I
01:08:18.319 --> 01:08:20.719
do with them now so being able to like
01:08:20.719 --> 01:08:21.359
pull them
01:08:21.359 --> 01:08:24.400
into one list and then just cycle
01:08:24.400 --> 01:08:26.640
through them is really incredible
01:08:26.640 --> 01:08:30.239
and I think taking a Dungeon and
01:08:30.239 --> 01:08:34.480
like using it to
01:08:34.480 --> 01:08:35.839
like combining it with org mode
01:08:35.839 --> 01:08:37.759
basically
01:08:37.759 --> 01:08:41.040
really yeah I'm excited about it I'm
01:08:41.040 --> 01:08:42.560
excited to see like what it can do for
01:08:42.560 --> 01:08:44.159
player groups
01:08:44.159 --> 01:08:47.759
yeah especially
01:08:47.759 --> 01:08:50.319
like I was excited about Dungeon mode
01:08:50.319 --> 01:08:52.319
before the pandemic and now like I'm
01:08:52.319 --> 01:08:53.920
only more enthusiastic
01:08:53.920 --> 01:08:57.120
so yeah definitely the pandemic has
01:08:57.120 --> 01:08:58.400
been the greatest thing that happened to
01:08:58.400 --> 01:08:59.120
this game
01:08:59.120 --> 01:09:02.080
terrible terrible as it is to say that
01:09:02.080 --> 01:09:02.640
it
01:09:02.640 --> 01:09:05.120
if we needed a hobby and it turns out
01:09:05.120 --> 01:09:06.719
role-playing games are
01:09:06.719 --> 01:09:11.279
a really good fit
01:09:11.279 --> 01:09:13.839
so so I think that's probably about
01:09:13.839 --> 01:09:14.799
our time
01:09:14.799 --> 01:09:18.560
I'm guessing that's my call and
01:09:18.560 --> 01:09:21.759
thank you very much thank you
01:09:21.759 --> 01:09:23.120
everybody
01:09:23.120 --> 01:09:25.679
we'll be around for discord and stuff
01:09:25.679 --> 01:09:31.759
later come catch us if you want to talk