Brad Wardell's Blog


Fire and Death

Published on Saturday, July 24, 2010 By Brad Wardell In Elemental Dev Journals

 

imageGreetings!

I must say, this has been the best beta experience we’ve ever had.  I think one big reason for this is because Elemental is a brand new game. The sky has been the limit in ideas to try and retry.

Today marks the one month from release date.  We’re pretty excited about how things are coming together.  The changes in performance and stability have been pretty dramatic along with the sheer amount of game balancing and AI changes.

I do wish I had more time with the AI before 1.0.  But then again, even if I had another year on it, I would still wish I had more time for the AI.

Today we’re mainly focusing on bug fixing. Bugs in quests. Bugs in loading ships. Bugs in spells.

And I had to admit this but even I have bugs in my code…

image

More to come…

Watch this space…

Published on Thursday, July 22, 2010 By Brad Wardell In Elemental Dev Journals

Sorry we’ve not been posting as much. Things are moving so fast that it’s hard to keep up.

Some highlights of work this week:

  • Performance is MASSIVELY better.
  • Been doing a lot of focusing on stability.
  • Been tightening up the game mechanics considerably and taking into account the many discussions here.
  • Tactical battles are much better
  • AI is much better
  • A lot better filling out of the tech trees to balance things.
  • A lot of work on the quest system to have the quests and goodie huts be more rewarding

Things we’re still not happy with include but are not limited to:

  • The magic system. This deserves its own post so I won’t go into it. Elegance in a design document can be just work in a game.
  • The UI. We are going to update the UI but it’ll not be in the RTM version but will be in the v1.0 day 0 version. Right now, there’s just too many clicks.

I’ll post more as time permits. Stay tuned.

Game Mechanics: The Ultimate Balancing Act

Published on Wednesday, July 21, 2010 By Brad Wardell In Elemental Dev Journals

image

Loosely speaking, here are the 5 different technology paths and what you’re supposed to accomplish with them.  Our challenge is to make sure each of these 5 paths are meaningful on their own as well as can be mixed and match to create an endless combination of strategies.

During the betas, we have been turning on and off different trees in order to get a sense of how effective any given path is.

The purpose of this journal entry is to discuss with you guys things you think would be interesting in these 5 areas that have not been present in existing betas.  Some of these ideas will make it into the RTM version, others will make it into the release (day 0) version and some may make it into the future.

First, let’s recap the 4 victory conditions since ultimately all objectives lead to one of the 4 conditions:

  1. Conquest. You killed everyone.
  2. Spell of Making. You cast the spell to bring in a new Forge of the Overlord (you win).
  3. Quest of Mastery. You find and put back together the old Forge of the Overlord (you win).
  4. Diplomacy. You get everyone to ally with you.

Imperium/Civilization

The world has resources. And your territory expands as your influence grows to make use of these resources. This tree allows you to increase your utilization of these resources. The most important resource here is Gildar (gold).

Adventure

There were a lot of resources before everything blew up. More than that, there was a lot of really powerful stuff out there that’s now gone. The purpose of adventure is to give players access to increasingly powerful items and resources that will aid them in their pursuit of one of the 4 objectives. Also leads to the Master Quest. What you are looking to do here is to build a band of powerful champions armed with magical items you have collected.

Warfare/Conquest

Other factions have resources and stuff you want. Take it from them by building armies of increasingly lethal weaponry and defenses of your design. The most important resource here is metal. You need it. Others may have it. Might makes right.

Magic

Besides giving players access to the Spell of Making eventually, the spells you learn can help you achieve any of the 4 objectives when used right. The key resources here are Arcane Knowledge (how fast you learn new spells) and Essence (the maximum amount of mana your casters can hold).

Diplomacy

Sometimes you don’t have the stuff you want and you don’t want to have to conquer everyone. Diplomacy lets you do this.  Diplomatic Capital is the resource here. The more of you get get, the more people love you. Trade others to get more of it and they’ll like you even more or trade it away to get other resources or get others to attack each other so that they’re too busy to get after you.

 

So there you have the basic game mechanics of Elemental. And on the surface, it’s a pretty straight forward game.  Of course, actually accomplishing your goals in the game is another thing.  And over the course of the next several years, the depth beneath the surface here will increase.

An insider’s look at PC game publishing

Published on Wednesday, July 21, 2010 By Brad Wardell In Elemental Dev Journals

Greetings!

image 

With the mod beta coming up, we prepare to split our code tree into two.  One part will go one to become the RTM version (release to manufacturing version).

PC Game Publishing: Inside the Sausage Factory

For those of you who wonder how the game industry works, here’s a basic run down:

Publishers negotiate with retailers for shelf space. Each year, thousands of games are released and there’s only a small number of slots at retail available. If you’re a big publisher (i.e. Activision or EA for instance) you have considerable flexibility since retailers are very anxious to get the next major franchise sequel.

If you’re one of the last (virtually the very last) independent PC game publishers that handles their own retail, flexibility is diminished somewhat.  It’s the price we pay to make “niche games”. 

Despite what many would have you believe, 3 out of 4 PC game sales occur at retail  with the bulk occurring at just a handful of retailers (Walmart, Best Buy, Gamestop, etc.). The remaining 25% is via digital distribution (Steam, Impulse, D2D, etc.). 

Therefore, having your game available at retail is absolutely critical and getting your game on the shelf is a lot like preparing to get married.  You have to reserve the date quite a bit in advance because the retail buyers have to choose what games will be on shelves during a given quarter during the previous quarter.  June 30th being the end of last quarter means that this quarter’s titles are set. If you miss your spot after reserving it, it’s a big deal since there is now nothing to take that slot.

