A General’s View – Rules (Alpha Version)

Author’s Note: I’ve been rather preoccupied with other things at the moment, including the Rugby World Cup and getting to work on my final-year college project. With respect to the latter, the following post illustrates some of the work that I have had to do for this project.

An industrial era turn-based strategy game for 2 players.

Section 1: Play Rules

  • The game is played between two players, one who is identified as the red player and the other who is identified as the blue player.

  • The game is played on a square grid, called the battle map, where each square on the grid has one of three states of ownership: neutral (or no ownership), owned by the red player, or owned by the blue player.

  • At least 2 of the squares on the battle map are identified as –city– squares. The same ownership rules apply for these squares as any other squares.

    • Each player starts with an equal number of the city squares on the map, where the number of city squares owned by a player at the start of the game is at least 1.

    • A player wins the game when all city squares on the map are owned by that player.

  • The game is played in turns, where one of the two players acts and is referred to as the acting player, with the other player referred to as the opposing player. At the end of their turn, the current opposing player becomes the acting player and vice versa.

    • Before the game begins, both players roll a 6-sided dice. The player who gets the highest value on the dice chooses whether they wish to act first or second. If the value rolled on the dice by both players is the same, the players reroll the dice until the values that each player receives are different.

  • The ownership of the squares on the map is contested by units controlled by each player.

    • A unit is a single game entity representing a company-sized group of 100 soldiers of a specified type and represented by a single game piece.

    • A unit possesses several characteristics which will be discussed in more detail below: ownership, cost, attack value, defence value and movement points.

    • Units may be put into play on a player’s turn. In order to put a unit into play, they must pay the specified cost for that unit type and then place that unit on one of the city squares which they own. The player who put the unit into play is its owner.

  • Each player starts with a predetermined and equal amount of gold, which is called their total gold value.

    • Gold is used to pay for new units, with the cost of each unit specified in gold and subtracted from the total gold that a player possesses when that unit is put into play.

    • If the cost of a unit is greater than the total gold possessed by a player, they may not put that unit into play.

    • Each city square on the map has a specified gold generation value which is determined before the start of the game. This is used during the gold collection phase of a player’s turn, discussed below.

  • Each player’s turn is composed of four phases: Gold collection, unit movement, attack and cleanup.

    • During the gold collection stage, the acting player adds the sum total of all of the gold generation values of the cities which they own to their total gold value.

    • During the movement phase, the acting player may move any number of their owned units (including zero units).

      • A unit may be moved a number of squares adjacent to each other horizontally and/or vertically across the battle map. The number of squares that a unit may be moved is determined by the unit’s movement points, which represent a unit’s movement capability in a single turn. For each square that a unit is moved, 1 point is deducted from the unit’s movement points for that turn if the square into which the unit is moving is either not owned or owned by the acting player, while 2 points are deducted if the square into which the unit is moving is owned by the opposing player. A unit may move any number of squares horizontally or vertically until they do not have enough remaining movement points to move into any adjacent squares. These rules are illustrated in Figure 1.1.


Figure 1.1: For a unit with three (3) movement points, the green squares represent squares into which the unit can move during one turn if the squares are either not owned or owned by the unit’s controller. The squares marked with yellow crosses represent squares into which the unit can move if the squares are owned by the opposing player. The red squares represent squares that are always outside of this unit’s movement range for this turn.

      • If a unit moves through a square which is not owned by the acting player and which contains no units owned by the opposing player, the ownership of that unit is transferred to the acting player.

      • If a unit moves through a square which contains one or more units owned by the opposing player, the unit may move no further squares during that turn.

    • The attack phase involves all squares in which units owned by both the acting and opposing player are present.

      • For each square containing units owned by both players, the acting player selects the unit in that square which they own with the highest attack. The opposing player selects the unit in that square which they own with the highest defence. If two or more units owned by either player has the same attack or defence value respectively, they may choose any of the units with that value.

      • The attack value of the acting player’s selected unit and the defence value of the opposing player’s selected unit are added together. This value is referred to as the reference value.

      • A suitable random number generator or fair pseudorandom number generator is used to generate an inclusive integral value between 1 and the reference value. If this value is below or equal to the attack value of the acting player’s unit, that unit wins and the opposing player’s unit is removed from the battle map and from the game. Otherwise, the opposing player’s unit wins and the acting player’s unit is removed from the battle map and the game.

      • If the acting player’s unit wins, the opposing player selects the unit in that square which they own with the next highest defence. Otherwise, the acting player selects the unit in that square which they own with the next highest attack.

      • The above steps continue until all units remaining in that square are owned by a single player. If that player does not own that square, the ownership of the square is transferred to that player.

    • During the cleanup phase, 1 supply point is subtracted from all units owned by that player and not currently receiving supplies as per the supply point system, described below.

  • Each unit when created starts with 3 supply points, representing ammunition, provisions and other military supplies.

    • A unit receives supplies every turn if there is at least one adjacent square owned by that unit’s owner and if, from that square, an unbroken, direct line can be drawn in horizontal or vertical steps from square to square in a manner similar to unit movement to a city owned by the unit’s owner. This is illustrated in Figure 1.2.


Figure 1.2: In the first example, there are two squares adjacent to the unit which are owned by the unit’s owner. From both of these squares, one can trace a direct line in horizontal or vertical steps from square to square to a city owned to the unit’s owner. In the second example, there is one square adjacent to the unit which is owned by the unit’s owner; however, as one cannot draw a direct line from this square to a city owned by the unit’s owner, it is not supplied through this square. Similarly, the squares to which direct lines can be drawn from the city are either not adjacent to the unit or are not owned by the unit’s owner and therefore the unit is not supplied through these squares.

    • A unit that does not receive supplies at the end of the unit owner’s turn subtracts 1 from that unit’s current supply points until the number of supply points for that unit is 0.

      • A unit which has 0 supply points is treated as having an effective attack and defence value of 1 rather than its usual values until it receives supplies again.

    • A unit that receives supplies at the end of the unit owner’s turn does not subtract from that unit’s supply points and if that unit has less than 3 supply points, it adds 1 to its number of supply points.

