Diablo 3 and Starcraft II Heart of The Swarm

Blizzard you had me sorely disappointed when I played Diablo 3. You had re-hashed Diablo 2 but forgot what the nice things about it were. I basically played it once through on Normal and forgot the game completely. Don’t get me wrong it is still a good game but the only reason it was decent for me was because of the story and cinematics. The gameplay mechanics from the 2000 game did not live up to the expectations and hype in 2012. Maybe it felt too similar to World of Warcraft in some ways. Anyways I hope that the upcoming expansion will restore my faith. Blizzard, the Diablo universe has too much potential. Don’t let it go to waste! 6.5/10

Now to the real reason why I decided to actually update this blog at 1am: SC2: HoTS. I am still feeling psyched! I haven’t felt this good about finishing a game since forever. The gameplay mechanics are a testament to a true old-school real-time strategy game and the graphics are incredibly detailed and polished. However, for me, the actual magic comes from the story, the cinematics, the characters, the sound: everything here screams EPIC. Everything blends seamlessly. The final cinematic… wow. Thank you Blizzard for keeping that star-struck, magical feeling alive and for the gentle reminder of why I’ve always wanted to create games. I don’t think there is any other medium that is able to achieve this level of immersion when all the aspects are done properly. Kudos to Blizzard for managing this yet again. 10/10

Shank

Shank is a 2D side-scrolling brawler and platformer which reminds me of the 2D incarnations of:

all jumbled up together in a very awesome way.

The story is quite cliche: you are a mercenary, Shank, who has lost everything and you want to set things right. How do you do that? You go on a rampage to kill the person who has caused you all this trouble. Unfortunately this means killing everyone who tries to stop you on your path.

The game focuses almost exclusively on the killing-everyone-who-tries-to-stop-you part. Shank has three weapons active at any point in the game. His most basic weapon is his knife or shank which is his trademark weapon of choice. He can use it to make quick attacks. Next he has a melee weapon and finally a ranged one. Various assortments of these latter weapon types are collected along the way. You can swap between them as you play. The melee weapons are slower than the knife but do more damage. Range weapons do various amounts of damage but are more useful to keep enemies off you.

Shank can perform other basic attacks which are blocking, dodging, jumping, leaping onto an enemy, throwing grenades and well, shanking (a form of grip). Chaining a number of these moves and attacks allows you to perform some wicked combos. This enables you to clear your enemies in style and quickly. To this day I still don’t know if I know how to perform all the combos but they are insanely fun to find and execute.

Speaking of enemies. Enemies come in four main forms which basically are: thug, huge thug, hound and boss. The first two come in various variants wielding different weapons. The hounds are really annoying (because they can break your combos) but easy to dispatch. Bosses are huge (they usually take half the screen when the game camera is zoomed-in). Killing them in a conventional manner is often tedious. I won’t go into how you can dispatch them but the game does help you figure it out via hints.

Bosses are key components of the story-line and facing them/killing them entails watching a cut-scene. The cut-scenes themselves are well-made and prevent the game from being just a key-basher. They tie the levels with the story seamlessly and give your character depth. You are not killing people mindlessly, your motivation is revenge. Like the cut-scenes the level and character art are well executed and fit well with the game mechanics.

Sound is also well implemented within the game. Nothing beats pulling off a combo with a chainsaw and hearing it roar as it tears through your enemy (yes yes a bit graphic but remember this guy has nothing left to lose). Voice acting is also decent. All in all sound is mediocre but verging on the good side. Not as good as say Bastion but good enough for a game like this one.

All in all I think this game is solidly made and good for mindless de-stressing. I played it two hours straight last night trying to win a hard-mode level. Ah about difficulty. Normal is nice and easy. Hard is merciless. If you get killed you start from the beginning of a level again. That tingled my stubbornness to no end. Hence the two hours.

There is coop mode which apparently is also nice to play and worth a visit. Haven’t done so myself but will give it a shot with people on my Steam list at some point. Finally, the only negative feedback I have for the game is two-fold. One is from me: I discovered some minor bugs while playing. The other one is from a friend who has played it. He finds it too repetitive.

These things aside I would say this is a definite yes for me. I will definitely play Shank 2 and Mark of the Ninja from Klei Entertainment. 9/10

