Game Review : Love

November 20th, 2009

LoveI must admit, I’ve always been a sucker for sandbox-style gameplay. I’ve wasted hours playing with Falling Sand and it’s variants, spent weeks building fortresses for alcoholic dwarves, and I still log into Minecraft almost every day. So it was only natural that when I heard that an alpha version of Love was available, I immediately wanted to try it. I came away with mixed impressions.

Introduction

Love is a persistent-world, not-really-massive online FPS with a focus on base-building and exploration. It currently features highly unusual graphics, spherical maps the size of a small planet, terraforming, AI opponents and a decent selection of buildings and devices to decorate your base with. The game is in the Alpha stage of development, so there are still lots of bugs, balance issues and unimplemented features. I’ll touch on some of those later.

Love is pay-to-play – a 30 day voucher costs approximately 3 euros.

Gameplay Overview

Overall, Love has no explicit goals, no story and no win/loss conditions. You simply pick something you want to do and do it. The flip side of this is that there is no tutorial either, so new players will often be at loss about what to do.

The Settlement

The center of the game is the settlement. The first task of a new player is usually to find an existing player settlement by following an in-game compass, or start your own by finding a Monolith token and placing it in a suitable spot on the map.

Getting to an existing settlement can be an adventure of its own, as people tend to build settlements in extremely out-of-the-way places to protect them from AI attacks. The fact that the game world is rich in steep cliffs, deep unescapable pits and seas filled with highly corrosive acid makes this adventure of rather dubious quality. Luckily, once you’ve actually joined the settlement, you can always instantly teleport back to its monolith just by clicking an icon on the toolbar.

Terraforming

The settlement monolith creates an “area of influence” that lets you modify the terrain and deploy tokens. The terraforming is pretty basic – you can raise or lower the ground, change the surface material (grass, pavement, roof, etc) and cut horizontal holes in the terrain to create caves. However, if you’re hoping to build an elaborate underground base a-la Dr. Evil, prepare to be disappointed – the “one cave per terrain tile” constraint makes it pretty much impossible.

Tokens & Buildings

Another way to expand and improve the settlement is by placing various building, either decorative of functional. To do this you need to find tokens – small, wedge-shaped widgets that can be seen floating over altars in the wilderness and AI bases. Naturally, all the best tokens are located in the AI settlements, so getting them can be tricky (or exciting, if you enjoy hit-and-run tactics).

Once you bring a token to the base and deploy it, it will turn into a structure of the appropriate type. The majority of deployed tokens serve as tool dispensers/equipment racks – for example, if you point at a deployed “Hyperblaster token” and press one of the inventory keys, you will get the Hyperblaster weapon in one of your tool slots. Other tokens turn into functional buildings like a power reactor, a force field or health pod manufacturer. Overall, there are currently about two or three dozen available building types, and presumably more to come.

Several placed tokens

Several placed tokens

More Power!

Love has only one “resource” – power. All terraforming tools and weapons consume power, manufacturing facilities need power to run, and you can heal damage by picking up power pods.

Power deposit

Power deposit

Power comes in two forms – “power beams” emitted by certain structures that can be routed around the map with power reflectors and used to power various buildings, and the player’s personal power reserve that is used for terraforming and firing weapons. The power reserve automatically regenerates when it’s very low. You can also quickly replenish it by picking up power pods dropped by dead enemies or manufactured by the “Manufacture Power” building.

Alternative energy in Love

Alternative energy in Love

It may take a while to learn how to use map coordinates and the configuration tool to route the power beams, but overall he resource system is pretty easy to understand.

Artificial Intelligence

This jumble of polygons is an AI character

This jumble of polygons is an AI character

The horribly unbalanced AI is one of the major gripes I have with Love. It’s not that the AI opponents are overpowered – if you’ve ever played a FPS you will be able to easily deal with a group of two or three AIs all by yourself. The problem is that players and their settlements are defenceless against AI settlements.

When it comes to base defences, a fully developed player settlement will usually have a force field that can stop normal projectiles, a bunch of explosives linked to proximity sensors, and a couple of relatively weak blaster turrets. A big AI settlement will have most of that and one or more rocket turrets that can rain spammy death on your head faster than Grad.

The russian multiple rocket launcher BM-21, aka Grad

BM-21, AKA Grad

One AI weapon in particular deserves a special mention. Any self-respecting AI base will also include artillery – a veritable superweapon that can hit your settlement from halfway across the planet and pound your entire base into dust in a matter of minutes. The best part is that there’s simply no way to prevent it – even the force field doesn’t stop artillery shells. The only thing you can do when your settlement comes under bombardment (and, invariably, it will) is rush madly to the AI base and hope to destroy or cripple it before their artillery battery finishes off your settlement. And if you do manage to destroy the AI settlement a new one will spawn shortly in a different location.

