Brad Wardell's Blog


Elemental: Beta 1-Z4

Published on Thursday, May 6, 2010 By Brad Wardell In Elemental Dev Journals

Greetings!

We have made Beta 1-Z4 available.

General Overview:

  • Focus on improving stability, particularly on Windows XP
  • Prepping the AI to start actually having it do something (AI still non-existent but the plumbing is starting to go in)
  • Better Saved Game Robustness
  • Performance Optimizations
  • Cleaned up Technology Tree

Caveats:

  • There are some cases of stuck turns. Don’t be alarmed by this, they’re caused by the multiplayer code exposing sloppy event handling (multiplayer isn’t enabled in your build but it’s in ours).
  • Caravans are disabled. The technology is there but we have them disabled until beta 2.
  • The game should NOT be fun in any way still.

 

Here’s what’s new since the last update:

- Elemental 1Z Update #5 Change Log -

* New Features *

+ Added and implemented the new quest screen (Work In Progress)

+ Hooked up very basic lore book wnd, will serve as a way to get details about a bunch of stuff in Elemental, but for now it is just a screen that pops up in place of the unitequipment wnd when you click on the center medallion for a unit that doesn't belong to you

+ Unit Details Wnd: hooked up new backstory section that Paul added to the screen.

+ instead of unhiding a simple message box when you press the recruit button for a selected NPC, it will now bring up the conversation wnd

* Bug Fixes *

+ Fixed distance fog on characters in unit scene view windows
+ Fixed missing heads on units used in quests (damsel, son, daughter, etc)
+ The camera should now properly focus on the center of a tile when positioned by tile.
+ Fixed bug where changing the race or gender of a sovereign you are customizing in the customize sovereign screen would not refund the item cost of any equipment that ended up being removed
+ Fixed a crash that would occur in CTerrainGraphic::ReleaseTerrainEffects( ) when attempting to exit the game.

+ Fixed a problem in CWaterGraphic that was preventing the water from rendering off the north edge of the map.

+ Made the changes I made to allow setting a destination during a unit's movement between turns only apply when the unit is using the new auto patrol along path directive, instead
of any directive, in case there is a reason why those might need to skip moves that I didn't see when scanning the code, making it less likely to get a stuck turn button if I did miss something.

+ Changed the check I added to Move and CheckNextTile to handle skipping leftover moves differently only if the directive the object has is the patrol along path directive

+ Limited the delta times on character graphics to cut back on animation blending wierdnesses (ie, swords sticking in and out of unfortunate places)

+ Fixed bug where using the "Unit Scale" option would cause clothing and items to scale in wierd ways on a unit's gfx

+ Fixed an issue with quest-related goodie huts and quest locations not disappearing if they were cleared during the auto-turn  phase.

+ Removed call to CWorld:laceResourceHoardsInClumps( ) in CIsReadyToStartProcess::OnUpdate( ), which was placing extra resources on the map after generation and the player locations had been chosen.

+  Fixed a problem where a dialog on encountering neutral cities was popping up twice.  The problem was that the unit wasn't losing its movement after the first encounter.

+ Fixed ref-counting errors in cheat key and key callback code

+ Creature race skips expensive calculation in CalcResearchPointsPerTurn and automatically returns 0
+ Creature race skips expensive calculation in GetPopulation and automatically returns 1 (so other parts of code do not think race has died out)
+ Fixed ref-count error in Portrait Generator
+ Added more debug data to error message in SetDXSASEffectUIParameterValue

+ Fixed bug where clicking on a city with multiple units stationed would cause the units to unstation on top of the city and not return, from calls to get the city battle rank for the UI that would gather the unit defenders but not replace them
  - To fix this, I added a function to CCity to just calculate the battle rank, and when the city gathers its defense army now, it doesn't unstation the subunits
  - Also, it doesn't bother recreating graphics, refreshing UI, or setting destinations while gathering this army, making the assembly of forces quicker
  - This also happens to fix a bug where the subunits of the city defense army were not getting any of the city's defense bonuses, only the leader got them, because they were no longer considered stationed in the city

+ Fixed crash where unit was deleted at wrong time
  + This was caused by an extra release call in the ::AutoResolveBattle function

+ Fixed several other reference-related errors

+ Fixed bug where destroyed units were added to population in CPlayer::GetPopulation

+ Fixed bug where destroyed units were added to research in CPlayer::CalcResearchPointsPerTurn

+ when loading a gamesave, now stopping the xml file loading thread, in case it's still running as is the case when you've just started up the game and immediately tried to load a gamesave from the main menu.  Previously, it would wait for the load xml file thread to finish before loading the gamesave.  The load code clears and then loads in xml data directly from the gamesave, so waiting for the xml file loading to complete is a waste of time.
+ added some output messages throughout loading of the gamesave, so I could see that the game was not frozen

+ Fixed ref count bug in GetCityDefenders