Section 2: Unit types

  • Militiamen: Poorly armed and poorly trained, this unit represents an impromptu group of irregulars, such as a volunteer town militia or a set of conscripts pressed into action.

    • Cost: 50 gold

    • Attack: 2

    • Defence: 2

    • Movement Points: 5

  • Line Infantry: The core of an early industrial era army, line infantry represent a significant step up from militia, being drilled to stay in lockstep along rectangular formations designed to present a coordinated line of fire to the enemy. With their discipline and morale, they present a strong defensive line.

    • Cost: 100 gold

    • Attack: 2

    • Defence: 5

    • Movement: 5

  • Skirmishers: This infantry unit forms looser formations than line infantry and, armed with more accurate muskets than other units, their goal is to harry oncoming formations and break their coordination by attacking their officers. However, their loose formations can also represent a weakness, as a committed and concentrated attack can easily divide them into units too small to effectively fight back.

    • Cost: 100 gold

    • Attack: 5

    • Defence: 2

    • Movement: 5

  • Hussars: A type of light cavalry, hussars are most regularly used for reconnaissance and raiding, but can, if an opportunity arises, attack effectively against a vulnerable and coordinated foe, using their sabres to great effect. Lacking armour or long-range weaponry, hussars lack the ability to effectively defend themselves if they are outmanoeuvred.

    • Cost: 120 gold

    • Attack: 4

    • Defence: 2

    • Movement: 7

  • Dragoons: More like mounted infantry than true cavalry, dragoons ride to battle but will usually dismount when the fighting starts, forming a rectangular formation similar to line infantry and attacking with their shortened carbines. Not as effective as line infantry, but able to provide support where necessary, dragoons can, nevertheless, be used as cavalry in a pinch.

    • Cost: 120 gold

    • Attack: 2

    • Defence: 4

    • Movement: 7

  • Lancers: While the style of lancers may have changed drastically from the armoured knights of the medieval era to the altogether more lightly equipped troopers of the industrial era, the lancer has lost none of its potential to destabilise an entire front if used properly. With a devastating attack that can shatter enemy infantry formations, lancer squadrons represent the shock troops of the age, but are no less susceptible than any other light cavalry unit.

    • Cost: 160 gold

    • Attack: 6

    • Defence: 2

    • Movement: 7

  • Cuirassiers: The elite of the battlefield, cuirassiers are one of the few armoured units on the industrial era battlefield. Wearing a metal breastplate and backplate, the armour of a cuirassier does little to protect him against musket shots or artillery, but provides an extra layer of defence against sabres or bayonets. Slower and more cumbersome than other cavalry units, cuirassiers nevertheless possess an élan which can be hard to overcome.

    • Cost: 160 gold

    • Attack: 5

    • Defence: 3

    • Movement: 6

  • Artillery: The so-called “King of Battle”, artillery batteries have the biggest guns with the greatest power. Used effectively, an artillery strike can have terrifying effect, smashing through infantrymen and cavalry alike. However, its immobility – even with the use of horse-drawn limbers and caissons – means that it is particularly susceptible to attack if not appropriately protected by other forces.

    • Cost: 120 gold

    • Attack: 10

    • Defence: 1

    • Movement: 3

Why I’m not a big fan of present-day television

There’s a strong argument for saying that television is currently going through a Golden Age of Drama, with such shows as Breaking Bad, The Wire, Mad Men, Boardwalk Empire, Sons of Anarchy and Game of Thrones becoming the office-talk fodder and media darlings of the last few years. It is interesting that this has come at a time of transition for the television industry; after a period which I would consider a nadir for TV with the rise of reality television in the late 1990s through to the late 2000s, as television executives recognised the decreased costs of these shows versus scripted drama, new technologies including streaming and new writing methodologies have forced studios to adapt to a changing television market, leading in some cases to some huge critical and commercial successes. It seems somewhat peculiar, therefore, that even with all of these critically acclaimed shows going around, I have less tolerance for television now than I might have had ten years ago, when television was going through a slump.

At present, I watch very little television and the little that I do watch has almost all been on British television stations. I watch a moderate amount of sport – Formula One, rugby union, association football, motorcycle road racing including the Isle of Man TT and some other sporting events here and there – along with Doctor Who, Top Gear (I’ll give the new formula a try as well) and strangely, Downton Abbey. Of the much lauded television shows I listed above, I have only watched a single one at all, Breaking Bad, with part of the reason for that being because as a former chemistry student, I wanted to see how the chemistry played into the story.

The majority of the television shows that have come into public prominence recently have been American, which is relevant, as there are a number of significant differences in the way that American programmes are made versus British programmes which causes me to favour British shows. Probably the most significant of these differences is the number of episodes produced per British series versus an American season and consequently, how long many British shows will run versus their American counterparts. A British television series will regularly consist of four to six episodes, with the shows often wrapping up after two to four of these series. In comparison, an American television series will regularly have at least 13 episodes per season, with 20 to 26 more common, while six or more of these seasons is not rare for a successful show. While shows like Breaking Bad, The Wire and Sons of Anarchy have typically stuck to a 13-episode season, this is still long by comparison to most British contemporaries.

There are a number of reasons for this disparity, including the much smaller writing teams on British shows – perhaps even a single writer for a whole series – along with the economics of syndication and advertisement space, but whatever the reasons, an American programme will regularly be more of a time sink than a British show. With considerably more content to go through and much more of it filler, I’m reticent to watch an American show until its run is up just so that I make sure that I don’t end up throwing my time into a programme which shows early promise, but trails off near the end because the writers wrote themselves into a hole and couldn’t dig themselves out. This, of course, increases the chances of being hit by spoilers.

Even in the case of the shows that do remain consistent to the end, the sheer bulk of most of the American shows makes me reluctant to face the prospect of what may be 40 hours or more of viewing unless the show is going to be a phenomenon in the vein of The Sopranos or M*A*S*H or the like. I am not a natural binge-watcher; I only have tolerance for about two hours of television at a time and that’s when I’m in a mood to watch it. Given that in the time it takes to watch an entire American show, I could complete at least one decently-sized video game, most of the time, I’d rather do that and have the sense of achievement.

The disparity between British and American television is most starkly seen when American television networks, for some reason or another, decide to remake a successful British show. For me, the most risible example of this was The Office, which in the American remake had a frankly obscene nine seasons and 201 episodes. The British version? Two series, 12 episodes plus three specials. This is an interesting case since the creators, writers and producers of the UK version, Ricky Gervais and Stephen Merchant, were heavily involved in producing the American version and while I frankly can’t fault them for being tempted by the fat stacks of American currency they must have been offered, I think this is a cautionary tale for how elephantine an American show can get even when based on a tightly written British concept.

The Office is also notable because it illustrates how much more willing the British television producers are to cast people who look much more normal and down-to-earth than the Americans. In British shows, you’re more likely to see people who aren’t necessarily conventionally attractive, while in American shows, with the exception of a few people made to look “Hollywood ugly”, if you don’t have straight, sparkling-white teeth and perfect skin, you can forget about being cast. Then again, this manifests itself in the different senses of humour in British and American television; British shows tend to be bleaker, with far more self-deprecation and dry wit compared to the more blunt, bombastic affairs on American television.

I’ve identified why I’m not particularly inclined to watching the big American television shows of the moment, yet I don’t have time for much British television either right now. While I might be more inclined here and there to pick up a new British show off the cuff, I still don’t go out of my way to find new shows on British networks either. A lot of what has made British television interesting in the past is at risk of slowly fading into non-existence. British television – on the terrestrial end at least – has traditionally revolved around a small number of stations. Two of these, BBC One and BBC Two, are run by the British Broadcasting Corporation, which is almost unique in its largely non-commercial funding system, being largely funded by British taxpayers through the use of a licence tax. There are no advertisements on BBC television; in fact, there have been – which may still apply – some very strict rules on the use of brand names and product placement on the BBC channels in the past. The other stations, including ITV and Channel 4, are more traditionally funded through ad breaks.

Recently, there has been somewhat of a public backlash against the BBC, catalysed in part because of the very licence fee that sustains it. There has been criticism of the licence fee in the past, but such criticism was difficult to sustain when the BBC were making shows which people considered worth the price. However, the BBC has been hit as hard with the reality television bug as many other networks, which has removed a lot of its unique character. As well as that, the current politics of the United Kingdom have not helped the BBC’s case; the leading Conservative Party and in particular, its leader David Cameron have been closely linked to Rupert Murdoch and his media empire, which among other things includes BSkyB, Britain’s largest commercial satellite television provider, along with several newspapers including the Sun and the Times. Murdoch serves to benefit if the BBC gets defunded. Given Murdoch’s influence over the Conservative government, this has the potential to create a vicious circle, where as the funding for the BBC diminishes, the quality of the shows the BBC can put forward diminishes correspondingly and in turn, the case for keeping the BBC publicly funded grows weaker.

