Phil Dreizen

In The Name of Love

Thompson Twins: In the Name of Love

http://youtu.be/BsbBEfjyQT8

I can't believe it, I actually heard this song playing at a store today. I was blown away.

XML and JSON are for TRANSPORT

I repeat: XML and JSON are for transporting data.

Just because you received data in XML or JSON form does not mean you need to continue examining, retrieving, and accessing that data in the format your program received it. You do not need to continuously parse your JSON and XML, you do not need to keep traversing your DOM object.

What you should do is work with XML and JSON (and whatever other format for transporting data) in your endpoints only. Take the XML/JSON you receive and turn it into data structures appropriate for you language. Turn it into primitives, into objects, into arrays and maps of primitives and objects. But DON'T KEEP IT AS XML OR JSON!!!

Code that isolates the transport format will be better for several reasons. The code that actually processes your data will be agnostic to whatever transportation formats that are available. If you later need your system to receive or transmit a new data format the code that does the actual processing will not need to be modified. Instead, the code at your endpoints will just need to be able to turn NEW_TRANSPORT_FORMAT into native data structures, and native data structures back into NEW_TRANSPORT_FORMAT. The code will also be easier to read. You won't find yourself in weird XML processing land, or constantly dealing with JSON parse exceptions land. You'll be in completely normal for your language land. This is especially true for XML, which can be especially painful to work with. But it's true for JSON too.

When it comes to the serialization and deserialization of data in binary formats, programmers don't make this mistake. No one would think to deserialize binary data multiple times for the sake of accessing their data. It's almost absurd. You deserialize your binary data once after receiving it, and serialize it once before transmitting it. But when it comes to marshalling and unmarshalling data in XML,JSON this mistake seems to happen often enough. (Never seen it happen with CSV data. Maybe it's TOO painful to work with?)

</RANT>

Advanced Civilization - A Review

Update: With minor differences, this review has been posted on BoardGameGeek

Advanced Civilization is the 1991 expansion to the original, and father of all Civlization games, Civilization. The base game and expansion are long out of print, the expansion going for hundreds on ebay. It's greatest innovation is the technology tree, a mechanic that has appeared in many games since (I was first introduced to it via the Sid Meir's Civilization which borrowed heavily from this game.) Here is my review.

Review

Being a huge fan of the Sid Meir Civilization computer games, a recent desire to play some epic games, and given this game's reputation (and high price point!) I was very excited to get a chance to play this game. After buying the original Civilization on ebay, printing out the components for Advanced Civilization, and a month or so of planning I finally got to play.

Overview of the game:

I won't go into much detail about how to play - the BGG video tutorial does a very thorough job of that. But here's a very light overview. There are two primary aspects to this game. Managing your ever increasing population, and trading for goods. Each round you spend time moving your population around the map -- trying to either maximize growth, curtail growth and/or create cities. You create cities primarily to gain trading cards, meet requirements on the AST, and oftentimes to move your population off the board into stock. You can initiate conflict in this phase, but the game doesn't reward all out war, so most of the conflicts are small "border skirmishes." Population pressure does lead you into conflict even if you aren't seeking war! Often times you fight just to send your units to their deaths (and into the stocks).

In the trading phase, you're trying to collect sets of goods. Trading is the most important portion of the game. The points you score here are used to buy tech cards, which besides giving your civilization useful bonuses, also provides the points you need to win the game. The game has unique trading rules in which you must trade at least 3 cards, but you only have to guarantee 2 of the cards are what you say they are. Some of the cards you'll be lying about, and receiving, are calamity cards which will cause a lot of grief to your civilization. This is the phase to gain points and screw the other players.

Because of calamities, you'll be spending a lot of time in the game watching your cities getting destroyed, changing hands, and populations getting wiped out. The game is full of what appears to be wild swings. But the quick population growth allows for fast recovery.

After that it's back to population growth...movement...trading...rinse and repeat.

Impressions:

I thought the way that increases of population led to a pressure to have conflict at the borders was really innovative and cool, and I've never seen any other game that did this. It marries game mechanics with a common theory about one of the historical causes for war quite well. In Sid Meir's Civ by comparison, population goes up in individual cities and the only pressure it causes is a need to increase the happiness level.

The tech tree in Advanced Civilization is its greatest innovation. I haven't played enough Civ-type board games to say how it compares to modern versions of the tree. I do like the video game versions better, but I think Adv Civ beats Sid Meir's Civ: The Board Game. The discounts are a pain to keep track of, but it beats the pyramid method (which, admittedly, is much easier to work with).

