summaryrefslogtreecommitdiffstats
path: root/2020/subtitles/emacsconf-2020--28-welcome-to-the-dungeon--erik-elmshauser-corwin-brust-autogen.vtt
blob: 24c1910c7613f4b351897e384b27bfd57f667f9f (plain) (blame)
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
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
1948
1949
1950
1951
1952
1953
1954
1955
1956
1957
1958
1959
1960
1961
1962
1963
1964
1965
1966
1967
1968
1969
1970
1971
1972
1973
1974
1975
1976
1977
1978
1979
1980
1981
1982
1983
1984
1985
1986
1987
1988
1989
1990
1991
1992
1993
1994
1995
1996
1997
1998
1999
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
2036
2037
2038
2039
2040
2041
2042
2043
2044
2045
2046
2047
2048
2049
2050
2051
2052
2053
2054
2055
2056
2057
2058
2059
2060
2061
2062
2063
2064
2065
2066
2067
2068
2069
2070
2071
2072
2073
2074
2075
2076
2077
2078
2079
2080
2081
2082
2083
2084
2085
2086
2087
2088
2089
2090
2091
2092
2093
2094
2095
2096
2097
2098
2099
2100
2101
2102
2103
2104
2105
2106
2107
2108
2109
2110
2111
2112
2113
2114
2115
2116
2117
2118
2119
2120
2121
2122
2123
2124
2125
2126
2127
2128
2129
2130
2131
2132
2133
2134
2135
2136
2137
2138
2139
2140
2141
2142
2143
2144
2145
2146
2147
2148
2149
2150
2151
2152
2153
2154
2155
2156
2157
2158
2159
2160
2161
2162
2163
2164
2165
2166
2167
2168
2169
2170
2171
2172
2173
2174
2175
2176
2177
2178
2179
2180
2181
2182
2183
2184
2185
2186
2187
2188
2189
2190
2191
2192
2193
2194
2195
2196
2197
2198
2199
2200
2201
2202
2203
2204
2205
2206
2207
2208
2209
2210
2211
2212
2213
2214
2215
2216
2217
2218
2219
2220
2221
2222
2223
2224
2225
2226
2227
2228
2229
2230
2231
2232
2233
2234
2235
2236
2237
2238
2239
2240
2241
2242
2243
2244
2245
2246
2247
2248
2249
2250
2251
2252
2253
2254
2255
2256
2257
2258
2259
2260
2261
2262
2263
2264
2265
2266
2267
2268
2269
2270
2271
2272
2273
2274
2275
2276
2277
2278
2279
2280
2281
2282
2283
2284
2285
2286
2287
2288
2289
2290
2291
2292
2293
2294
2295
2296
2297
2298
2299
2300
2301
2302
2303
2304
2305
2306
2307
2308
2309
2310
2311
2312
2313
2314
2315
2316
2317
2318
2319
2320
2321
2322
2323
2324
2325
2326
2327
2328
2329
2330
2331
2332
2333
2334
2335
2336
2337
2338
2339
2340
2341
2342
2343
2344
2345
2346
2347
2348
2349
2350
2351
2352
2353
2354
2355
2356
2357
2358
2359
2360
2361
2362
2363
2364
2365
2366
2367
2368
2369
2370
2371
2372
2373
2374
2375
2376
2377
2378
2379
2380
2381
2382
2383
2384
2385
2386
2387
2388
2389
2390
2391
2392
2393
2394
2395
2396
2397
2398
2399
2400
2401
2402
2403
2404
2405
2406
2407
2408
2409
2410
2411
2412
2413
2414
2415
2416
2417
2418
2419
2420
2421
2422
2423
2424
2425
2426
2427
2428
2429
2430
2431
2432
2433
2434
2435
2436
2437
2438
2439
2440
2441
2442
2443
2444
2445
2446
2447
2448
2449
2450
2451
2452
2453
2454
2455
2456
2457
2458
2459
2460
2461
2462
2463
2464
2465
2466
2467
2468
2469
2470
2471
2472
2473
2474
2475
2476
2477
2478
2479
2480
2481
2482
2483
2484
2485
2486
2487
2488
2489
2490
2491
2492
2493
2494
2495
2496
2497
2498
2499
2500
2501
2502
2503
2504
2505
2506
2507
2508
2509
2510
2511
2512
2513
2514
2515
2516
2517
2518
2519
2520
2521
2522
2523
2524
2525
2526
2527
2528
2529
2530
2531
2532
2533
2534
2535
2536
2537
2538
2539
2540
2541
2542
2543
2544
2545
2546
2547
2548
2549
2550
2551
2552
2553
2554
2555
2556
2557
2558
2559
2560
2561
2562
2563
2564
2565
2566
2567
2568
2569
2570
2571
2572
2573
2574
2575
2576
2577
2578
2579
2580
2581
2582
2583
2584
2585
2586
2587
2588
2589
2590
2591
2592
2593
2594
2595
2596
2597
2598
2599
2600
2601
2602
2603
2604
2605
2606
2607
2608
2609
2610
2611
2612
2613
2614
2615
2616
2617
2618
2619
2620
2621
2622
2623
2624
2625
2626
2627
2628
2629
2630
2631
2632
2633
2634
2635
2636
2637
2638
2639
2640
2641
2642
2643
2644
2645
2646
2647
2648
2649
2650
2651
2652
2653
2654
2655
2656
2657
2658
2659
2660
2661
2662
2663
2664
2665
2666
2667
2668
2669
2670
2671
2672
2673
2674
2675
2676
2677
2678
2679
2680
2681
2682
2683
2684
2685
2686
2687
2688
2689
2690
2691
2692
2693
2694
2695
2696
2697
2698
2699
2700
2701
2702
2703
2704
2705
2706
2707
2708
2709
2710
2711
2712
2713
2714
2715
2716
2717
2718
2719
2720
2721
2722
2723
2724
2725
2726
2727
2728
2729
2730
2731
2732
2733
2734
2735
2736
2737
2738
2739
2740
2741
2742
2743
2744
2745
2746
2747
2748
2749
2750
2751
2752
2753
2754
2755
2756
2757
2758
2759
2760
2761
2762
2763
2764
2765
2766
2767
2768
2769
2770
2771
2772
2773
2774
2775
2776
2777
2778
2779
2780
2781
2782
2783
2784
2785
2786
2787
2788
2789
2790
2791
2792
2793
2794
2795
2796
2797
2798
2799
2800
2801
2802
2803
2804
2805
2806
2807
2808
2809
2810
2811
2812
2813
2814
2815
2816
2817
2818
2819
2820
2821
2822
2823
2824
2825
2826
2827
2828
2829
2830
2831
2832
2833
2834
2835
2836
2837
2838
2839
2840
2841
2842
2843
2844
2845
2846
2847
2848
2849
2850
2851
2852
2853
2854
2855
2856
2857
2858
2859
2860
2861
2862
2863
2864
2865
2866
2867
2868
2869
2870
2871
2872
2873
2874
2875
2876
2877
2878
2879
2880
2881
2882
2883
2884
2885
2886
2887
2888
2889
2890
2891
2892
2893
2894
2895
2896
2897
2898
2899
2900
2901
2902
2903
2904
2905
2906
2907
2908
2909
2910
2911
2912
2913
2914
2915
2916
2917
2918
2919
2920
2921
2922
2923
2924
2925
2926
2927
2928
2929
2930
2931
2932
2933
2934
2935
2936
2937
2938
2939
2940
2941
2942
2943
2944
2945
2946
2947
2948
2949
2950
2951
2952
2953
2954
2955
2956
2957
2958
2959
2960
2961
2962
2963
2964
2965
2966
2967
2968
2969
2970
2971
2972
2973
2974
2975
2976
2977
2978
2979
2980
2981
2982
2983
2984
2985
2986
2987
2988
2989
2990
2991
2992
2993
2994
2995
2996
2997
2998
2999
3000
3001
3002
3003
3004
3005
3006
3007
3008
3009
3010
3011
3012
3013
3014
3015
3016
3017
3018
3019
3020
3021
3022
3023
3024
3025
3026
3027
3028
3029
3030
3031
3032
3033
3034
3035
3036
3037
3038
3039
3040
3041
3042
3043
3044
3045
3046
3047
3048
3049
3050
3051
3052
3053
3054
3055
3056
3057
3058
3059
3060
3061
3062
3063
3064
3065
3066
3067
3068
3069
3070
3071
3072
3073
3074
3075
3076
3077
3078
3079
3080
3081
3082
3083
3084
3085
3086
3087
3088
3089
3090
3091
3092
3093
3094
3095
3096
3097
3098
3099
3100
3101
3102
3103
3104
3105
3106
3107
3108
3109
3110
3111
3112
3113
3114
3115
3116
3117
3118
3119
3120
3121
3122
3123
3124
3125
3126
3127
3128
3129
3130
3131
3132
3133
3134
3135
3136
3137
3138
3139
3140
3141
3142
3143
3144
3145
3146
3147
3148
3149
3150
3151
3152
3153
3154
3155
3156
3157
3158
3159
3160
3161
3162
3163
3164
3165
3166
3167
3168
3169
3170
3171
3172
3173
3174
3175
3176
3177
3178
3179
3180
3181
3182
3183
3184
3185
3186
3187
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 and this is Corwin,

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 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:02.160 --> 00:13:12.570
And, I mean, we've, you know, it took a while for us to kind of

00:13:12.570 --> 00:13:15.870
tease apart the problem in a way where we could actually

00:13:15.870 --> 00:13:19.370
list out all of the features, like, what are the problems

00:13:19.370 --> 00:13:22.160
we have to solve and how do we solve them?

00:13:27.160 --> 00:13:31.050
So, creating any free software, any self-organizing free

00:13:31.050 --> 00:13:34.740
software project is challenging to start with, and we're

00:13:34.740 --> 00:13:38.530
generally people with a bunch of other responsibilities by

00:13:38.530 --> 00:13:43.570
the time we get to it. So, it's not just, hey, you know,

00:13:43.570 --> 00:13:48.350
the general herding cats, it's, you know, trying to make it

00:13:48.350 --> 00:13:50.160
a part of your life, too.

00:13:52.160 --> 00:13:56.570
That being kind of a, you know, challenging battle, we kind

00:13:56.570 --> 00:14:00.580
of aligned on some principles that we wanted to adhere to

