Thursday, October 13, 2011

Been busy with work and personal stuff , though continuing to finish Hornet Leader.. with the advent of Phantom Leader for IPAD from DVG, i dont feel the need to rush this game since im glad someone is bringing the leader series to ipad..

im now rethinking on the whole boardgame to ipad conversion. should i automate the process completely or should i just get the graphical element and automate only card draw and dice rolls ? it seem when i tried to automate everything this game became stale and machine like.. a fun boardgame become horrid if it is translated badly into another media... just like when i convert ARKHAM horror combat rounds into computer, the whole process of horror check and combat check is boiled down into dice roll mechanics on screen and its not fun..

Friday, September 23, 2011

Jumping from Prototype to a Real Game

Creating any game prototype is fun and it is always done in a quick and easy way, full of rule-breaking and sinful programming practice.. the goal is to test your game concept and the FUN factor.. if its not fun then its not worth the time to implement full code on it.

With HORNET LEADER prototype, i have lots of fun trying out the game on an iPAD.. even with loading upfront all images and not using texture atlas (a great sin) the prototype still run ok on an iPad1. I also have a SpaceHulk DeathAngel prototype running on iPad, a fun solitaire game but it will never reach the market since Fantasy Flight Games is very hard on people who sell / distribute games without their permission. So i think i will upload the SHDA gameplay video sometime later on youtubbe.. the prospect of making Lord of the Rings Cardgame prototype also intrique me since the mechanics is easy enough to do... but both will wait till my Hornet leader got up and running at least to Alpha Version (Playable with real data for testing but dont have complete database and image complement)

The difference in making a prototype and a real game is becoming more apparent each day..

- i have to create all game rules and data into database format , no more dummy data
- i have to consider memory use for all graphic including segmented loading and multiple texture atlas swapping
- i have to consider more pleasing User Interface for game interaction
- i have to put game menu to wrap up the game

in layman's term,  the difference is like making a model house and a real house..

Wednesday, September 21, 2011

Hornet Leader Pilot database

its been a crazy day working the kinks out of the database core of hornet leader..
  • Aircraft database is just a table with info on what kind of ordnance a plane can carry and total plane carrying ability..
  • Enemy database (with site and bandit data) is also a simple table , putting the enemy counter data into tabular format.. 
  • Weapon database also a simple table, just like the enemy database.
  • Target database also a simple table , only 60 targets available for Hornet Leader
  • Event database should be a simple matter too, but i havent touch that yet..
  • THe most painful database is the PILOT information that include 6 level of skill for each pilot. There is a total of 80 pilots in various type of aircraft (for a total of 80x6 = 480 pilot data)


My pilot database format is like this :


An NSarray of NSDictionary with keys (NSString and integers):


pilot , plane , year1, year2 , stat


stat is an NSArray of 6 NSDictionary containing each level of skills with keys (mostly integer values) :


sa , xp , cool , stress1, stress2, stress3, stress4,speed, AtAok,AtAshaken,AtGok,AtGshaken,special,note


special is for those planes with special functions based on their level , like AWACS that can reroll on events, stealth roll values, Prowler/Growler save DRM (dice roll modifier) values.. etc


the completed plist is like this :


<array>
  <dict>
    <key>pilot</key>
    <string>mustang</string>
    <key>plane</key>
    <string>F-18C</string>
    <key>year1</key>
    <integer>1983</integer>
    <key>year2</key>
    <integer>2099</integer>
    <key>stat</key>
    <array>
       <dict>
          <key>skill</key>
          <string>newbie</string>
          <key>sa</key>
          <integer>1</integer>
          <key>xp</key>
          <integer>4</integer>
          <key>c</key>
          <integer>1</integer>
          <key>stress1</key>
          <integer>0</integer>
          <key>stress2</key>
          <integer>3</integer>
          <key>stress3</key>
          <integer>3</integer>
          <key>stress4</key>
          <integer>4</integer>
          <key>speed</key>
          <integer>0</integer>
          <key>ATAok</key>
          <integer>0</integer>
          <key>ATAshaken</key>
          <integer>-1</integer>
          <key>ATGok</key>
          <integer>0</integer>
          <key>ATGshaken</key>
          <integer>-1</integer>
          <key>special</key>
          <integer>0</integer>

          <key>note</key>
          <string>n/a</string>
       </dict>


... repeat the <key>skill</key> dictionary 5 more times for green to ace and that just 1 pilot data.. now repeat ad infinitum for 80 pilots.. =D


