summaryrefslogblamecommitdiffstats
path: root/2023/captions/emacsconf-2023-adventure--an-orgmode-based-text-adventure-game-for-learning-the-basics-of-emacs-inside-emacs-written-in-emacs-lisp--chunghong-chan--main.vtt
blob: ef19436dca4b897f1391e85ce8b5004d225d634f (plain) (tree)


























































































































































































































































































































                                                         
WEBVTT captioned by sachac, checked by sachac

NOTE Introduction

00:00:00.000 --> 00:00:04.039
Hi, I'm going to give you a little demo

00:00:04.040 --> 00:00:06.439
of a project that I'm working on

00:00:06.440 --> 00:00:09.839
which is called the `orgdungeon`.

00:00:09.840 --> 00:00:16.039
As you can see here, they are just a bunch of Org files

00:00:16.040 --> 00:00:20.559
and also an Emacs Lisp file.

00:00:20.560 --> 00:00:26.799
What I found is that if you have these Org files

00:00:26.800 --> 00:00:30.919
and then you have an Emacs Lisp file as a source

00:00:30.920 --> 00:00:36.879
to control how to progress from one file to another,

00:00:36.880 --> 00:00:40.519
it will give you a game-like experience.

00:00:40.520 --> 00:00:43.479
It's like the old game Myst.

00:00:43.480 --> 00:00:46.119
It was developed with the technology

00:00:46.120 --> 00:00:48.759
HyperCard for the Macintosh.

00:00:48.760 --> 00:00:53.199
Basically, it uses a similar technology,

00:00:53.200 --> 00:00:57.559
so a similar interface to the developer

00:00:57.560 --> 00:01:01.199
who was using that technology to develop the game.

NOTE Demo

00:01:01.200 --> 00:01:03.799
Concretely, I'm going to give you

00:01:03.800 --> 00:01:08.879
a demo of how the game looks like.

00:01:08.880 --> 00:01:14.839
So, this is a very vanilla Emacs setup.

00:01:14.840 --> 00:01:18.639
Then I open up the first Org file.

00:01:18.640 --> 00:01:22.839
The Org file is just a bunch of text,

00:01:22.840 --> 00:01:25.519
but it tells you a story.

00:01:25.520 --> 00:01:27.359
So you wake up somewhere,

00:01:27.360 --> 00:01:32.599
and then there is a dog-like robot called Emi around you.

00:01:32.600 --> 00:01:37.759
And then it tells you what you should do.

00:01:37.760 --> 00:01:40.799
Following the instructions...

00:01:40.800 --> 00:01:42.719
For example, here it tells you

00:01:42.720 --> 00:01:46.239
down there is one thing called "code block,"

00:01:46.240 --> 00:01:51.359
and then you can evaluate it by pressing `C-c C-c`.

00:01:51.360 --> 00:01:53.639
Then we can just go there

00:01:53.640 --> 00:01:55.239
and then just evaluate the code block.

00:01:55.240 --> 00:02:00.239
So technically it just runs the Emacs Lisp file,

00:02:00.240 --> 00:02:04.999
because you can see here, if you load Emacs Lisp...

00:02:05.000 --> 00:02:07.159
It just evaluates that Emacs Lisp file.

00:02:07.160 --> 00:02:09.799
I can just say `C-c C-c`.

00:02:09.800 --> 00:02:12.319
Then for this one, I just say yes,

00:02:12.320 --> 00:02:16.519
and then it will jump to another file.

00:02:16.520 --> 00:02:18.759
But in the game, I call it the plane.

00:02:18.760 --> 00:02:21.039
So it jumps to another plane.

00:02:21.040 --> 00:02:24.039
Yeah, so...

00:02:24.040 --> 00:02:26.399
In the other one, it's just saying that

00:02:26.400 --> 00:02:29.879
there is a function called `emi-escape-10`.

00:02:29.880 --> 00:02:33.479
Assuming that you don't have any experience

00:02:33.480 --> 00:02:34.759
how to use Emacs,

00:02:34.760 --> 00:02:38.759
so you have no idea how to do that,

00:02:38.760 --> 00:02:41.319
but down there, it's saying that

00:02:41.320 --> 00:02:44.319
there is a key combination called `C-h f`,

00:02:44.320 --> 00:02:48.399
and it will bring up the help system.

00:02:48.400 --> 00:02:52.559
Then you can read the help file of `emi-escape-10`.

