# Cannibalizing Cyberboxes

**URL:** <https://forum.vassalengine.org/t/cannibalizing-cyberboxes/123>\
**Category:** Development\
**Created:** [January 11, 2008, 7:49am UTC](https://forum.vassalengine.org/t/cannibalizing-cyberboxes/123 "2008-01-11T07:49:09Z")\
**Posts on this page:** 16\
**Page:** 1

<div class="post-metadata">

**Author:** ![Matthias\_Hardel](https://forum.vassalengine.org/letter_avatar_proxy/v4/letter/m/85e7bf/32.png) [@Matthias\_Hardel](https://forum.vassalengine.org/u/Matthias_Hardel)\
**Post date:** [January 11, 2008, 7:49am UTC](https://forum.vassalengine.org/t/cannibalizing-cyberboxes/123/1 "2008-01-11T07:49:09Z")

</div>

To use them for VASSAL modules I would like to get access to image files of Cyberbox modules.

Is there a way to get into the .gsn files/archives, which seem to contain the image data? Are the .gsn files archives at all?

I’m using a PowerMac running Mac OS 10.4 only.

Matthias

---

<div class="post-metadata">

**Author:** ![uckelman](https://forum.vassalengine.org/user_avatar/forum.vassalengine.org/uckelman/32/10020_2.png) [@uckelman](https://forum.vassalengine.org/u/uckelman)\
**Post date:** [January 11, 2008, 9:59am UTC](https://forum.vassalengine.org/t/cannibalizing-cyberboxes/123/2 "2008-01-11T09:59:24Z")

</div>

Thus spake “Matthias Hardel”:

> [@](#):
>
> To use them for VASSAL modules I would like to get access to image files of C  
> yberbox modules.
> 
> Is there a way to get into the .gsn files/archives, which seem to contain the  
> image data? Are the .gsn files archives at all?
> 
> I’m using a PowerMac running Mac OS 10.4 only.
> 
> Matthias

Cyberboard gameboxes are binary blobs of unknown format. You could  
sit down with a hex editor and try to reverse-engineer the file  
format, but I don’t recommend it unless:

1. You are a masochist.
2. You are cannot wait for the file format to become public, which  
should happen when the first open-source version of CB becomes  
available.

The day that the file format becomes public, I intend to drop everything  
and write a Cyberboard-to-VASSAL converter.

If you don’t want to reverse-engineer the file format and you don’t  
want to wait, it is still possible to extract the images from a Cyberboard  
gamebox.

How:

1. Maps you can get via CBPlay. Open a scenario, clear all of the tokens  
off the map, and do ‘Edit \> Save Board Image in File…’.

2. Tokens:

To extract token faces, you need to export all of the token faces as GTLs,  
and then use something to unpack the GTLs into individual bitmaps. There  
is software out there to unpack GTLs.

E.g., I’ve written a Perl script called gtl2bmp.pl, which unpacks GTLs  
into BMP files, and can be found if you search through the archives of  
the Cyberboard mailing list, and I think theres a program called  
GTLEditor or some such out there as well. GTLs unfortunately don’t contain  
any information about which token faces go together to form a token.

To get the GTLs, start the Cyberboard Designer and open the gamebox. In  
the left pane of the Project window, you’ll see the entry “Tile Image  
Groups”, with a list of those underneath it. Select the first one. In the  
right pane you should now see the token faces in the group. Bring up a  
context menu (right click) over the right pane, select “Save Tile Library  
File…”, and choose a filename.

Next, you need to convert the GTLs to something you can use. If you’re  
on UNIX, or you have a Perl installation on your Windows machine (if  
you don’t know, then you don’t), you can use my script. I’ve been told  
that the GTLEditor has problems sometimes, but it might be your only  
option for right now if you’re using Windows. Alternately, it’s a 5-minute  
job for me to convert any number of GTLs, so if you send me all of your  
GTLs, I’ll send you the contents back as PNGs. (If too many people do this,  
it server as incentive for me to finish the C++ version of my GTL converter,  
so that people on Windows can convert their own GTLs.)

If you’ve done all this, you now have all of the graphics for building your  
module.

–  
J.

* * *

Messages mailing list  
[Messages@forums.vassalengine.org](mailto:Messages@forums.vassalengine.org)  
[forums.vassalengine.org/mailman/ … engine.org](http://forums.vassalengine.org/mailman/listinfo/messages_forums.vassalengine.org)

Post generated using Mail2Forum ([mail2forum.com](http://www.mail2forum.com))

---

<div class="post-metadata">

**Author:** ![Matthias\_Hardel](https://forum.vassalengine.org/letter_avatar_proxy/v4/letter/m/85e7bf/32.png) [@Matthias\_Hardel](https://forum.vassalengine.org/u/Matthias_Hardel)\
**Post date:** [January 11, 2008, 1:51pm UTC](https://forum.vassalengine.org/t/cannibalizing-cyberboxes/123/3 "2008-01-11T13:51:55Z")

</div>

«If you’ve done all this, you now have all of the graphics for building your  
module.

–  
J.»

Seems easier to do it the hard way.

I’ll forward your how-to-do-list to a PC capable friend. Might be less complicated than it reads.

« … which should happen when the first open-source version of CB becomes available.»

Is there an ETA for this?

Many thanks

Matthias

---

<div class="post-metadata">

**Author:** ![uckelman](https://forum.vassalengine.org/user_avatar/forum.vassalengine.org/uckelman/32/10020_2.png) [@uckelman](https://forum.vassalengine.org/u/uckelman)\
**Post date:** [January 11, 2008, 2:03pm UTC](https://forum.vassalengine.org/t/cannibalizing-cyberboxes/123/4 "2008-01-11T14:03:20Z")

</div>

Thus spake “Matthias Hardel”:

> [@](#):
>
> > [@](#):
> >
> > If you’ve done all this, you now have all of the graphics for building  
> > your  
> > module.
> > 
> > –  
> > J.
> 
> Seems easier to do it the hard way.

I think you could get all of the graphics out of a very large gamebox this  
way in under an hour. What’s the hard way?

> [@](#):
>
> I’ll forward your how-to-do-list to a PC capable friend. Might be less compli  
> cated than it reads.
> 
> > [@](#):
> >
> > … which should happen when the first open-source version of CB becom  
> > es available.
> 
> Is there an ETA for this?

If there is, I don’t know it.

–  
J.

* * *

Messages mailing list  
[Messages@forums.vassalengine.org](mailto:Messages@forums.vassalengine.org)  
[forums.vassalengine.org/mailman/ … engine.org](http://forums.vassalengine.org/mailman/listinfo/messages_forums.vassalengine.org)

Post generated using Mail2Forum ([mail2forum.com](http://www.mail2forum.com))

---

<div class="post-metadata">

**Author:** ![Matthias\_Hardel](https://forum.vassalengine.org/letter_avatar_proxy/v4/letter/m/85e7bf/32.png) [@Matthias\_Hardel](https://forum.vassalengine.org/u/Matthias_Hardel)\
**Post date:** [January 11, 2008, 2:55pm UTC](https://forum.vassalengine.org/t/cannibalizing-cyberboxes/123/5 "2008-01-11T14:55:01Z")

</div>

«I think you could get all of the graphics out of a very large gamebox this  
way in under an hour. What’s the hard way?»

To cut and name the scans for 150+ card-files. Through the Ages I’m talking about.

Matthias

---

<div class="post-metadata">

**Author:** ![uckelman](https://forum.vassalengine.org/user_avatar/forum.vassalengine.org/uckelman/32/10020_2.png) [@uckelman](https://forum.vassalengine.org/u/uckelman)\
**Post date:** [January 11, 2008, 3:26pm UTC](https://forum.vassalengine.org/t/cannibalizing-cyberboxes/123/6 "2008-01-11T15:26:32Z")

</div>

Thus spake “Matthias Hardel”:

> [@](#):
>
> «I think you could get all of the graphics out of a very large gamebox this  
> way in under an hour. What’s the hard way?»
> 
> To cut and name the scans for 150+ card-files. Through the Ages I’m talking a  
> bout.
> 
> Matthias

Even if you’re doing mostly trivial things 150+ scans, if you’re not doing  
it programatically (i.e., with some sort of scripting) then you’re going to  
be at it for days.

–  
J.

* * *

Messages mailing list  
[Messages@forums.vassalengine.org](mailto:Messages@forums.vassalengine.org)  
[forums.vassalengine.org/mailman/ … engine.org](http://forums.vassalengine.org/mailman/listinfo/messages_forums.vassalengine.org)

Post generated using Mail2Forum ([mail2forum.com](http://www.mail2forum.com))

---

<div class="post-metadata">

**Author:** ![Tim\_M](https://forum.vassalengine.org/user_avatar/forum.vassalengine.org/tim_m/32/2_2.png) [@Tim\_M](https://forum.vassalengine.org/u/Tim_M)\
**Post date:** [January 11, 2008, 6:25pm UTC](https://forum.vassalengine.org/t/cannibalizing-cyberboxes/123/7 "2008-01-11T18:25:12Z")

</div>

It would seem that the original CB designer was able to acquire the actual  
graphics from Z-Man games and use those. Perhaps save yourself the trouble  
of CB extraction and ask them if you can use them also for vassal. Would be  
a lot easier I think 🙂

Post generated using Mail2Forum ([mail2forum.com](http://www.mail2forum.com))

---

<div class="post-metadata">

**Author:** ![bsmith](https://forum.vassalengine.org/user_avatar/forum.vassalengine.org/bsmith/32/1_2.png) [@bsmith](https://forum.vassalengine.org/u/bsmith)\
**Post date:** [January 12, 2008, 8:48am UTC](https://forum.vassalengine.org/t/cannibalizing-cyberboxes/123/8 "2008-01-12T08:48:30Z")

</div>

> [@uckelman](#):
>
> Even if you’re doing mostly trivial things 150+ scans, if you’re not doing it programatically (i.e., with some sort of scripting) then you’re going to be at it for days.

Amen to that! It took me around 4 hours to import and name 2,500 Case Blue counters thanks to a couple of simple VB scripts, the hard part was cropping and slicing the counter-sheet scans, that must have taken another 4 hours. 🙂

---

<div class="post-metadata">

**Author:** ![Dab](https://forum.vassalengine.org/letter_avatar_proxy/v4/letter/d/e56c9b/32.png) [@Dab](https://forum.vassalengine.org/u/Dab)\
**Post date:** [January 14, 2008, 8:29pm UTC](https://forum.vassalengine.org/t/cannibalizing-cyberboxes/123/9 "2008-01-14T20:29:07Z")

</div>

I had the same problems and wrote a little tool to extract the bmps from the cyberboard gameboxes.

To get the data out of the gbx there are currently two tools. These can be found at [cbwiki.dnsalias.com/cbwiki/index … arty\_Tools](http://cbwiki.dnsalias.com/cbwiki/index.php/Third_Party_Tools).

My command line tool works on .gtl files (which are essentially packed DIB archives) so you will have to save the gfx from the box to .gtl files. That can be done from CBDesign. My tool works for CB ver 3 only (they changed to 16bpp bmps how pathetic) , let me know if you need a tool for older cb versions. It can propably be derived from my tool, I gave the code as well (see link in cbwiki).

Alternatively use the GTL Editor. That prog can do a lot more and has a nice GUI using the .NET framework (boooohh). I was discovering the GTL Editor by accident, when I posted my tool to the cbwiki 😕

Anyways you will get incredibly huge uncompressed .bmp files!! So be prepared to get ImageMagick on your mashine and write some fancy batch/shell scripts to automate the bmp-\>png/whatever conversion and renaming. I could also serve with that or some counceling on how to do it if desired.

p.s.: the gtl archive structure is outlined in the cyberboard docs. there is no such things as mysteries about the cyberboardcoding ![;)]( "Wink")

p.p.s.: was doing this on the World in Flames gamebox and worked out fine! WiF has about 2k ++ counters… hence the automating

p.p.p.s.: Be sure to contact the cyberbox gamebox author and ask kindly if you can reuse his (propably hard) work. ALSO BE SURE TO CONTRACT THE COPYRIGHT HOLDER if there is one !

---

<div class="post-metadata">

**Author:** ![kdevine](https://forum.vassalengine.org/user_avatar/forum.vassalengine.org/kdevine/32/2575_2.png) [@kdevine](https://forum.vassalengine.org/u/kdevine)\
**Post date:** [April 10, 2008, 1:15am UTC](https://forum.vassalengine.org/t/cannibalizing-cyberboxes/123/10 "2008-04-10T01:15:22Z")

</div>

> [@Matthias Hardel](#):
>
> «I think you could get all of the graphics out of a very large gamebox this  
> way in under an hour. What’s the hard way?»
> 
> To cut and name the scans for 150+ card-files. Through the Ages I’m talking about.
> 
> Matthias

How is your VASSAL adaptation of Through the Ages going?

I am working on a ZunTzu adaptation, so I am interested whether to continue…

---

<div class="post-metadata">

**Author:** ![soft-bug](https://forum.vassalengine.org/user_avatar/forum.vassalengine.org/soft-bug/32/6_2.png) [@soft-bug](https://forum.vassalengine.org/u/soft-bug)\
**Post date:** [April 10, 2008, 4:42am UTC](https://forum.vassalengine.org/t/cannibalizing-cyberboxes/123/11 "2008-04-10T04:42:37Z")

</div>

> [@kdevine](#):
>
> How is your VASSAL adaptation of Through the Ages going?
> 
> I am working on a ZunTzu adaptation, so I am interested whether to continue…

Well … guys

just a message to emphasize that the REAL OUTSIDER for Vassal is always and still Zuntzu …

Here in France we have lost a lot of creators … and now i see more and more adaptations from none french creators (see BBG).

But with this fair “race” … it can be useful for Vassal improvements …

It will be great to have a dedicated post in “Developers” to communicate about what is improved in the 3.1 and in the future 3.2 … not in your “developement” language … but with “simple” words for “simple” minds" …

The communication and the knowledge of the Vassal’s jewel possibilities are too the key to spread the Vassal decease … 😈

But at the present time who except developers can know what the 3.1 will be ???

Just think about it …

---

<div class="post-metadata">

**Author:** ![Matthias\_Hardel](https://forum.vassalengine.org/letter_avatar_proxy/v4/letter/m/85e7bf/32.png) [@Matthias\_Hardel](https://forum.vassalengine.org/u/Matthias_Hardel)\
**Post date:** [April 10, 2008, 6:04am UTC](https://forum.vassalengine.org/t/cannibalizing-cyberboxes/123/12 "2008-04-10T06:04:32Z")

</div>

> [@kdevine](#):
>
> How is your VASSAL adaptation of Through the Ages going?  
> I am working on a ZunTzu adaptation, so I am whether to continue…

Not at all, project is on hold in wait for a German edition to be published.

Matthias

---

<div class="post-metadata">

**Author:** ![cholmcc](https://forum.vassalengine.org/user_avatar/forum.vassalengine.org/cholmcc/32/8319_2.png) [@cholmcc](https://forum.vassalengine.org/u/cholmcc)\
**Post date:** [October 25, 2026, 11:54pm UTC](https://forum.vassalengine.org/t/cannibalizing-cyberboxes/123/13 "2026-10-25T23:54:31Z")

</div>

I know this is an _old_ thread, but I stumbled upon it and thought - what the heck.

There is a way to convert Cyperboard game boxes to Vassal modules - see [How to convert to a module from other tools to VASSAL](https://forum.vassalengine.org/t/how-to-convert-to-a-module-from-other-tools-to-vassal/84940) - in particular the [CyberBoard](https://forum.vassalengine.org/t/how-to-convert-to-a-module-from-other-tools-to-vassal/84940#p-167963-a-namecbacyberboard-4) section.

Yours,  
_Christian_

---

<div class="post-metadata">

**Author:** ![beppelecce](https://forum.vassalengine.org/user_avatar/forum.vassalengine.org/beppelecce/32/185_2.png) [@beppelecce](https://forum.vassalengine.org/u/beppelecce)\
**Post date:** [October 26, 2026, 9:05am UTC](https://forum.vassalengine.org/t/cannibalizing-cyberboxes/123/14 "2026-10-26T09:05:53Z")

</div>

> [@uckelman](#):
>
> If too many people do this,  
> it server as incentive for me to finish the C++ version of my GTL converter,  
> so that people on Windows can convert their own GTLs.

Did you then complete the GTL converter?

---

<div class="post-metadata">

**Author:** ![uckelman](https://forum.vassalengine.org/user_avatar/forum.vassalengine.org/uckelman/32/10020_2.png) [@uckelman](https://forum.vassalengine.org/u/uckelman)\
**Post date:** [October 26, 2026, 1:15pm UTC](https://forum.vassalengine.org/t/cannibalizing-cyberboxes/123/15 "2026-10-26T13:15:48Z")

</div>

Few people asked.

At this point I would write a converter for V4 instead, but Cyberboard won’t be the first one I work on.

If someone wants that sooner, it would be a good project to work on once I publish an initial V4 file format.

---

<div class="post-metadata">

**Author:** ![cholmcc](https://forum.vassalengine.org/user_avatar/forum.vassalengine.org/cholmcc/32/8319_2.png) [@cholmcc](https://forum.vassalengine.org/u/cholmcc)\
**Post date:** [October 26, 2026, 4:31pm UTC](https://forum.vassalengine.org/t/cannibalizing-cyberboxes/123/16 "2026-10-26T16:31:08Z")

</div>

> [@beppelecce](#):
>
> Did you then complete the GTL converter?

I guess GTL is a [Cyberboard Tile Library](https://web.archive.org/web/20071113001259/http://cbwiki.dnsalias.com/cbwiki/index.php/Third_Party_Tools) file. In so far as it is a part of a Cyberboard game box, the above quoted procedure can help extract the data. The [`pywargame`](https://gitlab.com/wargames_tex/pywargame) Python module can read in the Microsoft `CArchive` file and get the various entries.

> [@uckelman](#):
>
> At this point I would write a converter for V4 instead, but Cyberboard won’t be the first one I work on.

Well, if you can convert a Vassal 3 module to Vassal 4, then you can first convert a Cyberboard to Vassal 3 and then to Vassal 4. [`pywargame`](https://gitlab.com/wargames_tex/pywargame) can certainly do the first step at this point, and might also be able to do the last step when more is known about Vassal 4.

Yours,  
_Christian_