I happen to quite like the advert-free structure of BBC television, which not only doesn’t have awkward breaks in between the programs, but leads to more actual content per hour as well as a place where commercial enterprises can’t apply leverage to censor content that they don’t like. This was important when it came to Top Gear, where the now-departed trio of Jeremy Clarkson, Richard Hammond and James May could openly criticise various cars without having to worry about losing funding from automotive companies. In an increasingly partisan news environment, it would also be nice to see a more impartial news broadcaster, a role which has been fulfilled well by the BBC before and could work again given a few tweaks – as long as the BBC doesn’t have to buckle under pressure from Rupert Murdoch and his Conservative buddies.

What I can say about that matter at least is that if the BBC are forced to adopt a commercial model, whether by advertising or subscription, I will probably stop watching television altogether. The alternatives, which include overlong, filler-heavy American shows at best and a lot of things that are much worse, isn’t worth the cost of admission.

World War II Grabbag: Hearts of Iron III & Il-2 Sturmovik

Over the past couple of weeks, I’ve been indulging in a few of my recent purchases from the Steam and GOG.com Summer Sales. Among these have been two games set in World War II, namely Hearts of Iron III and Il-2 Sturmovik. While I haven’t played either game enough to fulfil my criteria when it comes to reviewing them (both games have a campaign mode, which I haven’t completed in either case), I’ll give you my first impressions of the games. While the two games are in very different genres – Hearts of Iron III is a “real-time-with-pause” grand strategy game, while Il-2 Sturmovik is a combat flight simulator, the games share at least one element aside from their historical setting: They are both very involving and extremely complex.

To start off, Hearts of Iron III, developed by Paradox Interactive and part of their collection of grand strategy games, including the Crusader Kings and Europa Universalis series, places you in the role of leader of a country between 1936 and 1948, encompassing the years between Nazi Germany’s reoccupation of the Rhineland and the start of the Cold War. World War II is an inevitability, but it doesn’t need to turn out as it did in reality and the game allows you to explore possibilities like France never falling to Germany, an expansionist United States joining the Axis – or, if you want to go really bizarre, the Comintern – and using their industrial might to take Central America, or Germany forming its Greater German Reich and holding Europe firmly in its grasp.

The game is based around three factions, the Allies, Axis and Comintern, who fight for victory points, which are based around the world map and correspond to important cities and regions. The Allies naturally attract democratic nations, the Axis naturally attract nations under authoritarian governments such as fascism and national socialism, while the Comintern attract socialist and communist nations. Through a combination of military might and diplomatic influence, the three factions attempt to attract new nations to their cause or to subsume them into their own structure, bolstering their claim upon the world. However, a conquered nation may choose to resist, forming a government-in-exile, awaiting assistance from their allies.

The world map encompasses most of the world’s surface, with the exception of Antarctica and the Arctic Circle, both of which are militarily useless at that point of time. The map is subdivided into regions, some of which are more important than others due to their population, resources, industrial capacity and so on. The most important regions are denoted by the aforementioned victory points, which, when conquered, adds those victory points to the total of the faction of which that nation is a member (if any) and also bring the nation whose region has been captured closer to surrender.

However, you can’t just declare war on whoever you like, as your ability to wage war is limited by the wills of your population, which is represented in three ways: your national unity, which represents how closely the people of the nation identify with the nation as a cause; your neutrality, which represents how willing your population is to go to war and the threat posed by various other nations. If your neutrality is too low compared to the threat posed by another nation or the threat posed by you to the other nation, you will be unable to declare war, while if your national unity is too low, you will be unable to follow political policies aimed towards military mobilisation. However, if your country is already at war, some of these policies can be put into place despite low national unity or high neutrality – and typically, when two factions go to war, all of the constituent nations of those factions will wage war against each other.

To progress in the game, you have to balance multiple different facets of your country’s policies, including the deployment and movement of your country’s military forces, looking after the industrial elements of your country, including balancing military production, reinforcement, production of war supplies and consumer goods, diplomatic engagement with other countries and espionage and counter-espionage. As mentioned above, the game is very involving with all of its various facets to be managed. This is harder for nations who have to fight on more than one front at a time, in particular the United Kingdom, whose territories overseas are at just as much risk of invasion as their domestic territories and the Soviet Union, whose expansive territories are thinly reinforced to begin with and who will have to pick their battles intelligently. I recommend starting off with either a nation who will play a small, but important role as part of a faction, such as Canada or South Africa, or a small, neutral nation who can join a faction at their will, such as Ireland or one of the Central American nations.

While the game is rather abstract in various ways, with entire military divisions being represented by a NATO-style symbol on the map, there is plenty of complexity even at that level of abstraction. Industrial capability is represented by a figure called Industrial Capacity, which affects how many military units can be produced, upgraded or reinforced at any one time, along with how many supplies can be produced to feed and arm your troops. Some of that industrial capacity has to be used to produce consumer goods to keep your citizens happy and productive. Industrial capacity can only be maintained with sufficient levels of various resources, like Energy (representing fuels like coal and peat), Metal (steel, aluminium, etc.) and Rare Materials (such as gold, rubber, phospates, etc.). Often, your country will not produce enough of these resources by itself, necessitating trading with other nations. Trading requires the Money resource, a certain amount of which is produced in the country itself, but which can be attained more quickly by trading your surplus resources to other countries.

On the battlefield, troops require supplies and fuel to be provided to them in order for them to be able to fight in enemy territory as well as to fight at their optimal capacity. This requires sufficient infrastructure to be built along the supply train so that the supplies can be delivered in a timely fashion, while enemy encirclement can cut you off from supplies apart from those that can be foraged from the region in which your units reside. However, supplies can be airlifted in using transport planes, but transport planes are vulnerable to enemy interception. Battles are waged on land, in the sea and in the air between different units, which are strong in various areas (and in the case of land units, in different terrains), but weak in others. All of this is before the construction of fortifications, radar stations, additional factories, et cetera, or the development of hierarchical military structures from divisions to corps to armies and army groups. Needless to say after the above summation, there are a lot of things to be taken care of, requiring a lot of attention and care.

While you can choose to have various elements of the gameplay controlled by the game’s AI, which does help with the complexity when you’re starting off, the AI can be inclined to make decisions that are at the least slightly boneheaded. This very style of game appeals most to the sorts of people who will find that anathematic in any case and it is that sort of person – the person who would be known as a “grognard” in tabletop wargaming spheres – that this game will appeal to the most.

Il-2 Sturmovik, while in a very different genre, also displays a level of complexity and detail which can be breathtaking in both the positive and negative connotations of the word. Designed by 1C:Maddox, a Russian developer which was a constituent part of 1C Company, one of Russia’s largest independent game developers and publishers, Il-2 Sturmovik focused originally on the Eastern Front of World War II around the eponymous Soviet ground attack aircraft, but over the course of time has amassed several expansion packs which have taken its scope way beyond its original premise, to the Finnish Continuation War of 1941 to 1944, the war in the Pacific Ocean and even to the Western Front in the speculative 1946 expansion pack, which simulates various late-war experimental aircraft that never made it to production.

