 Hi, my name is Joel Uckleman. I am the lead developer for Vassal. Thanks so much for having me. So let me first tell you a little bit about what Vassal is for. So Vassal is for playing board games. So basically your traditional paper cardboard tabletop board games, it doesn't do rule enforcement. What you would probably describe Vassal as is a virtual tabletop. Of course the phrase virtual tabletop didn't exist way way way back when we started. We actually predate the phrase. So what it provides for you is game components and a place for them to a place to play with them. So you can drag things around on your screen. You have grids that pieces will snap to. Vassal handles stack things like stacking for you and flipping the pieces. There is, like I said, doesn't enforce game rules, but there is an amount of automation that Vassal provides for helping you clean up, you know, clean up after a phase, flip cards over when do some, you know, point scoring and things like that, you know, as whatever game you're playing requires. Okay, so we are not in the business of making games ourselves. So Vassal is there to give you a way to use games to play games that already exist. So in addition to the engine, we also host game modules for 2700, at least 2750 games. So I think when I checked on Saturday, there were 2751 that we were hosting. And we're also not the only place where games are hosted. There are a few other sites, but these are the ones that we provide for download ourselves. Okay, so that is going to take a second. So there are a lot of different kinds of games. So our core audience from way back is historical gamers. So you've got, you know, various kinds of historical games. You can see some screenshots here. These are screenshots I took myself. There are also abstract games, lots and lots of abstract games. And, you know, lots of you know, various other things like fantasy games. I think this one is terraforming Mars, if I remember correctly. So we've got support for live play. So you can play via our game server. There's also peer to peer play. asynchronous play. So what they used to call play by email. Though a lot of people these days play by very by forum or play by by chat server. So there's a there's a discord server that's very, very popular where people are playing. There are hundreds and hundreds of ongoing games where people are posting logs, you know, periodically, some of them go faster than others. Some are several times a day. Some are summer weekly. Okay, so yeah, we have a pretty active community. There's there's our our forum, which is mostly about mostly about making game modules. And there's there's our discord. There's Consomworld, where people are mostly talking about playing games. There's Game Squad, where there's a forum for one particular important module that I'll talk about in a minute or so. There are assorted face Facebook groups. There are assorted groups on board game geek. There are various mailing lists and things for particular games, where people are a lot more interested in playing a particular game than really caring about much about Vassal itself. And Vassal also gets used a lot for play testing. So if you look through the release notes for lots of games that I've seen in the past 10 or 15 years, you actually see Vassal get mentioned because of their thing that they're thanking in the credits, they're thanking the play testers who play tested the game using Vassal. And that's what always makes me really happy to see that. So we've got there's usually around 5000 active game rooms daily on our game servers. So it's reasonably well used, I would say. Okay, so project history. So a very, very long time ago, so this is in the mid 90s, our founder Rodney Kenny was very interested in playing a game called Advanced Squad Leader, which is a tactical level Second World War conflict simulation. So there you can see a photo of someone who has set up a scenario from ASL. And so back in 1996, Rodney started writing Castle, computer ASL, because he wanted to be able to play ASL using his computer. So by 1997, he had renamed it to Vassal VASL virtual ASL, and its first release happened in 1997. And there you could see a screenshot. You can see there's a very striking similarity between the two there. He didn't do too bad a job. Though actually, this is a screenshot from the current version of Vassal and I'll get to what I mean by that in a second. So this was from about 1996 until about 2000, the end of 2002, Rodney was working on the ASL. So at some point, he realized that it was a thing that could be generalized, that it didn't need to be just for this one game that the engine could be used for lots and lots of games. And so that so the ASL became a module for Vassal. And that's how we got our name. So right right at the end of 2002, the first version was released and under the LGPL. And after that, we had quite a lot of development over the intervening years. So you can see we had a period of development for two, the three series has been very, very, very long. And we just released 365 last week. So over the years, we've had quite a number of developers, probably 30-ish people have contributed code at various points. Though since about 2005, the core developers have been Brent Easton and myself, and Brian Reynolds, who joined us just in the past, oh, I think right at the end, right at the beginning of 2020. Okay, so how does Vassal work? Well, there's two parts. There's the player and the module editor. The player is actually not all that interesting to show you, because in the player, almost all the graphics are graphics that are supplied by the module designer. And in a lot of cases, the module designers are getting the actual game graphics from the game company, because we've got a pretty good relationship with a lot of game publishers. They actually like to supply us with the original graphics, so the modules for their games look nice. So, okay, what's in the module editor? Well, what you have in the module editor, you have a, you have what we call a configure tree. So there's a tree that has, that shows you all of the game components in the entire module. So there are lots and lots of things. You can define player sides, you can set, you can set global properties for the module, you can have various maps. If I, if this wasn't just a screenshot, and I could expand that, I could show you that on a map, you can define locations, you can define grids, hex grids, square grids, you can define some irregularly shaped areas that have names. You can use all of those things to be able to send pieces to particular locations to make it so that when you, to keep your game tidy, so that if you have, say, a hex grid, you can drop pieces, you know, on those spots, and they snap to those spots, you, you can add items for help. There are player hands because we support card games. So player hands are actually a special kind of map board. There are, you can, you have support for multiple map windows. There's a whole bunch of different things like that. So, let me just advance this and show you the next little bit. So, a core thing that we have for being able to express, how to put this, being able to express behavior for pieces is this thing called piece traits. So this is a, this is kind of a horrible looking dialogue, but I think it shows you what's all available. So, so right there, there is a, a piece there that is, this is, this is from a game called, called Paths of Glory. It's a conflict simulation, strategic level first world war. And this is the French army of the Orient that I've got up here. And there are all of these traits that you can set on a piece. Basically, they give it various abilities to do various things. So like area of effect, you can, you can show a little radius around a piece that you can toggle on and off. Clone lets you make a copy of the piece. Delete lets you delete the piece. And most of them are fairly obvious. You can set layers on a piece, which is actually how you, you can make it have various sides to flip over. So, you know, most pieces, if you're trying to replicate a game faithfully, are going to have two sides. But sometimes it's really convenient to be able to have a four-sided piece, where in the real game, you might actually have two cardboard pieces that represent that. You can actually combine them. It ends up being a little bit nicer. So if you look over here in the, the side, so the pane that collects the traits that are actually in use, you can see this piece has a couple of sent to location traits because you can send it, you can send it to particular spots on the board. It has a couple of prototype traits because you can, this is essentially a way of giving you polymorphism. You can say, I'm going to define a piece that is abstract. And then I'm going to be able to reuse those bits elsewhere on multiple different pieces that I'm defining. And that comes in really handy because most games have lots of pieces that are subtly different, but have the same type. Okay. So what happens then? How does all of this come out when you actually want to use, when you're actually using a piece? Well, let me show you. This is actually from a different game because it has a fairly nice menu. But there's a, so there's this mat here. This is a, Sanctua the First, King of Aragon. So this is from a game called Elmeravid. So when you click on this mat, right click on this mat to get a context menu, you can see here that you have all these options. And these options are defined in part by the traits that you put on a piece. So one thing that's really nice about this system is it gives you, it makes it possible for people who are very non-technical to be able to do something that approximates programming with their game. It gives you a way to, it gives you a way to support a lot of rules assistance, but not rules enforcement. And I'll come back to that in a minute, like why I think that's really important for a system like this, that it's rules assistance and not rules enforcement. Okay. Next slide. Right. Okay, so this is kind of wrapping up. Couple random thoughts. So you saw from the timeline that we started, we started back in 1996. Right. So, and I haven't mentioned until now what Vassal's written in. To date, we've been using Java. So that might actually make us one of the oldest open source projects using Java. I can't really come up with another because Rodney started Vassal within a couple of months of the first release of Java. So, one thing that means is, you know, we have a, we have an awful lot of experience in this space at this point, because we've been doing it for so long. I mean, we actually missed our 25th anniversary last year because we didn't, we didn't realize we were quite that old, which sounds stupid, but it's true. So, however, that also means we have an awful lot of code that is getting long in the tooth. We're quite, we're not very happy with the state of things at present. And we're good. Yeah. And we're going to be, we're going to be doing a rewrite very soon here. So the three six line is probably about the end of Vassal three. So we are, we're going to be taking what we've learned. And we're going to be doing a rewrite that's, well, we're in the design phase right now. Things are pretty stable with V3. And there's always this real lag between developer time and user time. The things that users, so the things that developers feel are old and gnarly and basically dead are often things that users feel are current. So I'm starting to feel like three six is winding down. And I think a lot of people are just starting to use three six and it's still new and shiny for them. So there's there's really this perceptual lag that you get with these things. And so we think we're going to state where, you know, users are going to be in a good state for a while while we're working on v4. Okay, so what can I what can I say about sort of the impact of Vassal? Well, so board gaming in a lot of ways is a really small is a really niche hobby, right? And, you know, the way I got into this is there was a game that I wanted to play that I have, I have, you know, on paper. And when I left university, my primary opponent moved halfway across the country. Well, so we couldn't play anymore, I wanted a way to be able to keep playing. And so something that Vassal does is it really helps hobbyists get the most out of their hobby, it helps, it helps people take games that they wouldn't be able to play face to face, and really get more life out of them, right? So, and I can say, you know, that's been a thing that's been quite gratifying, you know, that these past, these past two years, because I've just been told over and over by people that, you know, we would really have liked to have been able to play games face to face. And, you know, we couldn't, it just wasn't possible. But, you know, we used Vassal to be able to keep in touch with people play the games we would normally play face to face. And, you know, that's just great to hear. Yeah, okay, that pretty much takes me to the end here. Happy to take questions now. Thank you very much for the talk. Yeah, are there any questions from the chat or the people? Thank you, really. If not, I do have some. Do you know what was the main motivation to publish Vassal as free software? Yeah, I mean, so, so this is, this is something that, you know, both Rodney found when he was, when he was working on VASL. And I also found when I was working on a different, a different project before I joined Vassal, which is that there's really a lot of power in collaboration. So, so I, I came to the conclusion that I just couldn't put enough time into the project that I was working on on my own. And, you know, I think Rodney concluded the same thing. So it was something where by, you know, being able to leverage the the contributions of numerous people, you know, when they're available, when they have time, it really, it really gives us a lot of power to move forward. Another thing I can say about that is, you know, as an open source project, we have so much more staying power this way. So during the time that we've been a project, there have been a couple of commercial, commercial board game engines that have come and gone. And, you know, I think at some point, they realized they weren't going to make any more money out of it. We're not constrained by that. We don't have to make a profit. And so as a result of that, we're going to keep going and make the best thing we can make. And there's no really good reason for us to stop doing that. So, you know, that's also been a huge plus for us, just a really huge plus. So I saw I saw a question there about how do we finance development and running yeah, and costs for running the servers? Well, we we get donations, you know, from from our users. It turns out that that the server are our game server, because it really just does does message passing, it isn't it isn't sending graphics back and forth. It's really pretty low bandwidth. So we, you know, it's not actually very expensive to run the project as it happens. We're, you know, we're in we're in fairly good shape with that. You know, that that might that might change, you know, we with with v4, we might find that things are a little bit more intensive. And, you know, at that point, we may look into doing some more fundraising. Thank you very much. I think there is another question. And older to other questions, I think we take those two. And then we go over to forest to his presenting the launch. Yeah, I see one question. I think Carl was wondering if you ever had legal issues because of copyright. Yeah, in your game mentioned. That's a that is a really interesting question. So the way that we've dealt with copyright, what I can say is it's various. There really is no one answer here. So like I mentioned before, we have a we have a we have a pretty good relationship with a lot of game publishers. So so that there are some like GMT and MMP, where they, you know, their designers do play testing in vassal. There are often vassal modules for games before the games are even published. They give us they give the well, they give the people who are designing the modules, the original game art so that the modules look exactly like the games. And really all they ask is that when people are using the modules that somebody owns a copy of the game. So what they found historically and you know, and this is a thing that I've always argued is that this helps them sell games. Their business is selling paper games, not not selling, you know, not selling anything digital. And, you know, I see just see people say over and over, you know, that they buy games because they looked at them in vassal. Right. So, you know, well, we don't have a perfect relationship with every publisher. So there are there are some publishers who are not, you know, who don't want their games on vassal. And so we don't we don't host modules for those games. So you know, it's it's it's fairly simple to deal with that. You know, what people do what people do, you know, for for private use, you know, that we're not hosting, you know, is up to them. I mean, and you know, and that's like with anything, I mean, that, you know, that doesn't really that that isn't something we have any control over. I think that probably answers that question. Yes, thank you very much. And then I would say the last one. For vassal four, have you considered writing parts of the engine? And I'm not sure how to pronounce those closure, Kotlin, or other Java based languages? I'm not Yeah, we have, we've thought about this a bit. So one thing that we, one thing that we're, we're heading for fairly strongly is that we want to be able to have a web client. So there's a there's a good chance that at least some of what we have for vassal four is going to be in JavaScript or TypeScript, at least on the client side, that so it's been historically a real struggle to try to support all the platforms where people want to be able to use vassal. So you know, we, we have, we have a bundle for Windows, we have a bundle for Mac OS, we have a bundle for Linux. I mean, there's a there's just a regular jar you can download. With even with all of those, I would say, at least at least three or four times a month, someone asks me, when are you going to support Android? When are you going to support iOS? And I say, you know, I'd really like to. There's no Java there. So, you know, that having having a web client would solve a lot of the a lot of the platform specific maintenance issues that we run into as well. And so we're kind of we're heading in that direction. I should also say, though, that we I don't want to just have a web client for v4. So I mean, there's still a lot of open questions there. But a web client is what we've got a demo for at the moment. So, you know, I guess I'll leave leave that there. Thank you so much for your time. And thank you so much for this awesome talk and this introduction into, I think are very complex, thematic. And yeah, thank you. All right. Thanks.