00:14:00.580 --> 00:14:04.160
once we started taking the project seriously.

00:14:04.160 --> 00:14:10.640
Like, you know, particularly recognizing GNU in specific as

00:14:10.640 --> 00:14:14.160
we focus on giving back to the community.

00:14:15.160 --> 00:14:19.830
Taking what we learned as Perl programmers and, you know,

00:14:19.830 --> 00:14:23.920
bringing that spirit forward into our work and maybe

00:14:23.920 --> 00:14:28.830
specifically support, making sure that we can, you know,

00:14:28.830 --> 00:14:34.160
write functions for the game in Perl if we want to.

00:14:35.160 --> 00:14:40.250
And then to use the game as a vehicle to make people look

00:14:40.250 --> 00:14:45.510
beyond the typically open source – sorry, typically nom

00:14:45.510 --> 00:14:50.290
inally open source at best, generally pretty closed world of

00:14:50.290 --> 00:14:52.160
computer gaming.

00:14:52.160 --> 00:14:55.260
A lot of Windows users out there, a lot of non-free

00:14:55.260 --> 00:14:58.670
communication tools, and a lot of, you know, a lot of

00:14:58.670 --> 00:15:02.160
ground to cover from a free software perspective.

00:15:03.160 --> 00:15:08.160
So what can Emacs do from a gaming standpoint to open that up?

00:15:08.160 --> 00:15:12.960
And not to mention the hubris of the, you know, the two of

00:15:12.960 --> 00:15:17.600
us with a few friends basically deciding to take on what

00:15:17.600 --> 00:15:20.160
amounts to a huge project.

00:15:20.160 --> 00:15:24.080
You know, we're essentially a year in now and we haven't

00:15:24.080 --> 00:15:29.160
really gotten over halfway to our minimum play testable candidate.

00:15:30.160 --> 00:15:34.160
It's a work in progress. We've got a long road to go.

00:15:34.160 --> 00:15:37.310
There's at least 50 items on the things that we think are

00:15:37.310 --> 00:15:40.390
critical to be able to introduce it to my younger kids, for

00:15:40.390 --> 00:15:41.160
example.

00:15:41.160 --> 00:15:48.650
Okay, so we're in the accomplishments section. So we're

00:15:48.650 --> 00:15:51.700
supposed to be talking about the things that we have

00:15:51.700 --> 00:15:54.160
succeeded in doing in our first year.

00:15:55.160 --> 00:15:59.580
We have succeeded in working with data in org documents,

00:15:59.580 --> 00:16:04.030
using org mode tables to store the data that we're going to

00:16:04.030 --> 00:16:07.160
use in the various parts of our game.

00:16:07.160 --> 00:16:14.440
And we've had a lot of success with svg.el. It started with

00:16:14.440 --> 00:16:18.130
drawing maps and we have another talk about our mapping

00:16:18.130 --> 00:16:20.160
specifically coming up next.

00:16:21.160 --> 00:16:25.160
So we'll put off some of that discussion for a separate talk.

00:16:25.160 --> 00:16:30.050
But we've also succeeded in getting into a bunch of

00:16:30.050 --> 00:16:36.770
different elements of the game where we're, you know,

00:16:36.770 --> 00:16:39.340
making a lot of progress using this drawing engine we

00:16:39.340 --> 00:16:43.360
developed to also draw this other thing and also draw this

00:16:43.360 --> 00:16:45.160
other thing and also draw this other thing.

00:16:46.160 --> 00:16:46.160
And we kind of backed into, we've got this aesthetic

00:16:46.161 --> 00:16:54.750
and we're using it to draw interfaces for all of the different

00:16:54.750 --> 00:16:56.160
parts of the game.

00:16:56.160 --> 00:17:08.160
So let's talk a little bit about what works now.

00:17:11.160 --> 00:17:15.330
First of all, there's the mapping part that Erik mentioned

00:17:15.330 --> 00:17:19.040
and we'll jump here into, we'll start opening up some files

00:17:19.040 --> 00:17:20.160
and looking around.

00:17:20.160 --> 00:17:25.060
But then also later we'll fire up an IELM and look at some

00:17:25.060 --> 00:17:28.160
of the other proofs of concept.

00:17:28.160 --> 00:17:31.350
So hopefully we can pivot the second talk more toward the

00:17:31.350 --> 00:17:34.520
demos as we skip some of the interactive stuff that might

00:17:34.520 --> 00:17:37.160
be mentioned in the slides that we go by.

00:17:37.160 --> 00:17:38.160
Okay.

00:17:38.160 --> 00:17:48.160
So, maps, visual battleboard.

00:17:48.160 --> 00:17:51.160
The battleboard...

00:17:51.160 --> 00:17:55.160
I'm just going to skip it Erik, we'll hit it in the next one.

00:17:55.160 --> 00:17:57.160
Okay.

00:17:57.160 --> 00:18:03.160
Hang on.

00:18:05.160 --> 00:18:07.660
Okay, so I'm just going to go ahead and open up maps and

00:18:07.660 --> 00:18:12.490
let you talk from the SVG process itself, because that's

00:18:12.490 --> 00:18:15.160
the interesting part to me.

00:18:15.160 --> 00:18:21.160
Okay.

00:18:22.160 --> 00:18:26.350
Talk about the SVG process, like what do you think exactly

00:18:26.350 --> 00:18:31.310
we want to talk about? How we turn our data into an image

00:18:31.310 --> 00:18:34.160
or what are you hoping for?

00:18:34.160 --> 00:18:40.140
Yeah, so I mean did you want to talk more from the hand-d

00:18:40.140 --> 00:18:43.160
rawn SVG graphics at all?

00:18:43.160 --> 00:18:48.160
I thought we were going to save that stuff for the pathing talk.

00:18:48.160 --> 00:18:49.160
Okay, that sounds fine.

00:18:49.160 --> 00:18:50.160
But we can go into it right now if you want.

00:18:50.160 --> 00:18:54.640
Yeah, so we've got about 10 minutes before the turn where

00:18:54.640 --> 00:18:58.470
we thought we would first take any questions that are

00:18:58.470 --> 00:19:00.160
hanging out there.

00:19:00.160 --> 00:19:04.160
I unfortunately closed the Etherpad, but I can open it again real quick.

00:19:04.160 --> 00:19:09.850
Or you can jump into the pathing stuff now, or I can just

00:19:09.850 --> 00:19:14.160
throw open an IELM and we can start the demos.

00:19:15.160 --> 00:19:20.600
So let me invite Amin or Sacha back in, or Leo, if any of

00:19:20.600 --> 00:19:23.350
you want to join the conversation and make a suggestion as

00:19:23.350 --> 00:19:27.160
to how we balance between the remaining time.

00:19:27.160 --> 00:19:30.300
The rest of what we have left starts in on toward the

00:19:30.300 --> 00:19:34.250
technical, so especially if there would be questions about

00:19:34.250 --> 00:19:37.160
the game right now, that would be awesome.

00:19:37.160 --> 00:19:42.160
And I'm going to get seated again.

00:19:44.160 --> 00:19:48.870
I'm not sure if I talk over the stream, if you'll hear it,

00:19:48.870 --> 00:19:57.160
because I'm just watching your stream, but I can try writing on IRC.

00:20:01.160 --> 00:20:06.140
Sure, yeah, questions would be cool. Or, yeah, well Erik,

00:20:06.140 --> 00:20:08.980
why don't you just go ahead and start walking us through

00:20:08.980 --> 00:20:12.000
the hand drawn SVG stuff just a little bit, because I think

00:20:12.000 --> 00:20:14.950
if that isn't interesting to people, we can just preempt

00:20:14.950 --> 00:20:16.160
for a question.

00:20:17.160 --> 00:20:23.010
Okay, so historically when we decided to actually start

00:20:23.010 --> 00:20:27.080
writing code, one of the very first things we wanted to do

00:20:27.080 --> 00:20:30.990
was the maps, because initially it seemed like the maps

00:20:30.990 --> 00:20:34.750
were going to be one of the biggest challenges in terms of

00:20:34.750 --> 00:20:37.160
how do we get a text editor to draw pictures for us.

00:20:40.160 --> 00:20:44.350
So, we pretty quickly decided we wanted to work with SVGs

00:20:44.350 --> 00:20:48.370
because it allowed us to leverage the power of Emacs as a

00:20:48.370 --> 00:20:53.680
text editor and a text manipulator to write text graphics

00:20:53.680 --> 00:20:56.160
with the SVG format.

00:20:56.160 --> 00:20:59.770
So we did some SVG graphics by hand, we went in and just

00:20:59.770 --> 00:21:03.620
started hand coding things that looked visually like the

00:21:03.620 --> 00:21:07.300
maps we used to draw by hand on graph paper when we were,

00:21:07.300 --> 00:21:10.160
you know, sitting around the table.

00:21:10.160 --> 00:21:13.160
Yep, absolutely.

00:21:13.160 --> 00:21:17.610
What emerged from that is as we started working on some of

00:21:17.610 --> 00:21:22.140
these files, this particular image is a test of some 20

00:21:22.140 --> 00:21:25.910
wide water with some beaches around it and a special

00:21:25.910 --> 00:21:29.160
chamber kind of off to the side called a clapper.

00:21:29.160 --> 00:21:32.960
And this was the way we would code is by sketching by hand

00:21:32.960 --> 00:21:36.940
all of these things to look right. And then we would take

00:21:36.940 --> 00:21:40.810
that code and we noticed it became real repetitive as we

00:21:40.810 --> 00:21:45.160
would go like chunk of water chunk of water chunk of water.

00:21:45.160 --> 00:21:48.860
And we're like okay so what we really need is to define a

00:21:48.860 --> 00:21:52.620
set of, we call it tiles, but like you can think of it as

00:21:52.620 --> 00:21:56.660
rubber stamps where we write this graphics code, and then

00:21:56.660 --> 00:22:01.160
we're able to repeat it in different places around the map.

00:22:01.160 --> 00:22:05.680
You want to flip over to code view and show that or do we

00:22:05.680 --> 00:22:09.160
want to move into. Sure.

00:22:09.160 --> 00:22:10.160
Code view.

00:22:10.160 --> 00:22:14.700
So, you know, you can see just really obviously here the

00:22:14.700 --> 00:22:19.240
only thing that's changing from chunk of water to chunk of

