Brad Wardell's Blog


Appreciating good health

Published on Thursday, April 15, 2010 By Brad Wardell In Life Journals

For years I’ve taken to the system of pre-planning my days weeks in advanced. Every waking hour is assigned to something because there’s just too much going on.

This week, I realized that the only way I am able to plan my schedule to such a fine detail is because I have unfailingly good health – at least until this week when I got a cold. In a blog last year, I mentioned I didn’t have to blow my nose until I was 34.

This week, I didn’t get particularly sick (no nose blowing <g>) but it slowed me down enough that I had to take a two half-days at work due to fatigue.

It’s amazing how quickly a schedule can fall apart and how quickly the consequences line up.

two lost half days result in:

1. Having to delay the WinCustomize 2K10 launch a week since I wasn’t there to help with it.

2. Some minor (but expensive) finished carpentry changes because we had moved to an “on the fly” system for finished carpentry on the new house and a desk that was being built into the wall was at chest height instead of sitting height (long story).

3. I had to get an extension on the book I’m writing. The copy editing came back for my review and I just couldn’t get to it.

4. I won’t even get into the email backlog. I haven’t touched that yet.

5. Several enterprise software meetings had to be canceled putting back multiple projects.

6. Had to cancel a couple of design meetings with partners.

7. Absolutely blew the Elemental retail videos I was supposed to do and narrate. Luckily Jason Ocampo is helping me on that but we’ll still lose a week.

8. Failed to evaluate feedback on ObjectDock 2 in order to prioritize development which put the next beta build back probably a solid week.

9. Didn’t spend any time this week with the kids since I was sleeping so much.

10. I would normally do my Spring cleaning of the beehives. I was able to still feed them but I should be tearing them down for the Spring build up and now the weather is going to get bad for a few days.

11. Has to pass off the work on Total Annihilation changes to Jason Ocampo as I was too under the weather to look at the TA uberfix and other mods this week. I normally lurk on TAUniverse but couldn’t this week.

Luckily, thanks to good project management by Scott (Boogiebac), Elemental beta 1Z2 made it out on time. I also was able to work with Chris Taylor on Demigod update focus this week.

But as Thursday comes to a close, I’m fading which means I’m still not back to full power.

I have a new appreciation for those who manage to still work despite having imperfect health. 

One technique I did make use of was taking a stroll outside to recharge. I took some pictures.

---

Pictures from this week…

 

IMG_0295

A view from the edge of the covered pool at the new house.

 

IMG_0302

The pond at Stardock as the sun sets..

IMG_0303

“Stardock Creek”

 

IMG_0304

The Stardock building.

 

IMG_0305

The beehives. I need to take off their Winter wrappings and tear them down (fewer of the boxes) to prepare them for Spring.

 

IMG_0306

Cute bunny. It’s a lot closer to me than it looks in this picture.

 

IMG_0307

Elemental: Destiny Ember original manuscript (yep, the final drafts are Fed Ex’d back and forth on paper, no computer at this point).

Great game intros of all time

Published on Thursday, April 15, 2010 By Brad Wardell In Elemental Dev Journals

Elemental Beta 1-Z2 News and Changelog

Published on Thursday, April 15, 2010 By Brad Wardell In Elemental Dev Journals

image Beta 1Z2 is scheduled to be released this week (today or tomorrow). The beta will close to new members tomorrow afternoon.

As I mentioned earlier this week, we are committed to releasing the game when we’re happy with it even if it means we have to delay it repeatedly to do so. 

That said, as you can see with this 1 week of progress, there is also good reason to believe that we will still make the 3rd quarter release (if not, it’ll get pushed to 1Q2011).  I currently do think that we’ll likely make the 3rd quarter release if progress continues at the current rate (especially since the whole graphics engine continues to evolve in tandem which, when switched on, will change the perception of how far along the game is).

What’s new since last Friday:

- Elemental 1Z Update Change Log -

* Unit Movement *

