Review of Red Faction: Guerrilla

Red Faction: Guerrilla is the third installment of the Red Faction series. It wasn’t one of the major flagship games of any console, nor was it a particularly popular game - You might be fooled into thinking it’s just another one of the poor cheap games that you find in the back of the shop in between “Bus Simulator” and that omnipotent bloody driving test thing.

This is probably because it’s not be quite up to the standards of slick and shiny which are common of recent popular games. It’s a trend I’ve noticed that recent games tend to play a lot more like movies than, well, games. Take Modern Warfare 2 and Bad Company 2 for example: They are all very cinematic and dazzling but the downfalls are that they are often very linear and the stories are often very short. Usually this is offset by the quality and continued playability of the online element but still: I want a big world, freedom, glorious side-mission toppings!

It’s why I love GTA4, because the story mode is fairly long and there is a whole city and a plethora of vehicles which you can spend hours and hours (and years) playing about with. When it comes down to it, everything aside, a game comes down to longevity and for just how long it holds your interest.

Well, now I’ve got that off my chest I should probably actually get to pursuing the goal stated in the title. So yes, RFG pretty much has it all: large world, freedom and you’ll be happy to know that it’s just oozing with side-missions!

The premise is basically that you’re a Guerrilla on Mars fighting against the EDF. You’re also a “mining engineer” - Translated into gameplay this means that you get to destroy stuff! That’s right, destructible structures! Cool! You can use a combination of many tools to exact destruction on the hundreds of structures on mars including a sledgehammer, remote charges, a rocket launcher, a nanobot gun, a gauss gun, exploding discs, rail driver, singularity bombs or even freaking thermobaric rockets.

This is, of course, the main attraction and it’s just a brilliant and rather unique approach. Unfortunately, you can only carry four weapons at one time and one of these having to be the sledgehammer is quite annoying (especially if you want to use another short range weapon such as the Gutter). The graphics are nothing special and may even be considered below average for a game of its time but the awesome physics make up for it.

Now, when they say you’re a guerrilla. You are a guerrilla. One. The AI are extremely aggressive and you’ll find yourself so outnumbered that you start thinking 300 would be like simultaneously winning the lottery and a lifetime supply of bacon. This means that you have to be quick and efficient in terms of the objective, unlike other games in which you would fight through all of the enemies one-by-one. Strategies you’ll need to use will be things like driving a lorry into a building and then exploding it to take the whole building down.

I would liked to have seen a mode in which the game generates a random EDF base which you could exterminate because in the story mode: when everything is destroyed, it’s destroyed. That kind of thing makes me want to get my greasy fingers on the source code of a game because the whole system could be bent fairly easily into something awesome-er. Another negative factor in this game is the distinct lack of hovercrafts and submarines, but I guess there would be little point in those seeing as there’s no water on Mars.

The multiplayer is fairly fun but I’m still not quite into it and prefer to play the single-player. The deathmatch modes aren’t interesting for very long however when you reach a higher level and unlock siege mode, that’s when it becomes interesting. Siege mode? Siege mode.

In conclusion? Buy this game. It’s one of the best that I’ve come across in a long time and I just can’t understand why it’s not more popular.

Monday, July 26, 2010   ()

No, just no

Every now and again a story comes up that just makes me want to sing “She’ll be coming round the mountain when she comes” while taking pot shots at cyclists using boiling peas as ammunition, or just write a blog post about it. The BBC recently posted this story which is explained by the first paragraph:

More than 400 people have signed a petition calling for a Somerset school to stop teaching the US cartoon series The Simpsons in lessons.

Wow, just wow. When I first read this I thought that it was another story about a book-banning in Texas or some such, but no, here in the UK; to their credit it isn’t quite as silly as ‘Harry Potter is teaching children witchcraft!’ but it is still rather annoying that people can be so moronic.

The given reason for this is that it’s apparently “not strong enough content.”

