Games I’ve Been Playing: Hearthstone

Go, Blue Eyes White Dragon! …oops, wrong game.
Hearthstone
Sign up for the beta here.
(Open beta coming in January 2014!)
Or watch the game trailer here.

Hello there, it’s back with me on another “Games I’ve Been Playing” post, and surprise, surprise, this time it’s not another mobile game! Instead, this time we’ll be talking about the latest PC game from Blizzard, Hearthstone. I got the beta key around 2-3 weeks ago and have been playing it daily ever since. I suppose that’s enough time for me to form up a complete opinion about the game, so here we are.

And whoa, I just realized that I got the Hearthstone beta access on my birthday. Thanks again, Blizzard!

Anyway, before we go further, let me just say that Blizzard has missed a really big opportunity by not calling the game Cardcraft. Hell, they could even use Cards of Warcraft as the title if they want to keep the Warcraft branding. But nope, they went for Hearthstone: Heroes of Warcraft instead.

Okay, enough of me rambling, time to get on with the show!
To get a quick overview of the game, just watch a round of Hearthstone here.

A Hearthstone match

So, what is Hearthstone? Hearthstone, in short, is a digital collectible card game featuring the universe of Warcraft. On Hearthstone, 2 players will engage in a turn-based match where they use their own deck of cards to defeat their opponent. The game plays out pretty much like Yu-Gi-Oh! or Magic: The Gathering where players can use their cards to summon minions and activate spells to try reducing the opponent’s health to 0.

Well, what’s so unique about Hearthstone then?

At the core of Hearthstone lies the mana system. It is the system that governs everything on the game. Each player starts a match with 1 mana, limiting the number of cards they can use early since every card costs some amount of mana. However, as the match progresses, the mana pool will slowly increase, allowing more devastating cards to be used as the match gets closer to its end.

And that’s all there is to it for the mana system. Sounds too simple, you say? Well, that’s the true brilliance of the mana system, because beyond its simplicity (which makes the game accessible to everyone), lies a deep strategical complexity.

For one, the mana system makes balancing your deck vital for winning since you need to excel even when you’re constrained by your mana limit. It also makes mana management during the game itself important, because losing your 5-mana card to an opponent’s 2-mana card is just a no go. Not to mention that it makes the game much more fast-paced, most of the the match I played last for just 10-15 minutes.

Seriously, whoever came up with the mana system deserves a Nobel prize.

Hearthstone heroes

Another defining feature of the game is the hero that you must choose to represent you during a match. Each hero in Hearthstone grants you a special ability and access to cards unique to that hero. Because of that, the hero you choose will shape up your deck and your play style. For example, if you choose the Mage hero, your play style would revolve around pressuring your opponent by dealing damage with your spell cards.

Okay, even though the game is really fun, you would still need someone to be your opponent, right? Fortunately, Hearthstone includes a matchmaking system that could quickly find an opponent for you. And so far it has been doing pretty good, I have never failed to find a game no matter what time I’m playing. Not to mention that the system is quite fair too, I’ve never found myself playing against someone totally out of my league.

Once you’re in a match and having a good time though, you’ll be surprised to see that there’s no way to chat with your opponent. Somehow Blizzard has totally skimped on adding any kind of social features to Hearthstone. There’s no chat, there’s no lobby, and the only way to communicate is with some limited emotes. Sigh, sometime all I want to do is tell my foe “Crap, I’m screwed.”, yet the game provides no way to do that.

With other free to play games goes all out on their social aspect, it’s perplexing to see Blizzard simply ignores that subject.

Hearthstone card

It’s not just social where Hearthstone is lacking though. Being a casual and quick game, Hearthstone is perfectly suited for mobile gaming, yet Blizzard doesn’t seem to be interested on pursuing the mobile market. Sure, there is a plan to release the game on iPad, but I just can’t see iPad as a mobile device that can be used for playing on the go (though iPad Mini is close).

