Learning Vassal

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

Gosh…(gasp)…you’re taking…(gasp)… all the fun…(gasp)… out of it.

Thanks for all your postings. I’m learning a lot just reading through this forum.

Thanks again, Joel. I think, to understand what you’re telling me, I shall need to learn more of Java language & syntax as well as taking my study of Vassal a lot further. The way in which the Vassal GKC you show is written seems to use Java syntax and I would not have even thought about attempting its use with my current level of knowledge. There are a number of other traits that I don’t have a clue about how to use - hence my decision to study Vassal more formally - the way symbols like “=” and “&” are used doubled-up is something I don’t currently understand and I believe they are derived from Java.

I’m amazed at the level of discussion my original post has generated - it’s gratifying but a little surprising.

== and && aren’t specific to Java; you find them in any language with C-style syntax. == is the equality comparison operator (cf. =, which is the assignment operator), and && is the boolean AND operator.

1 Like

They specifically said, "Matrix Games is pleased to announce that it has acquired the rights to the VASSAL Engine from Vassal Engineering…

Seems pretty clear to me, and that’s much more than using a single wrong word. Why would an entity say such a thing if it wasn’t true? Not calling you a liar, uckelman, but this is really strange. But then, Matrix have always been a bunch of strange characters.
Not telling how to run your business, but if it isn’t true, I’d have sent them a friendly cease-and-desist letter years ago.