diff options
Diffstat (limited to '2020/subtitles/emacsconf-2020--28-welcome-to-the-dungeon--erik-elmshauser-corwin-brust-autogen.vtt')
-rw-r--r-- | 2020/subtitles/emacsconf-2020--28-welcome-to-the-dungeon--erik-elmshauser-corwin-brust-autogen.vtt | 3187 |
1 files changed, 3187 insertions, 0 deletions
diff --git a/2020/subtitles/emacsconf-2020--28-welcome-to-the-dungeon--erik-elmshauser-corwin-brust-autogen.vtt b/2020/subtitles/emacsconf-2020--28-welcome-to-the-dungeon--erik-elmshauser-corwin-brust-autogen.vtt new file mode 100644 index 00000000..24c1910c --- /dev/null +++ b/2020/subtitles/emacsconf-2020--28-welcome-to-the-dungeon--erik-elmshauser-corwin-brust-autogen.vtt @@ -0,0 +1,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. |