My AssetStore Link

Unity Store Link - Click to see all the Song's work that has been put on Unity AssetStore

Monday, 22 October 2012

Presentando Pie con Bola

Finally got the green light I needed to showcase this. And I proudly present my latest work in mobile game, courtesy of a contract, "Pie con Bola". Whatever that means in English. It's a mini game aimed to raised awareness in recycling.

It's originated from an iOS game FingerKick. It's a score/time attack game where player needs to flick the kicker to kick the ball pass the goalie into the goal. It's very simple but all the factor like the interaction mechanic between the kicker and the ball, and the wind factor(which will bend the ball) and the random position of the ball, and the movement of the goalie make it quite a fun little game. There's some skill in it that you will need to kick the ball in certain tilted angle to actually make it goes where you want.

The actually game I work on is a recycle version. It's slightly more complicated in the sense that there are two goals (in the form of recycle bin) and the player will to get the ball (which imitate recyclable item) into the correct bin. Since the original game was not written in Unity3D, I was tasked to reinvent the wheel, as well as doing the "upgrade" in Unity3D.

Also worth mentioning is, the new game has a team selection and along with it, online leader board based on the team. Unfortunately the team are fictional as opposed to the originally planned, real club team.

Anyway, "Pie con Bola", available on both AppStore and GooglePlay!

Wednesday, 17 October 2012

TDTK v2.1.3

Well, a new release in some time. To be honest it's not a big update. But it does contain one or two rather important fixes/changes which merit this release. And here they are:

  • background terrain with collider can now be ignored when placing tower.
  • change how the wave count is adjusted in SpawnEditor so it's less error prone.
  • add interface to remove a particular wave in spawnEditor without having to compromise the whole list.
  • added facility for OnGUI() based UI to use custom skin.

bug fix
  • fixed bug where path-finding not working when using PointNBuild mode on platform with more than 1 path.
  • fixed bug in spawnEditor where resource gain for each wave is not copied correctly when adding/removing wave.
  • fixed bug where path wont reconfigured when a tower on buildable platform is destroyed by creep.
  • fixed bug where building status overlay wont disappear when a tower is destroyed while being built, unbuilt or upgraded.

The most noticeable change would be the SpawnEditor. The old interface to adjust the wave count is error prone to say the least. A problem which become more apparent if you have more than 10 waves. I didn't realise until I use it extensively myself. If you delete the wave count field while adjusting the wave number, the editor will delete all the existing waves immediately, causing lost of configured wave information. Also there's no way to delete one particular wave in the middle of the list without needing to shuffle all the other wave manually.

With the new change, these problem is fixed. With that, I hope it will provide a better user experience. Like always, comments and feedbacks are welcome.

PathFinder (Onto bigger and better things literally!)

Not sure why, an rather straight-forward attempt to port PathFinder to C# has lead me into a spree of improvement attempt on it. It has invoke the inner beast within me, that crave for challenge and problem solving. It has taken me more than 2 weeks now trying to do it. 

The good thing is, when PathFinder v1.1 hits. It gonna be better than ever. That is if all my theories to optimise and improve the current version works. Well for a start, I've managed to improve the path-smoothing by a great deal. It's basically what that's mentioned here in this post, only better.

From Top down angle

Apart from that, I've added binary heap to the algorithm. Thanks to this well written article here. It's basically a sorting mechanism that eliminates the need to search through the long list of nodes looking for the shortest path. It's suppose to make the algorithm at least 2-3 time faster on a longer route or larger map. Well, it has certain done that. But I'm still not entirely sure how useful it is, for a very good reason.

That reason being I've been tinkered with various ideas to make the path-finding component goes faster. One solution that seems very promising is clustering smaller nodes, which is a square into a bigger rectangular or square. Bigger square cover more area of course so the map ends up with much less nodes, significantly reduce the nodes that need searching. In other words, instead of scanning through the graph at the step of a small node at a time, the algorithm can skip through large area with no obstacle within it. And so, if the number of node need searching is a lot less, I do wonder how useful binary heap will be in this case. After all, it has its own overhead in the sorting mechanism.

