Learning Vassal

I’ve started to try to learn module programming formally, rather than just blunder about. Can somebody point me at either a series of videos or instructions from which I can learn the most up-to-date version possible (or at least as far as V 3.5.8) without being blinded by jargon or being already expected to know the subject already?

Thanks,
Mike

1 Like

Despite its age, Joel Toppen’s YouTube series remains best of breed for its thoroughness. The features added in the development frenzy of the last year or so aren’t in it, but the fundamentals have remained the same. If you want an introduction to basics, this should be your first port of call.

I don’t know how it rates on the jargon meter by your standards, but I don’t think there’s any better or more comprehensive resource in existence.

5 Likes

I agree with @JoelCFC25. That series was very helpful to me. The videos will give you the grounding you need and you can get up to speed with new features as you go; the documentation has been overhauled and kept up to date.

Mark: I replied to Joel’s e-mail but yours was from a no-reply address so, for both of you, here’s what I said:
"Thank you. I have been through most of Joel’s videos and found them extremely useful and informative. I was keen to know if any further work has taken place that would bring me up-to-date - I see many innovations happening in the 3.6 series - not the least my plea for dice routines. Can you please confirm that the 3.1 version of the manual is as up-to-date as I can get?

I have just completed the design of a new Wars of the Roses game using Vassal and am currently play-testing both the game and the module. I have no intention of publishing but I’ve utilised much of what I’ve been learning to get where I have.

I just caught up on the Matrix site with their move on Vassal and hope it provides you all with an improved situation and facilities."

Hi Joel:

Thank you. I have been through most of Joel’s videos and found them extremely useful and informative. I was keen to know if any further work has taken place that would bring me up-to-date - I see many innovations happening in the 3.6 series - not the least my plea for dice routines. Can you please confirm that the 3.1 version of the manual is as up-to-date as I can get?

I have just completed the design of a new Wars of the Roses game using Vassal and am currently play-testing both the game and the module. I have no intention of publishing but I’ve utilised much of what I’ve been learning to get where I have.

I just caught up on the Matrix site with their move on Vassal and hope it provides you all with an improved situation and facilities.

I’m not aware of any more updated YouTube or video guides–if someone has made some, they aren’t publicizing them very well.

The Module Designer’s Guide was a pretty massive undertaking by @mycenae in the first place–getting it comprehensively updated would be a project on the same magnitude, I’d guess. My memory is that this is the one and only version of it, you aren’t missing something newer.

The provided documentation is up-to-date and added to on a rolling basis.

What does this refer to? What’s “the Matrix site”?

1 Like

Hi Joel:

I was searching for other videos on Vassal and this popped up in my search engine:

Matrix Games Acquires VASSAL Engine

For game designers and publishers, VASSAL is software that lets you create … Status: offline, Please see my post in the general forum VASSAL discussion.

There was no dateline on the item and, once I’d followed it through (after e-mailing you), I realised it was 16 years out of date! Why don’t search engines remove out-of-date entries?

Hope I didn’t cause too much disturbance and that you guys keep up the good work.

Cheers,
Mike

Thanks, Joel. At least I appear to have the latest info. I’m not surprised the Guide hasn’t been updated - it is a huge piece of work and still covers the ground pretty well. Coupled with the Reference Manual, I should have everything I need.

2 Likes

Oh geez, I completely forgot about that! Thanks for explaining.

That page caused confusion for years after they published it. The headline is utterly misleading—they really meant “Uses”, not “Acquires”.

Thus spake mike0liver via Vassal:

Hi Joel:

I was searching for other videos on Vassal and this popped up in my search engine:

Matrix Games Acquires VASSAL Engine

For game designers and publishers, VASSAL is software that lets you create … Status: offline, Please see my post in the general forum VASSAL discussion.

There was no dateline on the item and, once I’d followed it through (after e-mailing you), I realised it was 16 years out of date! Why don’t search engines remove out-of-date entries?

Hope I didn’t cause too much disturbance and that you guys keep up the good work.

Cheers,
Mike

Replied via the forum.

Thanks for taking the time to explain!

Well, at least you’re not about to be asset-stripped and thrown out of your job! I’m glad it was a false alarm.