00:22:19.240 --> 00:22:22.160
water is the x and y coordinates.

00:22:22.160 --> 00:22:26.990
And, you know, we can skip getting into the SVG directives

00:22:26.990 --> 00:22:31.640
and how all of the path statements actually work, but you

00:22:31.640 --> 00:22:36.230
can trust us, all of these D equals and there's m's and h's

00:22:36.230 --> 00:22:41.160
and V's that turns out to be horizontal lines and vertical

00:22:41.160 --> 00:22:42.160
lines and cursor moves

00:22:42.160 --> 00:22:46.900
kind of like turtle graphics if anyone remembers that far

00:22:46.900 --> 00:22:50.910
back, and we're picking up our pen and dropping it and

00:22:50.910 --> 00:22:54.160
drawing lines around on our map.

00:22:54.160 --> 00:22:58.090
Okay, so we do have a few questions if you want to take

00:22:58.090 --> 00:23:01.160
them now otherwise we can also jump in.

00:23:01.160 --> 00:23:05.160
Let's get them while they're fresh. Okay, sounds good.

00:23:05.160 --> 00:23:08.540
So we'll probably shift to question and answer mode for up

00:23:08.540 --> 00:23:12.490
to 15 minutes here. So if you do have questions, maybe

00:23:12.490 --> 00:23:15.740
stack rank, go ahead and sort the questions a little for us

00:23:15.740 --> 00:23:18.880
or comment on them to let us know which ones you want to

00:23:18.880 --> 00:23:21.540
see us get here if we start getting a little long winded or

00:23:21.540 --> 00:23:23.160
not just a long, we'll take direction.

00:23:23.160 --> 00:23:26.160
But thanks for your questions.

00:23:26.160 --> 00:23:30.050
I'd like to see a demo as well we'll look at that with the

00:23:30.050 --> 00:23:33.160
remaining time after this question block.

00:23:33.160 --> 00:23:38.000
More about what the game is okay sure. So let's let's take

00:23:38.000 --> 00:23:42.510
our one minute each swing at what the game is, you want to

00:23:42.510 --> 00:23:45.160
go first, I called weapons.

00:23:45.160 --> 00:23:47.160
Okay.

00:23:47.160 --> 00:23:52.180
Dungeon is like role playing games, but you don't really do

00:23:52.180 --> 00:23:56.990
role playing like the, for me the thing the core of being a

00:23:56.990 --> 00:24:01.400
role playing game is you take on the role of being your

00:24:01.400 --> 00:24:06.500
character and you play your character and dungeons not like

00:24:06.500 --> 00:24:08.160
that dungeon.

00:24:08.160 --> 00:24:11.160
You can play.

00:24:11.160 --> 00:24:14.660
So, the dungeon party always has eight characters in it.

00:24:14.660 --> 00:24:17.890
There's four in the front row and four in the back row and

00:24:17.890 --> 00:24:22.160
you march through the dungeon, fighting, whatever you encounter.

00:24:22.160 --> 00:24:25.700
And if there's one player you play all eight characters.

00:24:25.700 --> 00:24:29.180
And depending on how many players you have you split up the

00:24:29.180 --> 00:24:33.160
party in whatever way seems fair and equitable to everybody.

00:24:33.160 --> 00:24:36.010
And similarly I said the dungeon is kind of a simple game

00:24:36.010 --> 00:24:38.720
like there's only three races and there's only three

00:24:38.720 --> 00:24:42.160
classes, all of your characters are either human elf dwarf.

00:24:42.160 --> 00:24:45.680
They're all a warrior, a priest or a wizard, and all of

00:24:45.680 --> 00:24:49.400
these characters have, you know, special properties and

00:24:49.400 --> 00:24:52.820
special talents, that is why they come together in this

00:24:52.820 --> 00:24:54.160
party of eight.

00:24:54.160 --> 00:24:57.730
So essentially dungeon is a game about making up all of

00:24:57.730 --> 00:25:01.530
these eight characters and stomping through the dungeon

00:25:01.530 --> 00:25:04.160
killing things taking their stuff.

00:25:04.160 --> 00:25:08.120
Well you're way over but I don't know how much I have to

00:25:08.120 --> 00:25:12.160
add to that. I will just add that if, if you're.

00:25:12.160 --> 00:25:15.570
If one's passion as a dungeon master is killing player

00:25:15.570 --> 00:25:19.210
characters this game is meant for you. You don't have to

00:25:19.210 --> 00:25:23.050
build your game like that. But that's definitely a thing

00:25:23.050 --> 00:25:25.160
that people do with this game.

00:25:25.160 --> 00:25:28.430
And then as Erik said, it just encourages you to put your

00:25:28.430 --> 00:25:32.160
creativity on the table to bring all the different elements.

00:25:32.160 --> 00:25:35.830
Hopefully, this may be clear in our slides since we were a

00:25:35.830 --> 00:25:39.430
little fumbling for the first few minutes of the talk

00:25:39.431 --> 00:25:44.160
but there's also a kind of a player's guide that I started a few years ago.

00:25:44.160 --> 00:25:47.950
That's not super complete, but does cover some

00:25:47.950 --> 00:25:52.160
of the high level basics of the game that Erik's been talking from.

00:25:52.160 --> 00:25:55.800
And I would add that some of the things that you know some

00:25:55.800 --> 00:25:58.890
of what makes dungeon great is that there's a lot of

00:25:58.890 --> 00:26:02.950
mystery about it, like the player's handbook doesn't tell

00:26:02.950 --> 00:26:07.020
you all of the rules, or like any really mystery and like

00:26:07.020 --> 00:26:09.160
there's mazes and there's puzzles,

00:26:09.160 --> 00:26:12.650
and you have to figure out how things work, and like we've

00:26:12.650 --> 00:26:16.020
got all of these treasure items in there that could help

00:26:16.020 --> 00:26:20.160
you deal with a particular monster if it occurs to you to use it.

00:26:20.160 --> 00:26:24.160
And, you know, like that. There's a lot of.

00:26:24.160 --> 00:26:27.450
You don't know what's going on you're dropped in the middle

00:26:27.450 --> 00:26:30.680
of this situation and you have to try and survive and level

00:26:30.680 --> 00:26:33.750
up and figure it out. And if you succeed in doing that for

00:26:33.750 --> 00:26:36.520
a long enough eventually you start realizing that there are

00:26:36.520 --> 00:26:40.890
big picture puzzles that there are, you know, there is more to this than just

00:26:40.890 --> 00:26:43.160
killing things and taking their stuff.

00:26:43.160 --> 00:26:46.190
And that's where the joy of designing these games comes in

00:26:46.190 --> 00:26:48.890
for me is like designing the mazes and designing the

00:26:48.890 --> 00:26:51.890
puzzles and like, oh yeah and then they're going to come

00:26:51.890 --> 00:26:51.890
out of this room and you know what they're going to do.

00:26:51.891 --> 00:26:57.160
They're wanting to go that way.

00:26:57.160 --> 00:27:00.160
So I'm going to put the trap right there.

00:27:00.160 --> 00:27:00.160
And I walk right into it every time.

00:27:00.161 --> 00:27:00.161
And then when the party does get in your map

00:27:00.162 --> 00:27:00.162
and they do exactly what you thought and they hit the trap

00:27:00.163 --> 00:27:07.820
it's just really satisfying

00:27:07.820 --> 00:27:07.820
to watch the look on their little faces

00:27:07.821 --> 00:27:12.160
as they squirm and struggle to stay alive.

00:27:12.160 --> 00:27:14.580
Yeah, that's, that's what I was trying to get at. Thanks.

00:27:14.580 --> 00:27:18.160
All right, that was perfect for me. All right.

00:27:18.160 --> 00:27:21.360
So so highlight your question for me if you think it's

00:27:21.360 --> 00:27:24.800
important we grab it here before we jump into demos,

00:27:24.801 --> 00:27:28.160
but otherwise I think it's time to try running some code.

00:27:28.160 --> 00:27:30.160
Let's say.

00:27:30.160 --> 00:27:37.160
Okay, I say do it. Okay, so you less less camera more more emacs now.

00:27:37.160 --> 00:27:40.380
And hopefully I could find the right emacs the right

00:27:40.380 --> 00:27:43.160
desktop. All right, there we are.

00:27:43.160 --> 00:27:49.160
So we'll try to fire up

00:27:49.160 --> 00:27:59.160
a command right now. And I usually like to do the full path to emacs.

00:27:59.160 --> 00:28:07.160
When I'm going to run it under minus q.

00:28:07.160 --> 00:28:13.160
All right.

00:28:13.160 --> 00:28:17.160
Let's have some IELM.

00:28:17.160 --> 00:28:23.270
All right, and then I'm also going to do a load file on the

00:28:23.270 --> 00:28:29.790
net script that you can find in the repository in the emacs

00:28:29.790 --> 00:28:36.160
user and it's init scripts

00:28:36.160 --> 00:28:41.160
users folder

00:28:41.160 --> 00:28:48.160
nice.

00:28:48.160 --> 00:28:51.530
And it's called init-dm because that happened to fit with

00:28:51.531 --> 00:28:54.160
my naming scheme, potentially terrible.

00:28:54.160 --> 00:28:54.160
All right, and with that loaded in theory some very basic stuff will work

00:28:54.161 --> 00:28:54.161
even without us doing anything in IELM

00:28:54.162 --> 00:29:05.870
so I think the last thing Erik was talking about

00:29:05.871 --> 00:29:07.160
was the SVG code behind the maps.

00:29:07.160 --> 00:29:11.800
There as kind of the technical thread so we'll just fire

00:29:11.800 --> 00:29:15.160
open the maps, pick a dungeon level.

00:29:15.160 --> 00:29:17.160
Let's pick a pretty one.

00:29:17.160 --> 00:29:19.160
Okay, if I show this.

00:29:19.160 --> 00:29:23.160
Yeah, whatever.

00:29:23.160 --> 00:29:27.160
Is that the surface. Yeah.

00:29:27.160 --> 00:29:32.740
And let's scale it here I think if I recall that fun like

00:29:32.740 --> 00:29:36.820
once, once we got the engine up and running a little bit.

00:29:36.820 --> 00:29:40.870
We decided to do some experimentation about seeing

00:29:40.871 --> 00:29:47.160
what we could do to push the limits of our tile engine.

