Archive for the ‘Computers’ Category

The Walking Dead game

Monday, April 30th, 2012

I just played one of the best games I’ve played in ages:

The Walking Dead Game Telltale

Telltale games did a good job with Tales from Monkey Island a few years back, but kinda failed with the Jurassic Park game last year, and having played lots of FPS zombie games like Left4Dead, Zombie Panic Source, Resident Evil, etc.. I was not at all convinced Telltales adventure point and click would be very exciting or give you the real feel of the zombie apocalypse.

But I gave it a go anyway and man am I glad I did. The game completely sucks you into an awesome atmosphere and story from the start, the dialog is great and you have to make some hard choices (I expect these to become much harder in future episodes).  The puzzles in the first episodes were very easy and the episode should talk around 1-2 hours o play.

The controllers were a bit clunky at first but I got used to them pretty quickly. My only complaint so far is that a couple of the timed dialog options (you have X seconds to answer them) are a bit to quick, I’m a pretty fast reader but for like 1-2 of the dialog options I didn’t even manage to read the options before it timed out and auto-selected.

I’m a big fan of the walking dead tv series, or at least I was at first before the drama took completely overhand. And I can highly recommend this game to anyone who’s into the zombie genre, I’ve obviously just played episode 1 of 5, but so far the game is a lot better than the TV series.

Rating: 9 / 10

SWTOR dying?

Monday, April 23rd, 2012

I was initially very impressed with Star Wars the old republic, but lately it just seems EA/Bioware is deliberately trying to kill the game.

I haven’t really played the game for over a month and not sure if I’m going to again, maybe if they implement character transfers between servers I’ll give it another go.

There are several reasons why I’ve stopped playing:

End Game PVP was broken, then they broke it some more, then they removed it

Battle of Ilum which is supposed to be the end game open world PVP area was totally broken, so at first everyone were just farming the objectives in turn.

Bioware tried to fix this but in doing so they screwed over all of the servers that had uneven faction balances, so on our server the empire could take over the republic spawn point and spawn camp people, many of who was unable to leave the pvp area. This also made some people gain pvp rewards insanely quickly and pretty much pissed off all of the PVP’ers in the game.

 

Horrible support
In WOW you actually got a game master to appear, and the game masters KNEW the game, and you could actually have a conversation with them. In SWTOR you file a ticket, this ticket is almost never fully read by a human, you just get a pre-made response that touches upon the theme of your question, but is not an actual answer.

Also some of the support people appear to not have played the game, and are unfamiliar with even the simplest MMO mechanics of the game they are offering support for.

 

End game PVE is buggy and some bosses are unplayable

The last month we were raiding we were never able to do SOA (last boss of Eternity Vault) because of all the bugs, gearing up was quick and easy and there were not much incentive to continue past hard mode raids.

 

But the main reason: DEAD SERVERS

For some reason the asshats at Bioware/EA decided it would be an awesome idea to just put up 90 fucking servers just for EU alone (10 servers would be more than enough).. So most of the servers have really really small populations. My main and my guild is stranded on “Scepter of Ragnos” where I just took this screenshot:

People are complaining like crazy in the forums and many people are not playing because their lvl 50 characters are stuck on dead servers which are no fun to play on at all (impossible to get groups together for raids/pvp/word bosses/etc..) but Bioware hasn’t done anything and were ignoring the problem for months. There are so many posts about dead servers on the forum that it’s not even funny.

Meanwhile the community itself are abandoning the low population servers and moving to one of the 4 servers that actually have people on it. Most of the people I’ve been playing with have moved to “Tomb of Freedon Nadd”  where I just took this screenshot:

Scepter of Ragnos mostly have imperial players, so republic fleet there would be about 2-4 people.. So the server where my main is has 15 people on, while the server everyone has moved to has around 200 :(

 

Character Transfer

The only thing that has even a remote chance of getting me to play again is enabling character transfers. But even that has a slim chance at best, since most people I’ve been playing with is fed up with the game, and our guild which was awesome barely has any players left.

When character transfers come you probably won’t even be able to transfer your characters to highly populated servers (where you got your alts now), because players there are already complaining about queue times during peak hours. So You’d have to get lots of guildies and other people to agree to move to move all your characters from both your dead server + tomb of freedon nash to a third server.

I’ve totally lost faith in Bioware’s ability to manage this MMO after everything that’s happened, so if I had to make a guess, I would guess the player base is going to continue diminishing, until EA gets pissed about the missing $$$ and turns the game Free2Play, after that the game pretty much dies completely.. Which really is a shame cause the game itself is pretty good, and the class quests and stories are unrivaled in the MMO genre.

Trekwar 0.4.5 UI

Tuesday, April 10th, 2012

I’m finally done with all of the user interface tasks in the current Trekwar sprint. And while I don’t have anything against Swing, it’s going to be sooo nice just working on the server backend for a while :D

Trekwar 4.5 new UI

For more info on what’s been going on lately with Trekwar see the devblog post on the Trekwar site.

Moving server

Wednesday, February 29th, 2012

My main server has been a virtual server at vps.net for a couple of years now, but today I moved it to a dedicated server with Hetzner.de for two reasons:

  • The VPS <-> SAN connection at vps.net has been down around 5 times the last year, putting the filesystem into read only mode and requiring a manual restart
  • It’s not possible to get a VPS with high amounts of memory without it becoming ridiculously expensive

The dedicated server is not that much more expensive than the VPS I had, but it’s a bit faster and instead of just 1.2 GB ram it has 24 GB. So now I’ll be able to run several very large Trekwar games now that alpha testing is approaching.

Today I spent a good portion of the day moving stuff over.

Mumble: This was literally just tar’ing it and ssh’ing it to the new computer.

Tomcat: I installed the newest version and just copy pasted the <host> sections of the old config file. and copied over the JSPWiki that trekwar.org uses

Mysql: I ditched mysql and instead went for hsqldb, this required some rewriting of the aakretech.com website and the sql stored procedures, which took over an hour.

SVN: This also took about an hour, moving the repository was easy, but had to rebase all the local repositories and generate new ssh-keys and stuff.

Trekwar: An development version which has been running for months was shut down and copied straight over just like Mumble

Misc: Also there were some cron jobs (Like the one that keeps the Trekwar bug list updated), config files and other junk and stuff that had to be moved

DNS: What took up most of the time was sorting out and waiting for DNS stuff, previously I used vps.net’s dns servers but now I had to set up zones both at dynadot.com where my domains are registered, and zoneedit.com where I have some zones (primarily to be able to get mail forwarding at the same time as having a normal A record for aakretech.com). I suspect Dynadot’s DNS manager to not update properly, had to re-edit many of the zones before it took, and I’m still waiting for aakretech.org to go from their DNS to ZoneEdit :/

 

Clausius Memory

You can never have too much memory, and yes I named my server after Rudolf Clausius since it’s located in Germany.

Eternity Vault SWTOR run

Tuesday, February 21st, 2012

I just did Eternity Vault (one of the two raids) in Star Wars The Old Republic for the first time with only guild members.

Used Fraps to record it and ended up with this movie which is pretty funny


 View on youtube

The guild is <Orange Pixel> at the Scepter of Ragnos server (EU – PVP)

Really enjoying endgame in SWTOR so far (hardmode raids), can’t wait for the third raid to come next month.

Star Wars The Old Republic

Friday, December 23rd, 2011

I’ve been playing World of Warcraft on an off for over 5 years, before that I played Anarchy Online and Eve Online for a couple of years.

After that I got a lifetime subscription for Star Trek Online, which kinda turned me off MMO’s altogether :)

I’ve been playing a couple of the SWTOR beta weekends and got early access 6 days before release, and I’ve made it to level 30 so far (think there are around 10-20 lvl 50′s on my server (Scepter of Ragnos)).

And so far I must say… SWTOR is fucking awesome!


Riding a shuttle between two areas of the map

If you just gave me the game and let me play the first 10 levels (Starting planet), I would be 99% sure the game was made by Bioware. Unlike for example WOW where you just accept quest, go kill/collect and return, the quests in SWTOR are really amazing. The quest chains make up wonderful stories in classic Bioware style (Baldurs Gate, Neverwinter Nights, KOTOR, Dragon Age), and you can very often choose different ways to do the quest. The NPC voice acting also adds to your total immersion in the stories.

The class quest, which is a long quest line that follows your character between level 1 and 50, is absolutely brilliant, I’m playing as a Bounty Hunter and the story is comparable to a really good single player RPG. Also the companion system is great, and you get a really close connection to your characters, much more so than in KOTOR / Mass Effect.

 Me and my kickass companion Mako

So far I can only judge the lvl 1-30 part of the bounty hunter class quest, but I’ve heard the other classes (which have totally different class quests) are equally good. So I’ll probably be making alts just to play the story lines.

The instances I’ve been in so far are all good, like the quests you can also affect how the instance unfolds by choosing dark side / light side.