While, as with Hearts of Iron III, Il-2 Sturmovik can be made easier by adjusting the options to your liking, the ultimate aim of the game is to be an uncompromisingly hardcore combat flight simulator, feeling as close to the real deal as possible with the technology available and it feels a little like cheating to deny the game that chance by turning off the simulation elements. The game is set at a time where, unlike today’s modern combat planes, whose computerised fly-by-wire systems make them relatively easy to fly and the challenge is in figuring out the avionics, even the best planes had vices and few aircraft approximated the legendary performance of a Spitfire or an Fw 190. In this game, a lot of the challenge is in getting the aeroplane to behave itself even in normal flight, let alone when you’re in a tight dogfight with an enemy plane on your tail.

The flight model in Il-2 Sturmovik is very impressive, capturing the little details which make various planes different, including the tendency for early-model Spitfires to cut out under negative G, the poor low-altitude performance of high-flyers like the P-51 Mustang and MiG-3 and the poor manoeuvrability of several of the heavier aircraft. You also have to manage the state of your plane during flight, with engines that can overheat when they’re kept on full power for too long and excessive stresses on the frame leading to handling difficulties. The planes are all modelled accurately inside as well, with cockpit visibility sometimes becoming a concern with some fighters including the Bf 109 and Hurricane variants.

While the general flight model is a treat to behold, it is in combat where the game really excels. The game really depicts the challenge of taking down even the slowest aircraft, like early-war bombers and transport planes, especially when you have a stream of tracer rounds coming at you from multiple angles. Different parts of the plane react differently when hit, with aileron, elevator and rudder controls that can be damaged, fuel tanks that can be set on fire or even made to explode and engines which can end up splattering oil over your windscreen or with their cooling systems damaged. An engine that’s been hit doesn’t just always catastrophically fail either; you can often feel the gradual loss of power and hear the whining of a failing engine as it slowly succumbs to its damage, necessitating a good deal of care if you want to get back to base in one piece. The pilot can also take damage, with injured legs and arms affecting flight performance and the possibility of bleeding to death.

While I’ve been very impressed from what I’ve seen in the game, I do have one particular complaint about Il-2 Sturmovik, in that the number of expansion packs and the dated UI make it difficult to figure out where to begin. There are numerous missions and campaigns available in multiple air forces along with a quick mission creator and a comprehensive mission editor, but the game doesn’t really direct you to any one of them at this point of time – well, aside, maybe with the title and original premise of the game.

Another minor niggle is that while everything else in the game is depicted with astounding accuracy, starting up your plane involves nothing more than a single button press, which to anybody who knows planes, doesn’t hold true for even the simplest general aviation planes, let alone World War II warbirds. I’m a little more inclined to let that slide than the UI problems, though, since given the number of different planes and the differences in starting all of these up, most people would just get exasperated trying the complex procedures to get various planes going. Il-2 Sturmovik isn’t a study sim, after all.

I’ve got about 60 hours played in Hearts of Iron III and just over 10 hours in Il-2 Sturmovik, but I predict that I’ll get plenty more hours out of both games. The complexity in both games means that I’ve got a lot to learn and a lot of potential left to exploit.

Tropico – A Retrospective Review

Developed by PopTop Software and released in 2001, Tropico is the first of the eponymous series of construction and management simulation games in which the player takes the role of leader of a Caribbean island, building its economy up from humble beginnings, all while trying to keep the population happy – or at least happy enough not to revolt. Set in the Cold War, Tropico combines its construction and management game mechanics with a tongue-in-cheek sense of humour and perspective on banana republics, where the United States and Russia act as mostly unseen forces who will invade if they are suitably dissatisfied and where a certain level of corruption is not only tolerated but expected – including funnelling money to your own secret Swiss bank account as a nest-egg for your retirement, whether that’s by choice or by forcibly being made to retire.

There are two different types of game in Tropico: pre-determined scenarios whereby you have particular constraints on your activities, along with a random map generator where you can set various characteristics of the island and the conditions in the game, like how strong the economy is, the political stability of the island and so on, with a corresponding bonus multiplier to your end-of-game score based on the difficulty. With the expansion pack, Tropico: Paradise Island, there are about forty different scenarios, with conditions ranging from an island of ex-convicts with little immigration and a poor reputation, to an island at the whim of a massive fruit conglomerate and to an island where you play the “third cousin, once removed” of Fidel Castro and have the objective of attaining as much cash as possible. There’s plenty of diversity in the missions, but the random map generator has plenty of mileage in it as well.

While scenarios will typically start you off with a pre-constructed island, the random map game type starts you off with just about enough infrastructure to start making money, with a few farms, a dock, a teamster’s office and a construction office, along with your palace and a population living in shacks. The farms begin by growing corn, which is good for feeding your hungry population, but is not particularly lucrative, but can be set to grow other products, including pineapples, tobacco, sugar and bananas. Some of this produce takes a long time to grow, but is particularly lucrative once it is being sold, while other crops have particularly harsh conditions on their ability to grow. Once the crops have been grown and harvested by your farmers, they’ll be picked up by your teamsters and brought to the dock, whereby your dockworkers will load the produce onto incoming freighters which bring out the fruits of your population’s labour and bring in immigrants to expand your workforce. Other basic resource gathering activities include mining and logging.

Once your activities start making a profit, you can start to diversify your economy by building factories which will take the produce from your farms, mines and logging camps and reprocess it further into a more valuable commodity, or start building hotels and tourist attractions to make your island into a tourist paradise. However, factories require more educated workers and can take quite a long time to become profitable, while Tropico‘s tourists prefer locations away from your farmers’ and labourers’ activities.

While you’re busy building up the economy of your island, you also have to keep the population satisfied by providing them with various facilities and satisfying their needs. Different members of the population have different needs, but in general, your citizens desire better housing, to be sufficiently entertained, to have a nice environment to live in, their religious and healthcare needs met and so on. Meanwhile, there are various factions on the island who favour different approaches to how the island is run; for instance, militarists favour many soldiers employed on the island, while environmentalists favour an environmentally friendly approach to economic activities and the religious prefer to have plenty of churches and fewer pubs, cabarets or casinos as part of the entertainment facilities on the island. You also have various characteristics for your character which can increase or decrease your favour with some of these factions as well as setting the democratic expectations for your character as part of the way you were installed into power. In a scenario, these are already pre-selected for you, while in a random map game, you have a choice, with several pre-prepared templates representing real-world dictators and revolutionaries – as well as, bizarrely, the mambo singer Lou Bega, who was then particularly popular for his version of “Mambo No. 5”.

Unfortunately, while the concept is very good at creating a challenge for the player in balancing the needs of the citizens with the desire to make money, most of the frustrations in the game come from dealing with the population. There is very little in the way of micromanagement in the game, with your interactions mostly coming from choosing which buildings to place and where, along with the pay for the workers or price of services at various buildings, which I quite like, but this can sometimes lead to boneheaded decisions with the AI which add fake difficulty to the game. Construction of new buildings can be mildly annoying, as the pathfinding AI of your workers is poor and this can keep them from constructing a necessary building as quickly as you might need it. Furthermore, before a building is constructed, the ground on which it will stand needs to be flattened and cleared of obstacles, which becomes more difficult as you move away from the relatively flat coasts and move inland. The frustration comes from the fact that it is often difficult to determine the gradient of a certain building plot since it isn’t very obvious from the graphical style of the game.

Considerably more frustrating is the requirements for keeping a good standard of healthcare and religion on your island. While the other needs might be expensive and time-consuming to upkeep, they are at least sensible once you get the buildings constructed. On the other hand, both religion and health care require a lot of buildings for the population, require educated workers who are at a premium at the start of the game and don’t get much more common later on and provide no economic benefit once they are fulfilled.