00:29:47.160 --> 00:29:54.450
So we more or less on the surface map, I basically started

00:29:54.450 --> 00:29:54.450
with almost no tiles from below like the water

00:29:54.451 --> 00:30:01.370
and the beaches and the general store and the stairs were existing tiles

00:30:01.371 --> 00:30:04.730
but then we were like this is going to be surface maps.

00:30:04.731 --> 00:30:07.160
We're outdoors so I want hills

00:30:07.160 --> 00:30:11.150
and I want trees, and I want grass, and it took a little

00:30:11.150 --> 00:30:15.430
while playing with SVG to come up with some acceptable code,

00:30:15.430 --> 00:30:19.610
but once the like the grass gets tiled out, it kind of,

00:30:19.610 --> 00:30:24.510
you know, gives the illusion of grass, and, you know, these

00:30:24.510 --> 00:30:25.160
are all in my estimation

00:30:25.160 --> 00:30:29.970
of crude graphics, but we're at the proof of concept stage,

00:30:29.970 --> 00:30:34.130
and it definitely proves that we can use our graphics

00:30:34.130 --> 00:30:38.490
engine to decide what we want our maps to look like, and

00:30:38.490 --> 00:30:42.970
real quickly compose new map tiles and stamp out a bunch of

00:30:42.970 --> 00:30:44.160
new maps.

00:30:44.160 --> 00:30:48.050
So now I'll show off one of the other things. So the next

00:30:48.050 --> 00:30:51.680
thing we did once we once we had the maps doing, and we

00:30:51.680 --> 00:30:56.040
haven't gotten into the features of the maps we can we can

00:30:56.040 --> 00:30:59.200
appoint time to that or not, but there are a number of

00:30:59.200 --> 00:31:01.160
features there that we can look at.

00:31:01.160 --> 00:31:06.310
The, we then wanted to try to see if that could make other

00:31:06.310 --> 00:31:11.550
interfaces more appealing so we built stuff like, that's

00:31:11.550 --> 00:31:14.160
going to be the map again.

00:31:14.160 --> 00:31:18.580
I'll just run it here through I am so it's more obvious

00:31:18.580 --> 00:31:20.160
what I'm doing.

00:31:20.160 --> 00:31:23.160
So let's look next to the character sheet.

00:31:23.160 --> 00:31:27.160
Oops.

00:31:27.160 --> 00:31:33.160
And alt P doesn't work. Okay.

00:31:33.160 --> 00:31:35.160
That's a bummer.

00:31:35.160 --> 00:31:38.160
That is not auto loaded.

00:31:38.160 --> 00:31:41.120
So this, this project is a bit of a mess right now, y'all,

00:31:41.120 --> 00:31:43.800
it does some stuff that's really exciting to us but the

00:31:43.800 --> 00:31:46.560
code is terrible and we need all the help we can get being

00:31:46.560 --> 00:31:49.160
told what our problems are and how to fix them.

00:31:49.160 --> 00:31:53.160
So that is if you take nothing away from this talk.

00:31:53.160 --> 00:32:00.160
Take away from it that we could use your help.

00:32:00.160 --> 00:32:03.692
Yeah, that doubles back to when we were talking about

00:32:03.693 --> 00:32:07.800
Larry Wall's cardinal virtues of programming like we definitely

00:32:07.800 --> 00:32:11.160
took on some hubris, thinking we could do this.

00:32:11.160 --> 00:32:14.300
We might not be wrong, but we could do it easier with more

00:32:14.300 --> 00:32:18.160
hands, you know, many hands make light work. All right.

00:32:18.160 --> 00:32:21.160
I'll bite.

00:32:21.160 --> 00:32:24.580
Yeah, and the character she won't load for us today I had

00:32:24.580 --> 00:32:27.880
some problems with my version control I had to revert my

00:32:27.880 --> 00:32:31.290
thing I threw all my local changes in a stash and it's it's

00:32:31.290 --> 00:32:35.160
a terrible mess let's look at stuff I tested already today.

00:32:35.160 --> 00:32:40.160
Before you got the battle board available.

00:32:40.160 --> 00:32:42.160
Let's find out.

00:32:42.160 --> 00:32:46.160
First of all, the library.

00:32:46.160 --> 00:32:57.160
In fact, actually, your basic require should work.

00:32:57.160 --> 00:32:59.160
No.

00:32:59.160 --> 00:33:03.490
You can try a load library. You know what, let's, I'm just

00:33:03.490 --> 00:33:07.350
going to go ahead and give it to you as a lab beast, since

00:33:07.350 --> 00:33:10.160
that's probably more fun to watch.

00:33:10.160 --> 00:33:16.570
So we'll take it from my own and this is more likely to be

00:33:16.570 --> 00:33:17.160
healthy.

00:33:17.160 --> 00:33:19.160
Since only some of the time.

00:33:19.160 --> 00:33:25.160
First we have to control x, all the IDM.

00:33:25.160 --> 00:33:30.360
All right, and having then loaded the net control you have

00:33:30.360 --> 00:33:35.550
nine should give me the maps, and we can verify things work

00:33:35.550 --> 00:33:39.160
in a basic way just by changing level.

00:33:39.160 --> 00:33:44.160
Let's look at something else.

00:33:44.160 --> 00:33:49.380
I mentioned, there were a number of bindings, show them

00:33:49.380 --> 00:33:50.160
briefly.

00:33:50.160 --> 00:33:55.820
We wrote our own functions to handle movement. Some of

00:33:55.820 --> 00:34:00.872
those in SVG dot el the left, left and right movements

00:34:00.873 --> 00:34:07.160
didn't seem to work quite quite likely coding, of course.

00:34:07.160 --> 00:34:10.160
Um, all right, enough.

00:34:10.160 --> 00:34:13.160
So let's, let's see if battle board works now.

00:34:13.160 --> 00:34:16.160
I really thought that was on F7.

00:34:16.160 --> 00:34:19.160
Up that's the character sheet suite.

00:34:19.160 --> 00:34:25.160
Okay, how to use your bindings.

00:34:25.160 --> 00:34:28.160
So that looks a little better.

00:34:28.160 --> 00:34:34.160
So let's talk about the character sheet.

00:34:34.160 --> 00:34:36.160
Yeah.

00:34:36.160 --> 00:34:40.570
So the character sheet was our first big repurposing of the

00:34:40.570 --> 00:34:45.160
engine that we couldn't do the battle board program that.

00:34:45.160 --> 00:34:54.160
Let's see if that runs now to.

00:34:54.160 --> 00:35:01.160
It's not interactive if it does.

00:35:01.160 --> 00:35:05.160
Good.

00:35:05.160 --> 00:35:09.160
So,

00:35:09.160 --> 00:35:12.360
try smex guess? No joy. All right, I'm not sure what's

00:35:12.360 --> 00:35:14.160
up with the battle board Erik.

00:35:14.160 --> 00:35:17.190
We haven't messed with that one for a while in fact we had

00:35:17.190 --> 00:35:20.270
discussed using its code as an example so maybe we'll debug

00:35:20.270 --> 00:35:21.160
it with you.

00:35:21.160 --> 00:35:24.160
I'll certainly check for questions first.

00:35:24.160 --> 00:35:29.740
Um, the. So the character sheet which is not scaling

00:35:29.740 --> 00:35:31.160
ideally here.

00:35:31.160 --> 00:35:36.160
See if reloading it does anything.

00:35:36.160 --> 00:35:37.160
Nope.

00:35:37.160 --> 00:35:40.660
As far as I can tell, assuming you don't have this

00:35:40.660 --> 00:35:43.160
implemented character sheet.

00:35:43.160 --> 00:35:49.800
That's right, there's everything in scale, it take in order

00:35:49.800 --> 00:35:54.160
to get what you were looking at there.

00:35:54.160 --> 00:35:56.160
All right.

00:35:56.160 --> 00:36:03.201
This, this whole thing is hard coded, basically to the

00:36:03.202 --> 00:36:08.160
gills, except for things like this.

00:36:08.160 --> 00:36:11.780
This program represents a re implementation of the drawing

00:36:11.780 --> 00:36:17.420
engine using all of the same things. Let's see that

00:36:17.420 --> 00:36:20.160
selected so

00:36:20.160 --> 00:36:23.160
we'll just try bringing up a map again.

00:36:23.160 --> 00:36:27.180
There's one and you'll notice DM map doesn't know anything

00:36:27.180 --> 00:36:31.240
about the new draw engine, and there are a couple of places

00:36:31.240 --> 00:36:35.160
where the new draw engine is still hooked in to the.

00:36:35.160 --> 00:36:38.250
For example, particularly the sizing of the graph paper

00:36:38.250 --> 00:36:43.160
background. So I've started the work in DM draw.

00:36:44.160 --> 00:36:47.950
Of trying to show how exactly we did this removing the, how

00:36:47.950 --> 00:36:51.040
did we get data out of org mode that I talked about

00:36:51.040 --> 00:36:56.410
yesterday with our ETL flows, and just focusing on what how

00:36:56.410 --> 00:37:00.580
did we solve the problem of predicated drawing, which I

00:37:00.580 --> 00:37:04.290
realized we didn't really talk about so should I jump into

00:37:04.290 --> 00:37:05.160
that.

00:37:05.160 --> 00:37:06.160
Yeah, I guess.

00:37:06.160 --> 00:37:09.160
How are we on time, we have time for detours.

00:37:09.160 --> 00:37:12.450
Um, yeah, it looks like we could spend two or three minutes

00:37:12.450 --> 00:37:15.160
on that and then come back for the questions.

00:37:15.160 --> 00:37:18.160
Cool.

00:37:18.160 --> 00:37:21.440
And I'm just going to peek into my org mode into my chat

00:37:21.440 --> 00:37:24.970
conference and I don't see anybody talking to me from the

00:37:24.970 --> 00:37:29.160
organizer channel, so I'm gonna assume that's a good guess.

00:37:29.160 --> 00:37:33.700
All right, so let's go ahead and play with the map a

00:37:33.700 --> 00:37:38.170
little then that is pretty fun and so much fun that we

00:37:38.170 --> 00:37:42.640
had to curtail play sessions in order to keep working on

00:37:42.640 --> 00:37:44.160
the project.

00:37:44.160 --> 00:37:52.160
So, I'll, I'll do the.