I’m playing as a Bounty Hunter Bodyguard (healer), and the healing mechanic is really good, each time you use a healing ability you gain heat and you need to keep your heat level low and not overheat to be able to heal. This means you can heal forever if you manage your heat properly, but dealing with big damage spikes is a bit hectic (but very doable).

The graphics are really nice, although some people complain it’s too cartoony (mostly WOW fanboys it seems, which is ironic beyond belief). I’m glad the graphics is not realistic (skyrim, age of conan), I don’t think that would be a good look for this game.


I'm trying to be a ruthless bounty hunter, but Mako with her big puppy eyes makes it hard at times

So far I haven’t experienced a single disconnect (saw 2 lag spikes during 1 beta weekend, that lasted about 5 seconds), so for me the launch has been close to perfect. I came across 1 bug in a class quest, but the forum had a workaround.

I’m really looking forward to seeing what the end game is like.

To sum it all up in one sentence, “I’ve played many MMO’s, but I would say this is the first MMORPG I’ve played”

Update 2012-04-23:

The sentence above is deliciously ironic, since Bioware has totally screwed up the game (90 servers on EU side, 5-10 would be enough), and now it’s actually a RPG without the MMO part on the server where I have my main =)

Origin.. never again!

Thursday, December 22nd, 2011

Even though it means I’m basically throwing Battlefield 3 out the window, I just uninstalled the piece of shit Origin client.

I pre-ordered SWTOR (Star Wars The Old Republic) on Origin in July, and today I had to get the product code for it so I could continue playing.

SWTOR appears under my games, but for some reason it says it’s unreleased when it was released 2 days ago (Also notice the goddamn BF3 beta game that I could find no way to remove from “my games”).

I click the info button and it says I purchased it on July 28th, and gives me a product code.

But the product code is not working, and says it’s already been used. And after 30 minutes with EA live chat support they say I haven’t ordered it, despite being able to say why it shows up under my games and gives me a registration code.

So now I have to go to the mall tomorrow and get a physical copy of the game. I could probably have ordered it on origin, but then I would end up having 2 battlefield games (1 not working) and 2 swtor games (1 not working) under “my games”. Also the downloadable game is 15$ MORE expensive than the on in the store.

Fuck you Origin!

The waiting game

Friday, August 19th, 2011

EA Origin

Just 2 more months…

Pentecost programming

Monday, June 13th, 2011

For some reason almost everyone in Norway have the day of on “Pentecost Monday”. Not that I’m complaining, I slept until noon, got up to watch Doctor Who and Game of Thrones, but also managed to get lots of work done on my Startrek Game.

The game is almost ready for a little pre-alpha test which I’ve got about 15 volunteers ready for. Today I completed the final feature that will be implemented before this test, and maybe the most important feature of them all.

Trekwar Ship Combat

It was nice to see those stupid fleets that have been moving around my screen finally do something violent. My technologically superior (I cheat) scoutship blew that poor Klingon while taking almost no damage.

Implementing the combat between spaceships took about 5-6 hours of work today (lots of rules for selecting which ships to fight, calculate if they hit, calculate damage, etc..), so now I can start working on the testing scenario that all the testers will be playing through before the big multiplayer test starts.

Toodledo API (simple java version)

Sunday, June 5th, 2011

Wanted to get a list of all the bugs for my Star Trek game, that I have registered at Toodledo and have them listed on the Trekwar wiki.

Toodledo offers a nicely done API, but there was no java implementation, there were a couple of unofficial ones, but I decided to write my own very simple basic program for connecting to Toodledo and getting all the tasks as XML, and parsing them into a simple Java object. So if you’re doing something similar, this program might be a nice place to start. To keep it as short as possible, comments and exception handling is pretty much not there :)

download the file: Toodledo2html.java

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.StringReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
 
class Task {
    String id;
    String title;
    String modified;
    String completed;
 
    String folder;
    String context;
    String tag;
    String status;
    String priority;
    String length;
    String note;
}
 
public class Toodledoo2html {
    // TODO you must get the 4 values below from Toodledo
    private static String appID = "x";
    private static String userID = "x";
    private static String userPW = "x";
    private static String applicationToken = "x";
 
    private static String fields = "folder,context,tag,status,priority,length,note"; // get these fields when downloading tasks
 
    private static String sessionToken;
    private static String key;
 
    private static String toodledoTokenURL = "https://api.toodledo.com/2/account/token.php";
    private static String toodledoGetTaskURL = "https://api.toodledo.com/2/tasks/get.php";
 