What’s more, even when you have got appropriately educated workers, there’s no guarantee that they’ll work in the religious or healthcare facilities, even when the pay for the roles is generous. In one game, I spent more than $30,000 – or in other words, enough to buy four or five apartment complexes which will satisfy housing needs for up to 60 citizens – trying to entice workers with college education to become doctors in my clinics, only to find that when they arrived, they immediately decided not to become doctors after all, but instead go into farming or construction despite the fact that my healthcare needs were sorely lacking due to the lack of staff and that the doctor jobs were set to pay more than three times as much as the jobs they were taking.

Nevertheless, putting aside these concerns, the rest of the game works very well and there is certainly a satisfaction to be derived from seeing profits rolling in from your farms as your teamsters draw the crops out to the docks to be loaded onto the freighters, or from seeing tourists flooding into your hotels as your tourism market expands.

At the same time as dealing with your own population, you must deal with the concerns of the United States and the Soviet Union, both of which take an interest in your activities from afar. The US favours a capitalistic economy, with free elections, while the Soviet Union prefers communism, with little income disparity. Much of your early-game income will come as foreign aid from these superpowers, with the amount increasing as the countries’ favour increases. However, if you have a particularly bad relationship with one country, they may send a military force to depose you – and as their favour is tied to some extent to the happiness of the capitalist or communist factions on Tropico, you can’t afford to ignore either of these factions. You can also slowly improve your reputation with either or both countries by building a diplomatic ministry.

As you play, you will also have the option to pass various edicts which will influence policy on the island and with the superpowers looking over your shoulder. As you build more buildings, you have options like enticing tourism with a Mardi Gras festival, funnelling a bit of the building cost of all buildings to your Swiss bank account or holding a book burning at the behest of your religious faction. On a more personal level, if you identify somebody who may be particularly troublesome, you can bribe or imprison them, or, to the horror of your population, even have them eliminated by your own soldiers. This provides the potential for a bit of extra control to the game without sacrificing the aforementioned lack of micromanagement in the game.

Graphically, Tropico was never that impressive, with isometric sprite-based graphics which weren’t a tour de force, even at the time. Nevertheless, aside from the previously mentioned issues with determining gradient, the graphics are good enough for the job, although the age of the game does rule out any options for widescreen resolutions. On the other hand, the music is a particular highlight of the game, with catchy Latin-style tunes which suit the game very well.

The Tropico series is now up to five entries, with most of the entries building on the setting and gameplay of the original. As a consequence, it’s tempting to skip the first game and just go on to play one of the sequels, but at the same time, the first Tropico did build a very good foundation for the games to come. Despite the occasional frustrations with construction, religion and healthcare, the game is built around a very strong concept and executes it very well. At present, Tropico is available on both Steam and GOG.com along with its pirate-themed sequel, Tropico 2: Pirate Cove, for less than Tropico 3 costs on its own and since the games in the series are frequently on sale through both platforms, if you’re looking for an inexpensive entry-point to the series, the original isn’t a bad place to start.

Bottom Line: Tropico combines strong construction and management fundamentals with a subtle, tongue-in-cheek sense of humour and a very catchy soundtrack, but does have some frustrating elements in managing the population in-game.

Recommendation: Given that the series is frequently on sale at several online distributors, I’d wait for a sale and then snatch it up in the Tropico Reloaded package which includes the sequel.

The C Preprocessor

One of the peculiar things about the C programming language is that so many commonly occurring elements are not actually part of the language, per se. All of the functions in the standard library are actually extensions to C, additional parts which give us the input/output, mathematical and utility features which make C powerful. All of these are contained in a set of header files and binaries which are added to programs during the compilation process.

Another extension to C is the C preprocessor, and it is this that gives us the ability to extend the language to perform functions. The C preprocessor is a sort of computer language of its own sort, and while it is not Turing-complete, it is useful enough for the purposes for which it is called. The C preprocessor reads through a C source file, replacing various statements which are important to the preprocessor to ones which are important to the C compiler.

It is somewhat difficult to explain why the C preprocessor is important, but I will attempt to do so with a brief segue into the history of computer languages. Early high-level programming languages, such as Fortran and COBOL, were notable for being able to do one set of tasks very well and most others not so well at all. In some cases, this led to deficiencies which would be considered ghastly today; ALGOL 58 and 60, for instance, did not define any input/output operations, and any I/O routines would be completely machine-dependent.

In the later 1960s, language designers attempted to create new languages which would be suitable for multi-purpose applications. However, these languages, which included PL/I and ALGOL 68, were designed by committees who were made up of conflicting personalities, many of which were desperate to see their pet features included in the languages. As the complexity of the languages grew, so did the complexity of developing an efficient compiler. As computing resources were vastly smaller than they are now, these languages were only suitable for mainframe computers, and then not even efficiently.

Therefore, these language experiments tended to fail. PL/I has some residual support by being supported by IBM, but it is moribund outside of the confines of IBM machines; ALGOL 68 is dead and buried. When C came around, Dennis Ritchie was aiming to create a language which both implemented enough features in order to build an operating system and its applications, while being able to run efficiently on a much less powerful computer than those for which PL/I was designed.

The solution was to create a system in which only the subset of the functions that were required for a specific program would be implemented, rather than the full set. This made compilation of C more efficient, as the compiler generally only had to be concerned with a small number of functions at once. The method chosen to do this was to use the C preprocessor to keep the function definitions of most functions outside of the base language; when C was standardised in 1989 by the ANSI committee, and in 1990 by the ISO, all functions were taken out of the base language and put into header files.

Now that the history lesson is over, we can continue on to the operations of the preprocessor. As mentioned above, the preprocessor scans a C source file – or, in some circumstances, another source file; Brian Kernighan famously developed RATFOR to add similar features to Fortran as in C – and looks for statements that are important to it. It then replaces them with statements that are important to the C compiler or whatever other system the preprocessor is being used for.

The most fundamental operation of the preprocessor is #include. This operation looks for a file which is defined at a path included in the #include directive, then inserts its entire contents into the source file in place of the #include directive. The file’s contents might themselves contain C preprocessor statements, as is common in C header files, so the preprocessor goes through those and acts upon them appropriately.

One of the most common invocations of the #include directive is the following:

#include <stdio.h>

This directive locates the file, stdio.h, and places its contents into a source file. The use of angle brackets around the filename indicates that it is stored in a directory whose path is known to the C compiler, and which is defined as the standard storage path for header files. stdio.h itself contains several preprocessor statements, including #define and #include statements, which are resolved by the preprocessor appropriately.

Let’s define a simple program which can be used to test this. The program will be the standard “hello, world” program as defined in The C Programming Language (Brian Kernighan & Dennis Ritchie, 2nd Edition).

#include <stdio.h>

    printf("hello, world\n");

Now, we can see some of the results when this is passed through the C preprocessor:

typedef long unsigned int size_t;
typedef unsigned char __u_char;
typedef unsigned short int __u_short;
typedef unsigned int __u_int;
typedef unsigned long int __u_long;
typedef signed char __int8_t;
typedef unsigned char __uint8_t;
typedef signed short int __int16_t;
typedef unsigned short int __uint16_t;


