Brad Wardell's Blog


Galactic Civilizations II 1.2 released!

Published on Thursday, June 15, 2006 By Brad Wardell In GalCiv II News

Owners of Galactic Civilizations II can now get the latest update to the award-winning strategy game.

Galactic Civilizations II v1.2 has a TON of new features, enhancements, tweaks and fixes based on player feedback.

There are hundreds of changes to the new version, some of the highlights include:

  • A myriad of user interface enhancements. Basically we listened to what users wanted improved in the game's UI and made dozens of updates to the various screens to make managing your intersellar empire and fleet much easier.
  • A new combat system. Previously the combat system overwhelmingly favored the attacker to the point that there was little reason to focus on defenses on a ship.  The new system has ships attacking at the same time.
  • Updated Computer AI.  The AI has been further enhanced to provide not just a challenge at higher levels but to play more intelligently at all levels.  As a reminder, at difficulty levels lower than "tough" (AI set to "intelligent") the computer players are actually penalized in resources.
  • A Modding User interface.  Players can now create their own mods more easily and users can easily select between them.
  • Stardock also has provided a very detailed example mod that includes an alternative game interface, an alternative set of aliens to play against, an alternative tech tree, and more.  Total conversion mods should be very easy to do with the new system.

On top of those changes include hundreds of minor tweaks. To get an idea of the scope, THIS LIST is only a partial list of changes we made to the game from v1.11 to v1.2.

Galactic Civilizations II should be at most retail outlets in the United States, Canada, Europe, and Australia.  You can also purchase it directly on-line from here and download the game immediately while waiting for your box (or you can select download only). 

The update is available through Stardock Central or as a stand-alone download.  Players will need their serial #s to register the game before playing.

Galactic Civilizations II v1.2 change log

Published on Thursday, June 15, 2006 By Brad Wardell In GalCiv Journals

+ A bunch of new UI enhancements. This would take too long to describe but it should be very noticeable as you play.

+ Advanced Factories produce slightly less

+ Computer AI enhanced further.

+ Enhanced Modding interface (see options screen)

+ Metaverse data checking implemented

+ Civ Manager enhanced

