Would you like to make this site your homepage? It's fast and easy...
Yes, Please make this my home page!
GUB Version History
Below is a history of the highlights in changes between different revisions. You can always download
a version by clicking on it's version number in the listings below (newest at the top). See the installation
page for instructions on installing this. You need to read that page if you're going to play networked games.
Fixes/Changes:
- DnD crashes are, I think, mostly fixed. Images (a major cause of the problem) are no longer cloned. This breaks
a couple of things, though:
- Piece flipping is temporarily out of order. It doesn't exist right now.
- I don't think it will sync across the network correctly unless both players have all of their graphics files
in EXACTLY the same path, including drive letter.
- These, of course, will be fixed if I prove that these crashes are gone.
- The image preview in the game piece list is gone. I don't know why, though.
- Strings are now saved in your game. They are not yet network synched, though.
- Strings are now removed from the board when Remove All Pieces or New Game are are selected.
- New Feature Idea: I use background and border colors to mark the wounded/disabled states of my game pieces.
It would be nice, then, to have an item in the game board popup menu for... remove all pieces with background color
X or border color X. :)
- Game board should now load correctly when loading a savegame. Previously the whole path to the game board was
saved, and this screwed up loading, which assumes a relative path. You could previously work around this by either
editing your savegame with a text editor (chomping off a large porting of the path to the game board) or manually
re-loading the board via the toolbar.
- Game pieces have new popup menu option: Edit Note. You can now tag arbitrary notes onto pieces. Some possible
uses are storing ammunition, hit points, etc. This is a feature that was in very old versions of GUB, but was never
re-written during the third rewrite. A future version will support user-defined tags which can be used by plugins
and such to store arbitrary information in a network-synchronized, GUB-friendly manner.
- Game files now use # to start comment lines, to be consistent with the INI file (which only accepts
#, because it uses a different file parse which only accepts that). It still accepts ; to start
a comment line, for compatibility with older game files.
- Partly-done improvements:
- QuickDice have moved from the main menu to the game board's toolbar. Much simpler to use. BUT... I removed
the scaling options from the game board. They were buggy and of little use, anyway. QuickDice are still available
in the game board's popup menu.
- I'm re-writing the Ogre record sheet plugin so it can accept user-defined Ogre designs, which can be stored
in your ini file, game piece file, or a game piece's tags. :). It will also allow network syncing of Ogre records,
so each player can see the status of everyone's Ogres. :)
General News:
I got some good ideas about how to cut the number of piece serializations by probably 90%, which means a huge speed
increase in general (specifically during drag and drop and network synching). Because of the number of things it
affects, though, I probably won't do this until after the network client is more friendly and I've released it
as 1.0.
I've also figured out how I'm going to implement user-defined tags. User-defined tags are key/value pairs that
a plugin may store into any game piece so that custom information about that piece may be stored and shared across
the network. For example, a wargaming utility could use these to store attack and defense values of a piece. For
a roleplaying utility, these could store hitpoints, gold, etc. Any number of plugins can share almost any amount
of information without interfering with other plugins or the the piece's normal behaviour. This implementation
relies partly on the changes I'm thinking of for serialization, though, so they're a ways off.
Fixes/Changes:
- Pieces may now have multiple sides (images), and you can "flip" them over to the next side with the
right-click popup menu. You can have any number of images for your pieces. For games where the pieces get hurt
during play, this can be used to mark levels of damage (GEV infantry, damaged suits in Battlesuit, terrain counters...
etc.). Previously this required replacing it with a separate piece. Many thanks to Kirk Spencer for the sudden
burst of insight that allowed me to add this feature with very minor changes to my current code and without breaking
the current game piece file format. I've been wondering how to best go about this for months. Future version may
even have "named sides" so you can call the sides names like, "Front", "1 Damage",
"2 Damage", etc. That'd be great for things like Jump counters in Battlesuit, so you could flip the counter
immediately from a Jump +1 to a Jump +6, for example. I have the method to do this, but I don't know if I could
justify the performance hit involved with the game piece popup menu. Adding the flip support has already added
a noticable (to me, anyway) delay in piece serialization (the processes that happens during a drag/drop or a network
synchonization).
- Improved startup time. It now loads the game piece file and board in a separate thread, so the UI starts up
faster.
- Added some options to the ini file:
- board.toolbar.show = turns on (true) or off (false) the toolbar by default.
- board.toolbar.top = tells whether you want the toolbar on top (true) or bottom (false) by default.
- image.cache = the maximum number of game piece graphics to keep cached in memory.
- Game board and piece popup menus should now always pop up in a visible area on the screen. Previously it was
possible for the menus to go off the bottom or right ride of the screen. I've attempted to take the taskbar into
account, but this will only work if the taskbar is on the bottom and if it's not overly-large. Sorry, but I can't
make it avoid the taskbar completely, as that's not counted in a screen's resolution, and there is no standard
size for a taskbar on any single OS (and no single taskbar type in any OS - every Unix window manager can have
a different one).
I actually lost most of the list of fixes for 0.8.8 in a tragic HTML editor accident. (Nevermind
that it was 99.99% user error.) What I remember of the changes and fixes is:
- The text areas that would previously "blank" themselves all the time are fixed thanks to a very helpful
tip posted to comp.lang.java.ui. This fixes the die roller plugin and "console"
area at the bottom of the game board.
- Added QuickDice: configurable dice menus that get added to your main menubar and the game board's popup menu.
See the sample gub.ini file for instuctions on how they work and how to add your own (it's very simple).
By default GUB will put a full set of polyhedras in your menu, but you can set these to whatever you like, and
supports naming them. In the menu (for example) it could show "Percentile", but would roll the dice as
1d100. You can create your own aliases for the dice. See the ini file for samples. In the future I'll support some
special dice types like "averaging dice", FUDGE dice, etc., and
support for die roll modifiers. For now you're limited to any die size that runs from 1 to n, where n can be any
number. You can add any number of these to your menu. Simply right-click on the game board to get to them, or click
on QuickDice in the menubar.
- QuickDice rolls are broadcasted to all networked players, but not in a pretty manner yet.
- The "red dot" and string ends are now much bigger by default, making them a bit more usable. I'm
still impressed with that XOR string from the last revision...
- Damn... I had 3 or 4 other small fixes and notes that I can't remember any more. It's a shame, too. I've got
the list backed up on a ZIP disk, but I'm too lazy to dig it out of my backpack.
General Notes:
- I just got a great idea for the gameboard... an option to break it off into it's own frame, so you can really
get the most out of your screen size if you have big game boards. Since I use GUB mainly for GEV
and TUW, with big maps, the visible area never quite seems big enough (and I'm running
at 1280x1024 pixels). Maybe next version.
- I'm working on a minimap plugin, too. It won't initially show where pieces are, but it will show the game board
in minor (if that means anything) and allow navigation around the game board by clicking on the minimap.
Maybe it could even do DnD, so you could drop pieces on it and pass them on to the "real" game board
at that relative position. Hmmm....
- Another great idea... Using the same mechanism as the QuickDice, I'll be able to add user-defined chat macros
and such to menus. The menus could act as send-only plugins, which could easily be configured to do a wide range
of things (like setting your favorite pieces files or gameboards as menu items...). Hmmmm.....
- I've got a good idea for implementing the snap-to-grid for square and hex-based maps. I just need to layout
managers to do this, and the GameBoard wouldn't have to do any of the work. I think it'd be easiest to do as a
plugin. Plugins can have their own data in gub.ini and in pieces files, so you could store things like
the size of your hexes, "grain" of the grid, etc. Pete gave me a great simple algorithm for finding hex
locations on X*Y-sized grids without storing the bounds of each hex. Using that should make writing the grid layout
tool a lot simpler.
- I'm just on a roll for new ideas tonight.
- My girlfriend is forcing me to speak only German from today on,
weil eine Freundin von ihr hat ein Freund auf England, "und er kann so gut Deutsch..." Ja, ja... es ist
Wurst. I guess that means I'll have more time to spend writing GUB ;).
- Marcel Nijman sent me some code for a JSplitPane subclass which doesn't screw up it's divider's location all
the time. This will make me much more likely to add more of these cute little UI controls. I find them very useful,
but I'm normally weary of using them because of all the code-arounds one has to do to keep them from knocking themselves
out of whack all the time.
- Time to go upload it...
Fixes/Changes:
- No longer removes all pieces on the board when you connect to the network server. It did this to avoid game
piece ID problems when both players had pieces on the board before connecting. I've worked around this problem
in an "invisible" way, though, so this is fixed.
- Drag/drop of Line of Sight Strings was broken in 0.8.6, and is now fixed. String width is now much bigger by
default, making them much easier to see. AND... you can change the string width and color via a popup menu (right-click
on either end of the string). AND... strings now have a togglable XOR drawing mode (on by default), which makes
them visible in all kinds of weather (you'll be able to see them no matter what color the underlying game board
is). You can find the XOR option in the "String Color" menu of the string's popup menu. Apparently, setting
the line width has no affect when XOR mode is on! Verrrry strange.
- Hoverhelp was broken in 0.8.6. After dragging/dropping a piece, hoverhelp went away for that piece, never to
return. This is a bug in Swing's serialization. That's worked around now, so you won't see this problem until the
next time I break it.
- Bugs:
- LOS Strings:
- because of a "bug" in Swing's JLayeredPane class (setLayer(), line 339 [v. 1.2.2], to be exact),
LOS strings will not be dropped on top of the stack of pieces, when they are dropped on something. Instead,
they will stay at the same "level" they were at. If they get put on top, the other end of the string
gets removed because of JLayeredPane's behaviour when setting a component's layer. When you drop an LOS string
on top of pieces, it may become hidden under a piece if you drop it over a piece. I've tried 3 or 4 ways around
this, but I can't do it because of the access modifiers of many of the fields in Component and JComponent classes.
This isn't really bad. You won't lose your string, but you may have to move some pieces to get to it.
- Sometimes XOR mode doesn't toggle correctly.
- Network server sometimes takes 2-3 minutes to load. And sometimes it takes 5 seconds. Weird.
- Dice roller's text area doesn't display properly. You will see that the first
time you click a dice button, the whole text area blanks out. To work around this, click one of the dice buttons
a bunch of times until the white text area gets really small and the scrollbars appear. Then It should display
correctly for the rest of your session.
Fixes/Changes:
- Tested against the JDK 1.2.2, which in itself fixes some things.
- Added a toggle for centering pieces when dropping them. The default is to drop the top, left corner of the
piece where the mouse is released. To toggle this, right-click on the game board and check the menu option "Center
Dropped Pieces".
- Tooltips (hoverhelp, balloon help) are working again, thanks to updated in the JVM.
- I've changed web providers. This is good because I've been able to consolidate my different sites, but it's
bad because they limit files to 512k each (hey, it's free). This means that GUB may outgrow that at some point.
It's currently about 350k.
- Because of the number of changes I've had to make for Java 1.2.2 (i.e., like getting rid of the drag-and-drop kludges that 1.2.2 fixed), I will only support GUB
run under JDK or JRE 1.2.2
or higher.
- DnD support just got a whole lot better. You can now drop pieces on each other and they'll act as if you dropped
them on the board. Before, if you wanted to set a piece where another one was, you possibly had to move the other
first to make a place in the hex (and this was often impossible with "Center Dropped Pieces" turned on).
This is no longer a problem. Because of this, I've re-enabled the "Center Dropped Pieces" option by default.
You can still turn this off by right-clicking on the game board and selecting that option.
- Network support now uses JSDT, the Java Shared Data Toolkit. The network layer has been completely rewritten
to use this. The network client and server still need some features, but synching works and should be more stable
than it was before. Networking is working, but it's interface isn't pretty, and there aren't yet neat features
like user lists and such. The game piece synching appears to be working great, though. Unfortunately, the JSDT
doesn't handle as much of the networking as I would like (it doesn't sync the internal state of each game piece),
but it's providing a solid networking layer. LOS strings will probably never be synched.
- The Bad News: Because this version uses JSDT for it's networking, you need to
install the JSDT libraries. You can either download the whole thing from Sun, at http://java.sun.com/products,
or you can follow the instructions in INSTALL.html and get just a small subset that
is all set up to work with GUB. This complicates the install very slightly, but does not affect play.
- More Bad News: Because of my web space provider's size limit on files, I have
to split GUB up into two parts. The second one is just the network stuff, and is only necessarry if you will play
networked games. See INSTALL.html for details on this extra file.
NEWS:
July 27th, '99: I'm just about to wet myself with excitement. I just got the game
pieces to accept drag/drop actions. Now you can drop pieces on top of each other and they'll drop onto the board,
making moving pieces a LOT friendlier.
July 27th, '99: I've switched to using Sun's Java Shared Data Toolkit
for networking layer, and it's working great so far. Unfortunately, this means that you have to have the JSDT to
play GUB now. This won't affect the way GUB is played, it just makes the installation more complicated. I have
bundled up a miniature version of the JSDT classes you'll need. See INSTALL.html for
instructions on how to get and install it.
July 20th, '99: The JDK 1.2.2 came
out last week, and appears to fix loads of problems I've been having. Specifically, drag-and-drop appears to be
much smoother.
Version 0.8.5 (~350k): Released July 4th.
Fixes/Changes:
It's been a prolific weekend for me. My girlfriend has been out of town, so I got lots done on GUB. This is probably
the last version for at least a couple of weeks. I'm going to try to change the network layer to use Sun's JSDT
- Java Shared Data Toolkit, which I'm sure will be a much more robust solution. I'm not actually sure if it will
allow data sharing at the level I need, so I'm not yet sure if I'll use it.
- In expanding the game loading support, I broke the "Game Info" window. This is fixed.
- Bigtime Oops: I haden't tested loading a game I had saved via GUB in the last
release, even though I changed the piece format. It didn't work. I've rewritten save/load support completely from
scratch. I should be much better now.
- Loading a saved game is no longer a two-step process of load the save game, then load the pieces list. The
saved games contain the original list of pieces, so it's a self-contained unit. Even the board settings appear
to be saving correctly, and in a location-independent way (which means the saved games should work on you're email
buddy's machine without modification). It APPEARS to be this way, but I can' guaranty it until I get my second
machine up and running again.
- The problem with a game piece's popup menu's toggle for transparency and the piece's actual transparency has
been fixed. This'll be replaced by a dialog editor soon, anyway. The popup is too unweildy for doing more than
one change to a piece.
- There are some big kinks in network synching. I'm going to look into using the recently-released toolkit from
Java made just for that. I'm sure it'll be easier to use than making one of my own.
- Preliminary support for JInternalFrame plugins, but I haven't yet written a plugin that uses this.
Version 0.8.4: Released July 3, 1999
I just realized today that the GUB that's packed as 0.8.3 says it's 0.8.1 when you run it. It's not, though. If
you want to think of it that way, go ahead. There never was a 0.8.1 released so it doesn't matter. This releases
fixes that and has a couple other small bonuses.
Improvements in this release:
- Added a preview toggle to the game piece selection list. Now you can see
them before you play them! Just check the checkbox under the piece list.
- Ooops: The reason the auto-loaded game was working is because I had a leftover
hard-coded path. That won't work on anyone else's system.
- Ooops Again: the Checkers piece set I bundled with 0.8.3 was missing the piece
graphics! This is solved.
- Extended GUB's savegame internal support and sped it up a lot by getting rid of useless and never-true String
comparisons. No noticable changes. It just makes the usage of the file much more flexible.
- I had the wrong values for game board scaling options listed in the INI file sample. This was caused by inconsistent
usage in my sources, and a final variable that got hard-compiled into some other classes (as all final
fields do). The correct values are now in the sample INI.
- GUB now looks for it's INI in the current dir first, and then in your home dir (C:\WINDOWS for most
of you).
- Game board file name in INI file can now be specified with a relative path. It works from the directory where
you start GUB (which should be GUB's home dir). By convention, the board should be under GUB's data
dir, so it should have no problem finding it with a relative path, right?
- Paths in INI files now have to use \\ or instead of \ or / as a path separator.
This is a bug, as it's not supposed to matter which characters are used.
- Also the # character is the new official comment delimiter in the INI file (but not in the gamepiece
files!). The reason for this is that I am now using Java's Properties class for reading the INI instead of my puny
hand-made one.
- Game piece file is now correctly read from startup. I thought it was working, but it turns out that I still
had the path to the file hard-coded in my code, and didn't actually test it with more than one value. *Smack*
- Bad News: I'm not 100% sure that DnD was fixed. I know I can lock it up if I start
a drag and almost immediately lift up off the mouse. This happens a lot on the first drag, and more rarely after
that. If I start a drag, and then drag for a few seconds before dropping, it appears to work okay.
Version 0.8.3: Released July 1, 1999
For general info on this version, see the section about version 0.8.0, just below this.
Fixes/Changes:
- May 6th: Network synching seems pretty solid now. Game boards are still not synched, nor are plugins,
but the game pieces are. Getting connected is still tricky. You have to know how to do it, but it works if you
do. This, of course, will be cleaned up later on.
- I've discovered a really cool mis-feature regarding the game pieces: their popup menu is lightweight,
which means that it's not directly controlled by the windowing system, which means that it can pop up in such a
way that a portion of it is off the screen. If you right-click on a piece and the popup menu is partly off the
screen, there is a cure:
- Right click over the piece, but don't let go of the button. Then drag it to the center of your screen and let
the button go. Viola! The popup will show up at that spot.
- The Game Piece Selector works a lot better than before, and has a better sample piece, which is user-definable
in the piece file.
- July 1st: After months of fricking with this thing, Drag and Drop has been FIXED
(I think)! Yes! I'm gonna upload it soon. Before tonight, it was freaking out every now and then during a drop,
locking the game. Now it appears to only do this if you start dragging RIGHT after GUB starts up, while it's still
getting itself situated.
- Drag and drop now handles any drop that implements Transferrable and returns a JComponent. It will automatically
add the component to the board and allow drag and drop with the component. This'll be a big help in making user-written
components to drop right on the board.
Stuff regarding older versions is in the old versions page.
Back to the GUB page...