Vessel, Shatter and SPAZ

Vessel

Vessel is a 2D puzzle platformer where the protagonist (you) gets to make use of a number of devices in order to progress. Each of these so-called devices are essentially puzzles which the game teaches you to use as you go along. The cool thing about Vessel, much like LIMBO, is that every puzzle seems mind-boggling at first until you try it a few times and you get that “Eureka” moment. Another nice twist about Vessel is that you can create AI helpers which assist you (or hinder you sometimes). Haven’t finished it yet but can confirm this makes for a good time-waster. 7/10

Shatter

Shatter is Breakout/Arkanoid on mega-ultra steroids. The basic idea is simple, hit the bricks with a moving projectile and make sure said projectile does not die by hitting it with your paddle. Some bricks are harder to destroy then others while others explode taking their neighbours down with them. You also sometimes get powerups and extra-lives from certain bricks. Not much different from the two previosly-mentioned games so far. What Shatter adds is a bunch of cool mechanics. Let’s list some of them:

  • You can push and pull the projectile allowing you to maneuver it into position.
  • As the bricks explode you can collect their remains by pulling these towards you as you do the projectile. The annoying thing is sometimes this makes you lose focus on your projectile…
  • As you fill up on brick debris you fill up a meter which allows you fire a barrage from your paddle.
  • Your paddle is NOT safe. Certain bricks come towards you and you have to shield yourself using an ability you have.
  • You can release as many projectiles as you wish based on the number of lives you have. This grants extra bonuses.
  • MEGA BOSS FIGHTS!

All-in-all a good tribute with a good twist. 8/10

Space Pirates and Zombies

With a name like Space Pirates and Zombies (or SPAZ) I was a bit sceptic. Yet another generic indie game? Fortunately not! I started playing at 1700hrs and ended up stopping at 1830hrs only because a friend of mine messaged me. Needless to say I was engrossed. The game’s main aim is to obtain as much as possible Rez or E-126. An element which is used for warping around planets. Various factions trade/mine/pirate Rez as it is the most sought after commodity in the universe. As the game starts it puts you in the pants of a falling apart mothership which you repair via various tutorial missions. The nice thing about SPAZ is that you get to play on both a macro and micro level. On the macro level you get to pick where your faction goes to mine and who to attack/befriend/trade with. You also get to choose which ships your mothership builds based on your current scenario. On the micro level you can outfit most of the ships you use and even pilot them to mine asteroids and attack enemy ships. When you are making use of more than one ship you can switch between them. The AI takes care of the ships you are not directly controlling and does a decent job. Apart from Rez there are other commodities which the game uses such as Goons (or enemy pilots you rescue) and Data (used to upgrade stuff)… I’ll be honest, I probably have just scraped the surface of this game but I find it really makes up for its cost. My only qualm about the game is its presentation and interface but it is something one can get used to quickly. 8/10

LIMBO

LIMBO is what every platformer should strive to be. Great story, eerie atmosphere, awesome animations and, above-all, mindboggling puzzles which when finally solved give you a great sense of achievement. My only grievance relates to a certain type of puzzles (not going to mention which so as not to spoil the game) but these are probably a matter of preference. Overall a nice little gem everyone should own. 10/10

Space Generals v1?

Lately, due to work and personal interest I have been experimenting with Unity. It is a very nice and simple 3D engine with a lot to offer in terms of features and capabilities. I am hoping that in the following months I will be able to use it in order to perform a re-write of Space Generals. While Space Generals (version 0) met its requirements as one of  my Master’s case-studies, it is in a dire need of a bottom-up overhaul. This will probably mean having to make do without a Haskell back-end and a Google Web Toolkit-based front-end. If Unity allows me to call external executables I might re-use the Haskell back-end as is and simply use Unity instead of GWT for the front-end. More on this as I make more progress…

In the meantime I am back to studying vectors and matrices with the hope that this allows me to refresh my memory and to better understand the various functions provided by the Unity API. In the end, while the API does a fantastic job to simplify and abstract, I feel that a basic knowledge of the underlying mathematics is a good plus. (Now I wish that my brain had conveniently kept its knowledge of this subject from pure maths classes, but apparently mathematics topics are like languages for me, they become rusty if not used from time to time.) The next step after this would be to go through various tutorials in order gain some experience and insight on how to best design and implement Space Generals using Unity. Finally, it will be my turn to get my hands dirty and give it a good shot.