00:02:52.560 --> 00:02:55.739
So you can just do that. For example, `C-h f`

00:02:55.740 --> 00:03:02.999
and then `describe-function` `emi-escape-10` here.

00:03:03.000 --> 00:03:06.319
It will show you the help file.

00:03:06.320 --> 00:03:10.919
Then it's just saying that you can press `M-x`,

00:03:10.920 --> 00:03:13.519
and Meta usually mapped to Alt,

00:03:13.520 --> 00:03:15.079
and then yeah.

00:03:15.080 --> 00:03:18.719
Then you can just close this help file using `C-x 1`.

00:03:18.720 --> 00:03:21.399
I'm just going to do that. And then yeah...

00:03:21.400 --> 00:03:31.479
I'm just try that. `M-x` and then `emi-escape-10`.

00:03:31.480 --> 00:03:33.359
All right.

NOTE emi-escape-12

00:03:33.360 --> 00:03:36.039
So I will jump to another file.

00:03:36.040 --> 00:03:39.359
Or in the game, you jump to another plane.

00:03:39.360 --> 00:03:40.338
And now you know that

00:03:40.339 --> 00:03:44.839
there is a function called `emi-escape-12`.

00:03:44.840 --> 00:03:47.638
And yeah, you can just do that `emi`,

00:03:47.639 --> 00:03:50.399
because you learned it previously, right.

00:03:50.400 --> 00:03:52.079
`emi-escape-12`.

00:03:52.080 --> 00:03:55.119
But this time, it asks you for a password,

00:03:55.120 --> 00:03:57.799
which you probably don't know, right?

00:03:57.800 --> 00:03:59.839
If you just type in anything,

00:03:59.840 --> 00:04:02.719
it will just say incorrect password.

00:04:02.720 --> 00:04:06.359
But yeah, it's part of the learning experience

00:04:06.360 --> 00:04:07.279
because previously you learned

00:04:07.280 --> 00:04:10.319
that you should use the help file,

00:04:10.320 --> 00:04:16.199
help system to read the help file of a function,

00:04:16.200 --> 00:04:18.319
so you can just use the help file

00:04:18.320 --> 00:04:25.839
to look for the help of `emi-escape-12`.

00:04:25.840 --> 00:04:29.519
Then, yeah, the help file will say that

00:04:29.520 --> 00:04:31.239
you should enter a password,

00:04:31.240 --> 00:04:34.159
and the password is `emi`.

00:04:34.160 --> 00:04:36.439
Right. So you can just do that.

00:04:36.440 --> 00:04:42.239
Write `emi-escape-12`,

00:04:42.240 --> 00:04:47.039
and then now you know the password is `emi`. Right.

NOTE The rest of the game

00:04:47.040 --> 00:04:51.839
So you can progress along these different files,

00:04:51.840 --> 00:04:53.519
and then if you...

00:04:53.520 --> 00:04:54.639
Okay, it's like a game,

00:04:54.640 --> 00:04:57.279
but at the same time, it also teaches you

00:04:57.280 --> 00:05:01.679
something about how Emacs works.

00:05:01.680 --> 00:05:04.599
For example, like the previous one,

00:05:04.600 --> 00:05:07.279
you know how to use the help file, for example,

00:05:07.280 --> 00:05:11.519
but in the later part, you will learn how to

00:05:11.520 --> 00:05:14.279
evaluate some Emacs Lisp code

00:05:14.280 --> 00:05:17.159
and also how to write some Emacs Lisp code

00:05:17.160 --> 00:05:19.559
as well, and then you will learn

00:05:19.560 --> 00:05:23.399
the difference between interactive commands

00:05:23.400 --> 00:05:27.239
and also just ordinary functions, for example.

00:05:27.240 --> 00:05:31.399
Now, I just created a few Org files,

00:05:31.400 --> 00:05:36.439
but I'm actively adding more Org files

00:05:36.440 --> 00:05:39.599
so that we can have a complete kind of

00:05:39.600 --> 00:05:42.559
educational experience.

00:05:42.560 --> 00:05:45.639
If you want to follow along [with] this project,

00:05:45.640 --> 00:05:51.359
you can just go to my Github repository.

00:05:51.360 --> 00:05:56.539
I hope you enjoyed this little demo.

00:05:56.540 --> 00:06:03.281
Thank you.