# Module Design

**URL:** https://forum.vassalengine.org/c/module-design/10.md

[Latest](https://forum.vassalengine.org/latest.md) · [Categories](https://forum.vassalengine.org/categories.md) · [Tags](https://forum.vassalengine.org/tags.md)

---

## [About the Module Design category](https://forum.vassalengine.org/t/about-the-module-design-category/15)

<div class="topic-metadata">

**Author:** [@system](https://forum.vassalengine.org/u/system)\
**Replies:** 0\
**Last updated:** [August 31, 2021, 6:09pm UTC](https://forum.vassalengine.org/t/about-the-module-design-category/15 "2021-08-31T18:09:51Z")

</div>

Anything related to designing modules: questions, design suggestions, tips, tricks.

---

## [Trait order in counters](https://forum.vassalengine.org/t/trait-order-in-counters/126)

<div class="topic-metadata">

**Author:** [@Brent\_Easton](https://forum.vassalengine.org/u/Brent_Easton)\
**Replies:** 25\
**Last updated:** [September 6, 2025, 2:24am UTC](https://forum.vassalengine.org/t/trait-order-in-counters/126 "2025-09-06T02:24:33Z")

</div>

I have noticed many messages reporting bugs and module problems that all stem from the same basic misunderstanding about the way that counter traits work. The Three most important things to remember when setting up trai…

---

## [Freehand Graphics Conversion](https://forum.vassalengine.org/t/freehand-graphics-conversion/75653)

<div class="topic-metadata">

**Author:** [@dukewacoan](https://forum.vassalengine.org/u/dukewacoan)\
**Replies:** 3\
**Last updated:** [October 14, 2026, 12:15pm UTC](https://forum.vassalengine.org/t/freehand-graphics-conversion/75653 "2026-10-14T12:15:33Z")

</div>

I have some old Freehand 3.0 graphics files that I am wanting to convert to any currently usable format. While I have the old Freehand program, I do not have a machine old enough to run it. Nothing I can find can conve…

---

## [So is there anyway to create a 3D layer?](https://forum.vassalengine.org/t/so-is-there-anyway-to-create-a-3d-layer/90585)

<div class="topic-metadata">

**Author:** [@ChuckS](https://forum.vassalengine.org/u/ChuckS)\
**Replies:** 5\
**Last updated:** [October 13, 2026, 8:55pm UTC](https://forum.vassalengine.org/t/so-is-there-anyway-to-create-a-3d-layer/90585 "2026-10-13T20:55:33Z")

</div>

I am looking at a WWI game and want to create a layer that shows when an aircraft is turning easy/me…

---

## [Ways to store and retrieve values from arbitrarily long strings, or other solutions](https://forum.vassalengine.org/t/ways-to-store-and-retrieve-values-from-arbitrarily-long-strings-or-other-solutions/90555)

<div class="topic-metadata">

**Author:** [@Benkyo](https://forum.vassalengine.org/u/Benkyo)\
**Replies:** 13\
**Last updated:** [October 10, 2026, 1:03am UTC](https://forum.vassalengine.org/t/ways-to-store-and-retrieve-values-from-arbitrarily-long-strings-or-other-solutions/90555 "2026-10-10T01:03:06Z")

</div>

First, what I have done: I have implemented a unit shuffling system for a block wargame, where you …

---

## [Mask whole stack/number of counters](https://forum.vassalengine.org/t/mask-whole-stack-number-of-counters/90564)

<div class="topic-metadata">

**Author:** [@craig83](https://forum.vassalengine.org/u/craig83)\
**Replies:** 18\
**Last updated:** [October 8, 2026, 5:28pm UTC](https://forum.vassalengine.org/t/mask-whole-stack-number-of-counters/90564 "2026-10-08T17:28:45Z")

</div>

Hello, Not sure the best place to post something like this but, working on a Vassal Mod and I’m won…

---

## [Vassal freezes when I try to reorient a piece in an At-Start Stack…](https://forum.vassalengine.org/t/vassal-freezes-when-i-try-to-reorient-a-piece-in-an-at-start-stack/89658)

<div class="topic-metadata">

**Author:** [@jmc3](https://forum.vassalengine.org/u/jmc3)\
**Replies:** 17\
**Last updated:** [October 6, 2026, 1:01am UTC](https://forum.vassalengine.org/t/vassal-freezes-when-i-try-to-reorient-a-piece-in-an-at-start-stack/89658 "2026-10-06T01:01:39Z")

</div>

I am modifying a former module I made about Napoleon’s Leipzig Battle. I am working with the more u…

---

## [dystopian wars module](https://forum.vassalengine.org/t/dystopian-wars-module/90540)

<div class="topic-metadata">

**Author:** [@jandmbryant](https://forum.vassalengine.org/u/jandmbryant)\
**Replies:** 5\
**Last updated:** [September 29, 2026, 8:51pm UTC](https://forum.vassalengine.org/t/dystopian-wars-module/90540 "2026-09-29T20:51:04Z")

</div>

is anyone working on a dystopian wars module? i would really love that but i have zero programming …

---

## [Vassal posting to chat what decides what order the posts happen in?](https://forum.vassalengine.org/t/vassal-posting-to-chat-what-decides-what-order-the-posts-happen-in/90553)

<div class="topic-metadata">

**Author:** [@ChuckS](https://forum.vassalengine.org/u/ChuckS)\
**Replies:** 7\
**Last updated:** [September 29, 2026, 7:40pm UTC](https://forum.vassalengine.org/t/vassal-posting-to-chat-what-decides-what-order-the-posts-happen-in/90553 "2026-09-29T19:40:18Z")

</div>

I am having initiative rolls display on the aircraft automatically and to chat. It appears the order…

---

## [Replace with other randomly](https://forum.vassalengine.org/t/replace-with-other-randomly/90549)

<div class="topic-metadata">

**Author:** [@Sotchris](https://forum.vassalengine.org/u/Sotchris)\
**Replies:** 5\
**Last updated:** [September 29, 2026, 7:19pm UTC](https://forum.vassalengine.org/t/replace-with-other-randomly/90549 "2026-09-29T19:19:57Z")

</div>

Question: How do I radomly replace a piece from a list using the “Replace with other” trait ?

---

## [Working On GKC along with Attachmeng](https://forum.vassalengine.org/t/working-on-gkc-along-with-attachmeng/90521)

<div class="topic-metadata">

**Author:** [@DeanXu](https://forum.vassalengine.org/u/DeanXu)\
**Replies:** 2\
**Last updated:** [September 18, 2026, 1:42pm UTC](https://forum.vassalengine.org/t/working-on-gkc-along-with-attachmeng/90521 "2026-09-18T13:42:54Z")

</div>

I am working on a module now, in this module, there is a Timer piece, which will send GKC to a group…

---

## [File access in a module](https://forum.vassalengine.org/t/file-access-in-a-module/90518)

<div class="topic-metadata">

**Author:** [@hnwombat](https://forum.vassalengine.org/u/hnwombat)\
**Replies:** 2\
**Last updated:** [September 16, 2026, 12:49pm UTC](https://forum.vassalengine.org/t/file-access-in-a-module/90518 "2026-09-16T12:49:17Z")

</div>

I am looking to improve the Ambush! module. In addition to adding more of the extension games (an ob…

---

## [Module Extension Utility v1.0.21 released](https://forum.vassalengine.org/t/module-extension-utility-v1-0-21-released/90513)

<div class="topic-metadata">

**Author:** [@delatbabel](https://forum.vassalengine.org/u/delatbabel)\
**Replies:** 0\
**Last updated:** [September 15, 2026, 3:49am UTC](https://forum.vassalengine.org/t/module-extension-utility-v1-0-21-released/90513 "2026-09-15T03:49:03Z")

</div>

Version 1.0.21 of the Vassal module extension utility has been released: The most significant cha…

---

## [Looking for a function](https://forum.vassalengine.org/t/looking-for-a-function/90505)

<div class="topic-metadata">

**Author:** [@MadDog](https://forum.vassalengine.org/u/MadDog)\
**Replies:** 6\
**Last updated:** [September 11, 2026, 1:44am UTC](https://forum.vassalengine.org/t/looking-for-a-function/90505 "2026-09-11T01:44:17Z")

</div>

I am working on a module for the BCS system. I am looking for a function that works like this: Fin…

---

## [Hide Game Piece Layer Control button according to player side](https://forum.vassalengine.org/t/hide-game-piece-layer-control-button-according-to-player-side/78913)

<div class="topic-metadata">

**Author:** [@steenkh](https://forum.vassalengine.org/u/steenkh)\
**Replies:** 38\
**Last updated:** [September 8, 2026, 11:20pm UTC](https://forum.vassalengine.org/t/hide-game-piece-layer-control-button-according-to-player-side/78913 "2026-09-08T23:20:24Z")

</div>

In my The Burning Blue module, I would like to hide a button so that the RAF player cannot press it accidentally. The button is implemented with a Game Piece Layer Control. The way to hide it should be through the ‘Globa…

---

## [Refresh Counters causes havoc with some Layer Traits](https://forum.vassalengine.org/t/refresh-counters-causes-havoc-with-some-layer-traits/90472)

<div class="topic-metadata">

**Author:** [@sfcmikej](https://forum.vassalengine.org/u/sfcmikej)\
**Replies:** 5\
**Last updated:** [September 7, 2026, 11:29pm UTC](https://forum.vassalengine.org/t/refresh-counters-causes-havoc-with-some-layer-traits/90472 "2026-09-07T23:29:58Z")

</div>

After a module update I need to update the pieces in some existing games and I am using the Refresh …

---

## [Trouble with Masking and gkc affecting both sides](https://forum.vassalengine.org/t/trouble-with-masking-and-gkc-affecting-both-sides/90486)

<div class="topic-metadata">

**Author:** [@Benkyo](https://forum.vassalengine.org/u/Benkyo)\
**Replies:** 5\
**Last updated:** [September 4, 2026, 6:19am UTC](https://forum.vassalengine.org/t/trouble-with-masking-and-gkc-affecting-both-sides/90486 "2026-09-04T06:19:30Z")

</div>

Block wargame, both sides have masked pieces, which normally only the owning side can mask or unmask…

---

## [Help with CountLocation](https://forum.vassalengine.org/t/help-with-countlocation/90479)

<div class="topic-metadata">

**Author:** [@panther\_2010](https://forum.vassalengine.org/u/panther_2010)\
**Replies:** 6\
**Last updated:** [September 2, 2026, 9:11pm UTC](https://forum.vassalengine.org/t/help-with-countlocation/90479 "2026-09-02T21:11:46Z")

</div>

I noticed the CountLocation function in the expression builder and tried using it, but unfortunately…

---

## [Chart window dont open properly? ](https://forum.vassalengine.org/t/chart-window-dont-open-properly/90466)

<div class="topic-metadata">

**Author:** [@qarassen](https://forum.vassalengine.org/u/qarassen)\
**Replies:** 3\
**Last updated:** [August 28, 2026, 4:08pm UTC](https://forum.vassalengine.org/t/chart-window-dont-open-properly/90466 "2026-08-28T16:08:08Z")

</div>

Hello, i created a chart window with multiple drop-down menus, looks fine, saving the module and…

---

## [Tip: Using Global Option User Preferences](https://forum.vassalengine.org/t/tip-using-global-option-user-preferences/72741)

<div class="topic-metadata">

**Author:** [@marktb1961](https://forum.vassalengine.org/u/marktb1961)\
**Replies:** 4\
**Last updated:** [August 27, 2026, 6:03am UTC](https://forum.vassalengine.org/t/tip-using-global-option-user-preferences/72741 "2026-08-27T06:03:06Z")

</div>

Users will familiar with the module preference panel. It is used to set generic Vassal preferences a…

---

## [Request to Save Movement Trails Currently Lost in Saved PNGs of Game Maps using Image Capture Tool](https://forum.vassalengine.org/t/request-to-save-movement-trails-currently-lost-in-saved-pngs-of-game-maps-using-image-capture-tool/90459)

<div class="topic-metadata">

**Author:** [@rwd1812](https://forum.vassalengine.org/u/rwd1812)\
**Replies:** 0\
**Last updated:** [August 24, 2026, 5:25pm UTC](https://forum.vassalengine.org/t/request-to-save-movement-trails-currently-lost-in-saved-pngs-of-game-maps-using-image-capture-tool/90459 "2026-08-24T17:25:31Z")

</div>

In Vassal module designs with movement trails, the trail images don’t save to the PNG when capturing…

---

## [Expand board while you play](https://forum.vassalengine.org/t/expand-board-while-you-play/8180)

<div class="topic-metadata">

**Author:** [@Yuyu](https://forum.vassalengine.org/u/Yuyu)\
**Replies:** 3\
**Last updated:** [August 23, 2026, 3:21pm UTC](https://forum.vassalengine.org/t/expand-board-while-you-play/8180 "2026-08-23T15:21:19Z")

</div>

Sorry for my bad English… I am designing game to use a folding board, during the game the hero fall into a whirlpool and deployed dashboard appear. Any suggestions to be playing pop board as …? The board should be…

---

## [Can a counter do a U-turn (and back)?](https://forum.vassalengine.org/t/can-a-counter-do-a-u-turn-and-back/86587)

<div class="topic-metadata">

**Author:** [@Joe](https://forum.vassalengine.org/u/Joe)\
**Replies:** 3\
**Last updated:** [August 23, 2026, 4:42am UTC](https://forum.vassalengine.org/t/can-a-counter-do-a-u-turn-and-back/86587 "2026-08-23T04:42:50Z")

</div>

Is it possible to have a counter rotate 180° to its current position - make a U-turn - and do it aga…

---

## [Is there some trick to global hotkeys?](https://forum.vassalengine.org/t/is-there-some-trick-to-global-hotkeys/10809)

<div class="topic-metadata">

**Author:** [@Benkyo](https://forum.vassalengine.org/u/Benkyo)\
**Replies:** 8\
**Last updated:** [August 23, 2026, 4:37am UTC](https://forum.vassalengine.org/t/is-there-some-trick-to-global-hotkeys/10809 "2026-08-23T04:37:33Z")

</div>

Simple goal: to have a startup global key command tell a control piece to trigger a global hotkey, which tells a game piece layer control to deactivate a game piece layer that I want off by default. It works fine for th…

---

## [Change-Property Toolbar getting sloppy](https://forum.vassalengine.org/t/change-property-toolbar-getting-sloppy/90444)

<div class="topic-metadata">

**Author:** [@Matthias\_Hardel](https://forum.vassalengine.org/u/Matthias_Hardel)\
**Replies:** 2\
**Last updated:** [August 19, 2026, 7:18am UTC](https://forum.vassalengine.org/t/change-property-toolbar-getting-sloppy/90444 "2026-08-19T07:18:53Z")

</div>

Having made a simple dice roller statistic report using three Global Properties and the Hotkeys for …

---

## [Rolling 2 different dice?](https://forum.vassalengine.org/t/rolling-2-different-dice/90422)

<div class="topic-metadata">

**Author:** [@Rodzilla68](https://forum.vassalengine.org/u/Rodzilla68)\
**Replies:** 8\
**Last updated:** [August 15, 2026, 11:53pm UTC](https://forum.vassalengine.org/t/rolling-2-different-dice/90422 "2026-08-15T23:53:14Z")

</div>

I want a button to roll a d6 and a d8 and give me both results. I thought I could create 2 hidden d…

---

## [Warriors of god mercenaries deployment](https://forum.vassalengine.org/t/warriors-of-god-mercenaries-deployment/90394)

<div class="topic-metadata">

**Author:** [@lar](https://forum.vassalengine.org/u/lar)\
**Replies:** 2\
**Last updated:** [August 9, 2026, 10:38am UTC](https://forum.vassalengine.org/t/warriors-of-god-mercenaries-deployment/90394 "2026-08-09T10:38:38Z")

</div>

Where are the mercenaries in the Warriors of God deployment?

---

## [Auto-report movement to the map not working](https://forum.vassalengine.org/t/auto-report-movement-to-the-map-not-working/90386)

<div class="topic-metadata">

**Author:** [@sfcmikej](https://forum.vassalengine.org/u/sfcmikej)\
**Replies:** 4\
**Last updated:** [August 5, 2026, 9:18pm UTC](https://forum.vassalengine.org/t/auto-report-movement-to-the-map-not-working/90386 "2026-08-05T21:18:28Z")

</div>

I am using a Send To trait to send a piece to an eliminated box on another Map Window and I have an A…

---

## [Property sheet yes/no](https://forum.vassalengine.org/t/property-sheet-yes-no/90364)

<div class="topic-metadata">

**Author:** [@FMAlanbrooke](https://forum.vassalengine.org/u/FMAlanbrooke)\
**Replies:** 2\
**Last updated:** [August 3, 2026, 8:11am UTC](https://forum.vassalengine.org/t/property-sheet-yes-no/90364 "2026-08-03T08:11:24Z")

</div>

I have spaceships that can have upgrades or damage that I would like the owner to be able to click o…

---

## [How to delete a file from the module library](https://forum.vassalengine.org/t/how-to-delete-a-file-from-the-module-library/90365)

<div class="topic-metadata">

**Author:** [@delatbabel](https://forum.vassalengine.org/u/delatbabel)\
**Replies:** 1\
**Last updated:** [July 30, 2026, 11:58am UTC](https://forum.vassalengine.org/t/how-to-delete-a-file-from-the-module-library/90365 "2026-07-30T11:58:02Z")

</div>

I have uploaded some vsav files to a package in the module library. One of those files has an error …

[Next page](https://forum.vassalengine.org/c/module-design/10.md?page=1)
