Roadmap for VASSAL 4

Well, I was speaking more of the theory. Since, in theory, you shouldn’t be able to do that. The point is, by design, who is allowed to get at what is variable by settings. I also think it could be a good thing to support in general so Vassal can accommodate both PBeM simplicity and tournament enforcement at the same time.

Since you mentioned games with cards, and most of my module building time has been devoted to coming up ways to accomplish fairly ordinary card-related tasks that can only be done in VASSAL 3 with cringe-inducing rat’s nests of triggers, STLs, GKCs, and so on…

Here are some basic functions that should be available out-of-the-box:

  • Dealing cards. The way I’m doing it is pretty hairy, especially for a game with 6 player sides!
  • Discarding random cards (or items in general, from Player Hands or Private Windows).
  • Giving a random card to another player
  • Giving a specific card to another player (probably something you could enable/disable with a module-level preference depending on whether or not the game allows this
  • Some way of doing “Take the top X cards from the deck, choose some number of them, return/discard the rest”. This shouldn’t require the player to actually pull all the cards into his hand first, it would need some sort of picker and send things to the right places according to the player choices.
  • More flexible player hand windows. Sometimes a game might benefit from being able to set up a non-standard layout, or always make sure new cards get added on the left or right, etc. I don’t have fully-formed ideas on this, but suspect the current way is a constraint on some games.

There are probably lots more just on the topic of card handling, but these are the ones I’ve thought about based on what I’ve found difficult (or impossible) to do in VASSAL 3.

Thus spake JoelCFC25:

I would like to see some thought to developing a list of game
‘mechanisms’, for want of a better word, that must be supported.

Since you mentioned games with cards, and most of my module building
time has been devoted to coming up ways to accomplish fairly ordinary
card-related tasks that can only be done in VASSAL 3 with
cringe-inducing rat’s nests of triggers, STLs, GKCs, and so on…

Here are some basic functions that should be available out-of-the-box:

  • Dealing cards. The way I’m doing it is pretty hairy, especially for
    a game with 6 player sides!
  • Discarding random cards (or items in general, from Player Hands or
    Private Windows).
  • Giving a random card to another player
  • Giving a specific card to another player (probably something you
    could enable/disable with a module-level preference depending on whether
    or not the game allows this
  • Some way of doing “Take the top X cards from the deck, choose some
    number of them, return/discard the rest”. This shouldn’t require the
    player to actually pull all the cards into his hand first, it would need
    some sort of picker and send things to the right places according to the
    player choices.

These five all look to me like things which could be done by setting
the appropriate properties on the cards.

  • More flexible player hand windows. Sometimes a game might benefit
    from being able to set up a non-standard layout, or always make sure new
    cards get added on the left or right, etc. I don’t have fully-formed
    ideas on this, but suspect the current way is a constraint on some
    games.

For this one, it’s less clear to me where the separation is between
what the game requires formally and what’s presentation.


J.

Hello,

I would like to join the development of VASSAL Version 4. I’m especially interested in seeing vassal become available on tables.
This involves that the GUI can be adapted to touch as well as the relative small screen size these devices offer.

One further point that I would love to see is the ability to play asynchronously, i.e., the move or game states are stored on a custom server. This would allow one player to make her moves and quit the application and the other player can than do his moves when he has the time.

The information I could not find so far are:

  • where is the current source code?
  • where are the ‘design’ documents?
  • where should I register as a potential developer?

Thank you for read and hopefully for responding

Thus spake DragonGame:

One further point that I would love to see is the ability to play
asynchronously, i.e., the move or game states are stored on a custom
server. This would allow one player to make her moves and quit the
application and the other player can than do his moves when he has the
time.

This is part of the plan, yes.

The information I could not find so far are:

  • where is the current source code?

The current source for the V4 demo is here:

git.code.sf.net/p/vassalengine/vassal4-demo

You’re not going to have an easy time with it, though, as it’s presently
in an intermediate state—I have quite a few changes locally which need
to be checked in first.

  • where are the ‘design’ documents?

I’m planning to produce these during May.

  • where should I register as a potential developer?

Here. Once I’m a bit further along, I’ll make an announcement about
getting organized for V4 development.


J.

I’m going to apologize in advance for not reading all 18 pages of posts on this topic. While I joined the forum back in 2010, which surprised me when I tried to create my account today, I’ve done nothing with it. Until now…

After having worked on my first Vassal Module, and having a difficult time while doing so, I decided to get involved with this project. Your initial posts re: the issues with Vassal 3 are spot on and the obstacles that you’re encountering happen to almost all software projects. As I’ve had to wrestle with similar code and organization issues in the past, I’d like to help if I may.

By way of introduction, I’m a Principal Software Engineer and have been writing code for over 30 years. While I’m not an expert in Java, I have toyed with it, having written some adaptive data compression classes and a Mersenne Twister pseudo-random number generator in the language. Throughout my career, I’ve been able to read and analyze other people’s code and become quite proficient quickly.

My resume is here.

Let me know if and how I can be of service.

Is there a ‘sign up’ page on helping out with converting VASL 5.10.0 to the V4 standard?

I get it that V4 has to exist first, but I’d like to get a hand on what is need to make the VASL module compatible and maintainable with V4.

The closet info I have is what Joel posted on GS.

I looked here (and would have to relook and find) but the git repos for V4 from sourceforge are not as friendly nor understandable as GitHub is. GitHub is pretty easy to use, fork, clone, fetch and push with. But when I go here:

http://vassalengine.git.sourceforge.net/git/gitweb.cgi?p=vassalengine/vassal4-demo;a=summary

I don’t see anything on how to fork/clone this repo locally. I tried use the command line tools I have (both Git Shell and Git Bash) but to no avail.

Anyway. Thoughts, tips, ideas or what am I doing wrong?

I don’t know much about VASL, but I’m wondering why it continues to exist
as a separate branch. Shouldn’t it instead be converted to a standard
module that complies with V4?

  • M.

On 9 May 2013 08:38, zov66 dlazov@comcast.net wrote:

Is there a ‘sign up’ page on helping out with converting VASL 5.10.0 to
the V4 standard?

I get it that V4 has to exist first, but I’d like to get a hand on what
is need to make the VASL module compatible and maintainable with V4.

The closet info I have is what Joel posted on GS.

  1. VASSAL will be moving to C++ for V4. This is for the game engine.
    This has nothing to do with modules. Custom module code will neither
    need to be, nor even be able to be, in C++. There is no question of
    VASL, or any other module, needing custom C++ for V4. Module scripting
    is likely to be in Python (though that’s not settled presently, due to
    one particular technical issue).

  2. If VASL is going to exist for V4 at all, then it will have to be
    recreated. This will not be nearly as much work as you might think,
    because firstly, it’s not the same as recreating VASL from scratch,
    and secondly, recoding the custom bits will be dramatically simpler.
    VASL is only about 10k lines of code as it is, so is not actually that
    large. You’re rapidly reaching the point where the current codebase is
    unmaintainable anyway, in part because there are no tests and in part
    because all of the display logic is comingled with the game logic.
    Both of these could be rectified with V4.

Additionally:

  1. The VASSAL devs would very much like to have anyone interested in
    converting VASL to V4 working with us to determine requirements from
    as early a point in the design process as possible. VASL is one of the
    “deep” modules, and you guys have a wealth of experience regarding
    what you need and how things should work.

I looked here (and would have to relook and find) but the git repos for
V4 from sourceforge are not as friendly nor understandable as GitHub is.
GitHub is pretty easy to use, fork, clone, fetch and push with. But when
I go here:

vassalengine.git.sourceforge.net/git/gitweb.
cgi?p=vassalengine/vassal4-**demo;a=summaryhttp://vassalengine.git.sourceforge.net/git/gitweb.cgi?p=vassalengine/vassal4-demo;a=summary

I don’t see anything on how to fork/clone this repo locally. I tried use
the command line tools I have (both Git Shell and Git Bash) but to no
avail.

Anyway. Thoughts, tips, ideas or what am I doing wrong?

_____________**
Read this topic online here:
vassalengine.org/**forum/vie … 6#**p40126<Roadmap for VASSAL 4 - #267 by DonLazov

_____________**
messages mailing list
messages@vassalengine.org
vassalengine.org/**mailman/listinfo/messageshttp://www.vassalengine.org/mailman/listinfo/messages

Thus spake Michael Kiefte:

I don’t know much about VASL, but I’m wondering why it continues to exist
as a separate branch. Shouldn’t it instead be converted to a standard
module that complies with V4?

I’m supposing that you mean V3.2 here. VASL is a standard module, it
just happens to contain a great deal of custom code (similar to TS, in
that regard), and this code lives in our repo for lack of a better
place. It’s been years since the current version of VASL was a stand-
alone app.


J.

Thus spake zov66:

Is there a ‘sign up’ page on helping out with converting VASL 5.10.0 to
the V4 standard?

There’s not one yet. One of my projects for May is to set up a place for
the V4 design work to happen, and to type up my notes as a point from
which to start. I’ll let you know once that’s happened.


J.

I’m supposing that you mean V3.2 here. VASL is a standard module, it
just happens to contain a great deal of custom code (similar to TS, in
that regard), and this code lives in our repo for lack of a better
place. It’s been years since the current version of VASL was a stand-
alone app.

I think one of the goals for V4 should be to incorporate the features that
VASL and TS needed to do in custom code. I know I’ve gotten a bunch of
requests for that. Some are very obvious (dealing hands, card counts in
the toolbar, new zoom class for hands, etc.)

It would be good for someone intimately familiar with VASL to help out with
that. I would include Combat Commander in that list as well as I believe
there’s a fair bit of custom code in that as well.

  • M.

I believe Joel envisions the bulk of the VASL code being replaced by capabilities inherent in the new architecture. The map stuff might be tricky. Anything that requires the boards to be changed would be a tall order given the amount of TLC that goes into them.

I’m trying to resurrect the VASL LOS code and am wondering if anything that complex could be done via scripting.

-David

I know my $0.02 has very little sway here, but will VASSAL 4 require Java in some form? Reason I ask is that there have been so many zero day exploits regarding Java the last few years that I’m very leery of installing it on any of my machines when I do clean installs.

Thus spake MKSheppard:

I know my $0.02 has very little sway here, but will VASSAL 4 require
Java in some form? Reason I ask is that there have been so many zero day
exploits regarding Java the last few years that I’m very leery of
installing it on any of my machines when I do clean installs.

One of my goals is to never use Java again myself in a non-work project.
The reference desktop client we produce for V4 will not use Java in any
way.


J.

Have you started at some point programming VASSAL 4 ? (long thread that spread from 2011 to 2013)

Thus spake Grummore:

Have you started at some point programming VASSAL 4 ? (long thread that
spread from 2011 to 2013)

Yes, I’m doing prototype work now.


J.

The only thing I would have suggested to help keep the java app more maintainable would have been try to use the Netbeans Platform. It contains a lot of the boiler plate code and OS specific gui stuff in it, from what I understand.

VASL 4 will be C++, so NetBeans in NA. -David

Any idea when you’ll have an update on the progress? I’m interested in hearing where you are going with the design for the client applications and the strategy for code reuse. I’m hoping we can move to MVC and use messages vs. the command pattern. But that’s my bias from using Cocoa/Objective C. :wink:

-David

Sorry, my point was you could use the existing components within the netbeans platform. I personally have never seen the “big re-write” in the sky work successfully.