+ Example Mod included. We went a bit overboard on this example as it required significant work but hopefully it will give players an idea of just how much they can change (and we didn't even change ships which others have already been doing readily).

+ New Combat System: 1 on 1 Ship Battles:

    If both sides kill each other in the same round, the ship with the most max hp will escape as the winner with 1 hp.   If they have the same max hp, the attacker wins.

+ New Combat System: Fleet Battles:

    If both sides kill off the attacking ships in the same round, the last attacking ship on each side is compared for max HP.  The one with the most max HP survives with 1 hp.   If they both have the same max HP, the attacker wins.

+ Added option "Move Camera to Selected Colony in Colonies List"

   When this option is checked, the camera will scroll to a planet when it is selected in the civ manager colonies list

+ Fixed the precursor library bonus.

+ Fixed planetary defense bonus.

+ Fixed bug where most class 0 planets used the same texture.

+ “Set Home World” button now moves civilization capital to the planet, and places an initial colony on the old home world.

+ If a home world is traded or conquered, the previous owner will change its home world to another planet in its empire.

+ Fixed the tech requirement for Political Capital improvement.

+ Added warning messages to debug.err if CalcTotalMoves fails.

+ Fixed crash if you upgrade a ship, and delete the design it’s upgrading to before the upgrade finishes.

+ Upgrades are cancelled if you obsolete or delete the design that the ship is upgrading to.

+ When a ship is launched, it is selected and other ships are deselected.

+ Fixed bug where upgrading all ships would not cost the correct amount

+ Fixed bug where player could set a rally point for an AI planet

+ Fixed Galaxy Setup screen so that it remembers every setting you set for the next time you play a new game.

+ Setting any of the spinners to “Random” will now be saved as “Random” instead of the randomly chosen value.

+ Victory Conditions settings will be remembered.

+ Fixed bug where if you set individual difficulty levels for each opponent and then started a new game, all opponents would have their difficulty set to the value of the Difficulty selector at the bottom of the Opponents screen.

+ Fixed bug in Ship Details window where if viewing a ship type (for example from Governors window) the Construct and Upgrade buttons would not be deactivated.

+ Fixed bug in Ship Details window where if viewing a ship type (for example from Governors window) the description would not list the ship components

+ Fixed bug where optionswnd wasn't being updated after changing mods folder.

+ Removed unused code in a couple screens that caused “OBJID not found” errors in the debug.err file.

+ Fixed hard-coded human-specific text in Yearly Stats window.

+ Fixed bug with missing line breaks in Political Party Bonuses pop up.

+ Fixed bug where "all hulls mod" didnt have a BG in the tech tree.

+ Fixed bug where setting production focus in civ manager would not always show correct production values.

+ Added code to allow you to overwrite entire files if they have the same name and are placed in the Mods\Data folder: Anomalies.xml, CustomPlanets.xml, Events.xml, FlavorText.xml, GC2Ships.xml, GC2Types.xml, GC2_Conversations.xml, InvTactics.xml, PlanetImprovements.xml, PoliticalParties.xml, RaceConfig.xml, ResourceTypes.xml, StarbaseModules.xml, TechTree.xml, UPIssues.xml.

+ Moved name of UP movie to raceconfig so that it's not hardcoded.

+ Changed startypes.xml to use /data folder instead of /data/English.

+ Added check for if a .x file exists for ship components before creating an entry for them, which should save memory.

+ Pulls the data from the English folder and the translated strings from the localized folder, so that the Foreign Language versions will always have the most updated data
without having to play the whole game in English.

+ Fixed crash if resource manager fails to find query image file.

+ Checked in fix for crash if you started a campaign without having visited the galaxywnd.

+ Sphere model is now scaled in code so it scales to correct size regardless of size of sphere in model file

+ Fixed bug where fleets would be destroyed when attacking a mini-freighter (even if it had no weapons)

+ Drop down icons will not be created for war and peace if one of the civs is dead

+ Drop down icons will not be created for surrender if the victor civ is dead

+ Custom Race will not be selected as an opponent if “Randomize Players” is checked

+ Added “Simple Explosions” option: Some people were experiencing “stuttering” during explosion on older machines. This option will display 1 explosion billboard per explosion instead of the usual 8 – 15 billboards.

+ Fixed bug where ship would have parts in random places if it formerly belonged to a civ with a different hull style, then was traded to the player, and upgraded.

+ Disabled “Minor Race stole technologies and wants to trade” event if Disable Tech Trading option is ON

+ Made turn button glow image not hard-coded (can use mods folder)

+ Fixed bug if a ship was on auto-explore and passed into a tile with another ship the “Are you sure you want to declare war” message would keep popping up infinitely

+ If ship on auto-explore tries to enter tile with another ship, auto-explore is cancelled

+ Planet Details Screen: Set Homeworld button now sets the civ’s homeworld name property

+ Fixed up/down arrows in Election window so you can scroll through the political parties

+ Fixed typo on mods dialog “AUse this…” à “Use this….”

+ Added cheat key to force vote for political party  (CTRL+SHIFT+V)

+ Fixed crash if NewShip fails to find ship design

+ Added new fleet formation ( double vee ) to Example mod

+ Capped max zoom in level in mini map to 500%

+ Fixed mislabeled tool tip in Civ Manager Colonies list

+ Added 2 fleet formations to example mod

+ Fixed bug where upgrading all ships of a type would cost more than upgrading them individually.

+ Fixed graphical glitch in auto pilot lines where at certain times the line would appear to have jagged pieces or sharp points

+ Fixed bug in fleet battle code where sometimes not all ships on a particular side would fire a shot

+ Added a line to debug.err to tell if mods are enabled or not

+ If mini map is zoomed in, it will now update its position if you move the camera (it updates once the camera stops moving)

+ Fixed crash when using the T key to try to set a rally point for an uninhabited planet

+ Fixed FogBugz 9632: Star port and ship yard windows would show an empty view if the ship config file for a design was missing.

+ Upgrading a ship from the ShipDetailsWnd or FleetManagerWnd will hide that window and unhide the UpgradeWnd (fixing the "Upgrade Screen appears beneith
FleetManagerWnd Bug")

+ Fixed bug where using the left and right arrow keys would distort the camera view after an arrow key press opened a window

+ added Paul's new screens to the sample mod

+ changed mods browse dialog to only list mods, not folders

+ fixed bug in save games that tripped cheater flag

+ added MODS parameter so that you can enable mods from the command line parameter

+ added Default folder to GalCiv2\mods directory to be the default mod

+ fixed bug where bink would show up in Alien Msg Window instead of the mod that's supposed to overrride it

+ hid pictures of ignored races on Race and Opponent windows

+ fixed bug where Customize Race Window brought up wrong data first time you load a game with mods enabled after they were disabled

+ made it so that you can put a TechTree.xml file in the Mods\Data folder and it reads that in instead of the one in the regular data folder.

+ tweaked (condensed) Example mod's Tech Tree

+ The AI is now allowed to win via a technology victory. A warning dialog is brought up if the AI is going for that tech...similarly, the AI is now informed when a human player is going for a tech victory.

+ "launch all ships in orbit" and "clear all info icons" buttons hooked up into the main game screen

+ put glow around icons for "Advanced Farming" and "Industrial Sector"

+ lengthened 'Moves' field on stacked ship window to prevent elipsing

+ ColonyManagementList: Can now set production focus in the list.

+ ColonyManagementList: Class shows number of unused green tiles.

+ Fleet Wnd: Construction button added.

+ Fleet Wnd: Upgrade Button added.

+ Fleet Wnd: Displays troop and colonist counts

+ Fleet Wnd: Displays destination

+ Main Game Wnd: Added tooltip on "current money" to show cashflow details (VERY USEFUL)

+ Replaced old planet "sphere.X" file (which cinsisted of an gluttinous 4500 polys!) with a new 1000 poly model (making gigantic maps much peppier)

+ Quick Project/Ship Window: Hooked up CANCEL button, so now you can leave without changing your ship.

+ Ship Details Wnd: Upgrade Btn Hooked Up - can now upgrade from the details window!!!

+ Ship Details Wnd: Construct Button Hooked Up - can now build a starport from the details window!

+ Ship Details Wnd: Lists Crew Count of Colony and Transport Ships

+ Ship Details Wnd: Shows destination of ship.

+ AI more effective in strategic conquest planning AI more likely to ally together Some AI players will focus more on government techs and diplomacy techs

+ More work on improving AI's planetary improvement handling (it is not designed to be "perfect" but rather "good").

+ Fix to bug that would cause AI to build an unlimited # of morale or influence improvements on a planet.

+ Tweak to galaxy seeding code to have player starting positions more spaced apart

+ Default tech setting a bit more expensive (i.e. more resources needed to get higher techs)

+ Changed the default mods directory to GalCiv2\Mods instead of My Documents\My Games\GalCiv2\Mods

+ Made it so that the Done button on the Browse dialog is only enabled if there is an ModsDescription.xml file in that directory

+ Destination Cursor is no longer hard-coded ( can support mods folder )

+ Added a mod for destination cursor color change to Example mod

+ Made star colors read in from StarTypes.xml file instead of being hard-coded.

+ fixed crash caused by AI giving away mini-freighters (which apparently have an attack value) (rare case)

+ added code so that modders can enabled the Dread Lords ship style on the customize race screen

+ fixed code that corrupted save games if it failed to save a shipcfg file

+ added debug code to try to find out why (and recover from) bug occurrs where game thinks it is not a metaverse game

+ added code to prevent mini-freighters from getting deleted when they are being reset

+ added code to make sure that CreateGameWindows only gets called once

+ added code to make sure that dummy windows don't get created, which may have been causing small memory leaks.

+ Fixed null pointer crash in classAICivilization_Crazy::AIFindConstructorDestination

+ removed message about not being able to find a TGN serial number; now it will only complain if it can't find any serial numbers.

+ added code to create a mod description xml and read it in

+ fixed some hardcoded text

+ fixed crash in AssasinateLeader random event

+ made it so that the category strings can be translated by making the category string in the GC2Types.xml file the fieldname for a string in the string table SDesignWnd.

+ made anomalies tooltip use the description from screens.str instead of their name

+ added ignore flag to raceconfig so that you can disable races; ignored races cannot be selected on RaceWnd or OpponentWnd

+ tweaked code in Font Manager that calculates the character widths so text should display a bit better for both English and foreign languages

+ Mods Directory Browse Dialog

+ fixed crash with bad trade route

+ fixed bug reading in invasion tactics

+ made info icons save their parsed definitions so that they'll come up faster

+ fixed 2 string not found in invasions

+ changed it so that you can't set relations higher than friendly on the opponentwnd in a metaverse game

+ changed GetDistanceInTiles to round down when using the Euclidean heuristic so that partial tiles in the starbase ZOC will count

+ fixed bug where unknown minor race could steal techs for you but you couldn't see them on the minor race screen because you hadn't met them.

+ added check for failed NewShip in function RandomEventFindShips

+ fixed a few bugs in the ship movement code to help AI ships recover if they don't have a destination

+ added code to make mini-freighters not get deleted if they're being reset

+ Fixed "stuck turn button" issue some people have run into.

+ Recalculates the civ's population if an anomaly adds to the population of a planet

+ Fixed bug where after building a ship, if you viewed the ship in the ship yard, it would cause the ship on the map to scale incorrectly

+ Fixed music volume bug:  The problem was in the SetFadeIn/Out functions.  These would be called before any music was playing, so the end volume would not get set to the current volume and it would remain at its default value of 1.0 (full volume)   The fade in effect was then increasing the volume until it reached this full volume.  So I’ve changed these functions so that they set the start and end volumes and fade direction regardless of whether the music is playing or not.  That way, when the music does start, the fade effect will not increase the volume past the user’s selected volume.

+ Fixed rare crash in UpdateStackedShips

+ Added code to prevent infinite loop of messages if a ship without survey ability is on auto-survey and hits an anomaly

+ Fixed bug where engine exhaust would be added to any frame with an E in it instead of frames that began with E

+ Fixed "String Not Found" message when trying to delete a custom race

+ Fixed UP Law "Minimum Constructor Speed" so any constructor below min speed will be bumped up to min speed.  Any constructor above the min will not have its speed changed.  Previously all constructors were having their speed set to the min speed.

+ Performance Improvements to Planet screen: Queues and menus can be updated only when they are empty. The build menu was being updated twice when you chose a project to build. Now it is only called once.

+ Plays debris cut scene when you lose by tech victory

+ Fixed display bug where if you set difficulty to Easy, then added a Bright opponent, the difficulty would still display as Easy

+ Fixed placement of engine trails in full battles Fixed bug where engine trails for ships that die were lost when full battle was restarted

+ Fixed crash if sphere.x fails to load

+ Fixed bug where war, peace, and surrender icons would appear twice if they happened during the AI's turn

+ Fixed bug where peace notifications would not appear in some cases

+ Fixed bug where right-clicking declare war icon would scroll to enemy planet even if it was hidden by fog of war

+ Fixed broken tool tips for list grid controls

+ Added descriptive tooltips to the component icons in the ship designer

+ Fixed bug where tooltips would not show up for any items inside of a custom list box. For example: Ships in orbit, improvement summary list, etc

+ Fixed bug where fleet hit points would display show correct amount of hit points (It would add an extra bonus for HP)

+ Fixed bug where troops from information warfare would be added onto transports at the end of a battle if they were the only casualties of the invasion.

+ UI Tweak: Selecting a planet no longer deselects ships.  This allows you to select ships, then select a planet, see if you want to send ships there, then click another planets to check it out, and see if you want to send the ships there.  You do not lose selection of the ships.   This is similar to how it worked in Galciv 1.

+ Fixed bug where planets that used terraform improvements did not have the correct planet quality after loading a saved game.

   The stored improvement value for Planet Quality is saved, all other stored improvement values can be recalculated, but planet quality can’t be recalculated since the terraform improvements do remain after they are built.

+ Battle System:  Ties go to attacker (as discussed at the meeting)

+ Combat Viewer: Ships have their frames cloned so they can scale correctly for the battle

+ Colony Manager: Population is now displayed with 1 decimal place instead of 3 ( to allow more room on the screen for other things )

+ Changed the way ship frame cloning works so it is more efficient (major memory saver!)

+ Fixed bug in frame sharing where mini-freighters and normal freighters would not be the correct size

+ Fixed a bug where only the first starbase of a type that was built would animate, others would not animate unless the first one was on screen.

+ Added GNN notifications and dropdown icons for the following events:

    1) A civ declares war on another civ
    2) A civ makes peace with another civ
    3) A civ surrenders to another civ