here's the example of A6 Driver BUG's data from newbie to ace.. its machine generated from an excel file with macro doing the conversion to XML format (readable in XCode PList format).. its scary if you think that only 1 statement is required to load all pilot database into computer memory.. 


just a statement like this : [NSArray arraywithcontentsoffile:filepath]; and its done.. 




<dict>
<key>id</key><string>1</string>
<key>pilot</key><string>Bug</string>
<key>plane</key><string>A-6</string>
<key>year1</key><string>1963</string>
<key>year2</key><string>1997</string>
<key>stat</key>
<array>

<dict>
<key>sa</key><string>0</string>
<key>xp</key><string>4</string>
<key>cool</key><string>0</string>
<key>stress1</key><string>0</string>
<key>stress2</key><string>2</string>
<key>stress3</key><string>3</string>
<key>stress4</key><string>3</string>
<key>speed1</key><string>0</string>
<key>speed2</key><string>0</string>
<key>ata1</key><string>–</string>
<key>ata2</key><string>–</string>
<key>atg1</key><string>-1</string>
<key>atg2</key><string>-3</string>
<key>special</key><string>0</string>
<key>stealth</key><string>0</string>
</dict>

<dict>
<key>sa</key><string>0</string>
<key>xp</key><string>3</string>
<key>cool</key><string>0</string>
<key>stress1</key><string>0</string>
<key>stress2</key><string>3</string>
<key>stress3</key><string>4</string>
<key>stress4</key><string>6</string>
<key>speed1</key><string>0</string>
<key>speed2</key><string>0</string>
<key>ata1</key><string>–</string>
<key>ata2</key><string>–</string>
<key>atg1</key><string>+0</string>
<key>atg2</key><string>-2</string>
<key>special</key><string>0</string>
<key>stealth</key><string>0</string>
</dict>

<dict>
<key>sa</key><string>0</string>
<key>xp</key><string>5</string>
<key>cool</key><string>0</string>
<key>stress1</key><string>0</string>
<key>stress2</key><string>6</string>
<key>stress3</key><string>7</string>
<key>stress4</key><string>11</string>
<key>speed1</key><string>0</string>
<key>speed2</key><string>0</string>
<key>ata1</key><string>–</string><key>ata2</key>
<string>–</string><key>atg1</key><string>+1</string>
<key>atg2</key><string>-1</string>
<key>special</key><string>0</string>
<key>stealth</key><string>0</string>
</dict>

<dict>
<key>sa</key><string>0</string>
<key>xp</key><string>7</string>
<key>cool</key><string>0</string>
<key>stress1</key><string>0</string>
<key>stress2</key><string>5</string>
<key>stress3</key><string>6</string>
<key>stress4</key><string>9</string>
<key>speed1</key><string>1</string>
<key>speed2</key><string>0</string>
<key>ata1</key><string>–</string>
<key>ata2</key><string>–</string>
<key>atg1</key><string>+0</string>
<key>atg2</key><string>-2</string>
<key>special</key><string>0</string>
<key>stealth</key><string>0</string>
</dict>

<dict>
<key>sa</key><string>1</string>
<key>xp</key><string>11</string>
<key>cool</key><string>0</string>
<key>stress1</key><string>0</string>
<key>stress2</key><string>5</string>
<key>stress3</key><string>6</string>
<key>stress4</key><string>9</string>
<key>speed1</key><string>1</string>
<key>speed2</key><string>0</string>
<key>ata1</key><string>–</string>
<key>ata2</key><string>–</string>
<key>atg1</key><string>+1</string>
<key>atg2</key><string>-1</string>
<key>special</key><string>0</string>
<key>stealth</key><string>0</string>
</dict>

<dict>
<key>sa</key><string>2</string>
<key>xp</key><string>99</string>
<key>cool</key><string>0</string>
<key>stress1</key><string>0</string>
<key>stress2</key><string>5</string>
<key>stress3</key><string>6</string>
<key>stress4</key><string>9</string>
<key>speed1</key><string>1</string>
<key>speed2</key><string>0</string>
<key>ata1</key><string>–</string>
<key>ata2</key><string>–</string>
<key>atg1</key><string>+2</string>
<key>atg2</key><string>+0</string>
<key>special</key><string>0</string>
<key>stealth</key><string>0</string>
</dict>

</array>
</dict>