Well, apparently Blizzard just announced that Hearthstone is also going for iPhone and Android devices! While it won’t be arriving until at least second half of 2014, this is definitely great news for everybody who likes to play games on the go (or the toilet).

Anyway, after my first couple of rounds, I have a feeling that Hearthstone is going to be a game where I pour a lot of my time into. And my further experience with it seems to confirm that feeling. There certainly are issues (like the lack of chatting) that makes the game less than perfect. But Blizzard already get the hardest part, the core of the game, right, so I’m really hoping that they can fix those issues before the game is publicly released.

So what are you still doing here? Quick, go sign up for a beta!

A Thought on OUYA

OUYA: The console we need, but is it the console we deserve?
OUYAThe Indonesian version of this post could be found on GamesInAsia.

Note: This post is originally written on late July 2013, so some stuff might have changed since then. My overall opinion is still the same though.

Ah, the OUYA. The $99 game console that plays mobile game on your TV. The pioneer of the age of the microconsole. The proof that crowdfunding is the real deal.

I was sold on the idea of the OUYA right after I watched their introduction video. I believed that the console industry is in dire need of a disruption and I wanted to participate in such effort, so I decided to back it with my $99.

And apparently I was backer number 290! Being an early backer doesn’t mean I’ll get the console early unfortunately. In fact, I only got the console much later, around early June 2013. I’m not complaining though, being able to create and ship those products without much delay is quite an achievement already.

OUYA Console

So, how is it?

Overall, I really like it. I already have tons of fun playing several games on it, and while using it, there are some parts that feel like they’re the future. Looking back, I think the OUYA has delivered exactly what it promised months ago, which is bringing mobile games to the big screen.

Anyway, the OUYA is a multi-faceted product, so there isn’t any easy way to do a thorough judgement on it. However, I believe that there are only 3 aspects that we need to look at to get a complete impression of the OUYA. These aspects are the hardware, the software, and the ecosystem, so let’s check them out one by one.

OUYA Thank you

The OUYA is a physical product first and foremost, so let’s talk about the hardware first.

First, let me remind you again that OUYA is a $99 game console. At that price point, I knew the hardware wouldn’t be anywhere near Apple level, so I set my expectation real low. I seriously expected the console to feel all light and plasticky, just like a toy.

So when I finally got my hands on it, I am very pleased to find out that’s not the case at all. The console as a whole feels very solid and surprisingly quite weighty (though it’s still light enough to be carried around easily). The ports on the console are quite clear too, I found myself being able to setup the whole thing painlessly using the adapter and HDMI cable bundled with the OUYA.

The console is only half part of the story though, after all, most interaction with the device will be using the controller. Like with the console, I don’t have any problem with how the controller feels. It feels very good when I gripped it with my hands, and the joysticks also responded to my input with a nice tactile feeling.

It’s not like the controller is flawless though. My main gripe with it lies on the shoulder buttons (the L-R triggers on Playstation controller). Pressing the top triggers isn’t satisfying enough, and the bottom triggers are really hard to press. The same goes with the d-pad, it could use more tactile feedback since currently pressing it doesn’t feel as good as it should be.

One last thing. While the controller connects to the console using bluetooth connection, I don’t feel any latency issue when I use it. I have heard that some people are complaining about the latency, however, that’s not my experience at all.

OUYA Interface

While it’s true that OUYA is a physical product, we all have learned that software can make or break a product. Unfortunately, as of now, software is the weakest aspect of OUYA.

And no, the problem isn’t about the performance. It’s about the missing features. Guess what I did when I first got into the OUYA menu. Of course it’s to download various interesting-looking games. So try to imagine my surprise when I realized there’s no place to check my games download queue. Or when I realised I couldn’t easily check how much available storage I have left.

There’s also the problem that the navigation on OUYA isn’t optimized for the controller. For example, on the game description page, to browse the screenshots users have to press up to highlight the screenshots and then scroll left and right with the joystick. It’s like they forget that the controller has shoulder buttons that can be used to choose left and right easily.