+ Left-clicking the drop down icon will speak to the main civ involved (For war and peace, it’s the one who initiated it (or the other civ if you initiated it).  For surrender, it’s who they surrendered to (or the icon is removed if they surrender to you).

+ Right-clicking the drop down icon will scroll the map to the home planet of the main civ involved.

+ Currently the icons are using the ship icon.  Paul is making some new icons for these events.

+ Planet screen now shows max possible population

+ Planet screen now updates its data as buildings are destroyed

+ Fixed bug in the turn event log save code

+ Wormholes now have a light-yellow tactical icon to differentiate them from normal anomalies

+ You can now use the T button on the keyboard to set a planet rally point from the planet management and planet details screen

+ You can now use the T button on the keyboard to set a rally point for selected colony in the Civ Manager colony list

+ Foreign Treaties window: Race logos now have tooltips which display the race name

+ Removed debug info from frame cache

+ Implemented shield on colony list to indicate defended colonies

+ Fixed sorting by net income in colony list

+ Implemented “Ship Graphic Frame Sharing” system (increased performance, memory savings). This is a pretty significant engine change but we hope it will increase performance and set the stage where we can have larger sized galaxies.

    1) Ships now share their frame data

    2) ALT+TAB will clear out the frame data, and new frames are created, these also get stored the first time, and from then on ships that are restored use the new frame data

    3) Frame Cache is cleared out in UIBeginGameHelper

    4) Frame Cache is also cleared in galaxy destructor

    5) If a ship is about to explode, its frame data is cloned, so it can be altered without affecting the other ships of the same type

    6) Made changes to various screens so that they use the scene node util function that uses the cache instead of allocating their own ship graphics