Now, in the old days, there was only one “gold” version of a game. This version was sent to manufacturing typically around 10 business days before store availability (they could turn the CD manufacturing around very fast and then assemble the boxes, manuals, etc. very quickly to get it shipped off to retailers 5 days later). 

However, nowadays, we refer to the RTM version and the release version. This sort of thing started a few years ago when digital updates became more common. This has had a significant benefit to gamers but it comes with some caveats as well.  The RTM version meant that the "first” gold date could be moved back which makes manufacturing vastly cheaper.  Of course, it means the RTM version is now 20 days before street date rather than 15 days. The net benefit for consumers is that games have continued to get cheaper when adjusting for inflation partially because manufacturing has gotten cheaper.  I think our boxes are made in Mexico, our CDs in Canada, etc. To be honest, I have no idea where all the various pieces are made but it’s all over the place now.

Now, the RTM version for Stardock has a bit more significance to us because our RTM version does not force the user to update on day 0. That’s because we don’t have any copy protection on our RTM version and don’t assume the player has an Internet connection. Of course, it also means that the RTM version has to be very solid which, during every crunch time results in some headaches.

Hence, one split of the code tree goes on to become the RTM (RTM v1.0) version and the other goes on to be Beta 4 and then eventually the v1.0 version that will be available to digital downloads and anyone who updates.  Obviously, an extra 20 business days can make a big difference and that’s why you should always update your game if you buy it at retail. It’s not just about bugs, often times, there’s just ideas that come up once the team gets “in the zone”.

So there you have it.  While the system isn’t perfect, it does generally deliver to the gamer a pretty good value on their purchase.

Cheers!

On to BETA 4!

Published on Tuesday, July 20, 2010 By Brad Wardell In Elemental Dev Journals

Greetings!

Yesterday we got Beta 3B out the door. We still have a lot of work to do on stability. At the start of Beta 3, we were running about 50 engineering hours ahead of schedule.  As we head into Beta 4, we’re approximately on schedule now (tactical battles have been more problematic than anticipated).

We’ve gotten a ton of data from the beta community both in terms of crash reports, general glitches, game suggestions, memory problems, etc.

As for me, I live in the AI.

image

I live in the land of temptation (see above screenshot).

When coding AI, things don’t look as pretty for me as they do for you guys. For me, basic mode is my mode (Beta 1 mode) since it lets me focus on just the core game.

image

Having magical spells adds a whole new dimension to AI coding. It’s a real challenge to know when the right time to cast a spell is.  So that’s what I’ve been working on today.

Meanwhile…

The tactical team has been working on some of the cheese that slipped through (bows and spells being over-powered).  I had one of my AI players train archers and it quickly walked over all the other AI players without a problem which demonstrated a real problem with how bows and spells were working. The beta community confirmed the problem as well and so that was something that got zapped today.

UI UI UI

We’re not happy with the UI in general. Luckily, it’s fairly trivial for us to make changes. So expect to see some changes in this area before release.

Tech Tree balancing

There’s going to be quite a few new technologies in the Adventure, Magic, and Diplomacy technology trees.  We want to make these areas more exciting and have a more definitive impact on the game (or specifically a FUN impact on a given game).

Anyway, that’s all for tonight. Back to the AI.

Elemental BETA 3-C

Published on Monday, July 19, 2010 By Brad Wardell In Elemental Dev Journals

image Greetings!

We have a Monday update for Elemental beta testers.

This will be the last beta prior to Beta 4 which is the modding beta.

Here’s what’s new:

************

* Gameplay *

+ Settlements have a Maintenance cost. 0 for the first, 1 for the second, 2 for the third, and on.

+ Significant strategic AI changes

+ We no longer require technology pre-reqs to builds on resources (if you find one, it’s a bug and you should let us know)

+ Attacking a city now automatically brings up a tactical battle, as long as either the attacker or defender.

- New system for determining the cost of a tactical action.

- Tactical moves should take 2 actions, everything else should take 1.

+ Units in tactical battles now counter attack when attacked with melee attacks. Countering costs action points. See next point;

+ Units in tactical battles now have their action points refunded every time initiative switches, AKA when mode switches from attacker to defender turn, or from defender to attacker turn.

+ Units in tactical battles can no longer move after attacking, (this effectively separates each unit’s move phase into moving and then attacking, or just attacking).  Casting spells is unaffected, you may always cast spells.

+ Groups of units now have their hitpoints, attack strength and defense properly increased.

- added code so that when applying a modifier with attribute "AdjustUnitStat", and that stat is Essence, if the target unit has no  essence to begin with, then not only will they be given the essence, they will also have their mana refilled.  This is so when you imbue a champion with essence, they become a spellcaster, but for example end up with 0 mana out of 5 otherwise.  If we decide my code of filling up their mana in this scenario is too much, then it's easily taken out.

+ Added message boxes for when a caravan tries to start trade with a city that it is at war with, tries to start trade with a city their home city is already trading with, and when they try to enter their home city

+ Also prevents movement in these cases, the last two would leave the caravan sitting dumbly on top of the city it failed to make a trade route with

+ Changed GetCitiesWeTradeWith to return the cities we have trade routes with, instead of just ones that the world checks are connected passively by roads

+ Added IsTradeCity

+ GetHarvestMultiplierFromTradeRoute checks for the trading cities being under siege or at war before returning the multiplier, fixes bug where warring or sieged cities were still getting food trade bonuses