Unlike hardware though, software can evolve over time. So it is highly possible that one day the OUYA will get a brand new interface from a software update. I just hoped that the OUYA guys focused on fixing the interface first before adding more features such as leader boards and social stuff.

Then again, iTunes interface is horrible yet people still use it because of all the contents, so…

OUYA Games

Since OUYA is a game console, it is important that we also talk about what games are available and what games are good on the OUYA. And more importantly, how is the experience of gaming on the OUYA?

First off, let me just say that the OUYA guys got the model right, which is Free to Try. Having an (almost) instant access to hundreds of games for your console is a real blast. Being able to easily browse available games and then trying it out right away is exactly the kind of experience that I want on my game console. Some games do take the free concept to the extreme, for example, League of Evil actually offers the first 50 levels or so for free!

Speaking of League of Evil, I’ve actually played the sequel a bit on my iPod. I didn’t get very far though, playing a fast-paced platformer on a touchscreen just doesn’t feel good. However, playing it on the OUYA with a real game controller gives the total opposite experience. It feels… just right, like the game is always meant to be played with a controller.

Seriously, the tactile feedback on your hand feels unbelievably good. I’m finally able to double-jump, run, dash with precision and actually feeling awesome doing it. Man, how I wish League of Evil 2 and 3 to be released on the OUYA as well. Now I know I won’t be going back to play another platformer on a touchscreen device.

OUYA League of Evil

Seeing how League of Evil is a great game on OUYA, is it safe to say that platformers are a good fit for the OUYA? Based on some other platformers I have tried like Gunslugs and Sonic 4, I think it’s safe to think so. Even runner-platformer like Wind-Up Knight and Vector feels really good when played on the OUYA.

Actually, not just platformers, any game that requires a lot of movement will feel better when played on the OUYA. For example, moving and aiming in the touchscreen version of Shadow Gun feels very awkward, but doing the same thing using a controller feels much more natural. Even Final Fantasy III feels better when played on the OUYA since the character need to travel a lot.

And man, I’ve gotta say, playing Final Fantasy III on the OUYA really takes me back to the PSX era (and BTW, the PSX emulator on the OUYA is really, really good, even better than the one on the PC).

Speaking of Final Fantasy III, the game costs around $15, just like its counterpart in Google Play. And this is my biggest peeve with the OUYA ecosystem, I have already bought a Final Fantasy III from Google Play! Not just FFIII, I have also bought Sonic 4, Vector, and a bunch of other games from outside the OUYA. Having to pay again for the same game really made me think twice about purchasing anything.

Yeah, I know that isn’t the OUYA guys fault, it still sucks though.

By the way, it’s kinda interesting that I haven’t met any game with in-app purchase for virtual currency or something similar.

OUYA Game: Ittle Dew

While we’re on that subject, let’s talk about the payment system for a bit. From my experience, the payment system on the OUYA is pretty painless, just like what you’d usually find on a mobile platform. The only problem is that OUYA asks for your credit card number right in the beginning when you first log in to the console. While it’s not a problem for me, I imagine it will trouble a lot of people with no credit card.

Though I have heard that you don’t actually need to put a correct card number on it, so it may not be that big of a problem.

Anyway, so far we have only covered games, but being an Android device, OUYA can also run other Android apps. During the two months I’ve been with my OUYA, I have watched movie, listened to music, browsed internet, and watched Youtube on the TV in my living room (now where’s that Twitter client for OUYA…). Sure, not all apps are available on the OUYA store, but OUYA is an open console, so all you really need to do is copy and install the app to the console.

And you know what’s crazy about being open? Earlier on this post I complained about OUYA’s interface, and guess what, someone has already made a custom launcher for the OUYA! Hell, that launcher is even more customizable with wallpaper, folders, and stuff. Maybe the OUYA team doesn’t need to build a better interface after all.

OUYA Baxy

Phew, we’ve finally reached the end of this long, long post regarding the OUYA. Well, to sum it all up, OUYA’s hardware is really nice, the software really needs more work, and there are already lots of games that could (and should) be played on the OUYA. I’d even say those games are worth the OUYA.