+ Implemented Planetary Invasion Turn Event

+ Optimized battle code that selects a weapon component

+ Optimized code that selects a component from a ship frame

+ You can now select an improvement that is being upgraded, and select Decommission to both stop the upgrade AND decommission the existing improvement

+ You can now use the DEL key to decommission an improvement.

+ You can now use the DEL key to remove improvements from the build queue

+ If you scroll down through the list of available improvements, select an item, and then build it, the list will remain scrolled to where you were when you built the improvement.

+ Fixed bug where selecting Nothing in the Quick Build window would set a planet to build a Ranger

+ Fixed UI bug where starport icon on a planet would not show correct status after planet invasion

+ Fixed bug where if you send a constructor to the starbase, and “Prompt to Upgrade Starbase” option was disabled, the constructor would enter the starbase’s tile

+ Added GetNumIcons function to the info icon manager (Requested by Scott)

+ Civ Manager Colonies list will now display the net income for a planet and color it red if is negative, white if not

+ Fixed a crash in Ship Graphic render function so it gracefully exits

+ Improved performance on Civ Manager screen when going back and forth from colony list to planet screen.  It now updates only the planet that changed instead of refreshing the whole list

+ Civ Manager: If you go to a planet screen from colony list, and return to colony list, and only if the data in the column that is being sorted changed, the colony list will be resorted