+ Also added a 10% bonus to the new "crappy road" level that was added after this function was first written, so it didn't have a bonus before

+ Your sovereign can now found a kingdom, even if they already have done so once, if they have no cities and no pioneers, to combat early-game issue of if your first city is attacked before you can train a pioneer, not being able to have any cities

+ Added support for blunt weapon type

+ Added support for Blunt and BluntTwo animation types for BattleIdle, Attack, AttackKill, OnHit, and Dodge

+ Added< AlwaysInTileCenter> tag for unit types

+ This will prevent the unit from moving in tile during attack animations

+ Used by dragon units and larger creatures that don't need to move

+ Changed requirements for UNIT_ACTION_FOUNDKINGDOM in IsActionAvailableToUnit, are now allowed to found a kingdom even if you already have if you have no cities or pioneers

+ Hooked up, sized, and positioned a lot of the new spell particle effects.

+ New music playing while at war with a major faction

+ Allows setting of the ChooseFactionWnd background based on the faction

+ Allows for setting of the background image in XML files

+ Added storage for the Choose Faction Background

+ Added changing the music to the "At War" music when your AtWarWithAnyMajorfaction status changes

+ Removed favorites system from the spellbook wnd, and removed the spell tab from the unit context

+ The cast spell button in the spellbook wnd is now easier to hit, and when moused-over if disabled, will explain why a unit can't cast the selected spell

+ Added strings for tooltips explaining why a spell can't be cast from the spellbook

+ Disabled the spells tab in UpdateUnitTabs

+ Removed per-pixel hit detection on the cast spell button, makes it much easier to press and get the tooltip to appear on now

+ Hid the favorites button under all circumstances

+ Cast spell button is now hidden if the spellbook is accessed from the kingdom screen (no spellcaster selected)

+ Cast spell button now has a tooltip explaining why a selected spell can't be cast (including that the spell isn't known yet, that it is a tactical spell on the main map, as well as the other reasons CUnit::CanCastSpell would fail)

+ Added a reason case to CanCastSpell to explain if a spell can't be cast because it can only be cast once and has already been cast, instead of saying "498237492 cooldown turns left"

- Added a quick way to put spell casts in tactical battle reports. Will need to spruce this up and make it driven by the string file later in the week.

+ Added a "Trade Routes" section to the city details lorebook, lists the cities a city has trade routes with, if they have a caravan making runs on that trade route, what the food bonus from the route is, and if it is currently suspended because of siege or war

+ Removed some hardcoded strings in message boxes I found

+ Added ability to specify a tile to move the camera to when a message box wnd is unhidden in CMessageBoxData

+ Added strings for new caravan message boxes and city info

+ Moved some hardcoded strings I found into here, too

+ Made city context tooltips use signed integers, so that when e.g. prestige goes into the negatives when under rationing, it doesn't show up as a huge number

+ Added UnhideAIMessageBoxWnd_RejectedCaravanWar, UnhideMessageBoxWnd_CaravanExistingRoute, and UnhideMessageBoxWnd_CaravanIsAtHome

+ Removed hardcoded strings I found

+ Fixed formatting issues in CityLevelUpBonuses.xml and CoreSpecialWeapons.xml

+ Changes to SpellBookWnd.cpp

+ Added Cast Spell Button (replaced entry)

+ Added favorites button (replaced entry)

+ Updated SpellBookWnd.dxpack

+ Fixed tactical battle spell list excluding all spells but those marked as favorites

+ Also, because all known tactical spells are shown in the spell context, favorites button gets hidden when a tactical spell is selected in the spellbook, since favoriting doesn't mean anything

+ Fixed weird highlight behavior when favoriting a spell in the spellbook wnd, where you'd have to click on the current spell again to see whether it was a favorite or not after changing it

+ Fixed cast spell button being available even for spells the player didn't learn yet, once a castable spell was selected

+ Modified the Popup Dialog, PlayCutscene, OpenCampaignBook and SimpleConversation game trigger results to have the option of requiring a particular unit be alive or dead when they’re triggered, or they won’t show up. This allows us to display different things depending on whether a certain NPC is alive or dead at a given point. To specify the unit’s type name, use the “ReqUnitTypeName” XML tag. To specify that the unit must be alive (which is the default), use the “ReqUnitAlive” tag, and set it to 1. To set that the unit must be dead, set it to 0.

+ In UpdatecontextAreaFromSelection, favorites button is hidden when a tactical spell is selected

+ Also in UpdatecontextAreaFromSelection, cast spell button is disabled by default, unless a unit is selected and that unit knows the spell

+ Added additional context area refresh at the end of ButtonClicked when the favorites button is clicked, seems to fix weird highlight behavior when clicking that button

+ Added a message box that pops up when a game modifier unlocks a spellbook for the local player, so that there is some feedback that the player got a spellbook from the goodie hut besides the treasure def message

+ Also found only one goodie hut that was unlocking a spellbook, a tomb in Moriah's Tomb quest, and it had an invalid spellbook specified, so I changed it to match Moriah's spellbook's internal name

+ Added support for using the AI message box as a yes/no dialog, and changed the found kingdom dialog to use this bigger message box instead

*************

* Bug Fixes *

+ Fixed a bug that would cause some counter attacks to fail in tactical battles.

+ Fixed an issue that was causing the graphic of a unit attacking and tacking over a city after a tactical battle to remain  visible on the main map. This would occur when the local player was the attacker, and they had other unmoved units off-screen.