Now this petition was created for one school but The Simpsons is actually a commonly used show for a Language In Media module at secondary school throughout the UK, I have vague recollections of studying it myself in year 9 but my sister studied it this year and from talking to her it takes the format of watching an episode and then having to write a negative critical review of the episode. It’s actually rather ironic that it’s being called weak content when they’re being told to write negatively about it!

This brings me to my next point addressing the accusation that students are being taught it purely because they like it - To an extent, that’s the point; children are taught to take a critical look at a show that they already have positive preconceptions about. It’s probably more likely that this show was chosen because it’s easier to teach something that everyone is probably already familiar with but the advantage is still present even if incidental.

Then again, I’m not really sure where the whole idea of weak content is coming from. The Simpsons is an extremely interesting item linguistically since it has had such a profound effect on sociolect on an international level: Doh!

I’m very glad to see the petition was rejected but in the words of Helen Lovejoy, “will somebody please think of the children?” Help them with their damned homework instead of coming up with dumbass baseless petitions.

Thursday, July 22, 2010   ()

Viva London

After the BBC going on and on about how London, the capital city of England, is somehow a different country (apart from the fact that it’s in England and it’s English), Reality was inspired to take a trip to this strange faraway land. The Maladjusted news team brings you a serialised version of his testament directly from the triple-e-pee-see of Reality:

Upon arrival by train, the first thing I noticed was the high security. The train arrived at an ominous looking bunker deep underground and when the doors opened, everyone moved silently in a tightly packed group directly towards a rather tall escalator which brought us up to a kind of lobby somewhere else in the underground complex.

Soon after arriving in this lobby-type area I realised that London had its own type of passport called the “Oyster” card, which must be shown at every underground bunker. It was a very interesting system because entering London didn’t require you to have one of these strange passports, but it was required to use the only feasible form of transport in London: “The Tube” - A complicated system of rat-infested tubes far underground with most of its stations named after 20th-century pop songs.

My place of sleeping was located in a region of London called “Hackney” (a lexicographer tells me that this is a blend alluding to the commonality of the “backney” condition throughout the “hacking” profession), which seemed a rather strange place. I was at once greeted by a castle which had been built in Victorian times to house a water pump. Wondering why, exactly, they bothered to build a whole castle just for a water pump, I investigated further.

It appears that the water pumping services have been moved to another area of London (maybe that’s what HMS Belfast is supposed to be doing?), so the castle has since been turned into one of many ominous watchtowers for the ruling Lord Jesus of London: Boris Johnson (whose constant presence was also shown by Big-Brother style etiquette instructions on trains). While I didn’t see Boris in person, I saw that he had for some reason placed a shark in the first floor window of the castle, which stared down with an almost sorrow-laden look of remorse for ever having left the ocean.

While London is a largely “trendy” place, covered with @-signs and Twitter logos and such, it isn’t without it’s fun-fair attractions; a popular one is code-named the “DLR,” which covers a large amount of central London and includes steep drops and tilting as well as carrying the main requisite of a rollercoaster: Making the rider feel sick.

The main curiosity of London was the infamous “Camp Peace,” which may sound like something sophisticated but in the end it was just a bunch of dirty hippies in tents with a couple of unintelligible signs. Despite the almost shanty-like conditions of the settlement, there was much testament to their prolonged stay - The most prominent of which was the nearby statue of Nelson Mandela holding up his fist with the caption “God-damned hippies” as well as the various studies performed to measure the HSI (Hippy Stink Index) in an attempt to ‘date’ the inhabitants.

It appears that the hippies had moved temporarily to the area years ago for some long lost reason, yet had since found themselves stranded by the unceasing traffic surrounding the square. I myself found it an arduous task to escape the accursed square, but unlike the hippies I found my way across the road moments before an invisible time limitation stranded me on the square forever. I have since informed Groovy Funky Channel 4 of the hippy plight, so there is sure to be a half-an-hour sad-music-laden bore-fest beaming straight to your living room some time soon. You can thank me later.