+ Fixed bug where equipment on pewter pieces did not scale correctly  (ShowStopper #3)
+ Fixed bug where blank designs showed up in the unit design lists (ShowStopper #5)
+ Fixed bug where if you play as a race with a custom sovereign, then delete that sovereign and play against that race, that race would not get a sovereign
  - It now randomly picks a sovereign unit if it is unable to find the sovereign that is specified in the race XML

+ Units don't remove themselves from their player list in SetDestroyed anymore, player removes destroyed units itself at the end of a turn (which apparently it was already doing, its just that the units were removing themselves first)
+ Added health regen stat for unit, and since now it can be negative, units can die between turns, hence the reason why players need to wait to remove units now
+ Sovereigns still won't die if they lose all their HP from a disease or something, will go back to nearest city with some different msg
+ Fixed some UI and graphics bugs with killing and removing units from armies
+ When a subunit dies, they remove themselves from their army now
+ Fixed bug where UnlockImprovement modifiers wouldn't work if attached to a sovereign talent, since player modifiers from that aren't applied, now checks the sovereign
+ Fixed bug where the same modifier instance would be applied to units at the same tile, so durations would get decremented too many times
+ Added spell effects to the unit stat breakdown tooltip, and a place for modifier appliers to set this info when creating an instance to support that
+ Fixed wonkyness when unstationing units by setting a destination outside of the city perimeter, now will still teleport the unit outside of the perimeter and have them form armies correctly, but will reset the destination so it doesn't get cancelled out of the blue

+ Fixed crash in city wall code where index was out of bounds of array

+  Fixed the city build list not going to scroll mode when it gets too tall.

+ Fixed a buffer overrun in CCliffGraphic::GenerateCliffTiles( ) that could occur when running the game in basic mode.

+  Fixed a crash when upgrading a lot of city improvements at once; this was due to the walls getting regenerated after every deletion and construction.  
+  Altered the upgrading code to, instead of deleting the current improvement and making a new one, simply pointed the improvement at the new improvement type and reset the improvement data.  This makes upgrading MUCH faster now.

+ when recruiting a unit, it was pointed out on the forums that he would not provide non-FOW around him until you move him once, making it possible to lose him under FOW.  I added code to fix this when a unit is traded from one player to another.

+ fixed a typo that was reported on the forums, "Rouge Scholar" should be "Rogue Scholar"

+ if a city capital is taken, the player will automatically pick a new capital
+ CPlayer::GetCapitalCity() now actually loops through the player's cities and finds the capital (before it would assume the first city in the array was the capital)
+ made UIRefreshEmpireTree() that initalizes and refreshes the list of the player's capital is taken
+ if a player dosent have a city and takes one, it becomes it's capital

* Gameplay Tweaks *

+ Increased distance between cities requirement from 4 to 5.
+ Changed Relias backstory and info.
+ Changed backstory of Altar and Pariden

+ Created new unique sovereign armor

+ Added shop values to various equipment
+ Removed extra shard improvements that were causing duplicate game modifier bonuses

+ Changed the unique resources text to make it more apparent that they must be part of a town to receive the bonus.
+ Removed normal armor from Sovereign Customization
+ Moved AI Data to bottom of Study Improvement XML

+ Added a new spell (Freeze Enemy).
+ Added the correct icon to Burn Enemy.
+ Added a new modifier type (ZeroTargetMoves) that will have some value driven chance to remove all moves left on some unit

+ Tooltip for city shield displays combat rating for city.

+ commented out most tech prereqs for existing NPCs.  Brad wants the npcs to show up at game start.  Now they will since they don't require a tech in order to spawn.  I did leave the tech prereq for the two NPC types that lead a party.  They require "Heros" be researched in order to spawn.

+ City Details button displayed for AI cities as well
+ Wages now displayed as a float instead of integer
+ Granaries require at least a village to be built
+ Brad has officially started working on the AI. ?
+ CoreAIDefs created (new file coreAIdefs.xml)
+ AI Personality “AI_General” defined
+ AI definitions for how to build up cities created
+ AI definitions on what technologies should be researched created
+ AI attributes added to CoreTechs.xml
+ AI attributes added to improvements
+ Market requires at least a village to build
+ Elder Council requires at least a village to be built
+ Monastaries require a village to be built
+ Warehouse requires at least a town
+ Arcane Insitution requires at least a town
+ Barracks now requires at least a town
+ Adjustment to costs of weapons
+ Magical Equipment Crystal costs adjusted (to 1 crystal)
+ Unit wages increased to 0.20 per turn.
+ AI: More intelligently targets cities (should eliminate obvious “train of death”)
+ Markets no longer cost gold to build but take longer and require more materials
+ Further Technology tree cleanup

+ Added Disease Enemy spell

+ Modified the base kingdom tech tree
+ Changed Unit Grouping Type prereqs
+ Modified health stat game modifier for Unit Types

+ Adjusted weapon preqreqs for new tech tree
+ Changed various improvement prereqs
+ Removed Old Palace and Inn improvements
+ Altered the formula for computing the combat rating that should make it more realistic.

+ Boots are now located in CoreAccessories.xml
+ New Armor and Weapon types created

+ Removed Kraxis gloves from Sovereign Creation screen

Screenshots from build:

image image image

 

What’s Next:

If this build seems reasonably stable, then we are going to proceed to beta 2 which is the multiplayer beta.  We expect the MP specific beta to only last 1 or 2 weeks (we’ll be testing multiplayer throughout the process) but basically beta 2 is primarily the cue for us to make the multiplayer code available to you guys and then move forward from there.

Beta 3 will be the first “beta” that conforms to what most people consider as a beta as opposed to what we’ve done here which is essentially get players involved at the alpha stage.  I cannot even begin to express how instrumental the beta group has been to changing the gameplay for the better.

Since Beta 1, the economic, research, and spell system has been completely reimagined based on feedback, debates and discussions by beta testers on the forums. Even when we don’t participate in a given discussion, we read them with great interest.  Based on how well the Elemental project has gone, we are considering having the next game bring players in even earlier in the process (i.e. at the prototype level – pre-alpha).

I think when we hit Beta 3, users will find that the gameplay is very mature for what is a new IP.  There is still some wiggle room based on player feedback but Beta 3 will mark the roughly (give or take a week or two) the 90 day countdown from release.  However, we’re not promising Beta 3 at a specific date since we have to make sure we’re satisfied with the game mechanics and basic stability sufficiently enough to proceed.

Beta 1Z4 also marks the last public build without AI.  Subsequent releases will begin to have intelligent computer AI that will continue to get better between now and release and then further beyond after release.

Let us know what you think.

Cheers and good luck!

Elemental Beta 2 Preview

Published on Sunday, May 2, 2010 By Brad Wardell In Elemental Dev Journals

The good news is that Elemental Beta 2 is only expected to last 2 weeks.  The bad news is that Beta 2 will be multiplayer only, hence the short duration.

The object of beta 2 will be to begin the testing of the server infrastructure.  Elemental is client/server for its multiplayer. In fact, it’s dedicated server for beta 2 – players will be playing on our own servers distributed across the world.  The reason for this is that it eliminates the whole connectivity issue – if you can get on the web, you should be able to play. At least, in theory.

Beta 3 and beyond of course will have multiplayer as well where we will be adding more features, fixing bugs, expanding capacity.

One multiplayer mode is called Arena.  In this mode, the maps are incredibly tiny and set up for only 2 players. In this mode, the game plays a bit like Archon except imagine city building.  The goal for arena mode is for games to last between 10 to 30 minutes.

Beta 2 won’t have the custom games in them. That’ll come later during the beta.  With custom games, players can set up their own unique servers for LAN play or simply to create their own modded game experience.  For instance, a custom game I’d play would be 2 humans on the same side vs. 20 AI players.

After a couple of weeks with beta 2, we will turn on the full graphics engine and start focusing on making the game FUN.

Elemental Beta Testers: Your characters in now

Published on Friday, April 30, 2010 By Brad Wardell In Elemental Dev Journals

As promised, we are going to start putting in Beta tester NPCs into the game.

If you want your NPC in the game here is what you need to do:

Step #1: Create a sovereign

image

When you create this guy/gal, bear in mind that this is going to be an NPC. So don’t max him. He shouldn’t be as powerful as your sovereign so don’t use up your points.

Step #2: Find your sovereign in the documents\my games\elemental\units

image

Step #3: Make them an NPC

This is relatively easy. Open up your created unit XML. Add these lines (preferably at the end just before the closing of </UnitType>:

<UnitDisplayName>Arvix</UnitDisplayName>

<Class>Mercenary</Class>
<NPCTalentValue>1</NPCTalentValue>
<NPCSpawnLikelihood>1000</NPCSpawnLikelihood>
<NPCRecruitmentText>I might be interested in joining you.</NPCRecruitmentText>
<Backstory>Put your backstory here.</Backstory>
<Rumor>There is a tale told by the people who live near %s that Arvix the mercenary will join up with anyone who has enough money.</Rumor>

Also, remove the <IsSovereign>1</IsSovereign> if you don’t want him to be one of your sovereigns to choose from.

 

Then change the display name (<DisplayName>) to Champion.

Example:

image

Step #4: Send it to us

We recommend Dropbox:

https://www.dropbox.com/

To share with others, just make a post in the modding forum with the tag [NPC]

You can test out your NPCs right now. Do the above with the file that is in your my games\elemental folder and add the tags I mentioned and your NPC should be in the world.

Here’s my NPC wandering around

image

Other Tips and Tricks

We use the NPCTalentValue to determine when then sovereign will spawn. 1 means they show up at the start of the game. The rest are triggered by getting a technology or an event.  For instance, we might choose to have a random event where the world is invaded by Demons and have a bunch of demons show up and have the NPCTalentValue be 37 or something.  The higher the number, the more powerful the unit.

NPCSpawnLikelihood is what we use to determine the likelyhood of it showing up. Eventually 1000 will mean it will definitely show up and 1 will mean there is a 1/1000 chance it will show up in a given game.

When you upload your NPC, include your name so that if we use your NPC, we can put you in the game’s credits.

Have fun!

Elemental – Data Driving the AI

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

image

When I wrote the AI for Galactic Civilizations, everything was hard-coded in C++.  That was nice for me but not so nice for everyone who would like to tweak things later. Moreover, it makes it very easy for things to become a mess later on as improvements rely on my memory of what technique I used to do a given thing.

Yesterday and this morning, I officially began my work on the Elemental AI.  What’s in the game presently isn’t AI, it’s just a few IF/THEN statements.  My job is to design and code a structure that allows the computer players to play intelligently and provide a challenge without having to cheat.

So…how do you start?

The first step is with XML.  You can do an awful lot just by defining lots and lots of “stuff” in the XML.

First, I start by defining AI personalities. My starting point is AI_General which is, as the name implies the general AI personality that I’ll start from.  When I’m done, modders will be able to go in and define their own AI personalities that behave completely differently.

image

Here’s an example that I whipped up last night.

I define some Priorities (Economy, Farming) and I define some things I want the AI to avoid (War, Construction Times, etc.).  Now, as I get better at this, I’ll tie together these definitions throughout all the game data. 

So for instance, items that are tagged as Economy and Farming by the “AI General” will get their priority multiplied by 3.0X and 5.0X respectively.  Someone else might come along and make AIPersonality=”RavenX” and have a totally different set of priorities.  When the game starts, it’ll eventually look for all the AIPersonalities and grab them for the different AI. We might even let people from within the game pick which AI personality they want (not in 1.0 but eventually).

I’m a n00b

I’ve been using XML for years for skinning purposes but I’ve never tried to data drive an AI before. It’s not hard, but there is no substitute for experience. So over time, it’ll get better and better so that less and less of the AI is actually hard-coded and what requires “real” coding would be provided as Python.

Eventually, we will also have all the AI difficulty levels clearly defined so that players can adjust them far beyond what you could provide in the game UI.

BTW, feel free to shoot off your own ideas on this. My “AI skillz” largely revolve on producing macro-level systems for intelligent artificial players. Implementation is not something I am passionate about so don’t feel like you’re stepping on my toes by suggesting different implementation techniques.

Elemental: Destiny’s Embers Preview

Published on Wednesday, April 28, 2010 By Brad Wardell In Elemental Dev Journals

image

Elemental: Destiny's Embers is due out in August.  Published by Random House, the story revolves around the Kingdom and the Empire trying to regain mastery of the world. Myself and the editors and writers at Random House are collaborating on a single set of lore that the game and the novels make use of.

The novel helps underscore how serious we are about delivering to gamers (and readers) a world that isn’t simply generic fantasy. Starting with beta 3 of Elemental, the lore starts to get integrated and there is a lot of it. The novels don’t focus a lot on the races of Elemental since it is told largely from the point of view of an ordinary person who is discovering the greater world as the story progresses. 

One of our principle goals was to make a story that was not based on a game or a game based on a book but rather to collaborate on an epic world in which the game and the book could both readily draw on. I think those of you who enjoy Feist or George R. R. Martin in particular will appreciate a lot of the subtlety.

For those of you not in the beta

In Beta 1 (and 2) there is basically no “lore”. It’s just features. I click on a city and it tells me its stats. I click on a spider it tells me its stats. There’s not the slightest bit of character in yet. It’s one of the reasons I have strongly recommended against people joining the beta unless they were interested explicitly in developing the game mechanics because Beta 1 and 2 are completely soulless.

The Hiergamenon

The Limited Edition of Elemental will include a book called The Hiergamenon. As someone who used to spend hours looking at the D&D Monster manual or reading Gnomes I have missed the days of being able to to sit and read a book that presents me with a world as a kind of encyclopedia. Luckily, The Hiergamenon will also be integrated into the game itself as a virtual book. Thus, clicking on a city or an NPC or a monster will bring up its entry in The Hiergamenon. 

Dave Stern is my mentor/editor on the book so he gets to torture me with masses of suggested edits and changes. On the game, the roles reverse as he leads the Random House team in producing the Elemental in-game lore.

Let’s try this again…

Published on Wednesday, April 28, 2010 By Brad Wardell In Elemental Dev Journals

This week we’ve put up a couple of journals that are soliciting input from players on what they’d like to see in terms of faction customization.

My journals were clearly too wordy as I failed to convey the fundamental questions at hand.

So I’ll put it in bullet point form.

  • We are rapidly nearing Beta 3 where the “game” itself comes together.
  • At that point we will need to decide where to focus our asset creation (read: Artists and Random House writers).
  • Presently, Elemental supports Alignment (Kingdom vs. Empire), Faction (Altar, Pariden, etc.) and Race (Men, Urxen, Trog, etc.).
  • Presently, the assets (read: Art and Writing) has not been put in place which means we can still make pretty significant changes.
  • There are two general directions to take:
    • Eliminate the race distinctions and instead build out the Factions with more lore and artwork. Current customization of factions would remain.
    • Expand the race distinctions and provide more assets and code to support players creating their own custom factions made up by their own custom races.

There are pros and cons in either direction. 

Some people might find it confusing that factions and races are different. Kraxis is a faction that is made up of men that is part of the Empire. Umber is a faction that is made up of Urxen, a Fallen Race that is also part of the Empire.

On the other hand, having factions and races that are different provides us the ability to provide customization in terms of culture and genetics.

In Civilization, the differences between civilizations were ones of culture. They’re all humans.

In Master of Orion, the differences between civilizations were purely genetics. The factions were the races.

In Elemental, the difference between civilizations is based on their culture (Altar vs. Pariden) AND based on their race (Men vs. Trog).

So the question is, where would people like to see the focus? More emphasis on making the game lore with the 10 factions.  Or more emphasis on making it easy for players (in game) to customize their own factions/races?

More discussion of Factions and Races (long)

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

 

AllyDragon

…In the beginning there were Men and Dragons…

When the Titans came, they saw the creatures of the world as building blocks and created many new creatures from them. These creatures are called (by men) “The Fallen”.  There are four known sentient races of The Fallen (see the Lore for more details).

In previous discussions, we have used analogies to Middle Earth.  In Middle Earth, Illuvatar created only two sentient races. The Elves and then Men.  All other sentient races were created “unnaturally” (the dwarves and Orcs being the best example. The origin of halflings is unknown). 

In Elemental, there are more factions than there are races. This is similar to Sins of a Solar Empire where there are many factions but only 3 races.

When we use the term “race” we really mean species in the specific sense that they cannot interbreed except for Channelers and their offspring.

...Fitting Lore into a Game...

SciFi/fantasy lore that evolved outside a game (as was the case with both Galactic Civilizations and Elemental) can be difficult to fit into a game universe.

In Galactic Civilizations, the universe -- its lore, was never published so I had a free hand to tweak all the civilizations to fit the needs of the game.

Elemental is a bit different because its lore is being presented in a book (Elemental: Destiny's Embers).  In the book, it's fairly straight forward. You've got two general aligments - The Kingdoms and the Empires.  The Empires are dominated by races of the Fallen and the Kingdoms are dominated by the races of Men. Simple right? Well... Read on to see the complexities and why we're brainstorming with you guys on other directions.

 

image….Pre-made Races vs. Player Created Races…

Yesterday we discussed what priority should custom art assets versus canon art assets should take. If we focus primarily on canon factions and their corresponding races, we can greatly expand their stories and the art assets for them.  However, if we focus less on the canon factions and more on providing assets we can let players create their own unique races and factions that are more rewarding visually and game play wise.

The question thus becomes which direction to take? 

…Understanding Game Development…

By the end of this journey, I suspect many of you will have a much better understanding of what game development is like.  The “game” itself is the tip of the iceberg. What you see in these betas is only a tiny piece of the whole “product”. Underneath the covers is the engine and art assets. The game itself we can monkey around with any dozens of ways based on player feedback.  The expensive part is building the engine (which isn’t even in the beta yet) and creating the art assets (only a bit are in the beta).

Thus, once we begin to commit to things that involve changing the game engine or the art assets, they’re pretty much set in stone. By contrast, changing research or economy or spells or what have you is largely just changing text in XML.

So we are reaching the point where we will have to make decisions on whether to focus more on canon assets or assets to be used by players to create their own world.  I.e. Dragon Age (canon centric) or Spore (non-canon centric).

We don’t have to go to either extreme.

…Fantasy Races…

In traditional high fantasy, you’ve got men, dwarves, elves, orcs, goblins. People have a pretty good idea the pros and cons of them because they appear in so many games.  In our world, we don’t have dwarves or elves or orcs.  We have the natural races and the races made by the Titans. They’re not good or evil based on their race but rather on their faction. The Krax are men but they’re real bastards. There are Fallen races out there that aren’t evil at all (but they don’t come into our particular tale right now, you’ll need to read the book).

…Complexity…

We don’t want to “dumb down” the game in any way but at the same time, we don’t want to have unnecessary complexity. The fact that we have Empires/Kingdoms and then Factions and then Races is pretty complicated as is.  It would be so much easier if the Empires were all Fallen and the Kingdoms were men but that would be simplistic and frankly, to me, distasteful. It’s bad enough that the unnatural sentients are called Fallen but that’s only because our tale is told from the point of view of man and thus can identify their bias on our own.

In our game, there are 5 true races (Men, Urxen, Trogs, Magnars, and Wraiths).  But even amongst these 5 there are sub-groups (The Ironeers if Gilden and the Krax are visually very distinctive but genetically compatible).

You can see how this gets complex in a hurry and why there is the urge to simplify to appeal to a wider audience. Will the fantasy strategy buying public be interested in learning the intricacies of the lore that’s been developed here over the past two decades? Or would they prefer us to simplify it into a couple of basic races (Men and Fallen) and let people get on to making their own races.  You would still have the same factions, they’d simply just be made up of two races (men and fallen) and then players could make their own races.

So that’s the discussion we have going on.  My bias is to focus on our own canon and introduce players to it. Players could still create their own races but they’re not going to be making any half-dragon half man races or Ents or what have you.  That’s my bias on it because that sort of thing can be added later in post-release if the game’s successful whereas we only get one opportunity to really explore the depths of the rift between say Kraxis and Capitar or the doom of Pariden and Procipinee.

…Implementation…

Here’s how races could be implemented:

image

First, when creating a faction you would have a new tab called “race”. The existing races would be there. 

You would choose a specific (easy to understand) ability that makes that race unique. Hard Workers might produce pioneers that get more out of resources. Fierce Warriors might get a combat speed boost. Good Traders might be the only ones who can reach paved roads. Fast Travelers go faster. Great Archers can shoot further (maybe attack on the strategic map from a tile away even).   The difference would be significant.

Then you pick the Appearance and that’s where we really hit the art asset budget. Skeletons are expensive because you then have the clothes and equipment to go on them (in Spore, you may have noticed nobody had clothes you could put on them).  The rest is fairly easy. But obviously no Centaurs or Quaddies.

image

Then in your cities, you would see next to the current owner of the city what race populates the city. A faction may conquer another city but the race in the city remains the same.  The part with enchantments you should ignore – you don’t know about that yet.

Now obviously, people can get into mixing (ala Civ IV and such) but there is so much going on in the world that we want to try to avoid having potentially 30+ different races making up a city (i.e. if we let players create their own races as well as factions, we have to be careful about how convoluted it gets).

Your thoughts

I hope you guys are enjoying these journals and their peak at the kinds of things that go on during game development. Marketing hates these journals because they expose the world to the “sausage factory” that is commercial game development.

Please feel free to share your thoughts.

Rethinking factions…

Published on Monday, April 26, 2010 By Brad Wardell In Elemental Dev Journals

image

We have been pleasantly surprised at how this has worked out because it gives us the opportunity to look at seeing if we have time to do something we have wanted to do: Develop the RACES further.

The Kingdoms are made up by a single race (Men)

The Empires are made up of three races presently (Men, Trogs, Urxen).

However, with the reality being that people seem to much prefer to create their own factions, it may make sense for us to return to TWO pre-made races (Men and Fallen) and then use the resources saved to put in more content to let people make their own races.

So in the Faction creation screen, you would have a “Race” tab where you would design what they look like along with a very simple Strength and Weakness list.

Illustrating the point

One of the things we thought we would have to wait until a sequel would be to let players mix their races together when they build up their kingdom or empire.  Right now, you capture a city, all the people simply become your faction (and its corresponding race).

So even if you made a race of those Avatar blue guys, when you capture a city from Pariden, the city would remain populated by Men.  You would then be able to created a mixed army where they all have their strengths and weaknesses and visually look different.  So you could create a true “Last Alliance”.

Now, the trade off is that the 10 factions would be made up of only 2 premade races (Men and Fallen) but there’d be enough assets available then to let players create their own Orcs or Dwarves or Elves or Space Smurfs or what have you and then let players create a mixed empire.

So Men might have a +1 bonus to say Economy. Fallen might get a +1 bonus to their attack rating. Then players could also create (for instance) Elves who get a +1 to the range of their archers or any number of other differences plus they would visually look different.  From this, in post-release we could explore other ramifications.

What do you think?

Elemental – Beta 1Z4 is coming

Published on Sunday, April 25, 2010 By Brad Wardell In Elemental Dev Journals

While the vast majority of users who actually have Beta 1Z voted for moving forward (the publicly displayed poll isn’t designed to filter based on downloads but rather whether they have an Impulse account) we believe another Beta 1 is still in order.

There are some Windows XP issues we want to nail down in particular with regards to stability and memory and there were a bunch of fixes that got finished that didn’t get checked in in time for beta 1Z3.

We are probably going to dispense with the polling unless I can get IT to spend time to filter out users who don’t actually have the beta (incidentally, the votes include the user ID and the IP address for the guy who put in 11 no votes with the same IP with different accounts, tsk tsk). 

The forum discussions alone were enough to convince me that one additional beta 1 build made sense.

It IS important, however, that anyone who experiences problems report them. Don’t assume that we know about them. Read this post.

Elemental Beta 1-Z3 Changelog

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

The third pass of the conclusion of Beta 1 is going up today.

Here’s what’s new from last Thursday:

* Item Swapping *

Overview: You can now swap items between units by opening the ITEMS tab for a selected unit and dragging/dropping the item icon to either a unit on the map, a medallion on the empire tree, or a medallion in the army/stationed units context list.

+ Added ability to drag (non-equipped) items out of a unit's item context list and drop them either on a unit on the map, on a unit entry in the main game wnd (the list that shows up to display subunits or stationed units), or on a unit entry in the empire tree
+ If you drag an entry for an item type that you have more than 1 of, it will just trade one of them for now, maybe it will ask how many to trade later if we make a message box for it
+ Fixed bug where you could unstation units using right-click on a tile inside of the city, causing them to either sit there stupidly or restation themselves
+ Fixed bug where, when ejecting multiple units from a city at once, they wouldn't join together into an army at their destination tile and would just stack
+ Made it so that unstationing units will select them again after they've been unstationed, so that you can control them without having to click them again
+ Added basic spellbook to the basic sovereign unit types, so custom sovereigns will start with the basic spellbook
+ Items that aren't available in the create sovereign screen aren't automatically restricted from the unit design screen anymore

* Data Loading from Saved Games *

Overview: All game data (stuff normally read in from XML) will now save out to the saved game file. This meens you can now reliably send saved games around without needing to send any custom units/factions/etc. It'll all save out then load back in right from the ELESAV file.

+ fixed a bug that was causing a byte offset.  In LoadPropModelTypes(), changed a pGameSave->AddElement() call to be a pGameSave->GetElement() call instead. In this case, it was messing with the ability to load a fullmode gamesave

+ removed the "if ( !IsBasicMode() )" calls so that a fullmode gamesave can be used in basicmode and vise versa

+ added member variable TString m_strNPCRecruitmentText, initialized in ctr, copied in copy ctr, cleared in Clear(), added to save/load code.
+ added member functions Get/SetNPCRecruitmentText()
+ updated AddStat() to call SetNPCRecruitmentText() when it finds tag <NPCRecruitmentText>

+ in StampTile struct, moved function bodies from .h to .cpp, since they have long bodies and I needed to add more functions with bodies too.
+ In StampTile struct, added function SetTileInfoParent() so I could call it from CMapStamp
+ In StampTile struct, added function SetStampTileInfoParent() so I could call it from CMapStamp
+ In CMapStamp::Load(), for each StampTile it loads, it now calls SetTileInfoParent(this) and SetStampTileInfoParent(this)

* Bug Fixes *

+ Fixed crash where pUnit was not being checked to see if it was valid (world.cpp)

+ Changed code that called m_PathTiles.clear(); to call ClearPath, to fix stuck turn bug

+ Fixed bug where mountain gfx would not always show up when moving around the map or loading a saved game

+ Fixed startup crash on computeres with NVidia 8800 running Windows 7 with multiple monitors

+ Fixed bug where mountain icons and gfx did not appear in exposed FOW areas after loading a saved game.

+ Fixed T-pose characters caused by changes to make animation multi-threaded

+ Fixed crash when creating a new faction and pressing the appearance tab caused by the new faction not having a valid sovereign unit type set yet, instead using a hardcoded unit type that doesn't exist anymore

+ Fixed city improvement stats disappearing after one click and the Demolish button becoming unusable after clicking on a non-buildable improvement.

+ Fixed bug where unit quality types (veteran, elite, etc.) would apply correctly in the train unit wnd but wouldn't make it to the actual created unit, making them use the normal quality
+ Fixed bug where unit battle rank calculation was getting the troop count from the wrong place, causing the battle rank to not be multiplied by the troop count

+ CalcBattleRank now calls GetTroopNum on unit passed in, instead of asking the unit formation for the troop num

+ Fixed extra release of guardian units when intersecting a goodie hut, would eventually delete them and cause a crash

+  Fixed two problems with the new citybuilding code - icons weren't getting shaded right because they were getting the wrong alpha set, and the player could build improvements they shouldn't have been able to because the improvement selection wasn't getting cleared when the improvement was no longer available.

+ In OnClickTab, fixed various city context cases to use the m_pContextSelection to get the city to display info for instead of GetFirstSelectedLocalPlayerCity, this makes it more consistent with how the rest of the screen behaves and also fixes a bug where city contexts sometimes wouldn't fill up even when selected

+ Fixed bug where selecting a city from the empire tree and clicking one of the other context tabs wouldn't bring up the context, because OnClickTab wasn't using the current context to fill the info but the first selected city, which hadn't been set yet

+ fixed bug where some auto-quotes were being set as the DisplayName of a unit type

+ City Balance Pass 1.0

·         Outposts (1)

o   Get 12 buildable tiles

o   Require 40 population to level up

o   No Defense bonus

o   Can only build 1 of a standard improvement

·         Villages (2)

o   Get 20 buildable tiles (+2 additional game tiles)

o   Requires 150 population to level up

o   50% HP bonus to defending units

o   Can build 2 of a standard improvement

o   Required for

§  Arcane Labratory

·         Town (3)

o   Get 28 buildable tiles (+2 additional game tiles)

o   Can build on tiles that are not adjacent to an improved tile

o   Requires 400 population to level up

o   100% HP bonus to defending units

o   Can build 3 of a standard improvement

o   Required for

§  Town Hall

§  Town Council

§  Theater

§  Library

§  Houses

·         City (4)

o   Get 36 buildable tiles (+2 additional game tiles)

o   Can build on tiles that are not adjacent to an improved tile

o   Requires 750 population to level up

o   150% HP bonus

o   Can build 4 of a standard improvement

o   Required for

§  Tower of Sorcery

§  Conclave

§  Arcane Academy

§  Academy

·         Metropolis (5)

o   Get 52 buildable tiles (+4 additional game tiles)

o   Can build on tiles that are not adjacent to an improved tile

o   200% HP bonus

o   Can build 4 of a standard Improvement

o   Can build 5 of a standard improvement

o   Required for

§  Universities (10 research per turn)

* Gameplay / Data *

+ Warehouses now provide 20% build time reduction
+ Town Halls now require the settlement to be at least a “town”
+ Town Council requires settlement to be at least a town
+ Tower of Sorcery provides a 25% boost to spell research in target town
+ Temple Added to initial start.
+ Library requires a town
+ Houses now require a town
+ Conclaves require a city and now provide a 50% boost to research
+ Arcane Labs require Villages and cost 100
+ Arcane Academies require Cities, provide 5 spell points.
+ Huts now hold 32 population (instead of 30)
+ Houses now hold 64 population (instead of 50)
+ Villas now hold 72 population (instead of 60)

+ Mana regen rate gets a bonus of Wisdom/10 per turn

+ Added Female Sovereign Idles
+ Female Sovereigns now use proper Idle
+ Renamed Gold to Gildar in various in game strings
+ Added/updated Animations/Meshes

+ New Medallion PNG's added to repository
+ New Hero, Champion, and Titan Technologies
+ Created New Improvements: Bazaar, Emporium, Magistrates Office
+ Quests also now refer to Gold is Gildars
+ Added MainIdle Variation 3 to the Sovereign Idle Animation pack so that it is the most likely to be randomly selected
+ New Main Ingame Idle Variation 2 and DefaultPose9

+ Created new Sovereign Equipment
+ Sovereign Equipment HKB files added to repository
+ New Sovereign Skins added to repository and XML file
+ New Sovereigns created
+ Trolls are now significantly less powerful

+ Wondering Heroes must be within a player borders before they can be recruited

+ Event List: Report Item when a unit levels up
+ Event List: Hide numbers when a category is rolled down 
+ Added a shading effect to the empire tree. Units that have no remaining moves, and cities that have something in their build queue, are shaded darker.
+ Fixed an issue with the show/hide buttons on the parent empire tree nodes.
+ Tweaked the hit detection on the show/hide buttons in the empire tree.

+ If a unit attacks an undefended city, it now stations itself in the city after the city ownership is transferred
- This is to be consistent with when you attack a city with units in it, you are stationed in the city after taking it

+ Completely removed city actions for road building.

* Engine Fixes/Tweaks *
+ Fixed bug where changing the "cloth map only" option did not update the unit graphics animation
+ Tweaked the height at which the unit shadows are rendered in standard mode
+ Fixed bug where transparent objects added to character's head did not render properly with the face
+ Fixed compile error where TacticalUnit did not compile under ElementalServer
+ Added in new cliff end piece models.

+ Cleaned up the terrain transitions between cliff and beach tiles.

+ CResourceTypes can now have a preferred terrain type assigned to them, just like CGoodieHutType. When resources are randomly placed on the map, it will look for a resource specifically made to work with that terrain type. If one cannot be found, it randomly selects one using the same algorithm as before.

+enabled the multi-threaded animation
+ Pewter pieces now always update their animation (so they don't get stuck in wierd poses or t-poses)
+ Portrait generator disables multi-threaded animation for the nodes it uses so they update at the correct time
+ Fixed bug where GetSuccessionOrderStringFromNumber returned 11st, 12nd, 13rd  instead of 11th, 12th, and 13th

+ Added support in GameLoop for processing jobs in the animation core

+ Rewrote code for moving within a tile to support new movement system
- Added new SetDestinationWithinTile and HasDestinationWithinTile functions to handle it
- Moving within a tile only rotates the main character now (the other characters no longer rotate to face you)
- The main character returns to his original position before moving on to the next tile
- Added code to allow moving within a tile when you have no moves left

+ Zoom to cursor no longer causes the distance fog to activate on units
+ Zoom to cursor now properly updates the LOD zoom levels for units

+ Fixed the inertial problems with zoom to cursor. It should now work as intended.

+ Fixed an issue with the cloth icons not updating properly after an alt-tab.