Brad Wardell's Blog


SSD + 64bit = computing heaven

Published on Sunday, June 14, 2009 By Brad Wardell In Personal Computing

I’ve long been an advocate of migrating to a 64-bit OS and then getting as much memory as you can reasonably afford.  If you have a choice between a solid state hard drive (SSD) or lots of RAM on a 64-bit machine, get the RAM. But if you can do both, even both. 

My beloved ThinkPad T400 is outrageously fast with the combination.  It’s been a long time since I’ve used a PC that felt this fast.  It reminds me of the days when I’ve gone back and used Windows 3.1 on modern hardware where everything is so snappy. I highly recommend it.

Great fun on a Saturday night!

Published on Saturday, June 13, 2009 By Brad Wardell In Demigod

Hi guys!

Well I had a blast tonight playing online. Gave me a lot of ideas to pass on to the team in terms of making Demigod more fun in terms as an online thing.

First, we absolutely positively gotta make it a lot easier to get friends in. That is, the current people in your game should be able to be popped up with a hot key and be able to add them in. I had a lot of fun with the games I played tonight. No rage quits, just a good group. I'd love to be able to get together with them more.

Second, we need to be able to establish groups easily ala Steam or Xfire but within Demigod.  I need to be able to call out to them even if they're outside the game to see if any of them want to play a game.

Third, the first two items need to be available for Demigod in the next 30 days IMO.

Ah, back to Galactic Civilizations love

Published on Thursday, June 11, 2009 By Brad Wardell In GalCiv Journals

What? You thought because we released Demigod and are working on Elemental we’d forget our beloved GalCiv players?  GalCiv II is barely 3 years old.

So specifically, what’s in the pipeline?

In the next week or two (depending on marketing scheduling) we have a new build of GalCiv II coming along (no particular order):

  • Fixed bug where creating a new planetary governor when another was already assigned to a planet would cause the planet to not be able to access it's governor's info, causing a crash somewhere along the line.
  • Fixed a bug where a different governor than selected for deletion in planetary governor manager window was deleted.
  • In the lower-left corner of the main screen, clicking where empire income and population are displayed will now take the user to the civ manager screen instead of the research screen.
  • Dark Avatar and Twilight of the Arnor intro videos now only play before the first mission of their respective campaigns in the Ultimate Edition.
  • Changed how fleet rally points handle putting ships into fleets
    • Now, ships that can't find a fleet to join at the rally point will attempt to create a fleet with any ships at the rally point that are also not in a fleet, and any leftover free ships will attempt to join that new fleet, as wel
    • If a new ship still can't find a fleet to join, it will just stay a single ship (until another fleet opportunity comes) This prevents fleets of only one ship being formed when there are no fleets to join, and fixes a disappearing turn button bug caused when  fleets were disbanding when they didn't need to.
  • If a civ's saved tech tree can't be found, a new tech tree is created from the default tech tree def instead of looking for an actual tech tree named "default."  This prevents a crash while loading a save that lost its races' tech tree names.
  • In Ultimate Edition, now checks that a scenario is a campaign scenario before trying to load one of the campaign intro videos.  This fixes a crash that happened whenever a custom, non-campaign scenario was started in the Ultimate Edition.
  • The "Set rally point" window that pops up from these screens now shows whichever rally point is currently selected for that ship/planet.
  • Game won't try to calculate which techs are race-specific in UIBeginGame() if there is only one major race playing in the game.  Before, in some campaign scenarios where only the Terran and the Dreadlords were playing, every single tech was restricted to the Terrans because they were the only race whose tech tree was being looked at. This caused the Dreadlords to have no techs, so they had negative tech scores. 
  • Changed range checks for race number in GetDialogue() and SetDialogue() to make sure the race number isn't greater than OR EQUAL TO the max number of races. This caused a crash if a conversation file mistakenly specified a race number exactly equal to the max number of races, since the index was too big for the dialogue matrix.
  • Initialized selected governor in planetary governor manager window to NULL in OnStartNewGame() to prevent crash when starting a new game without quitting the app.
  • When filling the build queue, now checks whether an improvement on the queue is a galactic achievement, super project, trade good, or one-per-planet improvement before adding it to the queue.  Prevents an exploit where the user could build many of these improvements by correctly timing when they added them to a planetary governor's build queue.
  • AI smarter with regards to friendly players moving through their territory (not seen as threatening as before).

 

Nothing particularly exciting there.  But development continues.