Conflict resolution is elegant and simple. It also makes war a very unattractive option even when you feel the pressure to do it, which I like a lot. Each side of a battle takes heavy losses regardless of who wins. But there is no character to your units. They're all the same, and there is no feeling that your units are becoming more advanced as your civilization advances. Yes there are tech cards like Metalworking/Engineering/Military that make you better at fighting, but it's bland compared to having different unit types.

A big strike against the game is that cities are so ephemeral, coming and going in and out of existence. My cities never felt like cities - nothing I was ever personally attached to. They only felt like a method of getting more trade cards, and occasionally methods of going up the AST track. No sense of grandeur, which I want an ancient Civilization game to evoke about ancient cities. This is something Sid Meir's Civ games really got right: cities with names, that grow, with their own character and specialties.

Trading in the game was unique, and the cornerstone of the game, but it seems to be the only really important decision to be made in the whole game. Winning the game hangs on the ability to trade well. I don't want that from a Civ game. Trading would, ideally for me, just be one method by which to get ahead in the game. The whole win shouldn't basically hang on it. (Granted, what techs to get is also an important decision, but it seems like there are clear paths to take up that tree, mostly to get points for the civics at the end game. Mining is a clear winner too, to boost the points you get in the trading phase).

I have mixed feelings about calamities. I think they feel much more brutal than they really are. But maybe they feel too brutal to be enjoyable - though it did lead to a lot of table talk, and entertaining moments. I wonder how playing a variant in which you can never be hit by more than 1 calamity at a time would work.

Summary:

Theme: This captures a lot of the epic feeling you want from a civ game. But cities never felt like anything more than trade card generators. Population growth pressure was an interesting theme I've never seen explored in other games. Trading of calamities is supposed to model cultural influences caused by trading having destabilizing affects, but it never felt like that. It felt like getting screwed, or like bluffing someone else. That said, the trading did feel a bit like being in a bazaar, which might have been intentional.

Mechanics: The population growth and pressue as mentioned is unique and awesome, and I'm more impressed by it than anything else. Trading is also unique and very fun. Of course, the most lasting innovation of the game is the tech tree. War is elegant, but too simple to offer much tactical possibilities.

I should mention that this game is WAY fiddlier than most modern games. And it requires a LOT of counting. Each turn you have to count your population for the census, and count your support for your city two times a turn. You have to do a lot of calculating to determine your discounts for your techs. It does get wearisome after 8+ hours.

Complexity: It's much simpler than one would expect from a game of the era. A modern rule book that didn't read like a legal document would probably do a lot to make the game less intimidating.

Depth: On one game I'm not qualified to say. But my impression is that a person can learn the optimal tech options within a few games. The real skill is in the trading.

Confessions:

1) we were actually playing a variant in which you can but from any trade stack, just not 9. (ie you could buy a level 5 for 10 chits from your treasury.)

2) after more than 10 hours of playing we did not finish the game. We were bumping up against the 1300 point limit in the AST as we decided to end the game. It was essentially clear who was winning. (Not me, if you're curious).

Conclusion:

Ultimately I enjoyed the game. It works as much as an "experience" as it does a game. In spite of taking more than 10 hours for us to play, and in a lot of ways getting repetitive, the time mostly flew. (I remember the shock we felt at the 5 hour mark). That said, it surprisingly lacks some of the elements I'm looking for in a Civilization game, given that it is the father of the genre. I *DO* plan to play again. Which says a lot about a 8+ hour game.

Hope reading this didn't take as long as playing Advanced Civilization!

return

It sure is quiet around here! I pledge to return to getting at least 1 thing posted here a week. And this post doesn't count -- it's just practice.

tags: kupad.net
qotd

"There are physicists," Lauger explained, "who claim to understand this the same way they understand what stones and cupboards are. What they understand, in fact, is only that a theory agrees with the experimental results, with measurements. Physics, my friend, is a narrow path drawn across a gulf that the human imagination cannot grasp. It is a set of answers to certain questions we put to the world, and the world supplies the answers on the condition that we will not then ask it other questions, questions shouted by common sense. And common sense? It is that which is understood by an intelligence using senses no different from those of a baboon. Such an intelligence wishes to know the world in terms that apply to its terrestrial, biological niche. But the world - outside that niche, that incubator of sapient apes - has properties that one cannot take in hand, see, sniff, gnaw, listen to, and in this way appropriate."

--Lauger, Fiasco by Stanislaw Lem