struct _IO_FILE {
  int _flags;
  char* _IO_read_ptr;
  char* _IO_read_end;
  char* _IO_read_base;
  char* _IO_write_base;
  char* _IO_write_ptr;
  char* _IO_write_end;
  char* _IO_buf_base;
  char* _IO_buf_end;
  char *_IO_save_base;
  char *_IO_backup_base;
  char *_IO_save_end;
  struct _IO_marker *_markers;
  struct _IO_FILE *_chain;
  int _fileno;
  int _flags2;
  __off_t _old_offset;
  unsigned short _cur_column;
  signed char _vtable_offset;
  char _shortbuf[1];
  _IO_lock_t *_lock;
  __off64_t _offset;
  void *__pad1;
  void *__pad2;
  void *__pad3;
  void *__pad4;
  size_t __pad5;
  int _mode;
  char _unused2[15 * sizeof (int) - 4 * sizeof (void *) - sizeof (size_t)];


extern int fprintf (FILE *__restrict __stream,
      __const char *__restrict __format, ...);
extern int printf (__const char *__restrict __format, ...);
extern int sprintf (char *__restrict __s,
      __const char *__restrict __format, ...) __attribute__ ((__nothrow__));
extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format,
       __gnuc_va_list __arg);
extern int vprintf (__const char *__restrict __format, __gnuc_va_list __arg);
extern int vsprintf (char *__restrict __s, __const char *__restrict __format,
       __gnuc_va_list __arg) __attribute__ ((__nothrow__));


    printf("hello, world\n");

Most of the file has been truncated, but as we can see, the stdio.h header contains typedef declarations for various types, structure definitions including the above one for a FILE type as used in the file input/output routines, and function definitions. By being able to call this file from elsewhere, we save ourselves a lot of time and work from having to copy all of these definitions into our program manually.

While the above definition works for the standard header files, the location of the standard header files is restricted to read-only operations for non-administration users in many operating systems. There is, therefore, another way to specify the location of a source file, which may be an absolute path or relative to the working directory. A set of definitions of this type, using a relative and then an absolute definition, are shown below.

#include "foo.h"
#include "/home/jrandom/bar.h"

The operation of these preprocessor statements is similar to that of the one used for stdio.h; the major difference is in where the files are located. Instead of checking the standard directory for header files, the first definition checks the same directory as the source file for a header file named foo.h, while the second checks the absolute path leading to the /home/jrandom directory for a file named bar.h.

As it is common practice in C programming to leave #define statements, function prototypes and structure definitions in separate header files, this allows us to create our own header files without having to access the standard directory for header files.

The other particularly common invocation of preprocessor statements is the #define statement. The #define statement has two parts, an identifier and a token sequence. The preprocessor changes all instances of the identifier for the token sequence. This is useful for defining more legible names throughout the source code, particularly for so-called “magic numbers” whose purpose is not obvious from observation. A few examples of how this may be used are shown below:

#define MAX_FILENAME 255 /* Defines the maximum length of a filename path */
#define DIB_HEADER_SIZE 40 /* Defines the size of a BMP DIB header in bytes */
#define FOO_STRING "foobarbazquux"

In most cases, the #define tag is simply used to provide effective macros for obscure or complex definitions, but there is another sort of functionality which the #define statement can be used for. The #define statement can be used to define a macro with arguments, which is an effective way of creating shorthand for a piece of simple code which one doesn’t want to consistently repeat, but for which one doesn’t want the overhead of a function. An example of this is shown below:

#define SQUARE(x) (x) * (x)

We might see this definition invoked in a program like so:

#define SQUARE(x) (x) * (x)

int main(void)
    int a;

    printf("Enter an integer: ");
    scanf("%d", &a);
    printf("The square of %d is %d\n", a, SQUARE(a));
    return 0;

When this function is called, the SQUARE(a) invocation is replaced by (a) * (a). Note the brackets around the arguments in the macro; these are imperative for preserving the appropriate order of operations. Let’s say that we were to define SQUARE(x) as the following:

#define SQUARE(x) x * x

and then call it with the following code:

SQUARE(5 + 4)

This would expand out to the following:

5 + 4 * 5 + 4

As multiplication precedes addition, the multiplication in the middle would be performed first, with the multiplication of 4 and 5, giving 20, and then the flanking additions would be performed, giving an answer of 29. This is quite short from the 81 that we would expect from the square of 9. Therefore, it is important to appropriately define your macros in accordance with the expected order of operations.

Macros can have more than one argument, such as the following definition for a macro to find the larger of two numbers:

#define max(a, b) (a) > (b) ? (a) : (b)

Having defined something, we may want to undefine it further down the source file, possibly to prevent interference with certain operations, or to ensure that something is a function rather than a macro. For instance, in the standard libraries for low-power embedded platforms, getchar() and putchar() may be defined as macros in order to prevent the overhead of a function. In order to undefine something, we use #undef. The following code would undefine the SQUARE and max operation which we defined above:

#undef SQUARE
#undef max

Beyond the realms of #include and #define lie the conditional preprocessor directives. The first set of these are used to check whether something has already been defined, while the other set are used to check whether a C statement is true or false. We’ll discuss the definition-related directives first.

#ifdef is used to check if something has already been defined, while #ifndef is used to check whether something has not been defined. In professional code, this is regularly used to check the operating system and other details about the system which the program is to be compiled for, as the elementary operations which make up basic routines differ on different systems. We can also check if something is defined using the “defined” operator; this is useful if we want to continue checking after an #ifdef or #ifndef statement which was not satisfied.

Let’s say that we had a piece of source code which we needed to maintain on Windows, Mac OS X and Linux. Various bits of the source code might not apply to one or more of those operating systems. We could therefore hide the bits of source code that don’t apply to the current operating system using the following:

#ifdef _WIN32

#elif defined MACOSX

#elif defined LINUX


Note the use of #endif to close our set of conditional directives. This is part of the remainder of the conditional directives. #if checks if a C statement is true, and proceeds if it is, #elif is used to check another alternative if the preceding condition was not satisfied, #else is a universal alternative if none of the preceding conditions were satisfied, while #endif closes a block of conditional preprocessor statements. These operations work very similarly to the if…else if…else statements in C. The following example checks whether we are compiling for a 32-bit or 64-bit system:

#if !(defined __LP64__ || defined __LLP64__) || defined _WIN32 && \
    !defined _WIN64
/* we are compiling for a 32-bit system */
/* we are compiling for a 64-bit system */

In this code, we’re looking for a definition of __LP64__ or __LLP64__, which define data models for 64-bit processors, to be false, or a definition of _WIN32, which defines a Windows software platform, to be true without a corresponding definition of _WIN64, which defines a 64-bit version of Windows, to be true. If this is true, the program is compiled for a 32-bit system, which will have different machine instructions to the 64-bit system.

While there are some other details of the preprocessor to discuss, they are best left to external reading. To conclude, there are a number of predefined macros in the C preprocessor, such as __LINE__, which calculates the line number, and __FILE__, which determines the filename. The C preprocessor can be somewhat obscure, but it gives the C language a great deal of flexibility – the sort of flexibility that sees its use on everything from microcontrollers to supercomputers.

A Project With Source Code: A Snake Clone in Allegro

#include <allegro.h>
#include <stdio.h>
#include <stdlib.h>
#include <time.h>

#define TILE_SIZE 20
#define TILES_HORIZ 32
#define TILES_VERT 24
#define MAX_ENTITIES 768

