Just jumping the train here…
I agree with the overall analysis of #danieltakai ! There is no need to use a low level language. I only deal in C++ for real time and/or hardware abstraction layers, where the trade off of using a low level language is (quantifiably) positive. When it comes to day to day work, I’d rather use a language that is accessible, facilitates rapid development cycles and is interactive.
We do not have realtime issues or hardware abstraction layers to cope with, that would make this kind of ordnance necessary per se.
The limiting factor of vassal in its 3.x incarnation is 1) java and its implications (write 50 sloc for an interface your don’t even use) for module design beyond the stock components, 2) the way traits are implemented (as decorators) and 3) no separation of concerns for rendering (front end) and manipulation of game state (automation, autonomous agents, AI). I would love to use vassal for my reinforcement learning and AI stuff… it is just not worth the time in its current state.
I would think that the module design could be completely handled on a properties+configuration+resources level. The barriers here should be really low and focus on getting things done with a predefined, finite set of tools. The current version is a proof that this concept is very successful and well received!
C++ for the server is maybe fine, but a tough choice strategically. As I already mentioned, this is not a native domain for a low level language. Another thing to consider is: for someone to get into C++ just to help out with his pet project, I will predict a 5% chance this leads to productive contributions. The trade off here is probably negative, and that deficit will be the burden of the core developer(s) (/wave Joel, prolly no news told here). That said, if this choice is one to make you (Joel) more comfortable, assuming you will lift most of the weight, I can understand that.
Perhaps there is a middle way, some sort of agreeable JIT-LLVM … no idea …
CLOUD: there is no cloud… there is only other people computers. For applications of this kind, state is entirely handle client site, with state-transitions communicated piggy-back a slim message protocol (XMPP atm if I am not mistaken). As such nothing really has to scale on magnitudes that need consideration or could be sensibly distributed.
There is a possibility to setup your own server already (to host your own tournament … but why would you do that?).
Another thing that I like to highlight for V4 is cross-platform accessibility for players and developers. This is kind of a nightmare atm. It would also be sensible to care for mobile devices and I’d think that parting with the stylish, 90esque Swing gui’s will open that door automatically. Any current front end framework will be mobile ready.
Take all of this with a grain of salt, I only lurk these channels and my knowledge of the V3 code base is lacking at best