+ After the attacking unit would take the city, the camera would move to the next unit before the attacking unit had the chance  to be hidden, causing it to remain on the map until the garrisoned unit was moved from the city.

- Players should no longer be able to move onto mountains in tactical battles.

+  Lots of sanity checks in various places to prevent crashers

+ Fixed a bug where the tactical battle AI wasn’t picking new units to target if their old target unit had escaped.

- Small fix to the auto resolve logic for quick battles to be sure the function returns normally.

- in GetResourceProductionPerTurn(), added some else if's instead of having them all be if statements.  Will save some string comparisons if the matching string is found early in the set of if-statements.

+ Fixed bug where cities were silently getting food bonuses from trade routes, even if the cities connected by the route were under siege or at war

+ Fixed bug where caravans wouldn't actually teleport through non-hostile cities while on a trade route, instead stepping through each tile of the city one at a time

+ Fixed "attracting 43238498019283 citizens" prestige tooltip when a city is under rationing, now says that the city is losing citizens

+ Fixed a bug where Empires could sometimes build resource hoards without the necessary tech.

+ When placing sovereigns for the first time, the game will now remove anything that is on the sovereign's starting tile.

+ Fixed sporadic crash on load by adding critical sections around info card background stuff, and having unit types wait until after xml loading is done before trying to find the info card background info from the name read in from xml, so that they don't search while the list of info card backgrounds is still being created

+ Fixed bug where BattleIdleBluntTwo animation type was interpreted to be BattleIdleBlunt animation

+ Fixed crash when applying items that had models that attach to a local frame on the character that is already in use by another item (ie, the Master Full Plate Armor)

+ Fixed bug where units had the wrong number of moves when removed from an army

+ Commented out code to toggle city improvements on/off in cloth map mode

+ Fixed bug where shadow decals would scale on zoom when scale on zoom option was off

- in ClearData(), moved GarbageCollection call above destruction of sector mapper.  Was causing crashes otherwise in game-within-a-game

- fixed bug where you could double-click an entry in the load game wnd and it would click through to the title screen, putting you in a state of NEW game, and Load game, which will always lead to a hanged game save.

- added a critical section to a place where it was looping through players.

+ FillWithUnitSpells uses regular grab of all known spell defs if showing tactical spells, fixes issue where tactical spells had to be made favorites to show up in the spell list

+ Moved trying to find and set the info card background for a unit type to OnEndLoadData from AddStat, fixes unit types trying to find their backgrounds before they'd all been loaded in

-----------------

Known bugs:

- We still have a random crash bug caused by the road geometry. We’re “this close” to getting it but the unfortunate reality is, roads are going to cause random crashes (even if you start out on a map that has roads already).

- If we solve the above, we may release an update because it’s responsible for 90% of the random crashes.

- There are some seed maps that have hard coded monsters still floating around. We’re getting rid of these but your version still has them on occasion.

- We are close to fixing the problem with certain nVidia cards where the graphics are blurry or goofed up (affects a small number of ATI cards as well). Zee drivers, they lie!

Other issues we are ware of and working on:

- The technology trees haven’t been balanced yet

- The relations between factions is still fairly primitive

- There are still a lot of reported issues from beta 3B in this build since Beta 3C is merely what we were able to do over the weekend

What we are looking for from the Beta community:

  1. Feedback on Quests. Too hard? Too easy? Didn’t work right?
  2. Feedback on balance.
  3. Crash reports (FOLLOW THE DIRECTIONS FOUND HERE: https://forums.elementalgame.com/364285)
  4. General discussion on what would make the game more fun for you. We love hearing your ideas. Some may make it into 1.0. Some may make it into 1.01 (day 0), some may make it into 1.1, and some may require an expansion pack (and still some we just won’t be able to use of course).
  5. Request to the beta community: The team is working pretty long hours right now, your support and kind words make a big morale booster to the team. Please keep suggestions and criticism constructive).

 

The beta should be up within the next hour.

Tactical Battle Evolution

Published on Saturday, July 17, 2010 By Brad Wardell In War of Magic

Beta 3B introduces the skeleton of tactical battles.

Here's the basic concept on how they're supposed to work:

Your Combat Speed is translated into action points. We do NOT use your Moves per turn stat (that's supposed to represent endurance and it's not subject to change).

The current system is, however, far too basic of course.  In this thread, we will discuss which aspects of MOM, HOMM, AOW, as well as new concepts you guys would like to see.