Demigod nears its second month

Published on Thursday, June 11, 2009 By Brad Wardell In Demigod Journals

image

Greetings!

Yesterday, we released the long promised connectivity update.  And the results seem to be very positive.

On Launch day

To illustrate what has happened since the launch day:

Demigod on launch day was a pure peer to peer networking game in which everyone connects to everyone else. This reduces lag since you are talking directly to the other user rather than through a server. 

Developer Gas Powered Games had previously used a program called GPGNet for Supreme Commander. GPGNet is an external program that handled all of the connectivity features for that game.  Unfortunately, it had essentially been retired so it wasn’t an option for Demigod.  To solve that, we licensed a third party solution to take its place.  We won’t dwell on the details of how things went since it’s been covered a great deal.

That put us all in a very difficult position.  The connectivity issues had to be solved (obviously). It also became pretty clear that a largely new system from scratch that was far more robust was needed and needed fast.  So who would develop it? There were four obvious options: Gas Powered Games, Stardock, Atari or Raknet.

If GPG had to develop it, that would take time and resources away from updating the game itself. That would mean fewer new features.  Raknet could do it but it would take time and it’s not “their game”.  Atari is a traditional publisher and it did not make sense to ask them to intervene at the 11th hour.  That left Stardock. Since Stardock develops games and already has a robust networking program (Impulse) it was the logical choice.

So over the last 6 weeks, we have created a new connectivity system.

How it works now

Bob tries to connect to Jill.  If they’ve both set up their routers right, they connect and all is well.

else

Bob and Jill now call what we call CVP (Common Virtual Platform) which now talks to code developed by Stardock to find a way to connect them together.

if that still fails..

Then Bob and Jill will actually connect through a proxy server. I.e. the game becomes quasi-client/server as we host the traffic for them.  To make that work, we had to set up servers in Europe, Australia and North America (for starters).

Then, we had to write software (and license some) that would, based on your IP, give us the player’s latitude and longitude (I kid you not) and then go to the nearest proxy server.

So that’s what was released yesterday.

Ramifications

So the good news is that pretty much anyone can connect to anyone else.  If you still have problems connecting you need to let us know because at this point, we’ve done basically everything that is theoretically possible including making Demigod a hybrid client/server game for players.

If you are currently using /serverproxyonly you can get rid of it now (and should) because it will now likely work in one of the other methods and if all else fails, it’ll still go to the client/server type setup.

Version 1.1

I have in my hands a release candidate from Gas Powered Games for v1.1.

Here are a few things we are looking for in v1.1

  • Team concede.  If it looks like you’re going to lose, your team and vote to concede and end the game so you can go to the next.
  • Speed debuffs have a minimum move speed now.
  • Better chat handling for better visibility
  • When you sell a minion idol, existing units are destroyed.
  • Updated computer AI
  • Random Demigod option
  • Bunch of other tweaks, fixes, enhancements.

High on our list is the handling of replays.

The demo version of Demigod is also in our hands based on this same code.  So over the next few days we’ll be going over this.

Demigod: How games are made

Published on Monday, June 8, 2009 By Brad Wardell In Demigod Journals

image Well I said I was going to start going lighter on these journals since each one seems to give the poorly informed an opportunity to flame me or Stardock for whatever woes they have without realizing what’s really going on.

It just goes against my grain to not keep people up to date with what’s happening.  The only thing I will say is this: I’m just the messenger.  My job is a lot like herding cats.

So that everyone is on the same page of who is doing what:

Stardock

Stardock, who I work for, is the North American retail publisher of Demigod as well as the digital distributor of it via Impulse.  Our job is to take the game, put it in a box (or online) for people to purchase at the store. We also are responsible for the marketing and technical support for the game.

However, in the case of Demigod, we also agreed to provide a website to take posted data from the game and display it (rankings, favor points, etc.).

In addition, Stardock developed Impulse which, amongst other things, includes impulsereactor.dll which has what we call a Common Virtual Platform (CVP).  CVP is designed as an interface to a series of web services.  An application calls a CVP function to send XML to servers as well as receive XML from servers that the game can then display in-game.

Here are some examples:

A game might request a team game. The game developer would call something like CVP.RequestMatch() which would then look at players in the queue and send back an XML with the players and their IP addresses for the game to connect to.

A game may want to record how many kills or how much damage they did. It can use CVP to post this data to our servers.

Now, in the case of Demigod, some special code was added to handle connecting players together because Demigod does not have this. GPG used GPGNet in Supreme Commander but it was not available for Demigod.

