1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
|
<!-- Automatically generated by emacsconf-publish-after-page -->
<a name="adventure-mainVideo-transcript"></a>
# Transcript
Introduction
[[!template new="1" text="""Hi, I'm going to give you a little demo""" start="00:00:00.000" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""of a project that I'm working on""" start="00:00:04.040" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""which is called the `orgdungeon`.""" start="00:00:06.440" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""As you can see here, they are just a bunch of Org files""" start="00:00:09.840" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""and also an Emacs Lisp file.""" start="00:00:16.040" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""What I found is that if you have these Org files""" start="00:00:20.560" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""and then you have an Emacs Lisp file as a source""" start="00:00:26.800" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""to control how to progress from one file to another,""" start="00:00:30.920" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""it will give you a game-like experience.""" start="00:00:36.880" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""It's like the old game Myst.""" start="00:00:40.520" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""It was developed with the technology""" start="00:00:43.480" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""HyperCard for the Macintosh.""" start="00:00:46.120" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""Basically, it uses a similar technology,""" start="00:00:48.760" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""so a similar interface to the developer""" start="00:00:53.200" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""who was using that technology to develop the game.""" start="00:00:57.560" video="mainVideo-adventure" id="subtitle"]]
Demo
[[!template new="1" text="""Concretely, I'm going to give you""" start="00:01:01.200" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""a demo of how the game looks like.""" start="00:01:03.800" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""So, this is a very vanilla Emacs setup.""" start="00:01:08.880" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""Then I open up the first Org file.""" start="00:01:14.840" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""The Org file is just a bunch of text,""" start="00:01:18.640" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""but it tells you a story.""" start="00:01:22.840" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""So you wake up somewhere,""" start="00:01:25.520" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""and then there is a dog-like robot called Emi around you.""" start="00:01:27.360" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""And then it tells you what you should do.""" start="00:01:32.600" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""Following the instructions...""" start="00:01:37.760" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""For example, here it tells you""" start="00:01:40.800" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""down there is one thing called "code block,"""" start="00:01:42.720" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""and then you can evaluate it by pressing `C-c C-c`.""" start="00:01:46.240" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""Then we can just go there""" start="00:01:51.360" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""and then just evaluate the code block.""" start="00:01:53.640" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""So technically it just runs the Emacs Lisp file,""" start="00:01:55.240" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""because you can see here, if you load Emacs Lisp...""" start="00:02:00.240" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""It just evaluates that Emacs Lisp file.""" start="00:02:05.000" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""I can just say `C-c C-c`.""" start="00:02:07.160" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""Then for this one, I just say yes,""" start="00:02:09.800" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""and then it will jump to another file.""" start="00:02:12.320" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""But in the game, I call it the plane.""" start="00:02:16.520" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""So it jumps to another plane.""" start="00:02:18.760" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""Yeah, so...""" start="00:02:21.040" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""In the other one, it's just saying that""" start="00:02:24.040" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""there is a function called `emi-escape-10`.""" start="00:02:26.400" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""Assuming that you don't have any experience""" start="00:02:29.880" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""how to use Emacs,""" start="00:02:33.480" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""so you have no idea how to do that,""" start="00:02:34.760" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""but down there, it's saying that""" start="00:02:38.760" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""there is a key combination called `C-h f`,""" start="00:02:41.320" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""and it will bring up the help system.""" start="00:02:44.320" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""Then you can read the help file of `emi-escape-10`.""" start="00:02:48.400" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""So you can just do that. For example, `C-h f`""" start="00:02:52.560" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""and then `describe-function` `emi-escape-10` here.""" start="00:02:55.740" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""It will show you the help file.""" start="00:03:03.000" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""Then it's just saying that you can press `M-x`,""" start="00:03:06.320" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""and Meta usually mapped to Alt,""" start="00:03:10.920" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""and then yeah.""" start="00:03:13.520" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""Then you can just close this help file using `C-x 1`.""" start="00:03:15.080" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""I'm just going to do that. And then yeah...""" start="00:03:18.720" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""I'm just try that. `M-x` and then `emi-escape-10`.""" start="00:03:21.400" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""All right.""" start="00:03:31.480" video="mainVideo-adventure" id="subtitle"]]
emi-escape-12
[[!template new="1" text="""So I will jump to another file.""" start="00:03:33.360" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""Or in the game, you jump to another plane.""" start="00:03:36.040" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""And now you know that""" start="00:03:39.360" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""there is a function called `emi-escape-12`.""" start="00:03:40.339" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""And yeah, you can just do that `emi`,""" start="00:03:44.840" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""because you learned it previously, right.""" start="00:03:47.639" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""`emi-escape-12`.""" start="00:03:50.400" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""But this time, it asks you for a password,""" start="00:03:52.080" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""which you probably don't know, right?""" start="00:03:55.120" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""If you just type in anything,""" start="00:03:57.800" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""it will just say incorrect password.""" start="00:03:59.840" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""But yeah, it's part of the learning experience""" start="00:04:02.720" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""because previously you learned""" start="00:04:06.360" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""that you should use the help file,""" start="00:04:07.280" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""help system to read the help file of a function,""" start="00:04:10.320" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""so you can just use the help file""" start="00:04:16.200" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""to look for the help of `emi-escape-12`.""" start="00:04:18.320" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""Then, yeah, the help file will say that""" start="00:04:25.840" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""you should enter a password,""" start="00:04:29.520" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""and the password is `emi`.""" start="00:04:31.240" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""Right. So you can just do that.""" start="00:04:34.160" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""Write `emi-escape-12`,""" start="00:04:36.440" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""and then now you know the password is `emi`. Right.""" start="00:04:42.240" video="mainVideo-adventure" id="subtitle"]]
The rest of the game
[[!template new="1" text="""So you can progress along these different files,""" start="00:04:47.040" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""and then if you...""" start="00:04:51.840" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""Okay, it's like a game,""" start="00:04:53.520" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""but at the same time, it also teaches you""" start="00:04:54.640" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""something about how Emacs works.""" start="00:04:57.280" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""For example, like the previous one,""" start="00:05:01.680" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""you know how to use the help file, for example,""" start="00:05:04.600" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""but in the later part, you will learn how to""" start="00:05:07.280" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""evaluate some Emacs Lisp code""" start="00:05:11.520" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""and also how to write some Emacs Lisp code""" start="00:05:14.280" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""as well, and then you will learn""" start="00:05:17.160" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""the difference between interactive commands""" start="00:05:19.560" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""and also just ordinary functions, for example.""" start="00:05:23.400" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""Now, I just created a few Org files,""" start="00:05:27.240" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""but I'm actively adding more Org files""" start="00:05:31.400" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""so that we can have a complete kind of""" start="00:05:36.440" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""educational experience.""" start="00:05:39.600" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""If you want to follow along [with] this project,""" start="00:05:42.560" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""you can just go to my Github repository.""" start="00:05:45.640" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""I hope you enjoyed this little demo.""" start="00:05:51.360" video="mainVideo-adventure" id="subtitle"]]
[[!template text="""Thank you.""" start="00:05:56.540" video="mainVideo-adventure" id="subtitle"]]
Captioner: sachac
Questions or comments? Please e-mail [emacsconf-org-private@gnu.org](mailto:emacsconf-org-private@gnu.org?subject=Comment%20for%20EmacsConf%202023%20adventure%3A%20An%20Org-Mode%20based%20text%20adventure%20game%20for%20learning%20the%20basics%20of%20Emacs%2C%20inside%20Emacs%2C%20written%20in%20Emacs%20Lisp)
<!-- End of emacsconf-publish-after-page -->
|