00:37:52.160 --> 00:37:58.516
Um, we'll try to find something different from any gift

00:37:58.517 --> 00:38:01.160
I've shared here right.

00:38:01.160 --> 00:38:06.160
So here we are in a random. Go ahead, Erik, you feel.

00:38:06.160 --> 00:38:10.660
Okay, so what we're, what Corwin is doing here is he's

00:38:10.660 --> 00:38:15.380
about to put the map into play mode, which is going to turn

00:38:15.380 --> 00:38:17.160
on the fog of war.

00:38:17.160 --> 00:38:21.100
And then we're going to use the fog of war and the, the

00:38:21.100 --> 00:38:25.230
play mode to kind of reveal the map, one square at a time

00:38:25.230 --> 00:38:28.160
like we would during a play session.

00:38:28.160 --> 00:38:32.350
So we'll just drop the party randomly somewhere onto this

00:38:32.350 --> 00:38:36.160
map looks like we're on alpha maze level three here.

00:38:36.160 --> 00:38:46.160
And then we'll walk around a little.

00:38:46.160 --> 00:38:52.280
Okay, so we're halfway there. I'll have to, I'll have to do

00:38:52.280 --> 00:38:55.540
a full redraw the sketch the sketching stuff has has has

00:38:55.540 --> 00:38:58.980
broken things here like I said, the two aren't separated

00:38:58.980 --> 00:39:01.910
once I run them in the same instance, they're not

00:39:01.910 --> 00:39:03.160
predictable.

00:39:03.160 --> 00:39:08.060
Okay, so let me elaborate here when he says the sketching

00:39:08.060 --> 00:39:12.960
stuff. The current focus of our work is to turn all of this

00:39:12.960 --> 00:39:17.940
map stuff we've got into a basically a WYSIWYG map editor,

00:39:17.940 --> 00:39:22.330
where we can get into the tiles, and we'll be able to

00:39:22.330 --> 00:39:24.160
select the tile and basically rubber

00:39:24.160 --> 00:39:30.510
stamp it into a map graphically, and then save the map file

00:39:30.510 --> 00:39:36.470
out and load it back in later, so that we're able to just

00:39:36.470 --> 00:39:40.160
pound out these maps real fast.

00:39:40.160 --> 00:39:44.480
Using a graphical editor rather than having to hand code

00:39:44.480 --> 00:39:48.160
every symbol and every square of the tables.

00:39:48.160 --> 00:39:51.160
So the process of doing that.

00:39:51.160 --> 00:39:56.190
I hate them on things are a mess we've got covers off those

00:39:56.190 --> 00:40:03.160
wires hanging out different stuff works on different days.

00:40:03.160 --> 00:40:06.860
Well, I will say in our defense this is exactly why we

00:40:06.860 --> 00:40:10.880
staged a complicated thing, and probably we should have

00:40:10.880 --> 00:40:14.510
just gone with that instead of trying to give you the

00:40:14.510 --> 00:40:18.460
experience of, of what it's like to use Emacs to do this

00:40:18.460 --> 00:40:21.160
which is sort of the last

00:40:21.160 --> 00:40:26.450
thought there and my apologies for that if that's made it

00:40:26.450 --> 00:40:31.650
harder to follow the thread. Let's check back now for

00:40:31.650 --> 00:40:37.160
questions and see if anybody wants to redirect at all.

00:40:37.160 --> 00:40:41.438
Oh yep, this. So what you're looking at all uses

00:40:41.439 --> 00:40:46.860
progrmamatic SVG generation for question number four there,

00:40:46.860 --> 00:40:52.160
have you played with generating SVGs programmatically in Emacs.

00:40:52.160 --> 00:40:58.160
That is what the maps are doing in terms of

00:40:58.160 --> 00:41:01.860
being more explicit about that we started hand coding

00:41:01.860 --> 00:41:05.650
things and once we got the, the idea of what the code was

00:41:05.650 --> 00:41:10.160
going to look like we switched to doing it programmatically.

00:41:10.160 --> 00:41:13.330
So, we were going to open up maybe now we've got time we

00:41:13.330 --> 00:41:16.910
can get into the tileset real quick. Sure, we definitely

00:41:16.910 --> 00:41:19.820
didn't do any of the pathing slides and so now we've

00:41:19.820 --> 00:41:23.160
skipped over some stuff we were going to present.

00:41:23.160 --> 00:41:27.030
Yeah, that's right we skipped a whole bunch of slides and I

00:41:27.030 --> 00:41:31.160
can certainly go back to them they're open here obviously.

00:41:31.160 --> 00:41:34.110
I'm right I was just showing off the sketching tool,

00:41:34.110 --> 00:41:37.530
briefly in that context but I think you're right, let's, we

00:41:37.530 --> 00:41:40.800
can jump over to the actually I should finish with this now

00:41:40.800 --> 00:41:42.160
having teased it.

00:41:42.160 --> 00:41:46.970
So let's do the same thing here Ctrl H M, and you'll see in

00:41:46.970 --> 00:41:52.160
this case there are very few key bindings that are set up.

00:41:52.160 --> 00:41:57.320
This shift delete has a terror or shift with a control

00:41:57.320 --> 00:42:01.920
delete, it would seem to be. So that has a couple obvious

00:42:01.920 --> 00:42:06.590
bugs with it right didn't pick it didn't pick up those

00:42:06.590 --> 00:42:12.160
control points until I reuse them not clearing that stack.

00:42:12.160 --> 00:42:16.720
I think we can also should probably think about whether the

00:42:16.720 --> 00:42:21.060
origin should return and hey marking that origin would be

00:42:21.060 --> 00:42:25.370
nice. So there's a tremendous amount to do here this is

00:42:25.370 --> 00:42:30.090
just showing that it is possible to use, essentially like a

00:42:30.090 --> 00:42:31.160
touch input to,

00:42:31.160 --> 00:42:40.730
yeah, and then also we can switch over to our place tool,

00:42:40.730 --> 00:42:46.830
and hopefully we can get a nice big menu of all the tiles that

00:42:46.830 --> 00:42:50.160
Erik prepared for the game maps.

00:42:50.160 --> 00:42:55.160
That was probably a terrible choice but there you have just

00:42:55.160 --> 00:42:57.160
a bit of corridor right.

00:42:57.160 --> 00:43:01.160
That looks.

00:43:01.160 --> 00:43:03.160
And even the click.

00:43:03.160 --> 00:43:06.870
Yep, and this click action here is the last thing I

00:43:06.870 --> 00:43:10.510
was working on before I dropped everything to build the

00:43:10.510 --> 00:43:14.160
decks that we will soon share for this conference.

00:43:14.160 --> 00:43:20.160
So okay, back to the tile sets.

00:43:20.160 --> 00:43:24.130
So the way we approached drawing it programmatically is we

00:43:24.130 --> 00:43:28.160
broke our code up into little snippets we called tiles.

00:43:28.160 --> 00:43:31.240
And so this is where I was going to open up the tiles out

00:43:31.240 --> 00:43:34.610
here, basically each tile has a name, and then with that

00:43:34.610 --> 00:43:38.160
name we place data into different layers of the image.

00:43:38.160 --> 00:43:43.290
Some of the layers are just SVG paths, and the data is just

00:43:43.290 --> 00:43:48.430
SVG commands, like we saw in that handwritten code, and

00:43:48.430 --> 00:43:53.560
some of it is compositions of other tiles, so a tile can be

00:43:53.560 --> 00:43:56.160
made up of other tiles.

00:43:56.160 --> 00:44:00.270
Furthermore, some of these tiles have conditional code in

00:44:00.270 --> 00:44:04.460
it, where like some of this stuff is talking about elf and

00:44:04.460 --> 00:44:05.160
bang elf.

00:44:05.160 --> 00:44:09.540
So the map is going to be drawn differently depending on

00:44:09.540 --> 00:44:13.160
whether or not there's elves in the party.

00:44:13.160 --> 00:44:17.160
So, and that's the demo they broke.

00:44:17.160 --> 00:44:20.160
So the engine has to make all those decisions.

00:44:20.160 --> 00:44:22.887
And that's what we're calling predicated drawing. Oh, there's

00:44:22.888 --> 00:44:26.810
a special room here. Do you have any elves? You do. So I

00:44:26.810 --> 00:44:33.160
draw it the "there is elves" way.

00:44:33.160 --> 00:44:37.440
Yeah, so we built up the set of tiles, and then we

00:44:37.440 --> 00:44:42.450
basically made map files, which take our map and break it

00:44:42.450 --> 00:44:46.840
up into XY grids, and then we drop these tiles into

00:44:46.840 --> 00:44:49.160
positions on the map.

00:44:49.160 --> 00:44:52.060
So we can use the same tile square after square after

00:44:52.060 --> 00:44:55.470
square. When there's a corridor north-south, it's the same

00:44:55.470 --> 00:44:59.980
tile over and over again. And that makes it easy to reuse

00:44:59.980 --> 00:45:01.160
the code.

00:45:01.160 --> 00:45:12.370
And also, when we go to present the -- what am I trying to

00:45:12.370 --> 00:45:16.180
say -- the drawing in fog of war mode, as we move down the

00:45:16.180 --> 00:45:20.280
corridor, we can just add the necessary code one bit at a

00:45:20.280 --> 00:45:24.160
time to the visible image, so that what we're displaying

00:45:24.160 --> 00:45:28.160
doesn't contain any data except what the party has already

00:45:28.160 --> 00:45:30.160
discovered.

00:45:30.160 --> 00:45:34.720
And thus we have kind of spoiler-rich documents sitting on

00:45:34.720 --> 00:45:39.120
the GM server, and then less -- and spoiler-free data that

00:45:39.120 --> 00:45:43.160
flows down to the org mode files on the player system.

00:45:43.160 --> 00:45:47.660
And the only real challenge is making sure that nothing

00:45:47.660 --> 00:45:52.230
that the game does can mess with the users -- the players'

00:45:52.230 --> 00:45:56.610
data file, in case they might have their own notes and

00:45:56.610 --> 00:46:03.800
things in it. That would be the one, you know, number one

00:46:03.800 --> 00:46:06.160
thing to avoid.

00:46:06.160 --> 00:46:09.200
Another thing we can talk about here is that there are

00:46:09.200 --> 00:46:12.350
layers. You can see this table at the bottom has tile and