Should you get it? Well, if you have always longing to play smaller games with controller on a TV (just like I did), go get it. Otherwise, if you’re just some casual guy, go wait for the Apple or Google game console.

[1GAM-Jun] 2 Wet 2 Furious: Progress Log #1

The guy who came up with the title is simply genius (and no, it’s not me)
One Game A Month

Hello again with me in another progress log for my OneGameAMonth entry. In case you don’t know, OneGameAMonth is a community that encourages people to create one game every month. This series of progress log will detail my OneGameAMonth entry for the month of June, and if you’re interested in my past endeavour, feel free to check out the previous logs here.

Some of you may wonder, what happened to my May entry? After all, on the last log I said that I’m gonna work on it some more. Well, there isn’t any need to worry, that is still the plan. However, the end of June is getting closer, so I decided to postpone the May entry for a bit and start working on my June one.

Fortunately, like last month, I’m not doing this entry by myself. A friend of mine has just finished a rather large game and is now hoping to increase his mastery of Unity3D. Well, OneGameAMonth seems like a perfect fit for it, so he decided to help me with my entry. At the moment he has some other project to work on though, so who knows how much he’ll be able to help.

Unity3D

Wait, did I just mention Unity3D? Yep, this month my tool of choice will once again be Unity3D. Unlike my February entry though (which also uses Unity3D), my entry this time will be a simple 2D game. So, to ease the development process, we decided to use a third-party 2D framework for Unity3D.

To my surprises, almost all of the available 2D frameworks for Unity3D are paid ones. Geez, I’m not planning to go commercial with these games, there’s no way I’m gonna pay. Fortunately, one of them, Futile, is not just free but also open source, so that’s what we decided to go with.

And besides, my Twitter timeline has been full of praises (mainly from the NimbleBit guys) for Futile, so I’m also kinda curious about it. Well, how is Futile, then?

I’ve created a really simple prototype using Futile, and so far I found myself really liking the framework. Mind you, Futile is very code-centric and doesn’t use a lot of Unity3D editor integration, but that’s kinda the point. With the inflexible Unity3D I feel like I’m the one being controlled, whereas with Futile I feel like I’m the one actually in control.

Hell, Futile is so flexible that right now the way I’m using it is really similar with the way I’m using my own game framework. Even now I’m kinda tempted to port my framework to Unity3D using Futile =/

Anyway, enough talk about Futile (for now), what about the game itself?

Game concept

Pictured above is the basic concept of the game. And as you may have guessed, it’s a game about water skiing, hence the title “2 Wet 2 Furious” =D

The game is simple, the player has to go through a water ski course while dodging various obstacles. Every few meters or so the player will encounter a ramp which will let the player enter the trick mode and increase his score by doing tricks. Also, the score he gets will be multiplied by how much speed he has accumulated during his run in the course. Well, that’s the game in a nutshell, and it will end if the player hits too many obstacle.

To be honest, originally the game is about skiing instead of water skiing. But then I realized that winter isn’t going to come any time soon and the control scheme I thought of actually makes sense for water ski, so I modified the theme a bit. Not to mention that a game about water skiing is much more rarer than a game about skiing.

I actually came up with the original idea several months ago. At that time though, I was in the middle of working on my April entry and something else also came up in the next month, so I only got to work on this idea now. Fortunately I have recorded a detailed note about the game idea on Evernote, so now I don’t need to worry about forgetting some crucial gameplay element.

Anyway, it’s the last week of June, how far has the development progressed?

Prototype screenshot

Well, not far. We have just started working on it pretty recently after all.

I managed to work my way through Futile pretty quickly and came up with a really simple prototype, which can be seen above. It’s pretty basic at this point, just a couple of scrolling sprites (no collision detection yet) with a character that you can control. Not much, but enough to imagine how the game would feel.