Once more I am hoping that this blog will be a way for me to share what I have learned and to keep a journal of the game’s process.

4Blocks Source Code

Today I decided to try my hand at releasing a cabal package with the 4Blocks code. I finally managed: http://hackage.haskell.org/package/4Blocks-0.2. (I made a newbie mistake in 0.1 so please ignore that release).

Unfortunately the library can be compiled only with, as far as i know:

  • GHC 6.8.3
  • Gtk2hs 0.9.13

The reasons why are in the README file in the cabal package, copy/pasted here:

Some notes:
– The game currently works only with GHC 6.8.3 due to its use of Gtk2hs 0.9.13.
– I haven’t tested with anything later but it is likely to fail due the fact that later versions of Gtk2hs have a different system of handling events.
– To make this project compatible with later versions of GHC and Gtk2hs two changes are required:
– Remove the function “permutations” which was copied from a later GHC base library
– Alter key-event handling to the version used by later Gtk2hs: some functions (in CommandKeys.hs) were simply introduced in order to disallow some of the keys used in the game (namely rotation) to trigger continuously when a key is held pressed. I believe this kind of behaviour can be managed automatically with Gtk2hs’ new event handling mechanism, however I haven’t had time to recode accordingly myself.
– I hope to write a patch for this in the near future.

So yeah, fairly old now, but I thought, I’d share the code all the same as some people have requested it earlier. Hopefully I will release the code with my AI later on after my project is over and done with in summer and also a patch to make it work with newer versions of GHC and Gtk2hs.

I have to say I really enjoyed coding the game in Haskell and if you have any comments for me, regarding better ways to code stuff, silly things I did, or anything else please let me know by leaving a comment!

Space Generals

Hi all!

It’s been more than 4 months since my last post! I’ve been really busy lately creating a website for a game called Space Generals which we are going to use for our research in game AI. The game itself is actually a turn-based one much in the style of Risk with a little twist which will allow us to study hierarchical AI and domain-specific embedded scripting languages. The website’s front-end is developed in Java using the GWT framework while its back-end, which carries out turn-processing and game-logic, is developed in Haskell. Here are some screenshots of the game:

More information about the game and how to play can be found in the User Manual.

Feel free to register and play the game. You need at least one more friend to play a game and up to 5 players can play together.  Also, if possible report any errors and provide suggestions using the game’s:

Email Address

Twitter

Facebook Group

Also, it would be of great interest to us for you to share your game-playing strategies using the above methods as we shall be using them to create different AIs using the DSEL we are working on at the moment.

Thanks! We hope you enjoy the game!

P.S. Currently only Mozilla Firefox and Google Chrome are supported.

Paper: A Domain-Specific Embedded Language Approach for the Scripting of Game Artificial Intelligence

Yet again I have ignored this blog for quite some time – I’ve been really busy with an implementation of a game involving a Haskell back-end/Google Web Toolkit front-end (more on this in a future post)  and other deadlines. Anyways I thought I’d share more info on how 4Blocks’ AI was implemented using a DSL embedded in Haskell:

A Domain-Specific Embedded Language Approach for the Scripting of Game Artificial Intelligence, with Gordon Pace, in the Proceedings of the University of Malta Workshop in ICT (WICT’09), 2009.

More info on WICT can be found here. Co-incidentally thanks to Dr Pace’s Erdös Number of 4 I get to have one of at most 5. 🙂 Hope this short paper provides with some interesting lightweight reading. Also, any feedback is greatly appreciated!

Haskell IDEs on Windows

I’m a Windows user. I do dabble with a little Ubuntu now and then but most of the time since I am running around a lot: uni, work, flat, parent’s home, gf… I tend to stick to one platform. So I said to myself, I can’t work with Haskell the way I am, writing code in Notepad++ and compiling manually in command prompt. (Well I can but I wanted to make things easier). My next logical question was: Is there possibly no IDE for my most fav language? Of course there is… so I look things up and find out that the two most popular beta IDEs are Leksah and EclipseFP2. Both Leksah and Eclipse work on windows as well! Perfect. Anyone would do!