00:46:12.350 --> 00:46:16.860
overlay. The overlay column is just going to contain some

00:46:16.860 --> 00:46:19.160
actual SVG XML style tags.

00:46:19.160 --> 00:46:23.100
So that's where we can add whatever text elements or other

00:46:23.100 --> 00:46:27.120
SVG, like raw SVG tags we want. Whereas a lot of the other

00:46:27.120 --> 00:46:30.980
layers are going to be like path layers, we've got water

00:46:30.980 --> 00:46:33.160
layers and beach layers.

00:46:33.160 --> 00:46:36.370
And our plan was to have a style sheet that defines how

00:46:36.370 --> 00:46:39.790
each of those layers are represented. So like when the

00:46:39.790 --> 00:46:43.140
water gets drawn blue and it's got arrows on it giving it

00:46:43.140 --> 00:46:47.140
direction, all of that can be customized with a style sheet

00:46:47.140 --> 00:46:50.160
to change the water to be whatever you want.

00:46:50.160 --> 00:46:53.430
And like we have beaches as yellow, but maybe you like

00:46:53.430 --> 00:46:56.160
beaches as red or, you know, whatever.

00:46:56.160 --> 00:47:03.570
So we also built some test programs and various -- I'm not

00:47:03.570 --> 00:47:05.900
sure what kind of shape we're going to find these in, but

00:47:05.900 --> 00:47:07.160
we can try running them.

00:47:07.160 --> 00:47:13.950
Here, for example, is just a very basic -- using the same

00:47:13.950 --> 00:47:21.160
file to define the tiles and then the layout, so to speak.

00:47:21.160 --> 00:47:25.160
Oh, look at that.

00:47:25.160 --> 00:47:29.160
There's the layout. Okay, so that actually looks fine. Tile.

00:47:29.160 --> 00:47:33.430
And it's path. So this is defining a tile named "seas" and

00:47:33.430 --> 00:47:37.160
it's going to have a list of tiles defined above.

00:47:37.160 --> 00:47:41.120
And you'll notice also that we can just sort of freely

00:47:41.120 --> 00:47:44.750
define and redefine and it sort of figures out, oh, this

00:47:44.750 --> 00:47:47.160
must still be part of the B row.

00:47:47.160 --> 00:48:00.160
We could also have done this.

00:48:00.160 --> 00:48:08.160
Okay, so this would work as would this.

00:48:08.160 --> 00:48:11.930
>> Early on in development when we were talking about

00:48:11.930 --> 00:48:16.520
getting data in and out of these org tables, it was kind of

00:48:16.520 --> 00:48:22.160
a priority to us to leave the way the data is organized

00:48:22.160 --> 00:48:25.160
open to the users and to the dungeon masters.

00:48:25.160 --> 00:48:30.860
So while we set our tile set apart from our map sets, this

00:48:30.860 --> 00:48:36.430
clearly shows that you can cram a tile set and a map into a

00:48:36.430 --> 00:48:38.160
single file.

00:48:38.160 --> 00:48:41.170
So in situations like the surface where we're using

00:48:41.170 --> 00:48:44.610
different tiles from other maps, maybe it makes sense to

00:48:44.610 --> 00:48:47.890
move, you know, those tiles just into the file with your

00:48:47.890 --> 00:48:49.160
map.

00:48:49.160 --> 00:48:51.880
But we also wanted to make sure, like, it's hard for us to

00:48:51.880 --> 00:48:54.640
predict how other people are going to want to use this when

00:48:54.640 --> 00:48:56.160
they design their games.

00:48:56.160 --> 00:49:00.780
So we wanted to leave it as versatile as possible about how

00:49:00.780 --> 00:49:02.160
you can use it.

00:49:02.160 --> 00:49:04.810
>> Where it matters, right? Not support every feature in

00:49:04.810 --> 00:49:05.160
the world.

00:49:05.160 --> 00:49:08.560
I can't count the number of times I said, Erik, Erik, Erik,

00:49:08.560 --> 00:49:12.000
hey, if we do it like this, people will be -- and he just,

00:49:12.000 --> 00:49:14.160
like, does it have to do that?

00:49:14.160 --> 00:49:19.090
Like, do we need it right away? Do you have to really

00:49:19.090 --> 00:49:21.160
rewrite everything so it can all do that?

00:49:21.160 --> 00:49:26.160
And a lot of those conversations, too.

00:49:26.160 --> 00:49:30.160
But the key flexibilities are really there.

00:49:30.160 --> 00:49:32.160
People might want to use a lot of different files.

00:49:32.160 --> 00:49:34.160
They might want to lay the tables out however they want.

00:49:34.160 --> 00:49:37.590
They have to be able to say, hey, this is a table that has

00:49:37.590 --> 00:49:40.950
data that's controlled by the game, and everything else in

00:49:40.950 --> 00:49:43.160
the file is not the game's problem.

00:49:43.160 --> 00:49:45.980
>> And our table, some of our tables started getting really

00:49:45.980 --> 00:49:48.160
wide, so we started striping the tables.

00:49:48.160 --> 00:49:52.140
We'll repeat the same table over and over and over again to

00:49:52.140 --> 00:49:56.180
get all of the columns in there without making it, you know,

00:49:56.180 --> 00:49:58.160
a million miles wide.

00:49:58.160 --> 00:49:59.160
>> Yeah.

00:49:59.160 --> 00:50:02.450
Do you want to -- should I go ahead and pull open, like, a

00:50:02.450 --> 00:50:04.160
level here, do you think?

00:50:04.160 --> 00:50:05.160
>> Sure.

00:50:05.160 --> 00:50:06.160
>> Just to have shown it.

00:50:06.160 --> 00:50:08.750
>> The file set's a great example of striped tables if you

00:50:08.750 --> 00:50:11.160
look down, like, in the level change feature.

00:50:11.160 --> 00:50:18.160
>> Oh, sure.

00:50:18.160 --> 00:50:21.160
>> Sorry, I'm not quite sitting well to my keyboard here.

00:50:21.160 --> 00:50:30.160
I can just readjust things real quick.

00:50:30.160 --> 00:50:33.920
So what, you know, you can see here, like, some of these

00:50:33.920 --> 00:50:38.160
tables got real wide when we're stuffing SVG tags into them.

00:50:38.160 --> 00:50:44.160
And what we -- oh, maybe it's not in these.

00:50:44.160 --> 00:50:50.160
I thought it was.

00:50:50.160 --> 00:50:51.160
It's special, probably.

00:50:51.160 --> 00:50:52.160
>> Yeah.

00:50:52.160 --> 00:50:54.160
No, there it is, yeah.

00:50:54.160 --> 00:50:55.160
It was in level change.

00:50:55.160 --> 00:50:57.160
It does the table key repeat.

00:50:57.160 --> 00:50:58.160
>> Okay, great.

00:50:58.160 --> 00:50:59.720
>> You were just scrolling up and down so fast I didn't

00:50:59.720 --> 00:51:00.160
realize.

00:51:00.160 --> 00:51:04.270
So this first table, we've got path and what is that,

00:51:04.270 --> 00:51:05.160
stairs?

00:51:05.160 --> 00:51:09.010
So the stairs level is one that draws in, like, a pink

00:51:09.010 --> 00:51:13.160
color to highlight places where you can change level.

00:51:13.160 --> 00:51:16.120
And then if we scroll down to the second half of this

00:51:16.120 --> 00:51:19.380
section, the second table is going to have all of these

00:51:19.380 --> 00:51:24.000
same tiles in it, but instead of path and stairs, we're

00:51:24.000 --> 00:51:27.160
going to have other columns.

00:51:27.160 --> 00:51:31.160
Can we see the next table?

00:51:31.160 --> 00:51:32.160
There we go.

00:51:32.160 --> 00:51:35.610
So the same tiles, only here we've got overlay,

00:51:35.610 --> 00:51:38.160
documentation, and behavior.

00:51:38.160 --> 00:51:40.160
And I guess we haven't talked about this at all.

00:51:40.160 --> 00:51:44.920
The behavior column was our concept of a way that we could

00:51:44.920 --> 00:51:50.100
attach functions, basically, to these different areas of

00:51:50.100 --> 00:51:51.160
the map.

00:51:51.160 --> 00:51:55.920
Because sometimes when you enter an area, we want it to do

00:51:55.920 --> 00:51:57.160
something.

00:51:57.160 --> 00:52:00.880
Like when you enter a stairs down, maybe we want it to

00:52:00.880 --> 00:52:04.850
change to the next level and draw the stairs up behind you

00:52:04.850 --> 00:52:08.160
and draw you where you are on the next level.

00:52:08.160 --> 00:52:13.470
So these are like hooks where we could attach functions or,

00:52:13.470 --> 00:52:18.390
you know, macros or whatever to make the map have these

00:52:18.390 --> 00:52:23.160
behaviors as we get further towards automation.

00:52:23.160 --> 00:52:25.160
Cool.

00:52:25.160 --> 00:52:31.160
So that's that should be pretty close to our time.

00:52:31.160 --> 00:52:34.160
Questions or just say goodbye.

00:52:34.160 --> 00:52:38.160
Yeah, so there's the I'm sorry we couldn't show it earlier.

00:52:38.160 --> 00:52:41.160
There is the battle board.

00:52:41.160 --> 00:52:46.160
And so this is used just to keep track of hit points.

00:52:46.160 --> 00:52:50.540
So with this example, battle board, dm battle board.el,

00:52:50.540 --> 00:52:54.590
there's there's a complete example of not only in a single

00:52:54.590 --> 00:52:58.430
file reaper, we filling out the tell the cells and the

00:52:58.430 --> 00:53:03.720
tiles, but then coming in and keeping the org mode file in

00:53:03.720 --> 00:53:06.160
sync with with clicks.

00:53:06.160 --> 00:53:11.040
So, and I can press the star key and set my damage to minus

00:53:11.040 --> 00:53:14.160
one and take the damage back off.

00:53:14.160 --> 00:53:17.770
I just haven't spent a lot of time building up fancy bind

00:53:17.770 --> 00:53:21.620
ings for this, you'll also find that the crew probably find

00:53:21.620 --> 00:53:25.270
how I figure out what was clicked on in the code hard, but

00:53:25.270 --> 00:53:30.010
if I just assign something recognizable for damage, and

00:53:30.010 --> 00:53:33.160
then come into.