Raknet

To take the place of GPGNet, we looked at several options including GameSpy Arcade, Games for Windows Live, and Raknet.  Since Demigod’s original ship date was February, we couldn’t use Games for Windows Live as it was too far along. The team ultimately decided to go with Raknet because it was used successfully with The Political Machine.  But The Political Machine is a client/server game.  Demigod is a peer-to-peer game just like Supreme Commander, Warcraft 3, Company of Heroes, and the Dawn of War series. 

So we worked with the developer of Raknet to use that library for Demigod.  I won’t go into the details here other than to say that obviously everything didn’t go as planned on that.  The basic issue was scalability.

For you web developers, the way I would describe it is imagine setting up a really elegant looking new website that runs great during your testing phase. Then you release it and when thousands of people are on it at once, it crashes and burns.  That’s basically what happened with Demigod. 

I still highly recommend Raknet. If someone makes a website using Ruby on Rails, for instance, they should know what the pluses and minuses of it.  Same here.  Ultimately, Stardock and Gas Powerered Games took the lead on this part of the game and so it was our responsibility.

With that, bear in mind, our anticipated technical involvement with Demigod was essentially that we would provide the website, a database, and finding players to connect to each other.  We treated the connectivity the same as you would any other “engine” you license (i.e. Unreal engine, Fmod, Bink, etc.).

Snowball 

In Russia, the publisher of Demigod is Snowball.  If you bought the game in Russia at the store, Snowball is the equivalent of Stardock there.

Atari

Everywhere else it’s Atari. Whether you bought it at a store in Australia or in the UK or on the continent of Europe, Atari is in charge there.

Gas Powered Games

And of course, the game itself is Chris Taylor’s Gas Powered Games which designed and developed the game. They make the demigods, the maps, the items, etc.  Demigod is their game (i.e. they own it). They are the Stephen King to Stardock’s Del Ray books.

I think most people would agree Demigod is an awesome game. Gas Powered Games is one of the top independent game developers in the industry. You’re talking about total pros here.  If it sounds like I’m a fan, it’s because I am.

My point is that when people have some problem whether it be single player, multiplayer, whatever I will do my best to direct the feedback to the right group.  My default position is that everything is my fault and therefore Stardock’s fault.  But that doesn’t mean we literally coded it. I’m just saying that the buck has to stop somewhere.

However, our ability to exact change is limited by how much of our own resources we can put in to help GPG or Raknet.  Customers of our partners Atari and Snowball benefit from these efforts but I’ll tell ya, I get pretty annoyed when some guy who bought the game in Europe at the store (therefore an Atari customer) is flaming Stardock for whatever problem.  It’s like flaming the fireman for not putting out the fire fast enough.

The Pantheon

The area of pain we’re dealing with this week is the Pantheon. 

Custom game connectivity works very well now and with the updates for this week, they’ll likely reach the point of diminishing returns (i.e. if you still have problems in custom games after this week’s updates, it’s on your end). 

But Pantheon sucks. So does skirmish.  Istari, one of the Stardock developers pulled from Elemental to help on Demigod along with others here have been going through pantheon nonsense all last week and today.

As some of you know (but unfortunately not most people) when things hit the fan with Demigod’s online experience, we brought in developers from Impulse and Elemental to work with GPG and Raknet to get things resolved more quickly. It was a tough call because you don’t necessarily want to have too many chefs in the kitchen but on the other hand, fixing things quickly and well is very expensive and it was either putting the burden on GPG or Raknet and at the end of the day, if I’m making the journals and our name is on the box I feel more comfortable if the people working on it are people responsible to me.  It’s a tough situation all around and everyone is working very hard under difficult circumstances.

Anyway, here’s a typical Pantheon experience:

  1. User hits “Fight”
  2. They wait awhile while the system tries to match them with people of similar skill.
  3. They see 4 people on the connection dialog.
  4. One of them disappears.
  5. They end up in a 2 v 1 game.

Here’s another typical Pantheon experience:

  1. User hits “Fight”
  2. They wait awhile..
  3. They see 4 people
  4. One of them can’t connect back.

Sometimes you get both.

Here’s a report between Jeff and Istari on the subject:

This log finished off with the following:

PlayerName: Istari PlayerID: 11122 SystemAddress: xxx.204.71.133:64840, Connected to: 46966,52623 PendingConnections:

PlayerName: KutsuShita PlayerID: 46966 SystemAddress: xxx.209.39.38:6112, Connected to: 52623,11122 PendingConnections:

PlayerName: F3kay PlayerID: 52623 SystemAddress: xxx.147.232.59:6112, Connected to: 11122 PendingConnections: 46966

KutsuShita and F3kay DID connect. But part of the 2nd-round handshake failed. If you were to lookat F3kay's playerlog, my money is on that you'd see PLAYER_ID_PONG packets in the packet log, but no PLAYER_ID_PONG in the impulsereactor log. = The packets are coming in, but not getting processed.

This is the same problem I've been trying to track down with a couple users by working one-on-one. The problem appears to have to do with ordered packets not all arriving, causing all future messages to not process. There is a SIGNIFICANT chance that this is also the cause of the disconnects-from-faciliator, but I have no proof of that at this point in time.

Additional information about this problem includes that it most open happens to specific players, that other people show connected in their list (e.g. it says they're connected to everyone) but that they sit as "pending" in other people's list.

**My current theory is that their unreliable connection causes permanent packet-loss on some multi-part ordered messages, and once that happens all further messages fail to get processed as RakNet waits for the prior message.

What you see here is one of the problems with debugging a third-party library. We could either send this error to the developer or we can dig into the library’s source code ourselves and try to fix it.  We’ve been increasingly opting for the latter (mainly because for us, time is of the essence and we have a lot of experienced developers in this area who can do this pretty well).

But this gives you an idea of the kinds of things we’re dealing with.  What we find are not “bugs” but scaling issues. So I want to emphasize that we’re not going through other people’s code and saying “Oh, so and so has terrible code!” What we find are simply cases where Dev A didn’t expect Dev B to do a particular thing.

So this is probably more information than you wanted to know but it gives you an idea of the kinds of things we’re trying to help with here. 

Elemental – polishing for Alpha 0

Published on Monday, June 8, 2009 By Brad Wardell In Elemental Dev Journals

image So much going on this week and at the same time, so little. A lot of vacations here at Stardock pop up in June since this is one of the prime months here in terms of weather. 

On a sad note, Trent (Mittens) had his last day today. He’s off to Salt Lake City to take a position as a designer at a new game studio.  We’ll miss him.  Combined with the people on vacation, the studio area feels like a ghost town.

My executive planner and marketing manager gave me a “CEO make over” today with a bunch of new clothes. I guess trade show shirts and ratty shorts just aren’t good enough anymore.

Right now, we’re looking at dozens of issues that need to be addressed before we can even do the alpha build of the game.  Everything from the fonts looking crummy to setting priority on what should be on the setup.

For instance, if someone wants to create a custom civilization and in there choose “good” or “evil” that’s fine. But I’m having them get rid of being able to have pre-existing factions be good or evil because it would literally double the writing involved for each faction’s back story.  While that’s interesting to have, I would rather have more depth per faction rather than half the depth but a mirror universe version of each one.

The screen you see here will likely be significantly altered between now and release. But this gives you an idea of how iterative the process is.  I’ll probably eliminate the appearance area and put that into the custom race area. Right now, “design your race” is the only option. There isn’t a formal “choose your faction” area.  Elemental comes with 2 built in races and 12 factions but we plan to let people create their own races and factions as well, but that should be a separate area that is a lot richer. If you try to mash too much stuff together, it’s confusing to new players but still too weak for experienced users.

I have a new respect for the police

Published on Friday, June 5, 2009 By Brad Wardell In Blogging

So I got a scanner recently (Uniden 396XT) and it’s amazing how professional the police are despite having to deal unbelievably stupid people.

Tonight I had it on and the cops were reporting on a lady who was running down the street screaming (while naked) that she could fly. The police reporting this remained calm, cool, and detached.

That’s an extreme case but they deal professionally with all kinds of crazy or stupid people.

Future House progress: May 2009

Published on Friday, June 5, 2009 By Brad Wardell In Building a home

IMG_6169
Ashley at the house.

IMG_6172

Getting ready to go inside

IMG_6195

The “extended stay” room.

IMG_6190

A look at the backyard.

IMG_6191 IMG_6175

Looking down into the pool room.

 

IMG_6174

Ashley in the “great” room.

IMG_6220

Walking one of the paths into the woods behind the house.

 

IMG_6222 IMG_6225

The little apple/pear orchard that’s deep in the woods.

 

IMG_6212

Ashley and Debbie on the far left looking on the back of the house.

IMG_6236
Ashley and I walking in the “orchard”

 

IMG_6231
I think this is a pear tree but I’m not sure.

 

IMG_6226
Now I can finally say I have a Macintosh.

 

IMG_6194
Ashley looking out her future bedroom window.

 

IMG_6221
Another path going the other way.

 

IMG_6211
Looking behind the house.

 

Can you be an environmentalist but be a global warming skeptic?

Published on Friday, June 5, 2009 By Brad Wardell In Politics

One of the sites I hang out on is called TreeHugger.com.  People who know me in person know that I’m pretty into helping the environment.  However, I just don’t find the evidence of humans materially affecting the climate to be persuasive.

Most of the discussions are about things like making your home more energy efficient or how to improve your local environment.

But every now and then, you get a global warming discussion and the militancy of the global warming advocates comes out. 

For example, one post entitled “How do we get through to these people?!” discusses the frustration they have in convincing people of the need to pass legislation that drastically reduces our carbon footprints because of the way carbon is affecting climate (in their opinion).

After numerous people responded pointing out how dumb the average person was and that was the reason I came on and wrote:

The reason so many GW advocates get the cold shoulder is because of the sheer arrogance many of them show. The GW issue is one I've followed since before it was remotely mainstream (like many here I presume) and there's nothing more aggravating than having some family member see 'An inconvenient truth" and then have them talk down to me as if they suddenly became climatologists because they watched a movie.


I think the best path is simply to try to get people to want to reduce their footprint (Carbon or otherwise) on the earth's resources. But having people who really are often come across as being brain washed insulting people who are skeptical or disagree (I mean really, how infantile is it to call people like me "climate change deniers" as if we're akin to holocaust deniers).