"what a pain in the neck converting the excel to PLIST database.. but its done now, all 480 pilot data now in plist format"


** Another sample of database, the aircraft database that consist of every info on weapons it can carry and limitations :



<dict>
<key>id</key><string>2</string>
<key>plane</key><string>A-7</string>
<key>year1</key><string>1967</string>
<key>year2</key><string>1993</string>
<key>wp</key><string>7</string>
<key>wpatg</key><string>7</string>
<key>so1</key><string>4</string>
<key>so2</key><string>8</string>
<key>so3</key><string>12</string>
<key>gun</key><string>1</string>
<key>ecm</key><string>1</string>
<key>aim9</key><string>2</string>
<key>aim7</key><string>0</string>
<key>aim120</key><string>0</string>
<key>aim54</key><string>0</string>
<key>mk20</key><string>1</string>
<key>mk82</key><string>1</string>
<key>mk83</key><string>1</string>
<key>mk84</key><string>1</string>
<key>agm62</key><string>1</string>
<key>agm65</key><string>1</string>
<key>agm84</key><string>1</string>
<key>agm88</key><string>1</string>
<key>agm130</key><string>0</string>
<key>agm154</key><string>0</string>
<key>gbu10</key><string>1</string>
<key>gbu12</key><string>1</string>
<key>gbu16</key><string>1</string>
<key>gbu31</key><string>0</string>
<key>gbu32</key><string>0</string>
<key>gbu38</key><string>0</string>
<key>rocket</key><string>1</string>
<key>noe</key><string>0</string>
<key>stealth</key><string>0</string>
<key>areadrm</key><string>0</string>
<key>selfdrm</key><string>0</string>
</dict>




















Sunday, September 18, 2011

Hornet Leader Design Doc Summary


This is my update on the hornet leader apps :
  • converted all game counter graphic elements for use in ipad hornet leader graphic assets
  • designed game datastructure and entered data required for primary database regarding weapons, enemy, enemy stats, aircrafts in plist format
  • creating the game framework and gameflow structure in XCode
The next to-do is these steps :
  • convert all target and event card graphic elements into managable resolution (dithered RGB4444 if possible)
  • entering pilot data , target data and event data into primary database in plist format
  • creating Game menu screen and Campaign Select / Setup screen with Aircraft selection in Text/List format
When the game is playable and/or in presentable mode, i can e-mail it to you for testing on your iPad (assuming you still want to)



Game Design Document (Sep 2011)


Objective : 
To faithfully port Hornet Leader CAO into an iPad tablet with minimal change from the physical game. Animation will be used only in game menu interface , sound will be for UI elements only. Additional animation and sound can be added to game elements later.

Target Platform : 
iOS iPAD 1 (minimum), iOS version 4 (minimum)

Development Platform : 
Objective-C 2.0 , XCode4 IDE , Sparrow Framework v1.2 , Mac OSX Lion , Macbook Air 11" 4gb/128gb

Graphic Format : 
OpenGL , Potrait 768x1024, Tactical Display 768x768, Counters 96x96, Cards 256x512

Number of Developer : 1 (one)


Game Interface list : 

a. Game Wrapper
  • Main game menu screen
    • Animated Game menu with background music 
  • Option screen
    • Sound / Music Toggle
    • Animation Toggle
    • Alternate Counter Toggle (display a more pleasing counter graphic)
  • Credits screen and High Score/Achievement
    • Standard credit screen 
    • High Score list sorted by campaign map and campaign length
    • Achievement list , possible list :
      • Achievement for not using special weapons in campaigns
      • Achievement for using only old aircrafts in campagns (eg A7 and A6 only)
      • Achievement for using only AIM9 in air-combat in campaigns
      • Achievement for using only iron bombs in campaigns
      • Achievement for scoring great in Short / Med / Long all campaigns
      • Achievement for using less planes in every mission
      • {ideas needed}
    • if possible add option to post high-score and achievement on the GameCenter
  • Help/Tutorial screen
    • Standard tutorial screen depicting gameplay sequence 
      • Campaign setup and options
      • Ordnance selection suggestions
      • Target-bound phase
      • Over-Target phase
      • Home-bound phase
      • Stress,  XP & Leveling and Scoring
      • Glossary and Terms
  • Splash screen
    • Standard Splash Screen with DVG logo, Sparrow and TexturePacker logo and my own logo