00:53:33.160 --> 00:53:39.030
It will now have opened the org mode file behind the scenes

00:53:39.030 --> 00:53:41.160
because it's changing it.

00:53:41.160 --> 00:53:48.340
And we can then look at that file a little bit and

00:53:48.340 --> 00:53:54.130
hopefully that is on large enough you can kind of see there

00:53:54.130 --> 00:53:57.160
's our 17 damage landed in armor.

00:53:57.160 --> 00:54:04.200
The logic that sits behind that to figure out the part of

00:54:04.200 --> 00:54:10.160
the screen is not necessarily our finest work.

00:54:10.160 --> 00:54:12.960
But it does work and that's one kind of stuff was used on

00:54:12.960 --> 00:54:16.030
the map a little bit too. We didn't really get to show that

00:54:16.030 --> 00:54:18.970
in the demo but as you're scrolling around there's like a

00:54:18.970 --> 00:54:22.160
highlighter that that, you know, we were drawing on.

00:54:22.160 --> 00:54:26.160
Oh sure, show you which square you've got selected.

00:54:26.160 --> 00:54:30.300
We were having trouble with that code. Initially, and we

00:54:30.300 --> 00:54:33.160
were sometimes revealing the wrong.

00:54:33.160 --> 00:54:38.160
Okay.

00:54:38.160 --> 00:54:41.320
And I don't know how we're set for time but I just saw a

00:54:41.320 --> 00:54:45.240
message from Trixie that she could jump on if we want her.

00:54:45.240 --> 00:54:48.290
Oh, that would be amazing. Yeah, go ahead and invite her in

00:54:48.290 --> 00:54:51.160
I'll just cut to the scene as soon as she's in.

00:54:51.160 --> 00:54:54.160
I think.

00:54:54.160 --> 00:54:58.080
Yeah, so we're reaching the ask me anything portion of the

00:54:58.080 --> 00:55:01.760
program here with what, with what time we have left for

00:55:01.760 --> 00:55:03.160
your questions.

00:55:03.160 --> 00:55:09.170
Please correct me if we're still like 10 minutes, you know,

00:55:09.170 --> 00:55:15.450
if we're, if we're more than like 15 to 20 minutes from our

00:55:15.450 --> 00:55:20.560
time but I suspect we've left way left way less than that

00:55:20.560 --> 00:55:25.160
and out of respect for all the other presenters.

00:55:25.160 --> 00:55:29.160
I don't want to close that actually.

00:55:29.160 --> 00:55:33.060
I think I may have found an old version of my slides that

00:55:33.060 --> 00:55:35.160
can have some good stuff.

00:55:35.160 --> 00:55:40.220
It's been an event for a couple of weeks here I had a break

00:55:40.220 --> 00:55:45.190
in and my somebody got into our bank accounts and nasty

00:55:45.190 --> 00:55:51.160
business, just a lot going on over, over this whole year I think.

00:55:51.160 --> 00:55:54.160
Any more questions to share.

00:55:54.160 --> 00:56:02.240
Sure. So, I think there was at least one we deferred a

00:56:02.240 --> 00:56:06.160
little bit with the game is

00:56:06.160 --> 00:56:08.990
always eight characters that can be divided right that's so

00:56:08.990 --> 00:56:11.660
always eight characters that can be divided between the

00:56:11.660 --> 00:56:14.540
party is the classic formula, it actually works pretty well

00:56:14.540 --> 00:56:16.160
for a conversational group.

00:56:16.160 --> 00:56:18.810
I think the idea that role playing games are about talking

00:56:18.810 --> 00:56:21.330
to each other and being good at them is about taking

00:56:21.330 --> 00:56:23.770
excellent notes. So, when you're sitting around with a

00:56:23.770 --> 00:56:26.070
group of people and you're going to have to wait for them

00:56:26.070 --> 00:56:29.410
while they dig through their notes and listen to all of the

00:56:29.410 --> 00:56:33.160
things they find interesting to say, and try to reach an

00:56:33.160 --> 00:56:35.160
imaginative place that you can stay together.

00:56:35.160 --> 00:56:38.800
And when you're doing all that and working in dice and

00:56:38.800 --> 00:56:43.250
remembering the rules. It's actually a complicated activity,

00:56:43.250 --> 00:56:47.340
I liken it more to a bridge game, then to like, you know,

00:56:47.340 --> 00:56:51.310
part cheesy or perhaps even like risk or access and allies

00:56:51.310 --> 00:56:55.620
or other games that have have definitely the strategy to

00:56:55.620 --> 00:56:57.160
them but I don't.

00:56:57.160 --> 00:57:01.160
Erik, your thoughts.

00:57:02.160 --> 00:57:05.160
I think that's fair.

00:57:05.160 --> 00:57:08.880
You know yes definitely. The, the tradition is to always

00:57:08.880 --> 00:57:12.600
have eight characters in the party, and, you know, one of

00:57:12.600 --> 00:57:16.320
the great things about dungeon is that everybody who writes

00:57:16.320 --> 00:57:19.730
their own dungeon gets to write their own rules, and is

00:57:19.730 --> 00:57:22.160
free to change whatever you want.

00:57:22.160 --> 00:57:26.700
I've definitely seen people try to take on challenging that

00:57:26.700 --> 00:57:30.160
always eight characters in a party thing.

00:57:30.160 --> 00:57:33.460
I've seen people take approaches like every player gets two

00:57:33.460 --> 00:57:36.570
characters and then you can have a party ranging from two

00:57:36.570 --> 00:57:40.130
to 10, or there's always going to be 10 or there's, you

00:57:40.130 --> 00:57:43.340
know, this or that or people have tried stuff, and none of

00:57:43.340 --> 00:57:47.170
it has really worked out very satisfactorily we always seem

00:57:47.170 --> 00:57:50.160
to keep coming back to our party of eight.

00:57:50.160 --> 00:57:55.710
It's, it's one of the things that dungeon that you can't

00:57:55.710 --> 00:57:59.290
change when you write your own dungeon. And that's the

00:57:59.290 --> 00:58:03.900
reason it's so complicated as a, as a software project why

00:58:03.900 --> 00:58:08.640
it's taken us decades, because trying to model the data for

00:58:08.640 --> 00:58:13.820
example or really any attempt, quantify it in specific

00:58:13.820 --> 00:58:16.160
terms always falls to examples.

00:58:16.160 --> 00:58:20.740
You know dungeons usually have elves, elves, dwarves and

00:58:20.740 --> 00:58:25.160
humans. They have priests, wizards and warriors.

00:58:25.160 --> 00:58:29.330
They have eight characters in the party. The Balrogs are

00:58:29.330 --> 00:58:34.160
particularly nasty and live in a room of some specific shape.

00:58:34.160 --> 00:58:57.160
And they have spoilers.

00:58:57.160 --> 00:59:00.900
So let's touch on special power real quick since that's one

00:59:00.900 --> 00:59:04.820
of the things that is kind of unique to dungeon. And one of

00:59:04.820 --> 00:59:08.710
the things that is the biggest challenge to us and trying

00:59:08.710 --> 00:59:12.160
to code a system like this for automated play.

00:59:12.160 --> 00:59:15.680
And that's that every character gets a unique special power

00:59:15.680 --> 00:59:19.300
and traditionally you negotiate your special power with the

00:59:19.300 --> 00:59:22.600
dungeon master when you create your character, and

00:59:22.600 --> 00:59:25.970
occasionally throughout the course of the characters life

00:59:25.970 --> 00:59:29.160
their special power might change due to game circumstances,

00:59:29.160 --> 00:59:34.160
usually it improves but sometimes not.

00:59:34.160 --> 00:59:37.180
So those are the most fun conversations right sometimes we

00:59:37.180 --> 00:59:39.820
have fun gaming sessions where we barely get all the

00:59:39.820 --> 00:59:42.800
characters created and started, because we get off into

00:59:42.800 --> 00:59:45.780
arguing about the special powers no Zelda special powers

00:59:45.780 --> 00:59:49.160
obviously the candle Come on.

00:59:49.160 --> 00:59:54.160
Also that was like, not so.

00:59:54.160 --> 01:00:02.160
I still have my t shirt. Hey, there she is. Let's cut scene.

01:00:02.160 --> 01:00:05.890
I'm going to be working with fun filters today, because

01:00:05.890 --> 01:00:12.250
that's what we got going on over here. All right, I'm going

01:00:12.250 --> 01:00:19.160
to recut everybody hang on tight.

01:00:19.160 --> 01:00:21.160
All right, there's Erik.

01:00:21.160 --> 01:00:24.160
This is going to be Erik for a second home.

01:00:24.160 --> 01:00:27.680
No worries. And welcome to that welcome to the stream. Trix

01:00:27.680 --> 01:00:29.160
ie horror.

01:00:29.160 --> 01:00:33.410
Who is one of our project team members somebody who's

01:00:33.410 --> 01:00:37.160
learning Emacs as part of the project, and.

01:00:37.160 --> 01:00:42.690
Yeah, I particularly wanted to invite you on to talk about

01:00:42.690 --> 01:00:47.700
your experience learning Emacs I think you have run into

01:00:47.700 --> 01:00:52.900
places where it's a pain in the butt to learn Emacs and that

01:00:52.900 --> 01:00:56.160
this is a safe space to talk about that.

01:00:56.160 --> 01:01:02.160
I'll jump in by saying the Emacs cheat sheet.

01:01:02.160 --> 01:01:07.160
I think it's the one that can do puts out is a lifesaver.

01:01:07.160 --> 01:01:12.030
I think there's a little bit of a vocabulary disconnect,

01:01:12.030 --> 01:01:16.050
like, and this actually kind of comes up a lot in

01:01:16.050 --> 01:01:21.080
conversation with Corwin and Erik and I, but coffee paste

01:01:21.080 --> 01:01:25.160
versus what yank and w, whatever w killing yank.

01:01:25.160 --> 01:01:28.160
Yeah.

01:01:28.160 --> 01:01:31.380
Why would you even do that to us right where where were you

01:01:31.380 --> 01:01:34.810
when zeros park happened. No, I understand that makes sense.

01:01:34.810 --> 01:01:39.160
What else.

01:01:39.160 --> 01:01:41.920
I mean you don't have to sit here and rag on Emacs but we're