+ Reversed planet rotation direction on planet screen so it matches rotation direction on map

+ Starbase window now uses standard scene node creation function instead of using its own code to make a starbase

+ Fixed starbase trading exploit

---
The "Example" Mod includes:

New GUI
- Game intro screen changed
- Radically different main UI

New Civliziations
- All the civilizations replaced with different ones

New tech tree
- Custom tech tree.

FleetFormations
- Adds 10 new formations to the combat viewer

Anomalies.xml
- Added 4 money-giving anomalies
- Added 2 money-taking anomalies
- Added an anomaly that increases the player's maximum number of trade routes by 1
- Added a surprise worm-hole anomaly that looks like an asteroid, but teleports the ship like a worm-hole
- Added an anomaly that adds population to a random planet that belongs to the player

PoliticalParties.xml
- Added Totalitarian party ( Economy +10%, Military Production +20%, Loyalty +10% )
- Added Expansionist party ( Speed +1 parsec, Range +20%, Population Growth +20% )

AbilityBonuses.xml

- The player can use ability points to add to their miniaturization ability

TechTree.xml
- There is now a branch of 4 techs from Advanced Hulls that increase your ship HP (2 were moved from after Master Hull Building)
- A new "Supreme Logistics" tech has been added after "Ultimate Logistics" that increase your logistics by 15
- A new branch of 5 techs for increasing your Repair ability has been added from Basic Logistics

StarbaseModules.xml
- Added "Starship Repair Bay" module for increasing repair ability for ships in the base's area of effect (Requires new "Basic Starship Repair" tech)

CustomMaps.xml
- PlanetStardock.raw
- Added custom planet with Stardock logo as a continent

Events.xml
- Added 5 more random events

Mod docs:
https://www.galciv2.com/mods/gc2modsdoc.htm

 Some Screenshots of mods in action:

 
Create your own races complete with images and if you want, their own ships.  Replace the GalCiv II UI with one of your own making. The far right one is the main game UI that is very different. Just use DesktopX to modify the .dxpacks (www.desktopx.net).

 


Pick your mods, total conversion mods are easy to create and easy for users to make use of.

DesktopX 3.2 preview

Published on Wednesday, June 14, 2006 By Brad Wardell In WinCustomize News
DesktopX 3.2 is now in beta if you have Object Desktop. Check out the article linked below to get not just a preview of what's new but an example of how DesktopX 3.2 will change the way scripts are made. It has features that we think many skinners have been looking for for a long time. 

Do you have Natural Desktop?

Published on Wednesday, June 14, 2006 By Brad Wardell In WinCustomize News

Summer is here and many of us are stuck in doors at times we don't want to.  One of my favorite programs that I highly recommend to others is called Natural Desktop.  Natural Desktop 2006 has been out for awhile now. It's not brand new.  What it does is look at the current weather, the current time of day, your location, and then changes your wallpaper and provides a weather portal.

But that's not the part that I love the most these days.  The killer aspect for me of Natural Desktop are the sounds. Forget the screenshots, you can minimize Natural Desktop so that there is no visual part. It's the audio of it.  Natural Desktop plays nature sounds based on weather, time of day, etc.  So during the course of the day, you'll hear morning doves or cicadas or frogs or whatever.  And it's very subtle and nice. 

The whole program is only $10 ($9 if you have Object Desktop).  The sounds alone are worth that in my (admittedly biased) opinion.  Just having all those natural sounds playing throughout the day while indoors is very nice to have. 

It's website is www.naturaldesktop.com.

DesktopX: External scripts

Published on Wednesday, June 14, 2006 By Brad Wardell In DesktopX Tutorials

3.2 Preview Guide

Our story so far...

DesktopX was the first program (for PC or Mac) that enabled end-users to easily create desktop objects that could be combined together to form mini-programs commonly referred to as widgets (or gadgets) or used to design an entire desktop environment.

Over the past few years, widgets and gadgets have become very popular with Microsoft, Yahoo, Google, and others all getting into the act.  In power, no other platform can deliver what DesktopX can do.  With that power, however, comes complexity.  Stardock has continued to focus on ways to make it easier for developers and artists to fully harness the power of DesktopX.