Reality’s full memoirs from London will be available at all major bookstores at some point next week or something.

Maladjusted - It’s all shit anyway

Monday, July 19, 2010 — 1 note   ()

Fedora Buzz - It Begins

So my exams are finally over so apart from work and a rather sparse social life I’ve got all my attention to give to the various things that I’ve really wanted to give my attention to for a while now. One of those things is Fedora Buzz which seemed to be rather popular when I announced it a while back. I’ve been thinking about it for quite a while now and the other day I commenced coding.

For now I’ve decided to just write it in plain PHP without the aid of any frameworks because I figured that having to learn them would just slow down the project and by writing it in a modular form it gives us the possibility of future integration; the same goes for being a part of Fedora Insight or similar.

So I’ve started writing objects and also created a simple page for me to start adding front-end features to, and though it currently resides on my fedorapeople account, that doesn’t have PHP support so I’m currently waiting for the people over at Fedora Infrastructure to process my application for a project on fedorahosted. Then the real work can begin.

The real challenges are going to be designing the front-end in a modular way so that the design can be changed easily without major rewriting as well as avoiding processing XML, which would inevitably cause me to turn into a large green monster and eat my computer.

So hopefully in a few dorito-fuelled weeks I should have something working to show and then we can all break out the 80s music and eat some moon pies.

Tuesday, July 6, 2010   ()

Microblogging - We are the rich clients

Recently I’ve been giving a lot of thought towards interaction on the web in terms of my own personal experiences, truly realising that people really aren’t making things up when they say that the Internet moves fast. When I started on the Internet the first community I became involved in was a text-based chat MUD. It was already a dying medium by the time I got into it and it only had around 30 regulars on it, however these people became great friends and the community was strong even though it was, well, just text. However, over time it grew into further disrepair and now there are less regulars and even I frequent it less often than I used to.

They lost out to newer services like Facebook and Bebo and such, which supposedly provide a more “rich” experience. I made a comparison between Internet social sites and the descriptions of networking architecture; being that social networking sites like Facebook and such are used in such a way that we communicate using predefined protocols (“poking” etc) and methods which are provided to us by the service - More of how and what we communicate is defined by the service itself. Rich-server, thin-client networks. We are the thin clients.

However forums, MUDs and such are like rich-client networks. The network between people is merely the vessel which is used to transfer, well, anything. The network is defined by the people that use it and the community it harbours rather than what the service provides. Rich-client networks.

Microblogging has become a welcome home for me over the past year and has undoubtedly become a global phenomena of immense popularity. I don’t really think there is anything magical or special about the 140 character limit or that compressing our thoughts really reduces any signal-to-noise ratio or anything like that - I think it’s a return to rich-client networking.

We are the rich clients.

Sunday, July 4, 2010 — 1 note   ()

Homeopathy Revisited

I’ve posted on the subject of homeopathy before (here), to explain that it is actually different to Naturopathic medicines and such like. I also said that it seems as if homeopaths purposefully create confusion between them so that people don’t see how absurd homeopathy is.

I would hope that anyone seeing what’s actually behind homeopathy would agree that it’s rather ridiculous. However, there are obviously people that believe in it, having somehow avoided the evidence, simply choosing to ignore it or perhaps having some kind of anecdotal conviction. The extent of this is shown by the fact that the homeopathy industry in the UK which is worth around £40 million (and worth £400 million in France and Germany) with several fairly high-profile retail chains such as Boots and Holland & Barret selling remedies.

If this wasn’t bad enough, the NHS spends about £4 million a year on homeopathy and there are four homeopathic hospitals in the UK. This situation seems to be changing because this week the British Medical Association voted against the NHS supporting homeopathy. I’m not exactly sure what needs to happen now but it looks like it’s on its way out, thankfully.