The most surprising part is probably how much I dig the control scheme. Basically, you don’t control the character directly but instead you control the boat that’s pulling the character by dragging your finger around. If you thought about it, that kind of control scheme isn’t very precise, but that’s exactly why it provides a much more hectic and intense game experience.

The control scheme is so fun that I’m contemplating to remove the trick part and just focus on the obstacle-dodging part. To be honest, the original idea hangs on the concept of rewarding player with the trick stuff, so I’m not so sure about eliminating it yet. However, the end of June is approaching fast, so simplifying the game is probably a good idea.

Well, there’s definitely still a lot of things to work on, wish us luck!

[1GAM-May] Tic Tac Head: Progress Log #2

WARNING: Some technical programming stuff ahead.
1GAM Banner

A quick spoiler before we go on, despite this being the second log, the game has been released and is working. But yes, there will be a third log, read on to find out the reasoning.

Anyway, hello people of Earth! It’s the second progress log for Tic Tac Head, my fifth entry for OneGameAMonth, a community that encourages people to create a game every month. Check out the first log here, or check out the logs for my other entries here.

As I have said in the previous log, Tic Tac Head is an online, multiplayer Tic Tac Toe game for your Android devices. It’s nothing revolutionary or ground breaking, but it’s a good exercise for learning about how to build a multiplayer game. And truth be told, I did learn all the hassles about building a multplayer experience.

So, how did my endeavour go? Did it end well?

The Game

To save you all from reading this wall of text even further, let me just say upfront that the ending is a happy one. Well, sort of 😉

Don’t rush now, let’s do this chronologically. The last time I did say that the game can already be played and the player can win or lose. So I continued from that point and built all the missing pieces like the friend list, multiple games, and even some sort of bot that player can play against. And while I was doing all that, the server app was slowly getting into shape as well.

Keep in mind that while building those features, I didn’t connect the app to the server at all. I simply simulated internet connection by having some game process running in a different thread with 1 second delay. Looking back, that was a really good decision. I managed to build an app that is structured for the internet, so I don’t need to change a lot of stuff later. Or so I thought.

So yeah, I left all the internet stuff to the last day. I spent the first part of that day setting up the connection to Google Cloud Endpoints, and fortunately, once I got it functioning, it just worked beautifully . However, the data I got from the server have a different structure from the ones I used in the app, so we spent the second part of the last day hacking things to make the game works.

In the end, with around 30 minutes to spare, we managed to get a working game where 2 players can play Tic-Tac-Toe back and forth. At that point, I simply uploaded the game and called it a day.

Account picker

The game uses a lot of interesting technologies, which unfortunately wouldn’t be written in this post. But let me highlight just one them, shown above, which is the Account Picker.

As you can see, with the Android Account Picker player can choose a Gmail account (or Hotmail) associated with the phone and use it as the login alias. The original idea behind this is that we don’t want players to create yet another account to play the game. We also don’t want to deal with the hassle of keeping another social network session and token data, so we simply use those emails as the login ID for the players.

The development is not all bright and sunny though, one thing that really annoys me is the amount of loading indicator needed to be displayed. Getting a game needs a loading indicator, waiting for opponent’s move needs an indicator, sending a move needs an indicator, etc etc. Seriously, writing “if (isLoading()) showLoading() else showGame()” all over the place really complicated the codebase, and writing to a messy source code is the total opposite of fun.

The pain of building an internet-connected game doesn’t stop at that unfortunately. There’s also the problem that being connected added various possible cases to the app that I need to anticipate. For example, I had to starting thinking abouse cases when a request failed, or when the device got disconnected, or when the request is finished but the user isn’t viewing the app.

All those cases added further to the complexity of the app, and coupled with the last minute hacking we did, it made the game codebase one hell of a mess.

Messy or not, the game works. See it in action for yourself in the Vine capture below.

So now it’s all done, where’s the game link?