b. Campaign 
  • Campaign Selection screen
    • A Grid selection of campaign maps , depicting Target Country, Year , Aircraft Available
    • include the EYGPT 2015 and LYBIA 2011 free campaign
    • if possible create iPad only Campaigns. Possible scenarios are :
      • Tanker Wars (Operation Praying Mantis)
      • Lebanon Marine Barracks Bombing
      • SS Mayaguez incident in Cambodia
  • Campaign Setup and Optional Rule screen
    • Detailed campaign info including : Campaign description, Special Operation Points availability, Scoring system, Length of campaign and weapons available.
    • Selectable campaign options including : Night Options, Marine Big-Deck Campaign
    • Select Advantage and Disadvantage for added difficulty
  • Aircraft Selecton screen
    • List of pilot info (scrollable text) using minimal graphics to conserve memory. 
    • Pre-Game pilot promotion using SO
  • Campaign Tracking screen
    • Tracks all INFRA , INTEL , RECON result
  • Campaign scoring screen
    • Tracks campaign scoring 
    • Calculate Achievement
    • Update HighScore board
c. Tactical segment
  • Strike Group Aircraft Selection / Arming Screen
    • Card based interface for selecting pilots for current target
    • Counter based interface for arming aircraft
    • Special Operations Weapons expense and Air Refueling is resolved here
  • Target Selection and enemy site/bandit generation
    • Showing Target deck interface with drawn card laid horizontaly for each card , available for selection
    • Drawn cards thats not selected as day's primary/secondary mission are discarded (unless they have improvements)
    • Target Improvement are resolved immediately here.
  • Event Card draw and resolution
    • a pop-up message box showing events that happen at Target-bound, Over-Target and Home-Bound phase.
    • Immediately resolve event effects including :
      • Player Interaction : Spending weapon counters to negate card effects
      • Player Interaction : Using E2C special abilities to negate card effects
      • Player Interaction : Using previous Event Card to negate card effects
      • Event that have immediate effects are resolved now
      • Events that influence the end-of-day result are kept in buffer to be implemented later
      • Events that influence next-day mission will be kept in buffer tobe implemented later
  • Tactical Display map board user interface
    • Site and bandit spawn will be arrange in a grid fashion according to the tactical display grids.
    • Spawn are done in this sequence : North , East , South , West
    • Possible Move is saved on every Grid location (pre-calculated)
    • Main game layout is :
      • LANDSCAPE Orientation :
        • ? not sure if i want landscape orientation but this may change later on ?
      •  POTRAIT Orientation :
        • Tactical Display Top
        • Game Toolbar bottom
        • Aircraft selection bottom (above toolbar) , Scroll horizontally
        • Control Toolbar bottom (above Aircraft Selection)
  • Attack and Defense user interface
    • Player Interaction : Targeting (single) and Selecting Weapons
    • Player Interaction : Targeting (multiple) and Selecting Weapons 
    • Player Interaction : Evasive , Suppress and Defense Resolution
    • Show D10 roll number and the modifier separately 
    • Stealth Check is done automatically
    • ECM Pod roll is done automatically 
    • Stress management is done automatically including the shaken and unfit results
  • Miscelanious Stuff
    • Player Interaction - Homebound : SAR roll to recover pilots 
    • Player Interaction - Event Cards that can be used for cancelling other events
  • Pilot Stress and XP / level-up tracking
    • Stress and XP is calculated automatically every end-of-day
    • Promotion also done automatically
    • Player Interaction : Replace a MIA pilot (roll for replacement)
d. Other
  • Save Game / Restore Game Function
    • Save Game , still wondering if the savegame is on the beggining of day only or player can save at every phase ? 
    • Save Game slot will be limited 
  • Optional Scenario play (single mission)
    • still in doubt on how to implement single target scenario play. maybe implementing a free-form format where player can choose target he wants with any aircraft with no restriction..

Designer Note:
  • Part b and c will take the longest development time and need lot of polish in user interaction / user interface.
  • Part a can be designed as a bare-bone menu/screen system and be filled out with more graphic and animation (and sound/music) later on.
  • Aircraft selection screen will be a text only display (minimal graphic) to conserve memory. Attempt to show pilot aircraft cards will be  made later because optimizing it took lot of time (compositing aircraft pilot cards from different graphic element manually instead of showing a ready made card from HLCAO graphic scan)
  • Scanning and manipulating graphic took a lot of time and sometimes the result is not good since a scanned graphic quality sometimes degrade from the original
  • Entering numerous game data (pilots, aircraft, enemy, targets, events,weapons..etc) manually in EXCEL spreadsheet and converting it to Apple's PLIST (Property List) file also took lots of time.
  • Game Engine can be converted easily to accomodate Phantom Leader and other Air Leader Series (Assuming the new air leader dont deviate much)

