Without Edit and Continue this would be a nightmare
Working on tactical AI today. So many tweaks, so many little stupid errors (typos). Thank goodness I can fix and continue.
Working on tactical AI today. So many tweaks, so many little stupid errors (typos). Thank goodness I can fix and continue.
So I watched the most recent Star Wars: The Clone Wars (“Crisis on Naboo”) and really enjoyed it. I enjoyed it enough that I decided to go over to TheForce.Net and see about conversing with others about it. Oh god. What a mistake.
I didn’t even get to the posting part. I just read pages and pages of bitching about how terrible the episode was. Then I read the same thing about every episode they listed on there. Just pages and pages of ranting and complaining about how terrible the episode is. And mind you, this is a “fan” site.
Here’s a growing problem: College graduates who have never had a job of any kind.
I get a lot of these resumes on my desk now. 4-5 years in college, living at home, never worked. No mall job. No McDonalds. No summer landscaping. Nothing.
I used to not pay that close attention to that but I do now. I have to because kids who have never had a job have no idea what’s expected at a job. Basic things like getting up every day and being at work at a consistent time. 5 days a week.
If you’re a parent and you’re not making your kid work so that they can “focus on their grades” you’re doing them a disservice. I won’t interview anyone anymore that has never had a job. I don’t care what their GPA was.
I have so many passwords.
And sites keep making the requirements more and more complex. Mixed case, numbers, etc.
I already use LastPass and such but still, I wish we could get to a point where there was some better way to verify identification.
We have promised, many times, that Fallen Enchantress will be so bad that it’ll give you some sort of disease.
It is now time to pay up.
For today, the tactical battle AI begins its development. And my job is to kill you. Thousands and thousands of times. Meanwhile, you’ll be trying to kill the AI in tactical battle with your various tricks. They will avail you to naught. You humans and your armies will be destroyed. Your kingdoms crushed. There will be much farting in general directions.
For the past several months, I’ve been asking my diabolical cohort Charles to write me tons of little functions that I could eventually use to build up the tactical AI. While I worked on the main game and the strategic AI, Charles did put together a decent tactical AI with what he had.
Unlike the strategic map where the AI can’t see all, the tactical map AI has no such problem. All units can see each other. The odds are even. There’s no reloading your game in the middle of a battle. It’s just you and the AI.
So for the next couple of months, we’re going to get to know each other. You will beat the AI a lot at first. And hopefully, you’ll share your secrets. From those secrets I will ask for new APIs and new XML that will help. I still have a lot of data requests (I don’t know how many turns have taken place in a given battle so I have no concept of whether we just started the battle or are nearing its end, I don’t yet have access to what spells are good and what spells aren’t – but I will soon).
I will have to solve the AI’s terrible use of mana strategically so that it has mana left over to do horrible…horrible things to you guys. I will also probably ask for a lot of new tactical spells that the AI is more inclined to use effectively (I got a few cool new strategic spell requests that are being put in that are…simply ridiculously evil).
So to start this conversation, let’s look at some of the things the AI needs to think about:
This is going to take awhile and it won’t be in the first BETA 2 build. Or if it is, it won’t be much better than what is currently there. But together, we should be able to come up with something pretty lethal.
I get asked this a lot. And the answer I gave most recently was “About a third smaller than it is today.”
As a statistical nut, I made a pie chart of what I spend my day doing. It was depressing.
Most of my work day is spent doing business stuff. And the more “successful” (and I use that term with some derision these days) the worse it gets.
Every week I can count on an hour of legal review. What kind of legal landmines do we need to watch out for now? If you’re a business, lawsuits are a constant threat. To be clear, I should say if you’re an American business since I like to pretend that other countries don’t have ridiculous, out of control, IP laws.
Then there’s accounting. Oh, is there. When there’s tens of millions of dollars going in and out a year, you have to be particularly careful that there isn’t (there is) massive waste going on. As a start-up, I used to track every penny because that’s all we had – pennies. That’s impossible now and that’s where you learn, after the fact, that we spent $20k on some pointless crap or waste $10k a year on aborted business trips can add up. A larger company would have a dedicated CFO. But we’re not large enough to justify that. And it turns out I’m a remarkably good bean counter.
Then there’s the interpersonal stuff. This is, by far, my least favorite part. It’s worse than lawsuits, lawyers, accountants, or even insurance compliance. People. They’re complicated. And it’s never ending. I like people, individually. But you get enough of them together and they’ll form cliques and from vapor will come interoffice politics.
The interpersonal stuff ultimate leads to some percentage of people loathing everything the management team does because, to them, it seems stupid. When running a business or writing code, often your choices are picking amongst the least stupid option. It’s still stupid, it’s just less stupid than the alternative. But to someone who’s not familiar or experienced with such a situation, all they see is that “the boss” (or their manager) is some sort of idiot.
For these reasons, I definitely don’t dream of having a large company. A small, well run, fun company is much more desirable.
Luckily, Stardock is a pretty fun place to work. We have a good time and make great stuff. But it would be easier to keep it that way if it were a bit smaller. We’re not laying anyone off or anything like that. We tend to take the long-view approach (next year will be the 20th year since we incorporated). A few small super-teams can do amazing things – without the headaches.
I was somewhat bummed to read on Coding Horror that Jeff Atwood is leaving the Stack Exchange. As many of you know, we are pretty religious readers of Coding Horror and Joel on Software.
Jeff’s blog had come up quite a bit recently as we are in the process of coming up with new coding standards here at work. More specifically, his recent blog on anti-aliasing was a major inspiration for doing “spot antialising” in Elemental: Fallen Enchantress (the idea is to do anti-aliasing very selectively where it counts without it affecting performance).
In his farewell blog, he mentioned some of his reasons for stepping down. Reasons that were very familiar and close to home. I hope Jeff is able to continue blogging on occasion. I will miss his insight tremendously.
Internal build 0.78 is the first build that the full strategic AI has been checked in. From then on, it’ll be balancing it based on play testing and listening to players discuss how they beat it. But feature wise, the AI can now fully play the game with one exception – we don’t let the AI win via the master quest. But it will try to win through other means if you have it selected.
The next public build will be where we begin the tactical AI implementation. We’ve been writing the APIs for tactical battles for months but we haven’t made use of them yet since we first have to decide how tactical battles are typically fought. That is, knowing the rules is only part of the challenge.
AI Wars: Let it begin. LET IT BEGIN!
To see how effective the AI is at decimating each other, we put a ton of them on a small map. Specifically, small map, 18 players.
I, on the other hand, will be going out of my way to kill them all quickly.
As you read this, please understand, I’m not trying to play the game. I am trying to win the game as efficiently and, truth be told, as cheaply as possible. Any scummy tactic I can find I’m going to use.
It’s a three way battle: FE’s AI vs. My cheese vs. Kael’s design.
So let’s the cheesing begin…
Since I am scum..
So the other players are out there happily exploring the world. Getting gear, probably training pioneers with dreams of expanding their empires.
What they’re really doing is starting my cities for me because while they’re out, I’m going to take their cities.
So…
What should we do about that? What should they do to stop me?
Here’s the data we have to work with:
What sort of evil should we inject into the function above?
Getting ganged up on
To answer some of the things above, we can create some interesting consequences that will help “mix things up”.
For example, I can take advantage of the ideological differences between Kingdoms and Empires. So if I’m a Kingdom and I attack another Kingdom, that’s a big deal. Or I can make it a big deal if I attack early depending on the faction traits. For example, a player with a Diplomatic trait might freak out a lot more if I go and attack someone early on.
Based on a lot of the posts I read, I think some people have an overestimation of my involvement in FE.
On the one hand, I am definitely spending a lot more time on Fallen Enchantress than I ever got to with WOM. But on the other, I'm not that involved on the design part. I give lots of suggestions and ideas but it's Derek's call.
The biggest design problem with WOM is that it started out, in my mind, as MOM2 and then morphed into trying to be all things to all people and ended up not being very good at anything. As you read the suggestions in this forum, you can see how quickly the game would be destroyed if we tried to implement even a fraction of the suggestions. And yet, if I were the lead designer, I would probably have tried to have a bunch of the ideas implemented because I'm not a game designer, I'm a game player and I love most of the suggestions I read. But being a game designer means making choices and explicitly deciding not being all things to all people.
My focus on FE is on the code. I don't override Derek on design and he doesn't override me on development requirements.
So here's a quick update on the coding parts:
1. We've made great strides on improving the memory foot print. This won't mean anything for 80% of you but for people running Windows XP, it's a big deal.
2. The strategic AI is significantly better in our internal build now. It will surrender now if its situation is hopeless.
3. The tactical AI is starting to get some love. I'm awaiting an API that will let the AI look at upcoming spells (like fireballs) that are in the queue so it can counter spell it.
4. There's been a lot of gameplay changes that I won't go into but I think people will be pleased with.
5. The stability should be substantially better. Keep crash reports coming in. It's amazing how different systems will expose different flaws in the code.
6. Performance, especially late game, is massssiiiiivvveeelly better. Night and day. One badly written function that gets called a lot can do real harm.
7. The next beta, Beta 1B (so still beta 1 series) is expected to be out a week from tomorrow. But we may delay it if necessary depending on how the team is feeling about stability, visuals, and balance.
8. The FE specific art is now being integrated (the terrain was still from WOM in Beta 1, beta 1B will have a somewhat different look).
9. I am hoping that beta 1B will reach release level quality in terms of stability, performance, and memory usage. It'll be a big deal (and something that absolutely should be reported) if it crashes on anyone.
10. Game within a game is still a pain in the rear.
11. Sound system got a lot of coding love this week.
12. While multiplayer won't be in FE 1.0, we've been making the internals much more effective for handling it in a possible future update (i.e. more event driven stuff). MP support is high on our list of things we want after release.
13. Garbage collection has been moved into its own thread so that it doesn't interfere with the smoothness of the game.
14. Modding will likely be officially sanctions starting with beta 2.
15. Lots of music and sound stuff going in.
Brain storming time!
I'm trying to come up with cool names for the AI to refer to their various units as well as suggested names for human players.
I have names like Oath Keepers and Sentinels but this is an area where I think it might be fun to try to include some names the players.