/* Length of snake */
int length = 5;
/* Grid reference for food */
int food_location[2] = {-1, -1};
/* Grid reference array for segments of snake */
int snake_segment[MAX_ENTITIES + 1][2];
/* Direction of snake - 0 for up, 1 for right, 2 for down, 3 for left */
int snake_direction = 3;

BITMAP *back, *snake_body, *food, *game_over;

/* Function prototypes */
void setup_screen();
void create_snake();
void draw_snake(int i);
void set_food_location();
void move_snake();
int collision_check();
void get_input();
void cleanup();

int main(void)
    int i, check;
    clock_t last_cycle;
    /* Set up Allegro */

    /* Establish beginning conditions */
    last_cycle = clock();

    while(!key[KEY_ESC]) {
	if ((clock() - last_cycle) / (double) CLOCKS_PER_SEC >= 0.1) {
	    last_cycle = clock();
	    check = collision_check();
	    /* If snake collided with walls or itself, end the game */
	    if (check == 1) {
	    } else if (check == 2) {
		/* If snake coincided with food, extend snake and reset food
		   location */

    game_over = load_bitmap("game_over.bmp", NULL);

    /* Display game over message when collision detected */
    while (!key[KEY_ESC]) {
	blit(game_over, screen, 0, 0, 0, 0, SCREEN_W, SCREEN_H);


void setup_screen()
    int i;

    set_gfx_mode(GFX_AUTODETECT_WINDOWED, 640, 480, 0, 0);
    back = create_bitmap(SCREEN_W, SCREEN_H);

    /* Create white grid on background bitmap, blit to screen */
    for (i = 0; i < SCREEN_W; i += TILE_SIZE) {
	vline(back, i, 0, SCREEN_H, makecol(255, 255, 255));

    for (i = 0; i < SCREEN_H; i += TILE_SIZE) {
	hline(back, 0, i, SCREEN_W, makecol(255, 255, 255));

    blit(back, screen, 0, 0, 0, 0, SCREEN_W, SCREEN_H);

void create_snake()
    int i, j;

    for (i = 0, j = 15; i < length; j++, i++) {
	snake_segment[i][0] = j;
	snake_segment[i][1] = 12;

void draw_snake(int mode)
    int i;
    if (snake_body == NULL) {
	snake_body = load_bitmap("snake_body.bmp", NULL);
    for (i = 0; i < length; i++) {
	draw_sprite(screen, snake_body, snake_segment[i][0] * TILE_SIZE + 1,
				snake_segment[i][1] * TILE_SIZE + 1);

    /* If function called from move_snake(), remove final segment of snake
       from the screen */
    if (mode = 1) {
	blit(back, screen, snake_segment[length][0] * TILE_SIZE,
	     snake_segment[length][1] * TILE_SIZE, 
	     snake_segment[length][0] * TILE_SIZE,
	     snake_segment[length][1] * TILE_SIZE,

void set_food_location()
    int i, valid = 1;
    if (food == NULL) {
	food = load_bitmap("food.bmp", NULL);
    /* Ensure food is not positioned on a snake segment */
    do {
	valid = 1;
	food_location[0] = rand() % TILES_HORIZ;
	food_location[1] = rand() % TILES_VERT;
	for (i = 0; i < length; i++) { 	    if (food_location[0] == snake_segment[i][0] && food_location[1] 		== snake_segment[i][1]) 		valid = 0; 	}     } while (!valid);     draw_sprite(screen, food, food_location[0] * TILE_SIZE + 1, 		food_location[1] * TILE_SIZE + 1); } void move_snake() {     int i;     /* Move all grid references for snake segments up one position */     for (i = length - 1; i >= 0; i--) {
	snake_segment[i + 1][0] = snake_segment[i][0];
	snake_segment[i + 1][1] = snake_segment[i][1];

    /* Then, change the appropriate reference point depending on the snake's
       direction */
    if (snake_direction == 0) {
    else if (snake_direction == 1) {
    else if (snake_direction == 2) {
    else if (snake_direction == 3) {


int collision_check()
    int i;

    /* Snake collided with walls - end game */
    if (snake_segment[0][0] < 0 || snake_segment[0][0] >= TILES_HORIZ ||
	snake_segment[0][1] < 0 || snake_segment[0][1] >= TILES_VERT) {
	return 1;

    /* Snake collided with itself - end game */
    for (i = 1; i < length; i++) {
	if (snake_segment[0][0] == snake_segment[i][0] &&
	    snake_segment[0][1] == snake_segment[i][1]) {
	    return 1;

    /* Snake coincided with food - extend snake and reset food position */
    if (snake_segment[0][0] == food_location[0] && snake_segment[0][1] ==
	food_location[1]) {
	return 2;

    return 0;

void get_input()
    if (key[KEY_UP] && snake_direction != 2) {
	snake_direction = 0;

    if (key[KEY_RIGHT] && snake_direction != 3) {
	snake_direction = 1;

    if (key[KEY_DOWN] && snake_direction != 0) {
	snake_direction = 2;

    if (key[KEY_LEFT] && snake_direction != 1) {
	snake_direction = 3;

void cleanup()

The 2015 Formula One Season and Other Thoughts

After the return of Formula One two weeks ago, in which we saw Mercedes take an imperious one-two and looking unassailable this year, we’ve had a more surprising result today in Malaysia, where Ferrari took the fight to Mercedes, with Sebastian Vettel exploiting what appears to be a slippery chassis and an improved engine to win decisively against Hamilton and Rosberg. Kimi Raikkonen compounded Ferrari’s success, despite his misfortunes in qualifying and suffering a puncture during the race to take a solid fourth place. After seeing Hamilton romp home to take victory a fortnight ago in Australia, I was concerned that we would see a domineering season from a single driver, with Rosberg, possibly chastised from falling short at the end of last season, perhaps left to pick up the scraps. However, if Ferrari can maintain some degree of consistency about their performances, it might bode better in terms of intrigue throughout the season. At this point, I still expect Mercedes to win the World Constructor’s Championship with greater consistency from both their drivers, but if Vettel and Raikkonen can deliver performances at tracks that don’t have such a focus on top speed, they may present themselves as at least dark horses for the World Driver’s Championship.

After Ricciardo’s spectacular performances last season, taking three victories in a season where barely anybody else even came close to snatching glory from the Mercedes, he has become team leader at Red Bull with the move of Vettel to Ferrari. Daniil Kvyat, formerly of Toro Rosso, joins him and has acquitted himself well so far, despite reliability problems which prevented him from taking the grid in Australia. After so many years in the previous naturally-aspirated formula at the top of Formula One, Red Bull have struggled to regain their pace with the turbocharged Renault engines. Reliability gremlins struck both cars in Australia and the Renault engine, even when it is working, still appears to be down on power versus the Mercedes and an improved Ferrari. Unlike last season, where Ricciardo achieved victories, I think that this season will see Red Bull lucky to battle for podiums, more regularly scoring in the middle of the points.

Red Bull’s sister team, Toro Rosso, shares the Renault engines and also suffered some mechanical problems in Australia at the hands of Max Verstappen. Verstappen has drawn a considerable amount of press for his age, being only 17 years old, by a long way the youngest ever Formula One driver. The son of former Formula One journeyman Jos Verstappen, Max has a notorious lack of experience in single-seater racing, with only a single season of Formula 3 under his belt and joins Formula One after a year of test driving for Toro Rosso in 2014. However, on current evidence in the Formula One races so far, he has quite a bit of natural pace, matching his substantially more experienced team-mate, Carlos Sainz Jr., another new entrant and also son to a famous racing driver father. Despite the limited experience of both drivers, they have quickly brought the fight to the other teams, with Sainz scoring in both of his two finishes and Verstappen only being denied a points finish in his race due to an engine failure.

Williams, regularly best of the rest in 2014 and unlucky not to score a victory on occasions, might have to retemper their expectations in 2015. They still have the proven Mercedes engine, have retained both Felipe Massa and Valterri Bottas from last year and still appear to have a fair degree of pace, but with Ferrari looking stronger than last year, Williams will more likely be caught up in a scrap with the likes of Red Bull, Toro Rosso and Lotus – when their car works properly – for the middle points positions. This is slightly disappointing for Bottas, who scored several well-deserved podiums last season and looks like a likely race winner in the future, but the team may be able to take some solace in that they are likely to be at the front of the battle between the teams that aren’t Mercedes or Ferrari.

Closer to the back of the points positions, Sauber appear to have a quicker car than last year, although they are embroiled in a legal battle with Giedo van der Garde over contract issues that looks like it’ll be a slow burner. Considering one of the drivers that they did choose, I would question their decision not to give van der Garde one of the seats this year; Marcus Ericsson, whose results last year were underwhelming even by the standards of the Caterham team and who didn’t cover himself in glory in the lower single-seater formulae, was signed up in his place. The other choice of driver for the team, Felipe Nasr, is more sensible, despite Nasr being a rookie; he did win a championship at Formula Three and came third in last year’s GP2 series. Nevertheless, given the prominent change in livery for Sauber, now proudly displaying the colours of Banco del Brasil, one strongly suspects that both drivers were picked for their ability to bring in sponsorship dollars, since Sauber is suspected to be in a weak position financially.

Another team rumoured to be weak financially and who will also be scrapping for the lower points positions this season is Force India. Their driver line-up, with the podium-scoring Sergio Perez and the pole position-attaining Nico Hulkenberg, is more experienced than that of Sauber, but their car, despite having a Mercedes engine, does not look especially fast. Somewhat benefited in the race in Australia by virtue of reliability where for others it was lacking, Force India managed a double points finish, but I suspect they will struggle to keep that up during the rest of the season.

At least, though, for all their financial woes, Sauber and Force India are performing better than McLaren, who look like they’re going to have an annus horribilis. With the conclusion of McLaren’s contract with Mercedes, McLaren have gone back to a partner who has presented them with considerable success in the past, with Honda engines in the back of their car. Unfortunately, though, the Honda engine is suffering from a distinct lack of development versus Mercedes, Ferrari and even Renault and is by far the least powerful engine on the grid right now. Trundling around at the back is not a place where we have often seen McLaren and the car, while reportedly nice to drive, is unbefitting of the most experienced line-up on the grid, with double World Champion Fernando Alonso and Jenson Button, also a World Champion. McLaren will be lucky to score points this season and have already struggled to complete races.

One of the feel-good stories of the pre-season was Manor Marussia’s phoenix-like rise from the ashes to present two cars at Australia. Unfortunately, having completed no testing and with all software wiped from their computers in preparation for auction, neither car turned a wheel in Australia and it had to wait until Malaysia until we had a full grid of cars ready to take the start. Will Stevens, who competed in one race last season and Roberto Merhi, another rookie driver, have both been signed up to drive for the team, but it remains to be seen whether the position is a poisoned chalice or not. The car, a derivative of the 2014 Marussia, was not on the pace in Malaysia, barely scraping through the 107% rule in free practice, although Merhi’s completion of the race shows that the car may well have reliability on its side. Even as a fan of the plucky underdog, the pace of the car looks prohibitively slow and with the exit of Caterham, who had gone from underdogs in their early seasons to perennial underachievers by the time of their demise, Manor will largely be in a lonely race with themselves. Things are not looking good for the smaller teams.

In terms of tracks for this season, we have gained another classic track in the Mexican Grand Prix, being held at the Autodromo Hermanos Rodriguez, but temporarily lost the German Grand Prix for the first time since 1960. The loss of the German Grand Prix marks another struggle for the classic European tracks where so much of Formula One’s history lies and while the move to new markets has occasionally given us gems like Sepang or Circuit of the Americas, I do think it’s terrible that Germany doesn’t have a Grand Prix this year for financial concerns, despite having three successful German drivers on the grid, while Abu Dhabi, a city in a desert only notable for its oil reserves and the obvious artifice of its settlements, maintains its end-of-season place at a dull, largely featureless track that has been site of some of the most boring races of the last five years, where not even seasons coming down the wire can improve the racing itself.


In other news, the BBC finally bit the bullet and sacked Jeremy Clarkson after a career of controversy. To be fair, even as a Top Gear aficionado, from what we have been presented with from reports of the incident between Clarkson and the BBC producer, Oisin Tymon, Clarkson deserved his sacking; assault on a co-worker is very difficult to condone. Nevertheless, though, it looks like it’s the end of Top Gear as we know it; the ribald, politically incorrect humour of Jeremy Clarkson, Richard Hammond and James May will be unlikely to be continued on the BBC. Plenty of names have already been mooted for a completely new set of presenters, several who would be good choices for an informative car show, but few who would present anything like what we have seen since Clarkson took the reins in 2002.

The bookie’s favourite at the moment is Guy Martin, perennial Isle of Man TT competitor, lorry mechanic and occasional TV presenter. To be fair, Guy Martin would be one of the best choices the BBC could make; not only does Guy have a quirky personality that is interesting to watch, he is genuinely knowledgeable and enthusiastic about motor vehicles and has exceptional mechanical sympathy. This would make him a great choice for an informative car show, as I would suspect the BBC would try to retool the show towards, but I’m not sure that Guy would actually bite – after all, it could affect his ability to race successfully at several of the motorcycle road races that take place during the year in Northern Ireland, some of which provide a lead up to the TT.

My fear is that the BBC will bow to pressure from outspoken minorities and take the politically correct route unnecessarily. This includes the lobby to have a woman back on the show – several women did present the show during the original run of Top Gear, but the show was retooled precisely because the original formula had poor ratings and apart from Sabine Schmitz who is already too busy with D-Motor on German television, I can’t think of many female candidates that wouldn’t just be there to tick diversity boxes. Meanwhile, Clarkson will likely find himself a home somewhere on Sky, given his already comfy relationship with several organs of the Murdoch empire, possibly with Richard Hammond and James May in tow, drawing away viewers from the BBC and causing a crisis in an already battered broadcaster.

Finally, I see that Ted Cruz has announced his nomination as the Republican candidate for President of the United States. I already made my views on Ted Cruz very clear earlier this month, but I hate the man even more now – he was dangerous enough as the head of the Senate Commerce Subcommittee on Science and Space without going for the Presidency as well. While the other Republican candidates look more appealing than Ted Cruz, that isn’t exactly a difficult feat, since lighting my pubes on fire would be more appealing to me than voting for Ted Cruz.

From an objective point of view, it looks like the Republicans will present their third terrible candidate in a row in presidential elections; unfortunately, I don’t have enough confidence in the Democrats to present anything better than a mediocre candidate (because perish the thought that they’d actually be sensible and pick Elizabeth Warren) and I don’t have enough confidence in the American populace not to go for the Republican candidate out of spite. Prove me wrong, America; I’m begging for you to prove me wrong.


Get every new post delivered to your Inbox.

Join 26 other followers