Saturday, September 17, 2011

Putting it all together... Hornet Leader on an iPad , a Prototype

iPad Hornet Leader Prototype
in a flash of inspiration, one sunday morning i downloaded images of phantom leader and/or hornet leader from the BoardGameGeek site and cut them to managable size , like 64x64 pixels for the counter graphics and 768x768 pixels for the mainboard (tactical display).

* The main playing area, the Tactical Board image, scanned from the original board and cleaned with Paint.Net

 ECM Pod Counter MK-84 Weapon Counter

 F/A-18C Counter F-35 Lightning II

 Bandit Counter  SA-2 SAM

 SA-10 SAM SU-24 Fencer


then i fired up my Macbook Air 11 (2011) and run XCode4 with the excellent SPARROW FRAMEWORK to load up the images and put them all on display with touch event handling the counter movements.. (more on Sparrow Framework later)

basically its all just a simple exercise extending the sparrow's own Scaffold sample. I load up the images as SPTexture because each image will be used more than once and if i load the images in each iteration of SPImage then i waste memory.

Since this is just a prototype i dont use the SPTextureAtlas that consolidate all images into a single large bitmap (must be in power-of-two size like 512x512,1024x512,2048x2048,128x128). The task of combining all images in your apps into single bitmap is handled thru a third-party apps called  TexturePacker. its a free apps if you use its essential features , however to use the advanced features you must get the license for a small fee.

get texturepacker here : http://www.texturepacker.com/

Pseudo Code:


SPTexture*enemy1 = [SPTexture TextureWithContentsOfFile:@"SA-2.png"];
.. 
NSArray *enemyArray = [NSArray ArrayWithObjects:enemy1, enemy2, .... , nil];

then i add event listener to the stage (self) to catch the touch movement on the counters. except for the display board / tactical board, everything is movable.

off course this is far from a playable game yet the thought of playing hornet leader on an iPAD anywhere without bringing the big box is tempting.. so i began to list down requirement to finish this apps. A fully functional game need some mundane stuff that people only gloss over but its important and sometimes waste too much development time.. so here's the list of what stuff must be done in coming weeks :

  • Game Menu System including Campaign Selection, Options , Credits , Helps
  • Campaign Setup and Initial Pilot Selection Screen
  • Campaign Tracking and Scoring
  • Pilot XP and Stress administration
  • Tactical Board Display complete with user interface for movement, attack and defense
  • Target card selection 
  • Event card resolution

Im looking for a faithful conversion so that people who is familiar with hornet leader boardgame wont have much trouble adjusting to the iPad version. That means no animation / fancy sound effect  except on the menus. However this brings another problem, that is limiting my Apps to people who understand boardgame/wargame term/lingo. A faithful Hornet Leader iPad conversion means ordinary people will have a high learning curve when they buy this game..

I post some stuff about this on the BoardGameGeek forum and get a mild response. I dont think lots of people are interested in this game .. and even then i still need the permission of game publisher to upload this apps on AppsStore. So if i want to publish this i need their permission and if i fail to get their permission then i just use this apps for my own consumption


Below is the Photos of my white iPad with Hornet leader running on it, my Macbook Air's XCode still showing the source code for this prototype

i use Hornet Leader tactical board and Phantom Leader counters and mission cards/aircraft pilot cards to test if iPAD's screen size is big enough / feasible enough for boardgame conversion , notably the air leader series..



the counter size and tactical display size is ok, still visible and managsble, although i have to change the touchscreen behaviour so the counters are not coverer by fingers when we move them



There's no AI yet , no mission cards, no event cards, no campaign tracking .. just tactical board and counters on it =D

a fully optimized Hornet Leader application for iPad is fun =D

Hornet Leader Unboxing


DVG Hornet Leader Carrier Ops unboxing
This is my hornet leader unboxing shot , taken straight after the package came to my house.. I'm using a NIKON D90 DSLR and a 50mm f/1.2 AI Manual Lens, so pardon if the depth-of-field is so small since all this shot was taken at night with only overhead lighting..