01:01:41.920 --> 01:01:44.160
here for that. That's all I'm saying.

01:01:44.160 --> 01:01:48.250
I think that's the biggest thing, like, I'm, I'm used to,

01:01:48.250 --> 01:01:52.170
like, just kind of the very binary nature of like, nope,

01:01:52.170 --> 01:01:55.160
that didn't work, try something else.

01:01:55.160 --> 01:02:00.680
So, as long as you're willing to try other stuff like Emacs

01:02:00.680 --> 01:02:07.160
will be fine. So, it's a tough cookie it can take it.

01:02:07.160 --> 01:02:14.430
The only thing that happens is you have to install it

01:02:14.430 --> 01:02:21.160
through your file that you hopefully have a backup of.

01:02:21.160 --> 01:02:25.160
Um, are there more questions in the hopper.

01:02:25.160 --> 01:02:29.500
If anybody does have any questions up there for hope for

01:02:29.500 --> 01:02:34.210
Erik or I so just to summarize, I've known Erik, I've known

01:02:34.210 --> 01:02:38.640
Erik, my whole life, I've known hope around a decade we

01:02:38.640 --> 01:02:41.760
work together on a project for, for a science fiction

01:02:41.760 --> 01:02:42.160
convention.

01:02:42.160 --> 01:02:45.160
Yeah.

01:02:45.160 --> 01:02:49.360
I've written a few conventions and then I also helped with

01:02:49.360 --> 01:02:53.710
I just wrote a bio. So this should like all theoretically

01:02:53.710 --> 01:02:55.160
be in my head right.

01:02:55.160 --> 01:03:01.660
I want to refer to my own bio project coordinator for

01:03:01.660 --> 01:03:03.160
dungeon mode.

01:03:03.160 --> 01:03:07.160
I was a bird assistant good credit.

01:03:07.160 --> 01:03:13.160
And family friend to the Bruce. Oh,

01:03:13.160 --> 01:03:17.870
yeah, we've gotten a ton of support from a lot of our

01:03:17.870 --> 01:03:21.720
lifelong friends people, and also people that we just met.

01:03:21.720 --> 01:03:24.160
Maybe that's a that's a great segue.

01:03:24.160 --> 01:03:26.900
Do throw your questions in there I'm going to fill for just

01:03:26.900 --> 01:03:29.160
a second and then we'll probably cut away.

01:03:29.160 --> 01:03:35.970
But, I'm thinking thematically actually, that's that's too

01:03:35.970 --> 01:03:38.810
abrupt so we need to go around the room, Erik you had hours

01:03:38.810 --> 01:03:41.480
and hours to rehearse hope kind of jumped in on the last

01:03:41.480 --> 01:03:42.160
minute.

01:03:42.160 --> 01:03:47.050
So let's let's, is it okay to pick on you or do you want me

01:03:47.050 --> 01:03:48.160
to get mine.

01:03:48.160 --> 01:03:51.490
What are you asking me to do what do you what do you want

01:03:51.490 --> 01:03:55.280
people to take away from this talk, you know, as we think

01:03:55.280 --> 01:03:59.010
about dungeon and sharing it's sharing its tradition, as we

01:03:59.010 --> 01:04:03.160
think about learning Emacs, and like making that awesome.

01:04:03.160 --> 01:04:08.210
And just, you know, generally what's up with free software

01:04:08.210 --> 01:04:13.160
and trying to make computers a tool to make people freer.

01:04:13.160 --> 01:04:18.160
Yeah, I'm going to ask like five questions. Yeah, so just

01:04:18.160 --> 01:04:19.160
jump in.

01:04:19.160 --> 01:04:24.160
I think that dungeon is a lot of fun. And, you know, I'm, I

01:04:24.160 --> 01:04:29.260
've played many commercial role playing games over the years

01:04:29.260 --> 01:04:32.160
, and I've enjoyed all of them.

01:04:32.160 --> 01:04:36.500
But there's very few of them that I've had as many belly

01:04:36.500 --> 01:04:41.410
laughs and as much just joy, playing as from dungeon. And I

01:04:41.410 --> 01:04:44.500
think, you know, the magic of it is, you know, like any

01:04:44.500 --> 01:04:47.400
game like the real magic is the people you play with and

01:04:47.400 --> 01:04:50.160
having fun with your friends.

01:04:50.160 --> 01:04:53.780
And what I would hope that people can take away from is

01:04:53.780 --> 01:04:57.900
that dungeon has the ability to be that magical thing. And

01:04:57.900 --> 01:05:01.870
hopefully we can get our project to the point where it gets

01:05:01.870 --> 01:05:06.160
out of the way and lets you have that fun with your friends.

01:05:06.160 --> 01:05:12.180
So I think there's a lot of work to do we could use some

01:05:12.180 --> 01:05:19.330
help. So if you're interested in having fun. Come help us

01:05:19.330 --> 01:05:22.160
build this fun tool.

01:05:22.160 --> 01:05:25.370
Alright so I just got the call that we've got just about

01:05:25.370 --> 01:05:29.160
two to three minutes left, and we should start our wrap up.

01:05:29.160 --> 01:05:31.160
Wrap up.

01:05:31.160 --> 01:05:35.090
Yeah, so I'll see if I can charge the room with some energy

01:05:35.090 --> 01:05:38.160
unless you're ready to have that at home.

01:05:38.160 --> 01:05:43.160
Here, here's, here's what I want people to take away.

01:05:43.160 --> 01:05:47.160
Were you like, No, okay.

01:05:47.160 --> 01:05:54.160
I'm not getting your audio hope.

01:05:54.160 --> 01:05:57.160
So my end, maybe I just need to speak up.

01:05:57.160 --> 01:06:01.160
Is this better, let me know when I'm coming through.

01:06:01.160 --> 01:06:05.160
Okay, cool.

01:06:05.160 --> 01:06:07.160
I was gonna say go ahead.

01:06:07.160 --> 01:06:11.240
I didn't. Okay. I mean I don't know that I know what I want

01:06:11.240 --> 01:06:15.290
to say either except a whole ton of thank you. So, I will,

01:06:15.290 --> 01:06:19.160
I will save those for the, for the literal end here.

01:06:19.160 --> 01:06:26.630
And instead, what I would say is, as we build our amazing

01:06:26.630 --> 01:06:32.160
innovations and explore our ideas in Emacs.

01:06:32.160 --> 01:06:34.980
We are fighting our own ego for the will to get them done,

01:06:34.980 --> 01:06:37.740
it's hard and we're not sure if they're going to be a good

01:06:37.740 --> 01:06:39.960
idea and will it excite people and part of our

01:06:39.960 --> 01:06:42.780
responsibility is to excite people so that they can feel

01:06:42.780 --> 01:06:44.160
good about liking them.

01:06:44.160 --> 01:06:47.930
If you come off and you're like hey this is a terrible idea

01:06:47.930 --> 01:06:51.470
it's really hard to be like, no I love that idea works

01:06:51.470 --> 01:06:55.160
theatrically but in larger groups may not scale.

01:06:55.160 --> 01:07:00.160
So that's a crucible for ideas and a crucible for teams.

01:07:00.160 --> 01:07:05.280
The first part is definitely healthy. The second part,

01:07:05.280 --> 01:07:10.070
there's a lot we can we can do, you know, having a front

01:07:10.070 --> 01:07:15.160
and and and good faith conversations on that subject.

01:07:15.160 --> 01:07:19.600
Anybody else want to want to wade in after that sorry that

01:07:19.600 --> 01:07:23.160
that was more of a calm down than a fire out.

01:07:23.160 --> 01:07:25.160
Okay.

01:07:25.160 --> 01:07:27.160
I think.

01:07:27.160 --> 01:07:32.180
The first part of this but I think we would be remiss not

01:07:32.180 --> 01:07:35.860
to highlight org mode, a little bit. Yeah, like, that's,

01:07:35.860 --> 01:07:39.280
that's our bread and butter. Yeah, our whole project is

01:07:39.280 --> 01:07:40.160
built on org mode.

01:07:40.160 --> 01:07:44.580
Right. And I'm just really excited because, like, I have, I

01:07:44.580 --> 01:07:48.670
don't have ADHD, but I have like something similar. And so,

01:07:48.670 --> 01:07:52.230
like to know that there's something that exists, that is

01:07:52.230 --> 01:07:54.160
like purely hierarchical.

01:07:54.160 --> 01:07:59.170
It's incredible, like I can just run a report, basically

01:07:59.170 --> 01:08:03.550
and get all of my like to do lists that I didn't have to

01:08:03.550 --> 01:08:06.160
put in one specific place.

01:08:06.160 --> 01:08:13.190
And, like, that's kind of been a complex issue for me of

01:08:13.190 --> 01:08:16.680
like, okay, I have all these to do lists, like in Google

01:08:16.680 --> 01:08:19.160
Keep or whatever like what do I do with them now.

01:08:19.160 --> 01:08:24.160
So being able to like pull them into one list.

01:08:24.160 --> 01:08:27.160
And then recycle through them is really incredible.

01:08:27.160 --> 01:08:35.500
And I think taking dungeon and like using it to like

01:08:35.500 --> 01:08:40.160
combining it with org mode basically really.

01:08:40.160 --> 01:08:44.210
I'm excited about it and I'm excited to see like what it

01:08:44.210 --> 01:08:46.160
can do for player groups.

01:08:46.160 --> 01:08:49.190
Especially now that quarantine like I was excited about

01:08:49.190 --> 01:08:50.160
dungeon mode.

01:08:50.160 --> 01:08:54.040
Before the pandemic and now like I'm only more enthusiastic.

01:08:54.040 --> 01:08:57.940
So, yeah, definitely the pandemic has been the greatest

01:08:57.940 --> 01:09:01.720
thing that happened to this game, terrible terrible as it

01:09:01.720 --> 01:09:05.090
is to say that it, if we needed a hobby and it turns out

01:09:05.090 --> 01:09:11.160
role playing games are are really good.

01:09:11.160 --> 01:09:16.610
So, so I think that's probably about our time. I'm guessing

01:09:16.610 --> 01:09:21.160
that's my call. And thank you very much.

01:09:21.160 --> 01:09:24.970
Thank you everybody will be around for discord and stuff

01:09:24.970 --> 01:09:27.160
later come catch us if you want to talk.

01:09:27.160 --> 01:09:30.160
Okay.