+ Fixed bug that would pick invalid destination tiles when leaving a city+ Added check in CancelDestination to fix offcenter object only if not moving in tile (using temp code set to false)
+ Added function CheckNextTile (moved CMoveCheck and set move cost from MOveToTile
+ If MoveToTile is called when the next tile has already been set to the tile being passed in, it just updates FOW instead of checking the tile and setting the position, so that it can be called after animated moving
+ Changed QuickMove to Move and added code for animated movement if the unit is visible
+ Added function MoveAnimated which contains very similar code to AnimateMoveGfx, which was removed.
+ Added cost callback AutoExploreAStarCostCallback for picking good destinations for auto explore
+ AutoExplore now will go through the rest of the tiles in the sector if the first one is not a good destination
+ Added Move cost parameter to CollisionDetection so that when it's in path check mode, it can affect the move cost based on what is in the tile (your own city tiles cost 0)
+ Fixed bug in CollisionDetection where the code was using m_lNextTileX, m_lNextTileY instead of the tile being passed in
+ Added function HitCheckObjects, made from code that used to be at bottom of CollisionDetection
+ Removed parameter bMoveInstantly from SetPositionTile and related code
+ Added check in FindPath to skip leftover moves if the destination is cancelled because it can't create a path
+ Added checks for m_bWaitingForUserResponse in FIndPath
+ Added call to CalcAStarPathToDest under UpdateDirective so that the unit can move immediately after its directive is updated

* Unit Customization *

+ Can now alter the face and eyes of your Sovereign

+ Added a bunch of IsBodyPart checks alongside checks for clothing and hair so that faces are treated as randomized backup items like hair and clothes already are, and so they don't get cleared when the unit type is cleared
+ FillItemList doesn't make a category for the face equipment slot

+ Fixed crash that occurred if CreateTemporarySceneNode failed
+ Fixed bug where items would use custom textures of other items on a character

+ Fixed some T-poses that would show up for female sovereigns (like female children) because of some doubled animations that caused it to access random animations with out of bounds indices

+ New "EYES" material added.
  - This material animates the eyes so they automatically blink
  - Blinking eyes is disabled on info card
  - Blink constants are defined in CharacterGraphic.cpp

* Event List *
+ new tooltips implemented specifically for the Event list...line up over whichever entry triggered it
   - right clicking on certain events will either select the UNIT or CITY the event refers to (still hooping this up for more events, but it should work for the main ones)
   - started converting all the seperate CReportItem classes to just use the core one...the other classes were proving redundant
   - Hit detection improved in the Event list by setting several editfields to be transparent

* Gameplay *

+ Pioneer can not longer build on top of an existing pioneer improvement

+ Removed retreat code

   - Retreat button is now Cancel button, only available to attacker.  Since you no longer move into the tile when attacking, no retreat code is necessary

+ Custom Unit Quotes and Names being auto-generated, picking from a handful of options
   - currently hardcoded...will be converting to the FlavorText system next

+ Turned autosave on by default
+ Fixed bug where ability bonus options weren't actually being applied to factions in the customize faction screen, which manifested itself by clearing all the checkboxes when the race spinner was updated (because of a UI refresh) and obviously not getting any of the ability bonuses
+ Entries used for showing stationed units and subunits in main UI don't show number if the unit has only one troop
+ AI will now check that the items it is using to design unit types are supported by the model of that unit (no more female faces on men), and will make sure that a face is always chosen
+ Fixed bug where auto-upgrading your housing would cut your population level to whatever it was without any housing, because of capping it in the middle of the upgrade.  I've fixed it for now by making sure no UI updates are called that will try to get these values and force the capping to happen, but I don't think this will always work in case some construction code ever needs to just access a resource amount in the city during that in-between time, so I think I'll add something more robust tomorrow.
+ Changed OnConstructionComplete to be called on completed improvements after they've been added to the correct vectors in the city/player, so that when stats are set to dirty they can be accessed anytime and we know they'll be recalculated to the right value

+ City hubs are now taken into account when calculating battle bonuses for stationed units
+ Unstationing or removing multiple units from an army will leave whatever unit was last selected selected, instead of just selecting the first unit in the list

+ City Hub now offers bonuses to stationed units
+ Forge and Granary now have XML tags for improvement requirements
+ Mine and Apiary internal names changed for consistency
+ Town Hall adjusted to give +2 prestige points instead of a percentage
+ Crystal now uses new Icon

+ Fixed issue with quests that required you to escort a unit back to a city not completing (the quest condition tracker was attempting to get said units by calling CWorld::GetUnitByIndex( ) with the unit’s ID, when it should have been using CWorld::GetUnitByID( )).

* UI *

+ Race Logo appear on the Unit Context window for the currently selected unit

+ City Build List: you may now select non-buildable improvements so you can mouseover their stats easier even though you still can't build them.
+Reworked zoom to cursor to zoom in along the vector pointing to the area on the ground where the mouse is pointing, rather than gravitating toward nearby objects. The camera system will need a bit of a rework to make this a little smoother.

+ Recruited champions now correctly show up in the empire tree after a load.

+  Improvements that require previous improvements now have those requirements implemented.  Example: a forge cannot be built until you build an iron ore mine.

+ tweaks to edge scrolling
+ Selecting a unit from the stationed unit list in a city will show the information for that unit

+ Fixed bug where units under fog would occasionally pop in and fade out

* Restarting a Game*

+ Starting a new game from within a game will now "work". Still some issues to be tracked down.

   - Fixing an issue where game modifiers saved their parents, which could cause an issue with reference holding.
   - The game, when uninitializing itself, will now clean up tactical map graphics, and will now properly call ResetWorld on the world.
   - Added a DestroyWorld function to world that clears data when world is deconstructed (as opposted to simply reset).
   - The world will now delete and reinitialize the event center.
   - The world will now add its listener when it is reset.
   - Added an assert to see if a unit was leaking when the world released it.
   - The loop to create champ NPC units and place them on random tiles will no longer run infinitely, and will assert after 100 runs.

* Misc.*

+ Fixed crash caused by adding patchwork armlets and a shield to the same guy (both used the same attachment pt)

+ Fixed bug where using quickstart with your prefs/faction configs set such that you ended up playing one of the core factions, your units would have all white hair and skin

+ CClothIconManager now tracks which icon sets have had icons added/removed since the last update, removing the need for external code to keep track of “dirty” icons.

* Memory *

+ Restructured CClothIconManager to use std::maps for storing tiles, rather than pre-allocated 2D arrays, resulting in a dramatic reduction of the game’s memory footprint. Previously, the cloth icon manager was pre-allocating data for each tile in the map for every active icon type, regardless of whether or not there was actually an icon at that tile. On the Beta 1Z map, which is 128 by 96 tiles and has 47 different cloth icons on it on the start of turn 1, this system would consume nearly 150 megabytes of memory. By switching the cloth icon manager over to using std::maps and only allocating memory for icons that are currently on the map, we save enormous amounts of memory. If you clear the fog of war at the start of the first turn on the
  Beta 1Z map with this new system, it uses roughly 21 kilobytes to represent all the cloth icons on the map, giving us a reduction of Elemental’s memory footprint of nearly 150 megabytes. On larger maps with a greater number of different icons the memory savings will be even more dramatic.

* Balance *

+ Lots of tweaks to costs and benefits on buildings

* Known issues *

There are some pathfinding issues and mountains aren’t showing up in FOW early.

* Is this build ready for beta 2? *

Will have to play the beta version first. Our internal build is, as you can imagine, nothing like what is in the public beta.

* How will I know if it’s ready for beta 2? *

The goal of this build is stability. If it is stable and doesn’t run out of memory then it’s ready.  If it’s unstable (crashes) or runs out of memory on you then it’s not.

Beta 1 is not about game balance. If you’re enjoying beta 1 then we have failed as beta 1 should not be remotely fun (I’m seriously about this guys because if it starts feeling fun it will create unanticipated inertia towards certain game play elements that we may radically change for beta 3 – ask anyone who’s ever been in a beta before, people get really invested in bad game concepts that they get used to).

Stay tuned!

Elemental: Why it’s important to get it right

Published on Tuesday, April 13, 2010 By Brad Wardell In Elemental Dev Journals

LostLibrary First off, we want to thank the users who are publicly supporting us on our regular and intentional delays of the beta process. We appreciate your support.

This blog is mainly targeted at the users who are contacting us privately telling us quit “delaying” or how important it is for the game to be released in August or saying that we’re being too perfectionist.

Let me address those issues with a bit of understanding about Stardock and its motivations.

Stardock is a privately held company. A lot of people don’t understand the significance of that.  So let me walk you through the ramifications of that.

1. Stardock’s success is not determined by the “timely” release of Elemental. Our software is pre-loaded on millions of computers worldwide. Our enterprise group (that makes MyColors and Fences and Object Desktop) is very successful. So we don’t have financial pressure on us to release games early.

2. With the above in mind, the release of other games is not going to be a factor on when we release Elemental. Our goal is to make sure Elemental is a great game and release it only when we think it’s a great game.

3. No reasonable person is going to argue that Elemental is like “Duke Nuken Forever” because there is an open beta program where people can clearly see the game progressing. We are confident that our beta group agrees with us on the pacing we have for the beta.

4. I believe with certainty that most beta testers will agree with me when I say that Elemental is significant in demonstrating what a modern PC-only (i.e. non-portable) strategy game can do.  It is important for us that it be done right and that means taking our time to make sure every step is done correctly.

5. And don’t worry, even when we believe the game is ready for release, there will still be plenty of people arguing that we “rushed it”. So you can rest assured that there will never be unanimous agreement on when it’s “done”.

6. We are trying our best to be responsive to user requests. For instance, we let new beta testers into beta 1Z rather than making them wait until Beta 2.  I just want to reiterate again though that Elemental will NOT be remotely fun until Beta 3. Anyone who tells you the game is fun at this stage should probably seek out help. Elemental beta 1 and 2 are NOT fun. If I discover something fun in Beta 1 and 2 I will endeavor to make sure it’s removed so that people aren’t spending too much time playing the game.

Elemental: Advisors

Published on Tuesday, April 13, 2010 By Brad Wardell In Elemental Dev Journals

Galactic Civilizations II had advisors for the players. The players could query the advisors and it would give advice on what it thought they should do.

Unfortunately, I wrote the advisors in Galactic Civilizations II and my bias was always pretty anti-human so when I say players, I mean the computer players.  Humans did not have access to the advisors. It was always considered an unfortunate necessity that the computer players had to tolerate having humans in their game since humans were the ones who spending money to play it.

In Elemental, the advisors will be back and this time human players will be able to access them for help and advice.  The idea is that, especially early game and for new players, the advisors will offer a means to walk the player through the game.  I very much want to avoid putting in some sort of “tutorial” but rather have a system where players can learn the game by AI driven advisors.

Forum feature I recommend using

Published on Saturday, April 10, 2010 By Brad Wardell In Elemental Dev Journals

"Flattened forums" option now available.

The flattened forums option is simply another way of viewing the forums.  The layout and design won't change, but what posts you see will.  What it does is "flatten" all of the posts in a specific forum so that it includes the posts in all of its sub-forums.  For example, you can go to the Elemental forum and it will automatically show you the newest posts from any of its sub-forums. It makes it a lot quicker to view what’s going on.

This means that when you click on a forum now (with this option enabled), it will display many more posts than usual, and you can "dig deeper" into more specific topics by clicking on sub-forums.

You can turn this option on and try it for yourself by going to the My Account Options page.

Saturday build (1Z1) is available

Published on Saturday, April 10, 2010 By Brad Wardell In Elemental Dev Journals

image

The team got a Saturday build up. Kudos to Boogiebac and the team burning the midnight oil to squash some fairly basic stability issues.

Using my cheese tactics, I was able to beat the included map in 61 turns.

Before the end of beta 1, Elemental has to pass the following tests:

1. Is there a reasonable expectation of being able to play through a game without it crashing?

2. Are saved games reliable?

3. Can you load a game from within a game. [Fail in current build]

4. Are the game mechanics far enough along to allow 2 people to play each other? (the game mechanics are still very early but that isn’t the issue here as a lot of mechanics can’t be finished until beta 4 – the tactical battle beta).

If you’re in the beta, go ahead and try it out and let us know.  Refer to this as Beta 1Z1 in the beta forum.

We are leaving the beta open until the end of next week so that (for now) new users can join up and try it out. 

That said, it is still NOT what I would consider a fun experience. Not by a long shot. But for those who have survived (literally) since beta 1A can hopefully see progress. For me it’s still fairly torturous. Let us know what you think.

This next week, we expect to release beta 1Z2 which will have additional stability fixes, bug fixes, features, and hopefully nail down item 3.

One thing to be aware of: You must be on the Internet to start the game since it downloads our data files from the server (this is only during the beta and then only until the mod beta).

Also, in c:\programdata\stardock there is an Elemental directory. Crashes and such get zipped up automatically.

Beta 1Z News and Info!

Published on Saturday, April 10, 2010 By Brad Wardell In Elemental Dev Journals

Greetings!

Today we released beta 1Z.  There are a number of stability hicups that will need to addressed with an update this weekend but overall we’re pleased with the results so far.

However, it is our determination that beta 1Z is not sufficiently stable enough yet to proceed to beta 2. Sorry guys we just want to make sure we aren’t rushing anything.

What’s next

The remainder of Beta 1 will be about stability.  Making game mechanic changes and the process of turning it into something that doesn’t cause psychological damage due to the horrible game play experience won’t begin until Beta 2 when we get real people to play each other.

The criteria we will be using to determine whether we believe it's ready to go to beta 2 would be:

1. Reasonable stability. Defined as the typical beta tester able to complete a full game (win or lose).

2. Robust saved games. Defined as saved games being capable of perfectly reproducing the game state (key for debugging in beta 2).

3. The ability to run a new game from within a new game.

4. Basic game mechanics in place. Defined as meaning that two people playing each other multiplayer can effectively start and complete a game.

Beta 1Z fails items 1 and 3.  Item 2 seems acceptable. Item 4 is acceptable.

We will release a Beta 1Za in the next week or so. (BTW, long-time Stardock people can tell you that yes, we have had betas go up to beta 1ZK before).

The AI

Regarding the AI. There really isn't any AI yet (I haven't written any code yet).  The way the AI is developed is that I specify a series of APIs that the AI will need access to (example AIFindNearestEnemyUnit() ). Once there are enough of these worker functions implemented, I can start.  I don't expect to start coding the AI until Beta 3.

Game Mechanics that will be added post beta 1 but before beta 2

  1. Siege units.
  2. City walls.
  3. Laying siege to cities
  4. Caravans
  5. New road system
  6. City rationing (cutting a city off of the global resource pool via sieges)
  • Naval combat will not be added until beta probably beta 3.
  • Handling of different racial populations in cities is being looked at for the beta 3 phase.

If you have any questions, ask away. We’ll be around.