Leksah
Since, I have worked with gtk and I liked it I went to Leksah first (ahem… there is also the new installer which kinda made the choice in the end for me). I installed it but I couldn’t figure out why it wouldn’t parse my installation’s modules. (I am using the Haskell Platform with ghc 6.10.3 for the pure reason that I want to work with gtk2hs and it currently supports that version.) At first it was due to my system’s lack of the tar application which I tried to fix using GNU Tar. Unfortunately the latter seems to be missing some fork mode so it didn’t work out. Is there any way to remedy this somehow or are there any step by step installations somewhere on how to install Leksah (I have followed the given instructions to no avail)?
Disclaimer: I can’t neglect the fact that I might have not managed to make it work due to lack of knowledge from my part.

EclipseFP2
After some hours I said… well lets try EclipseFP2. Now I know it was/still is in development but I said, lets give it a shot. Unfortunately I met with problems again:
1. I couldn’t get GHC to work with it even thought I set the Haskell implementation and the scion correctly.
2. I couldn’t make it show what errors my code contained as my console was blank all the time. When I opened the Errors view i found out that my error was due to a problem with:
Could not write file: D:\Eclipse Workspace\.metadata\.plugins\org.eclipse.debug.core\.launches\L\My Project\src. The folders were there up to .launches, the rest was non-existant.

So, I am sorry to say that neither of them worked for me. For now I am going back to Notepad++ and old command prompt. I want to make it clear that I am not saying that the developers who have worked on these IDEs should be ashamed of themselves but the direct opposite. By my attempts I am showing how I applaud their time spent on giving us an IDE. I just wish I was good enough to make the IDEs work myself but sadly I was not able to. I just hope that someday Haskell will have its own IDE or that someday soon I might get time to work on one of the projects myself. I sincerely believe that given the publicity given to Haskell by the various publications and books such as Real World Haskell, the only real thing missing from making this language more mainstream is an IDE. And unfortunately not just on Linux-based systems but also on Windows. We all have to admit that most mainstream people come from Windows: especially first year uni students attending their functional programming course (that’s how I met Haskell) and Java/.Net professional programmers who want to dabble in functional programming.

Anyways, three things:
1. If anyone managed to make Leksah or EclipseFP2 work well on their machines please let me know where I went wrong in the comments. I can’t stop stressing the fact that it could be something I missed.
2. What do you guys think is the future of Haskell’s IDE development?
3. What is the most common platform and compilation method most Haskellers use?
Let me know! 🙂

Edit: Gotta love this community!

1. Just minutes after my post I got a reply from Hamish Mackenzie link with tips on how to fix my problem. I am currently working on it with his help! Thanks!

2. I also asked Thomas ten Cate about EclipseFP2 on his website here and he has replied here.

Thanks both of you guys. 🙂

Edit 2: Leksah works, now EclipseFP2

1. Leksah works for me on Vista. Here is a screenshot as proof!

Coincidentally there is also some of 4Blocks’ code which I hope to release shortly, as soon as I have some time to figure out how to work with Cabal.

2. Going attempt to make EclipseFP2 work next. Since I need to pull the source from the live sources via github and I have never used the latter, it might take me some time. Or I can wait a bit as JP Moresmau seems to be working upon updating EclipseFP2.

To both teams: Keep up the great work. 🙂

4Blocks with AI

I’ve been wanting to write another blog post on the series on DSELs I’ve been planning, but I’ve been really swamped with work lately. So once more I’ll post a video or two on something I’ve been working on. It’s the 4blocks game again, this time playing on its own with an AI I’ve written for it. Here are the videos:


On the whole these were two good runs. I’ve had much better and much worse runs of course.

The AI is by no means perfect but it uses the DSEL techniques in Haskell. I have two languages acting here:
1. A Tetris DSEL
2. Haskell acting as a meta-language over the Tetris DSEL.

What is happening is that for every new brick the game state is queried by Haskell for certain information such as occupied blocks or number of lines. Using this information, by means of Haskell’s case statement I simply trigger one of a possible number of strategies. These strategies acquire certain information from the game state and generate a DSEL script. This script is then carried out by a DSEL script interpreter.

There are numerous problems with the AI and its mostly because I haven’t had time to write more strategies or a more intelligent way to select what according to the selected strategy is the best final brick destination.

That’s about it for now. Let me know what you think.