Below is the system we intend to implement and we look forward to your thoughts on this:

  1. When a unit attacks another unit, that units gets to retaliate (if it can) against the unit that attacked it.
  2. Action Points = 1 + Your Combat Speed.
  3. Moving a tile uses 2 action points.
  4. Attacking and casting a spell uses 1 action point.
  5. The placement of units on a map will be based on the the composition on the units going into the battle.
  6. Units will have various special abilities (that's why the action tab looks so blank right now).

These 6 things are what we consider the "basic" for day 0.

Obviously, right now, none of these 6 things are in. I am hoping to get a Beta 3C up on Monday that has them though.

On top of these 6 items there is what we consider "required" for v 1.1 (60 days or so after release):

  • More distinction in the action point cost
  • More finesse with regards to the counter attack (in v1.0, we don't plan the counter attack to absorb any action points from the next turn but this is something we want to explore so that ganging up on tough units is more viable).
  • A lot LOT LOT LOT more buffs/debuffs

In the long-term, we plan to keep evolving tactical battles based on feedback. It's not something we're going to push out there on day 0 and call it a day. But I also think it would be naive to think that by day 0 or day 120 that tactical battles will be the end all be all because there is just so much one can do with this area and it's not something that should ever be considered "finished".

Elemental – Beta 3B Changelog

Published on Saturday, July 17, 2010 By Brad Wardell In Elemental Dev Journals

It has been one week since the last public build.

Here’s what’s new:

---------------------------------------------------
----------------- Beta 3B Change Log  -------------
---------------------------------------------------
********************
* Tactical Battles *
Overview: Can now enter tactical battles if the unit threshold is within a certain number (defaults to 4). Battles are turn based, you can cast spells, traverse the battlefield, or even run away if you just don’t feel like fighting that turn.
+ Halved the texture tile rate in tactical battles to make the texture repeating less obvious.
+ Implemented the final bit of functionality for the tactical combat system: terrain prop-based bonuses and penalties.
+ Cleaned up some more malformed XML in CoreSpells.xml
+ All damage combat text in tactical battles rounds up to the nearest integer.
+ Turns don’t automatically progress in tactical battles if an animation is still playing on one of the participants.
+ Fixed an issue where selecting units on the tactical map via the unit cards would cause the highlight graphic to malfunction.
+ Fixed an issue with spell targeting in tactical battles that was disallowing spells with a radius from hitting targets that weren’t at the center of the burst.
+ Tactical battles no longer end until all units are done animating.
+ When detaching cast spell effects from tactical units, it looks for tactical units to target rather than regular units
+ The next allied unit with moves left is selected when the selected unit runs out of moves in tactical battles.
+ Units play their battle idle instead of their regular idle in tactical battles.
+ Attack animations now scale by combat speed in quick and tactical battles.
+ The Battle Resolution window now appears if after battles in cloth map mode.
+ Added a new tag to SpellDefEffect called PlayOnAllTargets.  This will play the spell effect on all targets hit by the spell (for spells with a radius).
+ Fixed the unit cards in tactical battles so they now grow vertically instead of horizontally.
+ Removed a duplicate effect from the chain lightning spell, flagged the spell to cast on all targets.
+ Made sure spell defs could read in the flag for casting on all targets.
+ Added a process to handle applying tactical spell modifiers, as well as firing off spell effects and sound effects for spells.
+ Slight fixes to the ApplyModifiersAtTile logic to return a more accurate list of affected tiles.
+ Changed several constructors for CSpellTarget to be sure to initialize all values.
+ Morale is now initialized to BASE_MORALE instead of 0 to stop the first turn of tactical battles from showing all units as panicking.
+ Tactical spell modifiers will now be applied at the attach annotation for non-projectiles, and at the detach notation (and after the projectile process has ended) for projectile spells.
+ Fixed a validation error which allowed units to move outside of their range in tactical battles.
+ Added color defines (at the top of TacticalUnit.h) for all combat text colors.
+ Added differentiation to combat text for spell damage, spell healing, ranged damage, and spell effects (positive and negative).
+ Tile highlight should now update properly once a spell is done casting.
+ Units will now play an OnHit animation when hit with spells in tactical battles.
+ Added an IsCastingSpell bit of logic to tactical units to help see if any unit is currently casting a spell in a tactical battle.
+ Fixed some odd cases when a highlight would be drawn while a unit was casting a spell in tactical battles.
+ Fixed some odd cases when a highlight would not redraw after casting a spell in tactical battles.
+ Fixed a bug where old units were still "selected" at the start of tactical battles.
+ Fixed a bug where not all units were properly added to the battle results window after a tactical battle.
+ Disabled LOD levels in the tactical screen
+ The grid is now always on in tactical battles.
+ Stopped tactical units from calling their idle animation if their currently being hit.
+ Cleaned up logic in OnModifierBegin and OnModifierEnd to make things more deterministic.
+ Fixed an issue where the unit cards in tactical battles could resize beyond the current display height.
+ Fixed the camera bounds during tactical battles to be more accurate to the sector width/height.
+ Added support for TacticalUnit modifiers, for spells that need to effect the tactical unit and not its parent unit. Stuff like knockbacks, stuns, morale stuff, etc.
+ Refactored the logic to add to the tactical battle report, now requires a call by the tactical unit (or someone who "knows" the tactical unit) when something changes in that units local report.
+ Added a timeout test process to use with spells casting application for instances when it appears modifiers are never being applied. Not currently used, as it might cause weird behavior when not used for testing.
+ Added code to apply spells modifiers when a spell annotation never gets properly attached.
+ Units in a tactical battle should no longer be able to move onto invalid tiles (mountains, water, blocked tiles, etc).
+ Added a function to world to check if a tile was invalid, currently only has logic for tactical battles.
+ When tactical units are destroyed they now set their sector mappers to be NULL.
+ The check to see if units are animating or moving in tactical battles now takes spell effects into account.
************
* Gameplay *
+ Arcane Lab should now be buildable from start of game (ie. don't need a tech for it)
+ Changed cities to allow building diagonally to existing improvements.
+ Resourceful talent changed to provide 10 metal, 10 materials
+ More monsters will be present in the wild
+ Settlements no longer require a special building to train units
+ Pioneer Kits add 5 turns to the training of units that have them.
+ Replaced "Spell Points" with "Arcane Knowledge" in game
+ Removed a number of improvements, added to "Extra Improvements" for future use.
+ Major overhaul of the improvements both in terms of balance and what they do
+ Resources now only provide bonuses to the entire faction (i.e. Quarries improve overall production)
+ Resources no longer have to be connected to a settlement
+ Pioneer improvements (improvements outside of a city) now update which player they belong to at the end of each turn, as well as link to a city if one is close enough
+ If a pioneer improvement moves from being in the ZOC of one player to another's, they move to that player's list of pioneer improvements instead
+ If a pioneer improvement isn't in anyone's ZOC, it gets destroyed
+ Also finds the closest city belonging to the player whose ZOC they are in, and links to them (gets affected by their multipliers) if it is within the min distance that must be between cities
+ Starting essence for a new sovereign = wisdom
+ Can associate a city with a pioneer improvement (improvement built outside of a city), and when querying that pioneer improvement's resource production, it will take the harvest multiplier from the associated city and apply it to its regular harvest
+ Nothing is associating cities with pioneer improvements yet, though, this is just an intermediate check-in
+  Added the ability to build improvements by clicking on a resource hoard within your territory.
+ Minor races get their special monster friends again
+ Added Ancient Temple to Core Resources
+ General overhaul of improvements and resources. Resources provide (duh) resources. Improvements provide (duh) improvements to those resource rather than vice versa.
+ Created tiles for lost library and ancient temple
+ General tweaking of seeding of the world with resources.
+ Now only champions and sovereigns can access quest locations and goodie huts; if a non-champion unit attempts to access one, a message box will pop-up explaining this.
+ Dragons added to quests
+ Tactical battle maps smaller
+ Cleaned up quest locations
+ Cleaned up starting resources
+ Level 4 Quest added
+ intelligent creatures now have names
+ Made sure that all players start out with a quest location relatively near their starting position
+ World size defaults to small, not tiny
+ Decreased the chance of having a kid each turn to 1 in 250
+ Caravans can now set up trade routes with foreign cities that they aren't at war with
+ Removed food bonus from city bonus xml, so that it isn't offered as a level bonus anymore
+ Sovereign more aggressive at goodie hut finding
+ AI now makes use of external resources
+ Bandits: Brigands and other thugs are now spawned into the world (this will eventually be event driven so that different games have different environmental bad guys)
+ Bandits: Interacts with player
+ Bandits: Will target for destruction undefended cities eventually.
+ The technology breakthru window doesn't default to continuing down the same path anymore
+ First attempt to get the events to play tones in
+ Made changs to CanOwnCity() such that Monsters can destroy cities
+ Treasures can now have their own distinct sounds when found
+ Rewrote ::FindRandomGoodieHutTypeByTerrain() to have it take into account how rare the goodie hut is and make sure it is following the world spawn rating rules.
+ Hooked up Influence Ability. Every 100 points of Influence will increase the max radius of a player's zone of control by a full tile. By very careful with this.
+ MessageBoxWnd no longer hard coded to that treasure found sound.
+ Message Window can now play sounds when brought up.
+ Lots of changews to MobileObject.cpp to allow monsters to be monsters. BETA TESTERS: Be on the look out for stuck turns.
+ CPlayer::SetABility() added (seriously, we didn't have this)!
+ Beginnings of the AI designing units for the human player put in.
- AI will try to design a unit every time they go up a level on the warfare/combat tree. If it is better than any existing unit the player can build, it will add it to their list. In theory.
+ By default, spawn ratings on quests are now -1
+ Fixed bug where quests were hard coded to 1.
+ Events should be playing sounds
+ If a monster manages to "conquer" a city it will destroy it (they're monsters afterall)
+ Changed the way Goodie Hut spawns work such that the higher level goodie huts will mainly spawn around the player who triggered the spawn rather than spamming it randomly around the map.  In addition, players who do go up a goodie hut level will still be able to get some goodie huts placed near them.
+ First balance attempt to try to make the monster upgrading not go up so fast
+ Updated CWorld:laceRandomGoodieHuts() so that we can now optionally specify a player we want them to be spawned near
+ Tactical Maps for all terrain types created (13 new maps)
+ Fixed Core Accessories to work with new tech trees
+ Sound effects added to many treasures found in goodie huts
+ Lots of new items added (sick of healing nectar)
+ Sand Golem nerfed
+ Wild Game now extremely rare (will have to have it spawn only near hunters in the future)
+ Gave bandidts and other humanoid monsters intelligence of 10.
+ Started crated "gang" monster groups
+ Players now start out knowing certain spells. In addition, each spell book now has some spells that a caster knows by having that spell book.
+ Veteran troops can now be trained by Amarians
+ The default Pioneer is now unarmed (and cheaper)
+ Brought some of the Imperial improvement costs in line with the Kingdom equivalents
+ TONS of new Quest items to get
+ Started adding template quests that are easily modded to create other quests
+ Lots of new quest destinations
+ THE MASTER QUEST IS IN!
+ Dave Stern's writing in the Master Quest
+ NEW TECHNOLOGY TREE: TechTree_Amarian
+ All Kingdom factions temporarily are using the Amarian Tech Tree
+ Tech Trees for Kraxis and Trogs started (but not used)
+ Settlement tile limits removed. No more artificial limits.
+ Fixed Ancient Temple (for Kingdom and Empire)
+ Fixed Old Growth Forest (for Kingdom)
+ Various tweaks to monster goodie huts
*******************
* AI Improvements *
+ AI designs better weapons and armor based units
+ AI now differentiates equipment based on what part of the body it is worn
+ AI smarter about starting new cities
+ Intelligent creatures, monsters, thugs, etc. will occasionally interact with the player
+ AI's now explicitly can support turn 0 so that they can get their strategy started
+ Fixed some memory leaks in the AI MoveUnit area
+ AI designs better units
+ AI Difficulty levels hooked up
******
* UI *
+ Buttons for popping units out of cities that now work much better.
+ Fixed bug where city HUD graphics were not rendering properly after loading a saved game
+ Players always will be brought back to main research screen after a breakthru
+ Fixed bug where razing a city wouldn't remove it from the local player's empire tree
+ Fixed bug where razing a capital city wouldn't recalculate a new capital for the player
+ Adapted CAIMessageWnd to be able to display generic messages like CMessageBoxWnd. This can be called using the UnhideAIMessageGenericWnd( ) function, which takes only the title, text and image to be displayed in the message.
+ When you get a pop-up message saying that you cannot yet access a quest or goodie hut due to your quest/goodie hut level being too low, it now tells you what your current level is, the required level, and what branch of research you need to focus on to increase your level (Adventure for Kingdom factions, Domination for Empire factions). It also uses the generic version of CAIMessageWnd to display the message, as it was getting a bit lengthy for CMessageBoxWnd.
+ Updated the Notable Location and Quest Location info cards to display their level and yours
+ Added the ability to launch the hiergamenon page for an object by holding shift and left clicking on the item
+ Updated/created some hiergamenon entry pages
+ Fixed a crash in the empire tree when an AI player got one of the local player's city (though conquest or a cheat)
+ Fixed typo in the map list that caused a chance of a map to be generated completely randomly without a seed
+ Removed likelihood data on tech screens if it was 100%
+ Added new data to the Unit page in the hiergamenon
+ Changed "Quest Inaccessible" to "Quest Unavailable"
+ Changed "Notable Location Inaccessible" to "Notable Location Unavailable"
+ TWEAK: when a unit is selected, now displaying moves tooltip as cur/max instead of just cur.
+  Tooltips on resource hoards now tell you why you can or cannot build on them and how many resources it costs if you do.
+ No "Station unit" dialog comes up when hitting a foreign city you aren't at war with, just blocks your units now
+ Found kingdom dialog includes info about using pioneers to build more cities, don't have a bigger dialog with yes/no hooked up, yet
+ Eliminated the spell tab from the unit context wnd, trigger to hide/unhide this tab now just hides/unhides the spellbook shortcut in the unit actions list
+ New buttons on the Main Game Window to help launch the hiergamenon and equipment pages
+ Revamped the equipment page to eliminate tabs and unnecessary text (hiergamenon is better for that info)
+ Some hiergamenon changes for the unit page
+ Notable locations and Quest locations now display their battle rank in their context area
+ New improvement text in the hiergamenon
+ Minor cleanup to some list entry types
*************
* Bug Fixes *
+ Fixed an issue with flavor text saving that would occur if you saved the game before any flavor text was used (there would be unsorted conversation flavor text, which wouldn’t get saved). Now all unsorted flavor text is sorted before saving.
+ Fixed a problem with loading tile trigger data from a saved game in CTriggerManager, which was causing each subsequent tile to receive the trigger data from all previous tiles.
+ Fixed bug where if unit casts spell or attacks a unit, and you zoom out to cloth map, then back in, unit would get stuck playing an animation
+ Fixed UpdateMWinNode crash
+ Fixed the function used by caravans to set up their trade route to use the same astar stuff as mobile game objects use; they were using slightly different flags, and as a result failing their pathfinding more often than they should have been
+ Added new animation for casting spells (new export fixes missing annotations)
+ Fixed a problem with CQuestLocation not saving the name of the quest assigned to it when the game is saved. After loading a saved game and attempting to access a quest location, this was causing CQuestManager to go through every available quest location quest in an attempt to find one the player could accept. If it randomly hit on one with a spawn rating above the player’s quest level, it would pop up the “Quest Unavailable” message. If it happened to hit more than one of these quests, it would pop up the message once for each one.
+ Added some sanity checks to the UpdateFOWTexture( ) method in CFogOfWarMap in an attempt to alleviate possible crashes.
+ Fixed "Ruined House" tile design not showing up on map
+ BUG FIX: after building a city, it was giving you 1 back to moves, instead of 1*MOVE_SCALE, to convert it to movement points.  This fixes the issue where you'd see your moves as 1.1 instead of 2, for example, when starting the game as procipinee, who builds a city upon game start as her ability.
+  Fixed a bug where city improvements could be built over global improvements of the same type.
+ Fixed bug where one of the ambient tracts wasn't playing (BarrenForest)
+ running sfx fixed (UnitAnimationhelper now has a play3dsound wrapper)
+ Fixed hang when a summoned unit died, and its caster already had some other spell effects on them
+ fixed upgraded units not clearing their starting unit status, causing them to not be available for designing or training after being saved
+ fixed being unable to build any different unit grouping types than individual in the train unit screen as an empire faction
+ Fixed a crash when equipping any new forearm equipment on either Kul-Al-Kulan or Warlord Verga
+ Fixed unit grouping types and unit quality types that didn't have updated prerequisites to point to the new Amarian tech tree instead of the kingdom tech tree, caused all of the kingdom factions to not be able to train different grouping or quality types
+ Fixed bug where armies couldn't get on a ship all a once
+ added some missing animations for mounted units, so that horses don't T-pose in the level up wnd and conversation wnds, and wargs don't T-pose in the conversation wnds
+ Cleaned up some found kingdom/build town stuff
+ Fixed bug where using a pioneer leading an army to found a city would cause the left over units to not all move off the city, not form an army, and be invisible
- This should also fix any other cases where the leader of an army is destroyed on the main map with surviving subunits left behind
+ If the unit moves off of the tile they are building a town on before it is completed, the town is still built where they first asked it to be, and they won't have to move off the tile
+ Fixed potential problems I saw with the pioneer build town stuff working in multiplayer
+ Removed building prereqs from Granary, so that one can be built in a city just linking to a pioneer improvement producing food and it can still provide a bonus
+ Fixed bug where diplomacy didn't work at all with minor factions, since they had no diplomacy logic and so just said no to everything
+ Fixed bug where pioneer improvements not linked to a city weren't getting faction-wide resource production bonuses
+ ModifyGfx isn't called on each subunit of an army when the army moves anymore, fixes some bugs when trying to remove them from an army later caused by them already having tried to fade in, and doesn't waste time on it anymore
**********
* Engine *
+ added some code to easily get at the coreAIDefs.xml information for designing units
+ Increased the number of generated starting points from 10 to 32, which should help with starting location issues when a large number of players (including minor factions) are on the map at once.
+ Made some changes to the creature spawning code in CMapData and CTriggerManager that may have caused creatures with undefined spawn ratings (such as dragons) to show up on the map.
+ Changed to use a task so that the mwin data does not change between the time it is set and the time it is rendered
+ When recruiting NPCs they return to Idle animation rather than battle idle
+ Added list of additional unit IDs to CEventData_LeaveArmySetDestination, used when removing multiple units at once from an army to remove them all at once, put them in an army, and send them on their way instead of using separate events for each, and not putting them in the same army unless they were moving to an adjacent tile
+ Disallowed going into attack mode with a selected subunit of an army, can only tell an entire army to go into attack mode now.  This is per skype conversations about weird behavior of subunits leaving armies when being told to attack separately from their army
+ Fixed a bug where every tile design created and loaded in the tile design editor would get its particle effects duplicated on each load (which would then be reflected in the next save of that tile design), caused by two xml loading threads loading the same tile design directories
+ Added "H" as a hot key in the tile editor to toggle the selected object between fitting to the terrain or not
+ Made the particle entries in the tile editor use entries with text in them, so that they don't require reading the tooltip to see what they are
+ Fixed bug where particle effects wouldn't get cleared from the tile design when it was asked to clear itself
+ Fixed graphical artifacts showing up in non-advanced lighting mode
+ Changed the “City” terrain type’s min and max height to 50, so there will be no height variation between city tiles.
+ When a new city hub or improvement is placed on the map, and the terrain type of the tile it’s in is changed to “City”, the tile vertex heights are now recalculated. With the min and max height for City terrain set to the same value, this causes cities to flatten the terrain under them. Whenever a new tile is set to “City” by placing an improvement, it causes the improvement graphics for the entire city to update, to ensure that the tile designs and decals are using the correct heights.
+ When a tile with a world prop is updated (as happens when the tile vertex heights change), the world prop’s graphics are now recreated, so that the tile design heights stay lined up with the terrain.
+ Added support for map modifiers with a finite duration, to support the Wall of Fire spell (and possibly other spells)
- To make a map modifier have a set duration, give it a non-zero duration tag, and it will expire after that many turns
+ Can now specify the display name for goodie huts created using the CreateGoodieHut game modifier; simply set the desired display name inside the “StrVal” tags, and it will replace the default display name for the goodie hut.
+ Units only set their animation to idle when cancelling destination only if they were previously walking or running
+ Cleaned up more code in UnitAnimationHelper library
+ Modified CEncounterDef so that it can be flagged to force a tactical battle to start when the encounter is activated as part
of a quest. This flag can be set in XML using the “ForceTacticalBattle” tag, and setting it to 1 (the value defaults to 0, which does not force a tactical battle). When true and the encounter is activated, it immediately enters into a tactical battle. Additionally, the tactical battle map that gets used may be specified using the “TacticalBattleMap” tag. If no map is specified, it will select one based on the world location of the attacking and defending units. If one is specified, it will use that map instead.
+ Added an overloaded version of UITacticalBattle( ) that takes in the name of a map in addition to the attacking and defending units, which will be loaded instead of randomly selecting one based on the tile positions of the attacker and defender.
+ Added a new method to CWorld, GenerateTacticalMap( ), which takes in the name of the map you want to load, and generates a tactical battle from it.
+ Disabled move within tile on main map and tactical map
+ New music and sfx (evil music, item shop music, etc)
+ Cutscene window now supports Music Cues: plays on for marrage and 'slain hero' events
+ The Conversation Popup wnd will play the speaking factions theme if they are a Major faction
+ <NotInSetupLists> now supported by unittypes and factionconfigs for ones we want to keep hidden in the setup windows
+ Changed the default value for ForceTacticalBattle in CEncounterDef to 1, so that forcing tactical battles is the default, and must be explicitly disabled.
+ UNIT SCALING TWEAKS
- Disabled Scale on Zoom in Tactical Battles
- Commented out the "scale bound box to tile" code
- Added <MaxScaleMainMap> and <MaxScaleTacticalMap> fields to <UnitType> XML data
- This clips the scale of the unit to the specified max scale
- Allows artists to choose the max scale of certain units

Screenshots:

image

image

image

image

 

image

 

image

image

-----------------------------

Tomorrow we’ll be putting up a list of what we’re looking for from the beta group.  There’s still quite a bit to do here, I noticed, for instance, that Imperials can’t train their teams and raids and such (typo in XML) but hopefully beta testers will see a significant improvement from Beta 3A in terms of stability and game play.

The Beta should be up within the next hour.