Incidentally, during the little ice age, heads of state officially blamed witchcraft as the cause of the earth cooling. Humans have always believed that they had the power to control the weather whether it be from gods or controlling CO2 emissions.

Another user had then come on and said that the environmental movement needs to combine its efforts to get effective legislation passed:

My proposed solution today is to bring all the fractured factions of the environemntal movement under one umbrella and provide a warm welcome for converts to join in and participate with a grass-roots effort that allows them to buy-in to it. This may be accomplished by clearly demonstrating affordable and viable sustainable energy solutions and other ways to save money at home with energy efficiency in the short run that offer them immediate returns. In essence, such an effort involves buying the hearts and minds of the people, which is a common business ploy many comapnies use today to gain a customer base.


Then, with a ground-swell of support in shear numbers that can't be ignored, a meaningful lobbying block may be created to rouse the attention of Congressional leadership. Finally, the entire effort must have a feeling of inclusion and provide the necessary money motives that converts and supporters alike can appreciate. It may be high-time to put aside self-righteous indignation and environmental snobishness that serves no purpose in fulfilling our unified goals.

I responded by saying:

The problem is that there is no homogeneous environmental movement. I consider myself an environmentalist but am extremely skeptical about human induced global warming. And I'm not alone. Most of my colleagues who have a similar technical or scientific background are skeptical as well. That doesn't prove anything other than to say that there's a lot of people who fall into my category of being environmentalists but don't think humans are materially affecting global temperatures.


In my opinion, having the government force us to do things "for our own good" is tyranny whether it's in the name of "security" or for "the sake of our planet".

Moreover, environmentalists often strongly disagree on solutions or are totally impractical. Wind energy and solar energy, for instance, won't do the trick any time soon. But try to build a nuclear power plant (0 emissions) and suddenly they get creamed by the envirnomental movement (either reducing our carbon foot print is life or death or it's not - clearly it's not to a lot of people in the movement).

A user responded to this and my other post by saying:

Ultimately it doesn't matter what anyone believes about Global Warming, it's going to happen regardless of what anyone believes about it, and believers and deniers alike will suffer the effects alongside each other. Being a denier simply makes a person appear less intelligent in the meantime.

In other words, because I’m a “denier” I just appear less intelligent.  He went on and said:

Well one thing we've learned is that denialists haven't actually looked at the same data. While we look at data put out by NASA, NOAA, USGS, and other scientific research groups, we've noticed that denialists get their data from oil industry lobbyists, and while some of the data is the same, the data they give has been cherry picked to leave out the data which makes it clear that A: rapid climate change is happening, and that B: human activity is a primary factor.

So you see, if you don’t believe in global warming, you're just not intelligent or you’re brainwashed by big oil.