By the way, I’m taking an online course in Java programming to better understand how Vassal works.

Cheers,
Mike

1 Like

Taking an online course in Java programming might be useful in other ways, but it will not advance you in any meaningful way towards your goal of designing modules. VASSAL may presently be developed in Java, but the user experience of creating/editing modules requires absolutely zero programming skill. If you are trying to design custom behavior that the core software doesn’t support, that’s something different–you would want Java experience for that, but it would likely be something above and beyond where an online course can take you.

I accept what you say. I have programmed in Basic and VB6 and thought it would be good to know the language in which Vassal is written - I frequently come across terms unfamiliar to me that I suspect are Java-related and, who knows, I may decide to take it further. Rest assured, it won’t take precedence over learning Vassal.

Yes, but.

The flow of control through GKC’s, triggers etc. and using Properties is ‘programming-like’ and people with any programming experience at all in any language will generally have an easier time wrapping their head around the concepts.

Also, a basic knowledge of Java programming concepts will help you to better understand how to build Beanshell expressions, which require strict Java syntax.

I take the point, but I see the loose equating of “module design” with “computer programming” often enough that I usually push back on it. Even if crafting expressions is what’s meant when saying “programming” (as opposed to writing functions, classes, extending the features of the software itself), I still wouldn’t want casual observers to get the impression that a wide-ranging introduction to programming is necessary to surmount the challenge. I agree that people who have that in their toolbox are going to get the hang of things faster.

You can do a tremendous amount by learning little more than the comparison operators and how &&, ||, and parentheses work in concert–I believe that’s achievable for most folks. And even that probably exceeds the needs of many, unless they really desire to put in shortcuts/conveniences that require them.

Hi Joel:

The “equating” was all mine and was not intended to sow confusion about module design and programming. I find module design akin to programming but I do realise it’s not the same. I came across terms like “bean …?” and was unsure if this referred to something specific in Vassal or, more generally, in Java. I am sure someone in Vassal would have been happy to expand on the subject but, equally, I’m trying not to take up your valuable time with petty enquiries. Besides, I’m a believer in DIY wherever possible and thought it might be useful for all kinds of purposes (not least brain stimulation) to learn Java.

Hope that sorts it out :slight_smile:

1 Like

Java beans are things you’re likely to find in enterprise settings (for object persistence); they’re not something we’re using.

Right. You do realise you’ve just opened another can of worms? What are “enterprise settings” and “object persistence”? Seriously, Joel, I don’t think I need an explanation at this time but I continue to be impressed with the level of service I get from you guys.

My guess is you saw a mention of BeanShell, which (if I’m summarizing correctly) is a mini scripting language compatible with Java with an interpreter that VASSAL uses.

There are more and more places within the VASSAL editor that are capable of evaluating expressions on the fly (they usually have what looks like a little calculator icon at the far right of where you type things in) to give you control over what you’re doing. So, what does that actually mean? It’s how you translate your goal as described in human language into a logical expression that can be tested against piece properties, properties you’ve put into a module yourself, zones/regions of a map you’ve defined, etc:

Human readable version
“I want to send a command that flips a piece over, but only if it’s a battleship and it’s in the Coral Sea zone”

VASSAL version
Global Key Command trait that sends the “flip over” keystroke you decide on, controlled by a property match expression, where ShipType is a property you defined on a certain class of pieces, and Coral Sea is the name you gave to a zone you drew on the map:

{ShipType=="Battleship" && CurrentZone=="Coral Sea"}

The keystroke is cast out into the void to all pieces, but only pieces for which this logical expression returns TRUE act on it. This is very common to use on Trigger Actions as well–you want to kick off a sequence of keystrokes, but only under specific conditions, so you build an expression which must come back as TRUE for the whole thing to get started.

As Brent indicated, this part is easier to understand and gain confidence in using when you have some limited background with programming concepts. If you do nothing more than learn logical OR (||), logical AND (&&), equal (==), not equal (!=) and >, >=, <, <= you can do a lot. There are functions for string comparison and doing actual math calculations as well, but don’t drink from the fire hose straight away.

3 Likes