Another important event is the coming of Microsoft gadgets.  Microsoft's gadget concept is very similar to what DesktopX can do.  Stardock's long-term goal is to enable users to export their DesktopX creations as Microsoft gadgets.  The powerful development tools and underlying DesktopX technology (called DirectGUI) will be able to be used to create Windows sidebar gadgets and more.

The first step in that path is DesktopX 3.2 which has two main new features:

  1. Windows Vista compatibility.  Content made with DesktopX 3.2 will work on Windows Vista.
  2. Scripts can now be externally located making it much easier for content makers to create their own library of scripts.

A new development environment

Most end users won't really notice the difference between 3.1 and 3.2.  What they will notice is an increased variety in the types of scripts and hopefully, more content from desktop, gadget, and widget creators since the process of creating "Stuff" is streamlined.

For this example, I am going to make a dictionary widget. Please note I am not an artist. I'm a software developer so the graphics in this will be painful.

Example: Dictionary widget

One of the advantages DesktopX has over other "widget" enablers is that it provides a GUI for most of the common, tedious work.  You don't, for instance, have to (though you can if you want) define images and objects using some text editor.  In DesktopX, it's all GUI driven.  Try to create a dictionary widget as easily in any other platform.

Step #1: Background window

From the DesktopX Helper toolbox, I press "Create object". Then I go to its properties and press the change appearance button which opens a dialog asking me to provide the image. I provide the image.

Step #2: Provide the text input box

The user has to have something to type their word they're looking up into. So I go through the same object creation procedure as before except for this:

I press "New" on script which opens up the script editor box. Then I choose ActiveX control. Then I choose DesktopX edit control. (I agree, we should have really common controls not require the user to go through this but this also exposes users to all the possibilities -- your computer is full of objects already. DesktopX lets you make use of them easily on your desktop).

Then just exit the dialog.  Now, HOLD DOWN THE CONTROL KEY when you click on that object and you can resize it. 

Step #3: Create the text output area

Now we need the area to output the definition. So go through the same object creation method as before (you can also create a new object from the DesktopX system tray item). One change though:

On the "States" page change the appearance from Image to Text.

Now, you can get pretty smug because you can visually change all the text settings from this GUI rather than mucking with it in some ASCII text editor.  Get it the color and size you want first.  And thinking ahead here, you will want to make sure it word wraps. So go to the summary page and set its width in pixels. I'm going to set it to 400.

Anyone who's made widgets or gadgets knows how annoying it can be to do this in script.  By contrast, the total time taken so far is about 30 seconds to create this widget (other than making the tutorial).  Did I mention our goal for Windows Vista is to allow creations to go onto the Windows Sidebar?

Step #4: Write the script

This is where we part ways with really casual users. If you're not a developer, this part may be confusing.

The first thing we need to do is give these objects some names so that they can talk to each other. On the summary page is the ObjectID. Name your objects something you can remember (like Dictionary_Text) on the object we just created.

I'm going to write two scripts. The first script is a tiny one that I'll attach to the edit field.

Here's my script:

Sub Control_OnKeyPress(AsciiValue)
 If AsciiValue = 13 Then
     DesktopX.ScriptObject("Dictionary_Text").LookItUp
 End If
End Sub

All I'm doing is looking for Ascii value 13 (which is the enter key basically) to be pressed and then  I'm going to call "LookItUp" in my text object which will grab the contents and send it to dictionary.com.  I am going to name the entry field object "Dictionary_EntryField" so that I can refer to it.

The second script is more complicated and here is where DesktopX 3.2 starts to shine -- dynamic scripts.  I'm going to write the script in Visual Studio.  Special thanks to Sranshaft who made a dictionary object that I could use as the basis of this.

The one annoying thing I ran into that we're trying to think of a more convenient solution is that when you change your script in Visual Studio, you have to go to the object that is using it, right click on it, and toggle "script enable" back and forth in order for it to update what's there.  If anyone has any preferences on how we essentially "reload" the script to be "recompiled" on the fly, let us know.

Anyway, so I took Sranshaft's dictionary script and modified it.  It's not very long. In fact, most of it is just replacing the junk in the response with blank characters (i.e. getting rid of the HTML characters).

Step #5: Connect the script to the object.

Now I need to go back to my text object and connect the script:

I wrote my script over in my "c:\projects\dxdev\scripts\dictionaryscript.vbs". 

So why do it this way? Why have your scripts be external to the object? In DesktopX 3.1, you couldn't. The idea was to have scripts be totally integrated into the object.  The problem with that is re-usability. It's a lot easier for developers to have a library of scripts that they make that they can then just refer to.  Over time, depending on feedback and interest, we can make this even easier to do.  The other reason to do this is to prevent catastrophic loss.  For instance, while I was modifying this script and testing the output, I got a huge overflow that brought down DesktopX.  No problem, I just restarted DesktopX and it remembered my last state. But there's a dialog that pops up asking if you want to erase everything (in the event you get yourself into an endless loop or something). If I had answered that incorrectly, I would have lost my work.  But with external scripts, I don't lose all my work, the scripts are still there on my hard drive, easy to find.