Standard grid-based node
Merge nodes within a clear area into a single node
Back to the clustering of smaller node into bigger node, it's a rather simple concept. Just take the two images above as an example, searching for a path in using the smaller, evenly placed node in the first image could easily need hundreds, if not thousands of iteration through each nodes. But in the second image, a path that originally traverse through hundreds of node is simplified down to a relatively very small number of nodes. Obviously, this is just a variant of two tier path-finding. And to an extent, it is just like navigation-mesh solution. It's not something revolutionary. But hey, whatever solution that works best right?

At this stage, it's very much a WIP. For a start, I could use a better clustering algorithm. And it doesnt like my path smoothing algorithm. Still, it's very interesting to see how it goes.

Wednesday, 3 October 2012

PathFinder WIP & Coming Update

I'm glad to announce that PathFinder is now getting an overhaul. I've been trying to do this since a few weeks back but only manage to find time now one of the project I've been working on it finished.

I understand that some of the user do prefer C# over JS. For that reason, a C# counterpart will be added to the package. The new C# code will coexist with the current JS code so user will be able to choose their code of choice. Both C# and JS will have exact the same function and feature.

Another thing that will be worked on is the thing that has been bugged me for a while, path-smoothing. The path smoothing in the current version is based on a rather simple Line-of-Sight (LOS) scan. Although it manage to make some of the twisty path straight, it doesnt look very natural. And what bug me the most, it tends to ignore any gap on the walkable surface and "fly" over it. I've added a few more procedural ray-casting along the smooth path to prevent this. So the result is shown in the image bellow:

A comparison of the post LOS smoothing algorithm path. Left: PathFinder v1.0. Right: WIP
The LOS smoothing in current version on the left shows some places where the path over cut the corner as highlighted in the red rectangular. The modified LOS smoothing, which result is shown on the right side of the image, show no obvious over-cutting .

On top of that, I've added another layer of mean smoothing to smooth out the path. The result is a much smoother path. One that is more natural and organic compare to the direct result of LOS smoothing. You can see the difference in the image below, on the right. For comparison sake, the original path found with no post-processing is shown on the right.

The comparison of pre-smoothing and post-smoothing path in the upcoming PathFinder.
Of course, there will be other small tweak, optimisation done to the package other than the smoothing algorithm before the update is finally released. I hope it wont be long from now.

Status Update (GuildWars2 is Awesome edition)

Once again, I am going to start this post with a typical it has been a while. Properly this time, because it has almost been a month weeks since I last post anything. A very good reason for this, I blame GuildWars2. 

Allow me to explain, I used to spend time working on pay job and then more time working on stuff like TDTK and InputTouches and then the rest of the time do work related stuff (such as posting my work or reading information/ideas). Now, I spend minimum time working, then the rest of time roaming around in Tyria. Kudos to ArenaNet, I havent been this mad about a game since Wrath of the Lich King of WoW. Witcher2 doesn't count, I only spent 4-5 days on it and that's about it. This GuildWars2 here, oh my, I have a feeling I'm going to lost many of my precious hours to it. My apologise here if you have any project, work, request, waiting for me to work on. Surely you understand I'm a gamer.

Enough about GuildWars2, I think it's a topic for another post. This should be a regular announcement of what I'm working on for the past weeks. Needless to say, there's the paid contract that I've been working on for months. Unfortunately I cant shed any light yet although I really wish to. There's some complication with the planning and the progress has been held back a bit. But I think at least a trailer is coming soon.

Then there's another mobile mini game that has just been finished up and pending for release. The game will be released for iOS, Android and WebPlayer. It's a paid job again so it's out of my hand at this moment. But I'm really looking forward to it. I shall make a post about it when the time is right.

Finally, I did manage to put down my addiction of gaming and make some update to the packages on AssetStore. I've done some work to the PathFinder, which I hope to make an update very soon. I'll make a post about my WIP on that later. I've also been doing bug fix here and there on TDTK following various bug report. That's about it.... seems like it's more than I have thought, not bad.

Anyway, I cant resist this.

Look at him. Aint that a bad ass.