Unfortunately, the game isn’t ready for public consumption yet. Like I said earlier, there are a lot of cases that I have to think about, and I haven’t tested them all. For instance, I don’t think right now (as the time this post is being written) players can receive a challenge from a player who is not stored on their player list. And I’m sure there are other non-functioning cases like this, so I decided to withhold the game until it’s fully functional.

That said, I have put the game somewhere on the internet. If you’re smart and creative enough, you should be able to find it 😉

(apparently someone already found it before I even posted this log XD)

All that is the reason why I decided to have another progress log for this game. I planned to keep working on this for a bit more since I wanted to ensure the game is fully functional before making it available to more people. That said, right now I’m aiming to clean up and refactor the whose codebase so it will be easier for me to fix stuff.

And since I left out all the technology stack used from this post, I think I’ll include that in the next log. So stay tuned, people!

[1GAM-May] Tic Tac Head: Progress Log #1

Please forgive my l33t Photoshop skillz >.<
1GAM Banner
Uh oh, we’re approaching the end of May and I haven’t written anything about my OneGameAMonth entry. Well, I’m still trying to make the deadline here, so I’ll keep this post short.

Before we go further, a quick introduction is in order. I’m participating in OneGameAMonth, a community that encourages people to create a game each month during this year. It’s May, so right now I’m working my on my fifth entry, and you can check out my games for the previous months right here.

First, let’s get the cat out of the bag. I suck at doing anything related to the internet. I can’t write a good website, all those HTTP POST GET mumbo jumbo confuses me, and I hate JavaScript. Yet, the internet is fundamental to everything these days, and even games with all those leader boards, cloud save, and social things. So I secretly wish I could get better at doing this internet stuff.

Then, around two months ago, a chance came by.

Chat Head

A chance by the name of Chat Head. Chat Head is the new interface for Facebook Messenger featuring a draggable profile image that is floating on top of the phone UI. Me and a friend of mine really liked this new interface, and during our discussion, we came to a realization that this kind of interface is a really good fit for multiplayer games. Imagine being able to easily goes into and out from a turn of Letterpress. Or Words With Friends. Or Poker.

But building Letterpress, Poker, or even Chess is a tad too big for us. We (well, at least I) don’t really have the experience to build a proper multiplayer game. So we start small. We start by building a really simple multiplayer Tic Tac Toe. That way, we would understand the underlying infrastructure of a turn-based multiplayer game which hopefully can be useful for building another multiplayer game.

We decided to postpone that plan a bit so I can use it for my May OneGameAMonth entry. We also decided that I will deal with the client stuff and he will deal with the server stuff. To be honest, I’d rather learn how to do the server codes, but eh, building that floating interface should be an interesting challenge as well. While for my friend, he hopes to be able to learn server development with Python from this project.

And here we are. So how did it go?

Well, it went… badly. Me and my friend got a bit busy this month with some school stuff so we barely wrote any code at all. Fortunately, I managed to sneak in a bit of time to work on the floating head interface (and exploring the deep end of Android app development) while my friend managed to get some Python codes running on Google App Engine.

Screenshot

Right now I don’t have any school work to worry about for around a week, so I managed to go full throttle on this project for the last few days. I’ve been adding more functionality like the game logic and the game interface, and I’m writing this post while in the middle of working on the game friend list. Working on apps is a bit different than working with games since I have to adhere to a lot of the operating system architecture. Fortunately, it’s still fun.

While now the game is sort of working (you can win or lose a game), I’ve been avoiding some of the more difficult issues like managing friend list or even notification. These are the issues that need to be dealt with a great amount of consideration and I don’t really have the time for that. That said, I’m positive that I can do the core functionalities of the client app in the remaining 3 days.

Meanwhile, my friend hit a snag on the server side of things. Apparently his little adventure with Python is too much for him to handle, so now he’s reverting back to Java, his usual weapon of choice. There’s also the fact that he has another school stuff coming up soon, so he’s in a bit of mess right now. With less than 3 days until the end of May, who knows if he could pull it off.

And at that cliffhanger, I’ll end this log. Stay tuned for the next post to see whether our ending is happy or not 😉