External scripts also benefit for users who use real-time data protection programs like KeepSafe which will create revisions of your creations so that if you really screw something up, you can go back to a previous version (and if you don't have KeepSafe already installed, quit reading this and go get it RIGHT NOW).

Step #6: Clean up and finish

Now it's just a matter of taking the 3 objects I created and putting them together.

This just means dragging the 3 objects around on screen until you've positioned them the way you want and then grouping them. Don't forget to hold the CTRL key down when you are moving the ActiveX control.

I just drag select the objects, right click and choose "group".

And then voila.

Step 7: Export it to a widget.

DesktopX 3.2 widgets are .EXEs. So as long as you have DesktopX installed, you can use them like any EXE.  Using Keyboard LaunchPad I then assign them a hot key so that when I need something like currency conversion or dictionary lookup or whatever, I just hit a hot key to bring it up.

To export as a widget just select all the objects, right click, and choose Export as widget which will take the user through the steps of assigning it an icon and the file name.

And voila.

We're still working out some of the kinks such as how to handle external scripts when it comes time to package them. Do we allow users who import widgets that use external scripts to see them? Could this be used as a way for people to protect their code? Hence, why DesktopX 3.2 is still in beta. But you can see where we're going.

DesktopX 3.2 is in beta. If you have Object Desktop, DesktopX is one of the programs that comes with it (along with WindowBlinds, IconPackager, Keyboard LaunchPad, etc.).

Hooray for Gamers!

Published on Tuesday, June 13, 2006 By Brad Wardell In GalCiv II News

This month's Computer Gaming World has a letter to the editor giving us kudos for not putting CD copy protection on Galactic Civilizations II.  In it, he says that not having copy protection helped make his decision to get the game.

As a gamer, I have a similar point of view. I lose my CDs. I scratch my CDs. My desk is a mess.  Nowadays, with games requring 3 or 4 CDs (I wish retailers would universally accept DVDs but that's a different issue), keeping CDs around to play is annoying.

I don't have exact worldwide sales numbers for Galactic Civilizations II, but we do know they're well over 100,000 units sold worldwide in the first 90 or so days.  That number is about as high as a game of our distribution level can sell in that time frame (units sold is a function of popularity X outlets available in the same way that a movie's first weekend take is a function of how well received it is X how many theaters it's showing in).

The question about copy protection is straight forward in our view: Does CD copy protection generate more sales due to less piracy than it costs in sales due to people on the fence deciding not to purchase.

CD copy protection to me is a lot like the issue I have with shareware. I don't mind registing shareware. But I know that I'm going to lose that serial # at some point. IF the site has a very very simple way of looking me up and sending me my info that is very apparent, then I'm inclined to buy it.  Similarly, not having CD copy protection helps protect my investment -- knowing I'll be able to play the game even if I lose those CDs. 

In GalCiv II's case, our upgrade system even has electronic registration. When someone upgrades to one of the new versions, they enter in their serial # that came with the game and it automatically registers them. So even if they lose the CDs AND their hard drive dies, they can re-download the entire game from us (not just updates the ENTIRE GAME) even yeras from now.

For these reasons, we are convinced that game developers/publishers can increase their sales by focusing on SERVING their customers rather than focusing on thwarting pirates. If someone is paying $40 for a game, they should be treated with respect, not with suspicion.

Design your own enemies

Published on Monday, June 12, 2006 By Brad Wardell In GalCiv Journals

When I play a strategy, whether it be single player or multiplayer, the most important  thing to me is being able to have some say over how the game will be played out.

One of the reasons some people like multiplayer is that you get a lot more variety. But having played multiplayer for years and years (I love multiplayer personally) there really aren't that many strategies. At least, not when you get good at it. 

The problem with computer players is that players have very little control over what they get.

What we, as developers, need to do is empower the user. Empowering doesn't mean writing a bad AI and then throwing up ones hands and saying "Look, it's scriptable". By empower, I mean that there should be a lot of different options available to players when they set up their game.

Imagine an "advanced" button next to each player that let the player pick:

  • Resource Bonus (-50% to 200%)
  • Aggression Level (1 through 10)
  • Strategy Type (A, B, C, D) where most players would wnat to choose random but it would have various general strategies that TBS's and RTSs have.
  • Intelligence (1 through 10 which the higher the #, the more CPU it would use).

There are other factors as well that players might want to mess with that I'm not thinking of.  But what I'd like to see is the ability to have a lot more control of how my opponents play so that I can get a greater variety of playing experiences.

Blog: So what kind of community do you want?

Published on Monday, June 12, 2006 By Brad Wardell In WinCustomize News

Summer approaches and June is when we start to put together all our plans for the next year. It is traditionally the slowest time of the year as people go outside and find other things to do.  Things start to get interesting again usually around August.  Right now we're working on a new website for Stardock then the same team will start to re-skin WinCustomize.com.  Our hope is to make it so that user swill be able to eventually skin the site themselves (or at least WC subscribers).

We're going to have to make some tough decisions on what skin sections to highlight and which ones to not be on by default.  If you look closely on the skin gallery list on the left, you'll see a little wrench thing. If you click on it, you can control which skin galleries appear by default and which ones don't.  So users can already control this.  But some galleries are clearly on the way out. 

It's a time of change for our community. The community grows and as it grows, new people come in with their own ideas and preferences.  Old favorites like Litestep (for instance) start to fade away.  Litestep is likely to stop being a default gallery shortly.  What about Winamp and for that matter, the entire "skinned" media player movement. What's the future of that? Gadgets and widgets have taken some of the wind out of those things.

Another long-argued issue in the skinning community revolves around fair-use and copyrights.  WinCustomize.com has long had, by far, the strictest rules on copyright of any major skin site. We've tried to protect people's copyrights very aggressively.  But at the same time, we want users to be able to share and download things that they want. This site doesn't exist in a vacuum. Our friends at deviantART have over 22 million items in their galleries.  It's a different kind of site from WinCustomize so it's not quite an apples and apples comparison. But they don't have moderation.  So we try to find a happy middle ground where rips and such are quickly removed but at the same time we allow fan art.

I've written a post here that outlines our policy in more detail with regards to copyright, fair use, and rips.

Going forward, skinning is going to become much more popular than it is even today.  And this year, our job is to fix up and enhance the infrastructure we have on WinCustomize.com to deal with what is almost certainly going to be an unprecedented level of traffic when Windows Vista comes on the scene.  With so many new galleries, new software, and new users, we need to start thinking about -- all of us -- what kind of community we want to be. 

 

Society Status Report

Published on Monday, June 12, 2006 By Brad Wardell In Society News

Society continues to move along but at a very slow rate.

There's two ways of making a PC game.  You can build a large team and create the game in 18 to 24 months or you can have a smaller team and build it over 36 to 48 months.

Until we recruit more game developers, we're having to take the latter role. 

To give you an idea of the scope you have a game that needs a pretty good sized development team for the engine, features, multiplayer.  You also need a very large art team.  But you also have to have a large IT team to build the server infrastructure.

We are in the process of hiring more developers but there will be a ramp up time.  What I want to do is avoid the label of "vaporware" and make sure we're very up front -- we are working on the game but this isn't something that's going to be out next year or something.

We have one full game development team presently at Stardock.  Right now they're working on the expansion pack for Galactic Civilizations II.  Then they will be working on The Political Machine and other expansion packs for GalCiv II.

My job is to help build up the Society team. To find developers who are interested in coming to Plymouth Michigan to make a truly remarkable game. 

Stay tuned.

Reporting Rips: READ THIS!!!

Published on Monday, June 12, 2006 By Brad Wardell In Permissions

There has been some question with regards to users posting about potential rips. 

WinCustomize.com supports users reporting violations of other people's copyrights.  The forum "Permissions" (general->permissions) exists to that purpose (we are working on a new forum layout that will make this easier).

There was confusion in this thread:

https://www.wincustomize.com/forums.aspx?ForumID=144&AID=119968

Here's the deal:

WinCustomize allows FAN art.  This isn't open to debate.  If someone wants to upload a Superman wallpaper that they made, that's fine. If they want to submit an X-men wallpaper that is fine.  If there is an issue with it, Marvel, Warner, whoever will let us know.  However, in "real life" there are thousands of fan sites that post the same thing.  WinCustomize does not exist in a vacuum.

We allow fan art because no one will be "confused" or "misled" by what the fan art is about.  There is no confusion over the ultimate owner of the trademarks or trade dresses involved.

Ripping, however, is something different.  No individual skinner or icon artist has the fame or distribution in which a "casual user" would recognize their work as opposed to being the work of someone else who uploads it or uses it in their product.

WinCustomize takes copyright and trademark rights very seriously. So if someone sees a product, service, website, skin, or theme that is making use of another individual's work that they don't think they have permisison, you should feel free to post it here to draw attention to it.

In the past we have seen our own content made use without our permission.  We have seen Paul Boyer's icons used without permission.  We have seen our own skins used without permission.  So it is clearly a problem and as a community we should work together.

I realize there are some people who have much more stringent definitions of what copyright protection means and I realize there are those who have much looser views on what copyright means. This is not the place to debate that.  We have struck a middle ground (so no one will be quite happy).

Hopefully this clears up confusion.