Other minor crimes by the AI include re-routing power sources without ever touching them, noclipping through terrain, flying, terraforming stuff outside their settlement limits and placing buildings underwater (the corrosive acid kind of water, yes).

Despite all that, I wouldn’t say the Love AI is overpowered. In most games computer opponents need an unfair advantage to pose any challenge at all and be fun to play against. The problem with Love is that the players themselves are underpowered. Give me a force field that can stop artillery bombardment. Give me buildings that don’t die after a single hit. Oh, and some of new shiny guns would be nice, too.

Interface & Inventory

Love’s interface is very straightforward, even minimalistic. All you have you have is a row of tiny icons at the bottom of the screen. Everything from weapons to map coordinates to graphics settings goes onto this toolbar and can be activated either by clicking the icon or pressing the associated hotkey.  The inventory system is also rather simple – you get four tool slots that can contain either weapons or terraforming tools, and four token slots that you can use to carry tokens you’ve found.

Controls

To pick up a tool/weapon, point at a deployed token and press a number key between 1 and 4. Use the same keys to select a slot, then left-click to use the tool or to fire the weapon. Terraforming is performed by clicking and dragging terrain tiles. Tokens are even simpler – walk over one to pick it up, then press F1-F4 to select it in the inventory and left-click a spot on the ground to deploy it.

As for movement controls, Love follows the standard WASD convention, with spacebar for jumps. However, the controls can still take some getting-used-to due to how sharp turns and jumps work in the game. In most other first-person-perspective games your view stays level no matter what crazy acrobatics you engage in, but in Love it will pitch and bank disorientingly whenever you move the mouse sharply during a jump. On the plus side, with some practice you can even perform a backwards somersault.

What pleasantly surprised about Love is that it’s completely free of the ubiquitous Insurmountable Waist High Fence syndrome that afflicts so many other games. In Love, you can easily jump on top of boulders and buildings as tall as you are.

Graphics

After I started Love for the first time, I spent the several minutes expecting my computer to crash. You see, my video card has a faulty fan controller, and what I saw on the screen after starting the game and connecting to the server made me think of the visual glitches you sometimes see before the video card overheats and shuts down.

Love’s graphics are, for lack of a better word, fuzzy. Imagine an old video recording of a dry landscape of some kind, strewn with weathered rock formations. Maybe something from National Geographic. Apply the blur filter 30 times. Then put in some lens flares and blooms, and you’ve got something that’s clear as mud, which is how Love looks.

Some trees, and ... a piece of a bridge?

Some trees, and ... a piece of a bridge?

As you might have guessed, graphics are my second major gripe with this game. They’re so blurry and over-processed that for the first few hours you can barely tell what you’re looking at. The “blurry brushstrokes” shader is known to make some people’s eyes hurt. And no, you can’t turn off the shaders. It’s supposed to be “artistic”, remember?

To be fair, the graphics have gotten a bit more palatable in the latest releases, but  you can still only see clearly for some 30 meters in front of yourself during daytime.

One of the cleaner daytime shots

One of the cleaner daytime shots

Sound

There is none. At this stage, Love has no sound effects and no music.

So, Is It Fun?

Kind-of. The core idea is certainly promising, but the current implementation suffers from multiple balance issues and a lack of clear goals. The graphics also seem to betray that sour “eye-candy > playability” feel that indy games sometimes have. Still, building/terraforming settlements on an alien planet and waging wars with the hostile high-tech natives sounds like it could be a fun pastime, if done right.

I recommend waiting until the final version is out.


Detecting Parked Domains

November 13th, 2009

WWWSome time ago, a commenter asked me if it was possible to make one of my WordPress plugins detect and report parked domains. I’ve done some research since then, and while it’s probably not practical to add such a feature to the plugin, I did come up with several ways to programmatically detect parked pages. I’ve decided to summarize my findings in a blog post in case they’re useful to anyone else.

What’s a Parked Domain?

Broadly speaking, a parked domain is a website that contains no real content. Parked domains can have a benign purpose, like when someone puts a “Coming Soon” message on a domain reserved for an in-development site. However, much more commonly they are nothing but single-page “portals” stuffed with ads, bereft of any value to the unfortunate visitor. Typosquatters also frequently park their domains.

How To Detect Parked Sites