Something that I used to find hard to argue against is when people say something along the lines of “what’s the harm if it makes people feel better?” Obviously there is the placebo, and homeopathy has some effect in that respect. But while legally it is treated and sold as a placebo, it is prescribed, used and treated as real medicine. This means that a homeopathic doctor will prescribe homeopathic medicine (with no more effect than a placebo) when real medicine is needed. This is dangerous and people have died because of it. Would a real doctor prescribe a placebo for cancer?

Having ignorant or vulnerable people cheated out of their money is just wrong. For example a person might contract HIV/AIDs and while modern medicines would allow this person to live for a very long time, they might be convinced to use homeopathic medicines instead and thus be driven to an early grave - Free from the NHS.

The argument that “while it doesn’t do anything it’s ok because it doesn’t do any harm” is a complete folly, when it replaces or even delays real medicine it becomes a very dangerous issue. I can’t even believe that the NHS funds it.

Wednesday, June 30, 2010   ()

An evening with KDE 4.5 on Fedora 13

Lots of people on the Identiverse have been posting rather positively about the KDE 4.5 RC1 release, so I thought that I would give it a try and post my impressions here. I am a Fedora user, so some of the issues may pertain only to Fedora!

On Fedora, you can get the KDE 4.5 release candidate by adding the KDE repository set as detailed here, then enabling both the kde-testing and kde-unstable through KPackageKit. You can then upgrade by running yum groupupdate kde-desktop as root.

It seems that restarting X isn’t enough in this case and I just opted to restart the computer after it refused to start again, but those with the know-how could probably restart KDM or some such to get it working without a restart.

When I started it for the first time, it appeared that it had lost my backgrounds yet kept my panel. Under further inspection this was because for some inexplicable reason KDE decided to start about 6 activities and start me in a blank one with a black background; I think this has something to do with having a dual screen setup; thankfully I only had to rectify it once and I no longer get any superfluous activities.

KNetworkManager also seemed to refuse to connect to my configured network and eventually I had to remove the configuration and add it again to make it work. I’m not sure whether this is due to some unfinished migration script or something but I expect it will be working by the time 4.5 is released.

Aside from these initial problems, KDE 4.5 is actually extremely stable. There are massive performance increases which are both down to KDE improvements and that we’re now using Qt 4.7. Desktop effects and window movement (including minimising, maximising, dragging size) are noticeably snappier and the lag I was experiencing when clicking on a text widget is now completely gone. For these reasons alone I’m going to be sticking with the new beta rather than downgrading back to 4.4 and waiting for the final release.

In terms of initially noticable changes, most are of the visual aspect. A slightly more metallic and solid colour has been chosen for the oxygen colour scheme and this seems to give the desktop a more consistent and classy feel while retaining the same overall look of the previous releases.

One of the more confusing changes to the Plasma interface is the new scheme of hiding less-important system tray items. Whereas in 4.4 one would click a horizontal arrow on the end of the system tray to expand and show the additional items, there is now an upwardly facing arrow which reveals the hidden items in a dialog when clicked. The problem is that I confused this arrow with the notifications arrow of the previous release, which now has its own symbol and resides to the left of the system tray.

What’s even weirder is that when the arrow is pressed, it opens in a region which would be more associated with the notifications - I assume this is a bug and I hope it gets ironed out before the final release. I’m not convinced that this new system of hiding system tray items is all that great but it could just be because I’m used to the previous system and only time will tell if it becomes unworkably annoying.

A much touted new feature of the 4.5 release is the “Blur” effect, which is combined with updates to the default Air plasma theme to create a brilliant-looking desktop environment. The effect also looks great with other popular Plasma themes such as Glassified.

I’ve not actually looked at the official feature list of the new KDE release because I wanted to give a use case review rather than just reeling off a list of new features. In conclusion, KDE 4.5 seems like a great release, indeed the best yet if the last few issues are successfully ironed out (which I’m sure they will be). The best reason for upgrading will be the speed increase, which I’m still really impressed with and the visual improvements are also a welcome feature.

Tuesday, June 29, 2010   ()

Manual PyQt and basic application structure