    public static void main(String[] args) {
        sessionToken = getSessionToken(md5(userID+applicationToken));
        key = md5(md5(userPW)+applicationToken+sessionToken);
        ArrayList<Task> tasks = getTasks();
        // do whatever to tasks
    }
 
    private static ArrayList<Task> getTasks() {
        try {
            String data = "?key=" + key + ";fields=" + fields + ";f=xml";
 
            System.out.println("Getting tasks: " + toodledoGetTaskURL + data);
 
            URL url = new URL(toodledoGetTaskURL + data);
            URLConnection connection = url.openConnection();
            connection.setDoOutput(true);
 
            BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
            StringBuilder xml = new StringBuilder();
            String line = in.readLine();
            while( line != null) {
                System.out.println(line);
                xml.append(line);
                line = in.readLine();
            }
            in.close();
 
            ArrayList<Task> tasks = xmlToTasks(xml.toString());
 
            for(Task t : tasks) {
                System.out.println(t.id + " " + t.title);
            }
            return tasks;
 
        } catch (MalformedURLException ex) {
            System.out.println(ex);
        } catch (IOException ioe) {
            System.out.println(ioe);
        }
        return null;
    }
 
    private static ArrayList<Task> xmlToTasks(String xml) {
        ArrayList<Task> taskList = new ArrayList<Task>();
 
        try {
            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
            DocumentBuilder db = dbf.newDocumentBuilder();
            Document doc = db.parse(new InputSource(new StringReader(xml)));
 
            Element root = doc.getDocumentElement();
 
            NodeList tasks = root.getElementsByTagName("task");
            for (int i = 0; i < tasks.getLength(); i++) {
                Element task = (Element) tasks.item(i);
 
                Task t = new Task();
                t.id = getDomTextValue(task, "id");
                t.title = getDomTextValue(task, "title");
                t.modified = getDomTextValue(task, "modified");
                t.completed = getDomTextValue(task, "completed");
 
                t.folder = getDomTextValue(task, "folder");
                t.context = getDomTextValue(task, "context");
                t.tag = getDomTextValue(task, "tag");
                t.status = getDomTextValue(task, "status");
                t.priority = getDomTextValue(task, "priority");
                t.length = getDomTextValue(task, "length");
                t.note = getDomTextValue(task, "note");
                taskList.add(t);
            }
 
        } catch (ParserConfigurationException ex) {
            Logger.getLogger(Toodledoo2html.class.getName()).log(Level.SEVERE, null, ex);
        }
        catch(SAXException se) {
 
        }
        catch(IOException ioe) {
 
        }
 
        System.out.println("xmlToTasks got " + taskList.size() + " tasks");
        return taskList;
    }
 
    private static String getSessionToken(String signature) {
        try {
            String data = "?userid=" + userID + ";appid=" + appID + ";sig=" + signature + ";f=xml";
 
            System.out.println("Getting session token: " + toodledoTokenURL+data);
 
            URL url = new URL(toodledoTokenURL + data);
            URLConnection connection = url.openConnection();
            connection.setDoOutput(true);
 
            BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
            String xml = in.readLine();
            in.close();
            String token = xml.substring(xml.indexOf("<token>")+7, xml.indexOf("</token>"));
            return token;
        } catch (MalformedURLException ex) {
            System.out.println(ex);
        }
        catch(IOException ioe) {
            System.out.println(ioe);
        }
        return "";
    }
 
    private static String md5(String input) {
        try {
            MessageDigest md = MessageDigest.getInstance("MD5");
            md.update(input.getBytes());
 
            byte byteData[] = md.digest();
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < byteData.length; i++) {
                sb.append(Integer.toString((byteData[i] & 0xff) + 0x100, 16).substring(1));
            }
            return sb.toString();
        } catch (NoSuchAlgorithmException nse) {
            System.err.println("ERROR. MD5 ALGORITHM NOT FOUND");
            return "";
        }
    }
 
    public static String getDomTextValue(Element element, String tag) {
        if (element != null) {
            NodeList nl = element.getElementsByTagName(tag);
            if (nl != null && nl.getLength() > 0) {
                Element el = (Element) nl.item(0);
                if(el != null && el.getFirstChild() != null) {
                    return el.getFirstChild().getNodeValue();
                }
            }
        }
        return "";
    }
}

Note: This program was made to run once per hour.. running this program many times in a row will cause Toodledo to ban you for about 1 hour. When that happens there will be a IndexOutOfBoundsException -7 from the method that gets the session token. This can be fixed by saving the token you get between requests, and not asking for a new one each time (which is what causes the short ban).