Let me state up-front that there is no single fool-proof method to detect parked domains. Each domain parking service has a lightly different page template and site structure, so even if you build a tool that can identify domains parked with SEDO.com with 100% accuracy it might still be clueless about sites parked with GoDaddy. The best approach is to use a combination of different detection algorithms.

Here’s a summary of techniques that I found promising.

Check for subdomain wildcarding and ubiquitous redirects

A lot of parked domains will gladly accept any HTTP request you throw at them, even if you try to access a non-existent subdomain or page. Instead of the typical “Not Found” error, a parked domain will either return a dynamically generated page full of ads or redirect you to the front page.  So you can check if a domain is parked is by requesting a bogus subdomain (e.g. http://bogus.example.com/) or page (e.g. http://example.com/this-page-doesnt-exist.html).

Another sign that a domain might be parked is that it redirects to a subdomain or a sub-directory on a different domain. For example, some domain parking services redirect parked domains to URLs like http://domain-name.domainparking.com or http://domainparking.com/?domain=domain-name.

There is sometimes a good reason to redirect a domain, like when the site has moved to a new address. How can we distinguish between legitimate redirects and parked sites? Legitimate redirects usually use (or should use) the 301 response code, while parked domains use the 302 code.

There are also lots of parked domains that don’t use redirects at all, so this method is unfortunately rather prone to false positives and negatives.

Examine the WHOIS information

The WHOIS info of a parked domain usually points to the domain parking service that owns/controls the domain. You can use this to build a database of known-suspicious WHOIS records that can be used to identify parked domains. Alternatively, if you have access to a big WHOIS database, you could probably catch a good portion of parked sites by flagging any domain registrant that owns a lot of domains (say, more than a hundred).

Use an existing blacklist

Surprise, surprise : there is actually a parked domain blacklist. Run by the schizophrenically named company “I’ve Got a Fang”, the Parked Domains Project is an attempt to build and maintain an extensive database of parked domains. It even has a Firefox extension.

As far as I can tell there is no documented public API, but you can probably reverse-engineer the FF add-on and see what it uses (or just screen-scrape the database if you’re feeling naughty).

Analyse the content

Personally, I think the most promising approach for detecting parked domains automatically is content analysis. Parked domains all have something in common – the ads. If you can come up with a reliable and automated way to detect if a page is devoted solely to advertising, you will be able to identify parked domains pretty accurately.

The paper Content-Based Approach for Identifying Textual Ads-Portal Domains [PDF] describes a very effective algorithm for detecting ads-only domains :

In this paper, we develop a machine-learning-based classifier to identify ads-portal domains. The features of the classifier are extracted from the web content of the domain. In developing the classifier, we first create negative and positive samples set. Then, we identify set of features that are effective in distinguishing ads-portal domains. Finally, we combine these features along with other keyword-based features into a machine learning classifier. The resulting classifier has 97% accuracy in identifying ads-portal domains.

On a related note, my content extraction script could also be used for detecting is a site is low on actual content. Its algorithm is much simpler than the one proposed in the above paper, but – unlike the paper – the source code of my PHP script is freely available :)

Illustration credit :  clix @ sxc.hu


Plugin Translators Wanted

October 30th, 2009

Image credit : Rawkus @ sxc.huI’ve recently added internationalization support to my Broken Link Checker plugin, so if you like the plugin and would like to see it in your own language, consider contributing a translation! So far people are working, or have already sent in, localization files for the following languages :

  • Italian (complete; even got two – by Gianni Diurno and by Giacomo Ross. Whoops, my fault.)
  • Danish (complete; by Georg S. Adamsen)
  • Chinese, Simplified (complete; by HankYang)
  • Dutch (complete; by Gideon van Melle)
  • German (complete; by Alex Frison)
  • French (complete; by Whiler)

If you’d like to create your own localization, please notify me via a comment or an email first so that I can add you to the list above. Otherwise we might get (another) tricky situation with two users sending in two independent translations for the same language.

Here are some useful resources related to plugin translation :


What “Be Yourself” Really Means

October 28th, 2009

“Be yourself” is wonderfully versatile piece of advice. Whether you’re looking for ways to improve your blogging skills or your love life, someone will invariably suggest that you just need to be yourself and success will follow.  Got an empty page and nothing to say? Write about things you [...] Continue Reading…


How To Extract HTML Tags And Their Attributes With PHP

October 20th, 2009

There are several ways to extract specific tags from an HTML document. The one that most people will think of first is probably regular expressions. However, this is not always – or, as some would insist, ever – the best approach. Regular expressions can be handy for small hacks, [...] Continue Reading…