BOX SHOOT
This is the pristine box shoot, still in its shrink-wrap , with my friend posing here as the model / presenter =D



Side/Angled View
This is the box laid on the table with its shrink-wrap removed but not opened yet, it was shown being inspected by my friend =D .. as a reminder, the HORNET LEADER box is not as light as it seems, it is heavier compared to the same sized boardgame boxes.. must be those Iron Bombs inside ..



All components Displayed on table
Note the high quality components, from the mounted and sturdy gameboard to the glossy material used in most of the printed material. Check out the reflection caused by the glossy material finish =D .. TOP QUALITY 



Hornet leader Tactical Display closeup
This is the mounted gameboard that you will be using for resolving your battles. note the game sequence help on the right (sadly not fully in the photo). Great design and Great durability.



Hornet leader Airplanes and Enemies Counter
Angled shot of the Aircraft and Enemy (red) counters. There are 2 high quality counters that come with HL:CAO.


Hornet leader Rulebook and Weapons Counter
Angled shot of the Rulebook with its glossy paper and the thick and high quality weapons counter.


Hornet leader Pilot and Event Card 
All cards that come with the game , still shrinkwrapped


Hornet leader Campaign Sheet
This is the heart of Hornet leader, 8 campaign map each can be played in short/medium/long mode. and there also 2 bonus campaign on the DVG website (LYBIA 2011 and EYGPT 2015) that can be freely downloaded and printed.


Hornet leader Player Aid closeup
This is the 2nd most important stuff , the 1st is the manual.. you can laminate this thick paper aid and put it on your gaming table for instant help.


Hornet leader Pilot Cards stack and event & mission cards
as you can see the leftmost stack is the pilot cards, with rubberband to group them by Aircraft Type, the middle stack is the mission card with rubber band to group them from mission number 1-30 and 31-60, the right stack is the event cards that you draw 3 times during each mission thats your inbound phase then your overtarget phase and lastly the homebound phase


Hornet leader Counters in a box
This is all the counters of HL:CAO separated into groups of different ordnance and aircraft and token types. as it turned out, its not enough to separate Air to Air weapons in one group, to speed up Arming you should separate them into AIM7+AIM9 and AIM120+AIM54, ditto with all the ground ordnance. Organizing these counters will help speed up your setup time and minimize the frustration of looking for the right counters. i recommend you buy the DVG's counter tray as it is very cheap, come with stack of 5 counter trays.. or you can just get random plastic box and label them yourself..


Hornet Leader Aircraft Cards showing F18C, F18E, F18F ,A6 , A7 , F14 , F35, AV8, EC2 , E6B
This is sample pilot cards that showed every available aircraft flyable in hornet leader. not every aircraft is flyable in every mission, you have to check the aircraft availability date and campaign restriction, such as only the US Marines can use HARRIER AV8 for their small deck assault carriers (along with additional US MARINE rules for the campaign)


Hornet Event and Target Cards
These are sample shot of cards that you will be using for your target draw and the event draw. You can draw more than 1 target and choose which one you want to attack, but there is also special rules to indicate that a target card cannot be avoided like for example a SCRAMBLE mission to defend your carrier must be performed immediately and failure of mission means instant DISMAL performance.


Target Cards from ISRAEL DEFENSE 2001 Campaign
You have to take only the card that got its number listed on the campaign map as your target deck, so it took a bit to sort out which target in which campaign. i recommend you download the reference doc in the FILES section of BGG to get complete target listing for each campaign, sorted from 1 to 60 =D


My take on this game ?

Great components, Great solitaire combat system , Can be played Cooperative style too with 1 player controlling half of the strike group. but TEAMWORK is a must and target assignment should be decided before flying , so a cooperative gameplay can be harder if there is lack of teamwork lol

As for organizing the counter, i recommend that all counter be organized in separate and labeled tray. an ordinary plastic tray with dividers works well, but you can order cheap 5 tray counter holder in DVG website or any other boardgame store..




Sample Tray Organization / Labelling




Also arrived on my doorstep is Hornet Leader's little brother..

*Phantom Leader , Vietnam Theatre

*Unboxing : Tactical Display, Card Sheet , Counters (unpunched)

*Unboxing :  showing gameboard, cards, campaigns, rules.


*gamebox size comparison, they looked the same but hornet leader is almost 2x as thick


*Phantom Leader's Paper Tactical Display looked almost pitiful compared to Hornet Leader's mounted board

*Rolling Thunder Campaign, USAF