My previous tutorials have explained how to use Qt Designer for PyQt applications and now I want to go into how to manually specify widgets and build dialogs with Python. This is the opposite to the way that most of the other tutorials seem to teach people but it’s my belief that Qt Designer is a more general tool while we should use manual PyQt for more specific activities. In an application we should build everything we practically can with Designer and when a finer degree of control is needed we always have our direct manual skills.

So, let’s define the most basic of Qt applications:

import sys 
from PyQt4 import QtCore, QtGui

class SomeWindow(QtGui.QDialog):
    def __init__(self):
        QtGui.QDialog.__init__(self, None)

app = QtGui.QApplication(sys.argv)
app_win = SomeWindow()
app_win.show()
app.exec_()

If you run this file you will get: An empty dialog. Are you excited? This is pretty much the basest form of a visual PyQt application. You define a base dialog in the SomeWindow class which subclasses QDialog, set up a Qt application (QApplication), show a window and then run it.

Now, an empty dialog is good if you want to… Well, look at an empty dialog - But now we can get started adding all kinds of mystical widgets (well, a QPushButton). Now, each visual widget literally has its own class in QtGui, so you just need to create an instance of it:

class SomeWindow(QtGui.QDialog):
    def __init__(self):
        QtGui.QDialog.__init__(self, None)
        self.setObjectName("SomeWindow")
        self.resize(665, 468)

        self.centralwidget = QtGui.QWidget(self)
        self.centralwidget.setObjectName("centralwidget")

        self.btnNewChat = QtGui.QPushButton(self.centralwidget)
        self.btnNewChat.setObjectName("btnDoesStuff")
        self.btnNewChat.setText("Some button")

Remember, the class is the dialog so we treat it as one, which is why we first name it and resize it. We then create a central widget - If you remember the explanation in my previous blog post of a widget being a container for a bunch of other widgets, that is this. We create the central widget to populate our dialog with. Here you can just run any widget method on a widget to get it set up in the way that you want it initially, the methods being described in the documentation.

In terms of organisation this all looks very messy to have in the __init__ function, so perhaps this would be a better way to set it up:

class SomeWindow(QtGui.QDialog):
    def __init__(self):
        QtGui.QDialog.__init__(self, None)
        self.setup_ui()

    def setup_ui(self):
        self.setObjectName("SomeWindow")
        self.resize(665, 468)

        self.centralwidget = QtGui.QWidget(self)
        self.centralwidget.setObjectName("centralwidget")

        self.btnNewChat = QtGui.QPushButton(self.centralwidget)
        self.btnNewChat.setObjectName("btnDoesStuff")
        self.btnNewChat.setText("Some button")

Yep, it would have probably just been easier to use Qt Designer so far, but in further blog posts I’ll explain the kind of situation in which doing it the manual way actually helps. A good way to expand your knowledge in doing this is actually to just take a look at the class files generated from the Qt Designer UI files by pyuic4.

Friday, June 25, 2010   ()

Custom widgets in PyQt

It’s time for another PyQt tutorial, today I’m going to cover one of the more useful features in Qt: Custom widgets. This isn’t a particularly difficult subject if you’ve already covered what’s in my earlier tutorial about using PyQt with Qt Designer - and because we’re building on this we’re going to use Qt Designer to create our custom widgets as well.

So, a custom widget is basically a bunch of other widgets (for the confines of this, anyway) that you group together and embed inside an application; it’s easiest to think of it as a form that you can embed inside a form. It’s probably best to just do it.

So, when you open Qt Designer and it asks you what you want to do, you just have to click on “Widget” instead of the usual “Dialog” and what opens is what looks deceptively like your standard QDialog and for all intents and purposes inside Qt Designer, that’s what it is. You can tell what you’re working on because the class of the faux-form is “QWidget.”

So, drag out your widgets as you would for a dialog until something beautiful takes shape:

In terms of naming conventions the file is generally called something along the lines of “qbase.ui”, in my case I named it “qnewtextbase.ui” and I usually just call the QWidget something like “WidgetBase” for readability in the code.

So, like with dialogs, we need to convert the UI XML into an implementable Python class which we can do with the pyuic4 command as such:

pyuic4 qnewtextbase.ui > qnewtextbase.py

Then in another file we can implement that class like this:

from PyQt4 import QtCore, QtGui
from qnewtextbase import Ui_WidgetBase

class NewTextWidget(QtGui.QWidget):
    def __init__(self, parent=None, win_parent=None):
        QtGui.QWidget.__init__(self, win_parent)
        self.parent = parent
        self.ui = Ui_WidgetBase()
        self.ui.setupUi(self)

You’ll notice that it’s largely the same as a dialog and can be treated as such (The only difference here is that you’re subclassing QtGui.QWidget rather than QtGui.QDialog). Now, in the example I want to do something slightly useful - and where widgets come into common use are with tabbing. So, say we have a QTabWidget - The addTab() method of this accepts a QWidget as an argument; it will literally create a tab containing the widget. So we’ve created a dialog with a tab widget in:

from newtext import NewTextWidget
from dlgmainwindow import Ui_MainWindow

class MainWindow(QtGui.QMainWindow):
    def __init__(self, parent, win_parent=None):
        QtGui.QDialog.__init__(self, win_parent)
        self.parent = parent
        self.ui = Ui_MainWindow()
        self.ui.setupUi(self)

We can then add a tab whenever we want like this (the second argument being the tab’s title):

self.ui.tabMain.addTab(NewTextWidget(), "New Text")

There is of course a lot more to say about widgets and eventually I’ll get to them, but for now I hope I’ve given a general idea on what they are and how they can be used.

Thursday, June 24, 2010   ()

Fedora - Social Media and Language

This is a post in response to the discussions that have been going on in relation to what exactly we should do with the Fedora microblogging accounts and one of the subjects that I’m rather concerned about is how we’re going to deal with different languages and cultures.

Something that was suggested and widely agreed is that we should, if I took this right, only have an English account and “allow” people to repeat the messages translated into their own language, perhaps posted with a specific hashtag or in a group. There is a lot wrong with this.

We’re missing the whole value of microblogging. We’re not going to be using this to just announce things, but to provide an interactive interface for the community: Providing support and such. Not allowing this for other languages completely alienates other cultures and creates islands. Not everyone speaks English and that’s something we have to face, especially when open source projects are of such importance in developing countries which are more likely not to speak English.

Microblogging can also be used effectively to provide services on a local scale: local news, discussion and meetings. Obviously there are mailing lists for this but they are becoming less popular and regional mailing lists certainly don’t seem to be part of the culture at the Fedora Project. An example is in China, where regional expansion of the Fedora brand and community needs to be supported by new and popular services (though Identica and Twitter are technically blocked in China *cough*).

It’s also important to note that people don’t follow hashtags. People might repeat notices with #fedora-zh or #fedora-de, but people aren’t going to see these unless they follow the people that translate them, not to mention the fact that these may not be members of the Fedora Project and thus aren’t held to any account or responsibility for mistranslations or causing trouble. The situation is slightly different on Identica where we can have groups, but the other points still stand. An English-centric approach also prevents us from monitoring keywords to figure out what problems people in other countries are having (or similar trends) because the keywords are going to be different.

I suggest we have separate accounts for separate languages which can interact with their culture. They can be established when community members express an interest in creating one.

Obviously we want to avoid beaureacrazy in this situation and perhaps delegating smaller teams to seperate language accounts isn’t what we should be doing here and I see that it represents a problem, however merging all of the accounts into HootSuite and allowing those in the fedora-socialmedia group access and just have them microblog in their language of choice on the right account.

What I want to avoid is the alienation of different cultures from Fedora. While yes, as someone mentioned, English is our main language for communication within the project - This just excludes people.

Sunday, June 20, 2010   ()