My AssetStore Link

I've moved - GO TO THE NEW WEBSITE

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




Thursday 20 December 2012

Christmas Sale and Happy Holiday! Yay

It's that time of the year again. And so happy holiday everyone, hope you have a great one.

I'm please to announce that I'm having a sales and all my product on AssetStore is going to have 30% or more discount. They are:
Should you need more information about each of them, you can find them on either on this blog or in their respective unity forum thread. Just click the respective label on the right hand side of this page. For your information, this sales should run until 8th of January.

Once again, happy holiday and merry Christmas!

Thursday 29 November 2012

Status Update (Mini Break Edition)

In case you haven't been reading any of my unity forum support thread. I'm currently away from office on a semi vacation which involves a lot traveling and chaotic, spontaneous schedule. Personally, it has been pretty good fun and refreshing, to break from the normal routine. Unfortunately my work load has take a huge hit.

Despite my best effort to work using whatever time I have got left. A MacBook-Pro is simply no substitute for a PC with 25 inch screen, where I can work better and faster without the need to shuffling the all the windows on screen every 5 seconds. As good as the MacBook-Pro is, it's simple a tool for me to build and test my stuff on iOS.

Still, I did just most of the new update for TDTK on it. And yes, TDTK v2.1.3f1 has just been submitted to AssetStore. No major addition yet, but I'm playing with quite a few ideas that might just make it to the next update, v2.1.4, which I think wont be ready at least until new year, if all the idea does make it to release.

Also, Unity4, why you no have new GUI system yet?!

Saturday 17 November 2012

Nope, It's not Tetris

It just appear that I've got some free time on my hand for the last few days and I thought of trying something new (or rather old) for a change. And this is what I have come out with:


It has the gameplay of Tetris for now but no, it's not Tetris. At least that's not what I intend to call it. There's a very good reason to it. Turns out there's actually a bloody copyright to the game. That's utterly bollocks in my opinion when such claim is made to a game. If that's that is true and right and practise by every developer in the industry, imagine what would happen? Everyone would just stop making game and sue everyone they can find.

Anyway, since there's a copyright claim to it and I've no intention of getting sued, I shall have to tweak the gameplay before I could put it on a AppStore. If I ever come to that stage. It's still very unpolished and unoptimised at this moment. I have only worked on it for a few days with spare hours. We shall see where can we go from here.

Have to say it's been fun and it's quite satisfying seeing it work. It's not much, but you can have a go too if you fancy it. Here's the webplayer, comments/feedbacks/questions are welcome! Hope you enjoy the music!

edit: ops, just notice that there's no control instruction/tootip in the game. So here it's:
  • wasd and arrow keys - left, right down and rotate
  • space - pause/resume, restart when game over

Monday 12 November 2012

Annoucing TDTK Free!


It's TDTK and it's free!

Well it's not the full version of course, much of the feature in full version is stripped down but it should cover the basic for a simple TD game. The feature of course included:

SpawnManger with configuration spawn setting:
 - time-based spawn (spawn on a fix timer)
 - wave-based spawn (spawn as soon as the last wave is cleared)
 - round-based spawn (spawn based on user input after each wave)
 - support multiple creep type in each wave, with individual creep interval, delay and such

Towers:
 - TurretTower, standard backbone tower in any TD game
 - AOETower, damage/debuff any surrounding creep within range
 - SupportTower, to provide damage/speed/range buff to nearby towers

Creeps:
 - Configurable move speed and HP

Flexible Scene Setup:
 - Flexible platform/grid placement
 - Each platform/grid can be customized to support/not-support any tower type.
 - Path can be setup as easy as placing waypoints

Others:
 - various shootObject/effects are supported
 - projectile, beam, visual effect
 - damage, damage over time, slow, stunned
 - detail documentation from straight from full version

note: PathFinding and mazing are one of the many things that are not supported in this free version.

For obvious reason, minimal support will be given to free version. The priority will be given to the full version.

You can download it from Unity AssetStore.

Please consider to make a donation or buy the full version if you find this useful.


Wednesday 7 November 2012

InputTouches v1.1.3 now live!

It's about damn time. Version 1.1.3 is finally live on AssetStore. After almost 3 weeks I first submitted it. Turns out there's some faulty submission of some sort that the earlier submissions were overlooked.

Anyhow, it's now live and hence this post. The details of the updates are as follow:
  • Added JS counterpart to all the C# examples
  • Added isFlick variable to DragInfo, indicate if it's a (very) short drag
  • Pinch Event now pass PinchInfo which include the magnitude of the pinch as well as the finger's position.
  • Pinch Event now pass RotateInfo which include the magnitude of the rotation as well as the finger's position.

You can get it on AssetStore. For more information, please visit the official support thread.

Tuesday 6 November 2012

PathFinder v1.1 is Now Live!

I'm pleased to announce that PathFinder has been given a major overhaul and is now live on AssetStore. Following is the update:
  • Added a new graph type which is more memory and performance friendly
  • Added binary heap based sorting to the search algorithm, make the search faster
  • Path-smoothing has been reworked entirely
  • Reorganise structure of the code
  • All Example scripts has been rewritten
  • C# counter part of the source and examples are now included
With the addition of the new graph and binary heap based sorting, it goes without saying that the new code is a lot more faster. Well, just have a look at this video, I think it shows more than I can possibly say.


The scene shown is setup with a square grid with grid size of 0.5 over an area of 100x100. Effectively 40k nodes. The grid is then optimised and clustered into smaller area based node for more efficient search algorithm. In older code, search a path from end to end with such node resolution would take easily take up to 0.1second or longer. With the new code, well as you probably can see, the queue time for the search is hardly noticeable even with a handful of agent call for search every 0.1seconds. This is largely thanks to the new adaptive node that I used. The adaptive node clusters together an area of smaller node into one. This reduce the total node needed across the whole scene. And since the new node cover a bigger area, the search would involve much less node as each adaptive node would cover much more ground than the evenly distributed grid node. The two images below would show the strong contrast between the two node types.

Adaptive Node, it takes much less of them to cover the area
Typical grid node, there's thousands of them to cover the area

Also the path-smoothing has been improved. The old algorithm has a tendency to cut through area which is suppose to be unwalkable. The new algorithm has eliminate this entirely. And it has a build in mean smoothing to make the corner more... smooth.



Having say that, the new PathFinder is by no mean perfect. There are a lot of places which can use more work. You can expect me to keep working on it. And I have to say, at this point, the path smoothing seems to be a lot more taxing on the performance than the search algorithm itself. I totally didn't expect that. I'm guessing the next logical step would be optimising the path smoothing.




Monday 5 November 2012

Status Update (NSS is awesome edition)

Just Submitted an update for PathFinder v1.0. I have put substantial amount into this update, almost everything has been rework. But I'll talk about it in later post, probably when the update is approved by Unity. But if you have been following the blog, it's basically about a more optimised and efficient graph type, as well as path-smoothing and addition of C# version of the code.

It's a bit worrying to be honest. My submission of last InputTouches update has been pending for more than 2 weeks. It normally take only a day or two, makes me wondering what has gone wrong. It's also frustrating at the same time that there are people who surely could use the update (which I promised) and I can't get it out. If you are wondering what's the InputTouches update is about, it contains some requested minor change by user as well as a whole set of examples in JS.

I'm looking forward to the approval of these two package. Also I have some plan for AssetStore, possibly a shocker, so stay tuned. :)

Apart from these, I've been working on a new but quite interesting free-lance work. It's still in early prototype and the game won't be available anytime soon. Still, it's always exciting to work on new stuff/mechanic that I haven't try before.

Finally, I should explain the title. What the hell is NSS? It's short for New Star Soccer. A ridiculously addicting and fun iOS game. It's rather terrifying, I find myself play it on my phone all the time, whenever I can, even when I can play stuff like guildwars2 and PES on my PC. However I suppose only those who have interest in football could really relate to it. The fact that it's so simple and yet it manage to capture some of the essence a whole a player contribution in a football match thing successfully is really impressive. Well not all of it is brilliant, certain aspect of it is quite arcady and gamey. Still credit where credit's due, it's really good. Consider that fact that it cost only $1 and it's free to try out. But if you plan to try it out, be warned that it's addicting as hell, so try at your own risk.



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:

addition
  • 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.

Path-Smoothing
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.

Saturday 1 September 2012

TDTK 2.1.2 (bug fix, loads of them)

This should have come earlier but unfortunately I was very busy with contract work and moving house. Anyway TDTK 2.1.2 has finally been uploaded to AssetStore. I'm expecting it to become live on Monday.

Nothing ground breaking in this update. Just loads of bug fixes, mostly NGUI related, and just one new addition. I've mentioned about it before, it's the damage table. If you haven't been follow my blog. It's basically allow user to define multiple (as much as you need) damage and armor type that will be used in the game. Each of the damage type has different effectiveness against each armor type. In short, you can create tower that is particularly useful against certain type of creeps but ineffective against other. Or even a full paper scissors rock relation between the towers and creeps since now the creeps can fight back at the towers. I reckon it should be very useful for some user. I think it does open up a lot of possibilities for various tower setup, on top of the existing options. Come to think of it, this toolkit has certain come far from what it was first release.

As usual, the full list of change is listed as follow:

addition
  • added support for configurable damage type and configurable armor type with for both towers and creeps. User can define multiple armor/damage type. The effectiveness of each damage type against each armor type can be configured.

bug fix
  • NGUI based UI will now sow game-over menu when the game is over
  • pause menu will no longer interfere with game-over menu
  • upgrade to NGUI full version will no longer mess up the NGUI UI
  • fixed bug where creep would sometime stuck at the spawn point
  • fixed bug where creeps HP overlays are not positioned correctly
  • fixed bug where restart/next button on NGUI ui will not work properly
  • fixed bug where tower targeting direction will reset to +ve x-axis every time the tower is selected
  • when using PoingNBuild mode in NGUI ui, switching platform with different buildable tower type will no longer cause certain build button to move to incorrect position. (disable UIButtonOffset component on the button.)

known issue
  • upgrade to NGUI full version will cause a missing script error for Popup List's BaseSliceSprite. This can be fixed by assigning UISliceSprite.cs to the missing component slots.

Tuesday 28 August 2012

PathFinder Update v1.0f (at long last)

It's very strange that I haven't received much feedback about PathFinder. As a path-finding solution I have expect there should be a lot of bug, little tweak that can improve the package. But that hasn't been the case.

Anyway, I have just submitted a new update to AssetStore. Nothing new, just a series of bug fix following recent feedback I got from user. Thanks to AssetStore sales, now it's finally being used by someone who is not me. Anyway, the list of the fixes included in the update are as follow:

  • fixed bug where clustering error occur when the are specified doesn't have similar widht and length.
  • fixed bug where agent would stop before just before reaching final waypoint. 
  • fixed bug where node generation would encounter error when negative start value for x and z is specified for the area.
  • example scripts (chase.js, patrol.js and RTSUnit.js) is now compatible for iOS compilation.

To be honest I don't think path-finding solution is no longer as in demand as it used to be now unity has their built-in path-finding solution. I'm sure Unity will keep on improving the built-in path-finding. That makes me wonder how helpful will a 3rd party solution like PathFinder is going to be come Unity4 in the near future. For that reason, I don't think there's a lot sense in putting more effort into improving this package.

Anyway, I hope user who have made the purchase got what they are looking for.


Edit 1Sep: A hot fix(v1.0f2) has been uploaded and now live on AssetStore following a bug report.

Monday 27 August 2012

WIP and other stuff

Feels like I have been taking a very long break. Truth is I've been moving house. Good news is I have a more proper work place now which is good. Bad news is The internet connection at the new place is not brilliant. Slow is what it's. The area has no fibre optic coverage so there's no chance of upgrading. Very unfortunate. 

Despite me having a chaotic and busy schedule and what not. I've manage to find sometime to work on TDTK. It's mostly bug fixes following the last release. But that's not all. I have been working on a add on to enable multiple custom armor and damage type. Each damage type will have different impact on each armor type. For example, you can have small fire arms that is effective against infantry but no so much against vehicle. Or elemental shield that can effectively block a certain type of elemental damage. It's basically a damage multiplier table. Check this sneak preview image to get the idea.


You can have as many armor/damage type as you need. Each new armor/damage type will create a new column/row in the table which the modifier can be modified. I really like to make this system as flexible as possible so it can be a stand-alone component ready to be used in any game where a damage table might be needed, say a fps or hack and slash. However it will definitely be part of TDTK when it's ready. I say when it's ready because it's still a WIP at this stage so it might not be in the next update.



Tuesday 7 August 2012

TDTK v2.1.1 Released

Finally, v2.1.1 is now live on AssetStore. I know I have mentioned about this but please check out the new demo if you are interested to see the new UI in action. This update has taken a bit more time than I expected due to unforeseen problem. Still I managed to fix quite a few issues. Following is the changes I made:

Addition 
  • added NGUI based ui, with fully commented code.
  • optimization of DrapNDrop Build mode. DragNDrop tower is now subject to dynamic batching.
  • added option to disable the transparent shader to sample tower in build preview.
  • tower animation has been reworked. Add option to assign animation for upgraded turret and base
    object.

Bug Fixes
  • fix bug where DirectionalCone and StraightLine targeting direction is not set properly when changed during runtime
  • fix bug on all ui where resource tower income were not displayed correctly
  • UIiOS will now show information about mine
  • UIiOS will now show information about DirectionalAOETower
  • when building on a rotated platform, the tower rotation will match the platform's
  • mine built with PointNBuild mode will no longer block a node
  • DragNDrop tower's renderer material's shader will not be set back to the default shader set in prefab instead of diffuse
  • and other minor bugs


The most notable addition are the NGUI based UI of course. This version included free version of NGUI but you should be able to make the upgrade to full version with relatively ease. The new UI should be compatible with both mobile and desktop build. It's also much more easier to customize in term of the layout. But I hope you understand that it's ultimately there to serve as an example and showcase. For the best result, you are still better off with your own implementation.

Also worth mentioning is that I have reworked the DragNDrop and tower preview mechanism during placement of a tower. Now the preview should be more robust with option to turn the transparent shader on/off. In previous version, there's no such option and the auto-shader change mechanism will always break the shader setting on any tower in DragNDropmode, as well as stopping the tower from being batched dynamically after being built, even when the tower is eligible.

There's some feature requests that I've left out due to the timing. I hereby apologize for that and thank you for your understanding. Wouldn't want to hold back the much anticipated NGUI based UI for much longer. :)

Anyway, please post any questions you may have in the official support thread. Thanks! Also, any comments are feedback are much appreciated!

Monday 6 August 2012

TDTK v2.1.1 Due To Release


I'm pleased to announce that v2.1.1 (NGUI UI) is due to release very soon. I've finished with the new NGUI UI and now I'm working on a few fix and tweak following some user feedbacks. It shouldn't be long before I submit the new version to AssetStore. I'll try to squeeze in a new feature or two if I can.

Anyway, Feel free to try out the new updated demo.

Saturday 4 August 2012

Status Update

I promised to make more regular post about what I'm doing, despite the fact that most of the thing I'm doing are still classed as "private and confidential" at this point. So I'm wondering how much stuff I can disclose here before I run out of progress to report. I think it's what I should do anyway, looking at my own progress posted on blog used to motivate and drives me to work harder. There's a top tip right there, trust me.  :)

One thing for sure is, you will see plenty stuff concerning TDTK. If you are a regular visitor of this blog anyway. I've been enjoying myself working on TDTK. It's my rightful pride and joy really. And the fact that it's actually useful to users out there is been the real treat. What's better reward for a developer to have his work enjoy and appreciated by the users? Anyway, the reason I see myself working on TDTK for a long time to come is that I still have tons of stuff to do/fix/add on the list. Honestly some might never get done and some might just happen suddenly when I have a eureka moment. Truth is, some of them are quite tricky to do in an open framework like this one. I've been trying to avoid doing some very niche feature which can only be used in some very specific context.

Also something I hope that would happen is that I finally find time to get back the the platformer and finish it. I've stop trying to be ambitious at this point. Just trying to make 20-30 shorts level and make it a very good showcase, or a little bit more, who knows. But that is only I can finally find some time. Maybe I'll put TDTK on hold after v2.1.1 (next update) so that I can actually finish this off and get on with it.

Finally, I really need to take a break sometime to just sit down and play games. I have got this 'urge' to play game recently. I'm actually quite glad about this. I've actually lost all my appetite for games ever since I leaned unity. Got quite a few good games waiting for me. Got them all recently from various sales. Bastion, DeusEx, Portal series.... Not to mention witcher2 demand another play through or two with the release of enchanced edition. Got to say, after sneaky quick play, I find that Bastion and DeusEx is very very good indeed

Tuesday 31 July 2012

TDTK nGUI preview

It has been relatively quiet since the release of v2.1. Not sure what that means, I was expecting a lot feedbacks, tweak requests and bug reports. I can only hope this mean most user haven't got much problem with the new additions and are relatively happy with it.

Anyway, I've been working on nGUI UI since releasing v2.1. It's not complete but it's almost there. And I figure it's time I can show the world a preview. So here you go:

 

So yea, it's pretty obvious that I'm try to match to the TDTK default UI. Pretty much all the configurable are still there. It support both PointNBuild and DragNDrop mode, multiple resource display, pause function and even volume control. It certain looks a bit cooler thanks to the the interactive nature of nGUI. 

However the short coming is it's not as flexible as the default UI. It require a certain amount of setup before it's ready to go. Things like configuring the atlas to include the tower icons for the build button, resource display, such and such. Still I managed to get the build button to be generated dynamically based on the towers assigned in BuildManager. In short, there's no complicated or tedious procedure to configure the build button to fit each towers apart from adding those tower icon to the atlas being used.

Well, that's pretty much the progress I have so far. I hope to get it done and release it asap. Hopefully sometime around or before this weekend.

Wednesday 25 July 2012

A Summary of July

It's been a fairly quiet month for me, at least on the blog. I really like to post more regularly and I should have. I have make a habit of only posting updates of anything when they are official when I should have make post about the development along the way. 

For instance I've spent lots of time working on version2.1 of TDTK. Never mind the documentation which took me an awful lot of time, the addition of some of the new features is not exactly a walk in the park either in term of the thinking process. In the past, all the elements has been fairly well established or straight-forward concept in a TD game, such as splitting creeps, multi-pathing etc... However when it comes to creep to tower attack, there hasn't been a solid example that I can compared against and work towards that particular model, except Plant vs Zombies. I'm sure there are more but somehow that's the only game I think think of. As a result there are a lot of experimenting going on. To be brutally honest, I don't expect all the new addition will be very well thought out for the release. I'm counting on the community to provide me feedback and ideas to make it better in future update.

Back to the topic, most of my time has been occupied by little trivial things in life so I haven't been quite productive as I used to be. Still I'm glad that I'm still able to make updates to Input.Touches and TDTK, while working on a contract. I really hope I can shed more lights about the contract work but I'm afraid it's not the right time yet. The only thing I can say is, it's a lot of work and it's a pain in the ass at time. But still, it's a much appreciated opportunity.

Also the company that I was working on with a friend has completely fall flat on its face, having only release one game on AppStore. Turn out it's extremely hard to outsource any development work at on a small budget. We have been through some horror story doing that. And it really broke my heart with some of the attitude I've seen by some of the individuals calling themselves game developer. But that's a story for another time. So yea so one of the stuff that occupied me this month is to cleaning up the mess following this aftermath.

At least both Input.Touches and TDTK has been doing reasonably well on AssetStore following the madness sales. The positive feedback I got is really the key for me to keep working on and improve them. I really want to express my gratitude to those who has been actively helping me on these package, as well as all those who has supported the work by making a purchase.

All in all, a fairly decent month. Consider the fact that I'm still here and got a contract to keep my ass covered for at least a few months to come. Perhaps I should take this opportunity and just accept the fact that it's summer and I should relax a bit and have some down time.




Tuesday 24 July 2012

Input.Touches v1.1.2

Just a quick note that Input.Touches has got a new update and is now live on Unity AssetStore. In fact, 2 days ago. And yes, this is a very very late post. So here's the update note:


General Change: 
  • documentation overhaul.
Bug Fixes:
  • releasing finger on mobile device no longer triggered a spike in onDraggingE and onDraggingEnd
  • pre-made gesture prefab is no longer missing BasicDetector.cs


So yes, nothing major to be honest, except on the documentation. Thanks to DannyB who did the proof-reading and the formatting template from Lance, the documentation is now indeed up to a professional standard, or so I hope. I really appreciate the help as I couldn't have possibly done it on my own. I'm absolutely hopeless when it comes to matter like this.

Also I like to thank all the support which contribute to the relative success of the package. And thanks for all those who have put in kind review for the package.

TDTK v2.1 - unleashed the horde!!

Finally I think I've done enough to warrant a release for all the new stuff I added in. It's now being uploaded to AssetStore and awaiting approval. To be honest, there are still plenty of cool and interesting stuff I really like to try. For instance, general tech tree, branching upgrade for towers, etc.. But I'm afraid that could mean another few years of waiting time before release.

Anyhow, there's a bunch new additions in this update. Here's the full list:

addition
  • Added component which allows UnitCreep to attack tower or buff nearby creeps.
  • Various behaviour can be set for attacking creep such as range/melee, stop-while-attack or else, etc.
  • new targeting configurable parameters for tower which uses direct targeting.
  • The new tower targeting option include area(all-around, fov, straightline) and priority(nearest, toughest, weakest, random). New range indicator support has been added for new added targeting area.
  • Added shield for both tower and unit, which can be regenerated over time. Overlay support included.
  • support tower/creep can now 'heal' damaged tower/creep.
  • added new rotation mechanism to TurretTower where turret turn in y-axis while barrel turn in x-axis.
  • change camera zoom-limit limitation and y-axis positioning clamp.
  • add option to enable/disable tile/selection indicator.
  • UI.cs now no longer use GameMessage.cs, and thus the appearance of game-message can be configure via GUISkin.
  • tower base now support fire animation.
  • Path.cs has not been change to PathTD.cs.
  • Added new example scene and prefabs.
  • Major overhaul on Documentation. Thanks for Lance.M.

bug fix
  • fix bug where tower cant be build on active path on platform when path-smoothing is disable.
  • fix bug where spawnEditor reset SpawnMode back to continuous.
  • fix bug where projectile trajectory's angle doesn't calculate properly with respect to distance.
  • fix bug where overlay is not displayed properly when the parent unit scale is not set to 0.5.
  • fix bug where platform size will not be correctly auto-adjust when placed as child object where parent scale is not (1, 1, 1).
  • fix bug where creep spawned by destroyed creep resetting the path instead of follow it through, again.

Here's the new updated web demo. There's a plant vs zombie ripped off there. :)

On a serious note, there's a lot of novel element, or rather not quite established element in this version. At least in term of tower defence such as creep to tower attack. So I expect it wont be as well thought out as those features in previous version. Also I'm expecting unforeseen bugs with all those new addition. I apologize for any short-sighted implementation in this update. With that said, any comment and feedback to welcomed. I'll try my best to iron out the rough edges in future updates.



Saturday 7 July 2012

InputTouches v1.1.1 released

Just a quick annoucement that update version1.1.1 is now live on AssetStore. The changes in the new update are as followed:
  • fix bug where onSwipeStartE, onSwipingE and onSwipeEndE events wouldnt fire
  • fix bug but with 2 fingers rotate (twist)
  • added smoothing configuration to 2 fingers rotate (twist)
  • fix error description on documentation, specifically for charge related events
  • added two new mini-game demos, turret and flick-shoot
Some of it are rather critical game breaking bug that shouldn't have happen in the first place. I admit it's my error. I so hopelessly careless. I hope that doesn't cause anyone a serious amount of head-scratching or worse, disappointment over the functionality of the package.

On the brighter side, the 2 new mini games would serve as a very good starting point for some simple game, using the input gesture supported by the library. Both are turret game but uses very different mechanic.

Friday 29 June 2012

Anniversary of TDTK! and more update.

Ok, one year ago this time, TDTK was announced and shortly went live on AssetStore.  Thanks to all the support from the community and the awesome tool that Unity is and the wonderful AssetStore, it has become one of the better recognized TD framework on AssetStore. It's been quite a journey. The framework has come a long way from what is it when it's first released. And for me personally, I have certainly learn a lot from developing the framework. And I'm very much looking forward to put more work into it to take it further.

To mark to the occasion, (well, is more of a coincident to be honest) the toolkit has been featured in AssetStore madness sales. But it's not going for the full madness rate of 50% discount, only 30%. I've said before I never wanted to give out huge discount as I think the current price tag as it's is quite reasonable given the content and support I try to provide to every user. And it's not fair for people who pay the full price. But hey, it's one year anniversary of TDTK and I think 30% is quite alright.

Anyway, the latest update of TDTK, v2.0.4 is now live on AssetStore. Well it was actually a few days ago but I got caught up with some other thing and only now I got to make a blog post here. As usual, following are the additions/changes:


  • added ammo count and reload mechanism to turret and directionAOE towers.
  • added range preview for towers in building phase.  
  • added tower preview for PointNBuild build mode, for both UI.cs and UIiOS.cs.  
  • added modifier for creep's move animation to match the movement speed.  
  • added pause menu for UI.cs. Can be triggered by button pressed or 'escape' key.  
  • tower can now be pre-placed in the scene. 
  • small addition to SpawnEditor, time required for each wave to finish spawn in now shown.
    fix bug where modified prefab value using editor is not saved upon unity Editor quit.
     
  • fix bug where next level turret and base doesn't appear correctly when upgrading towers.  
  • fix bug for editor where when adding new level for towers, the new stats are linked across level.fix several UI related bug.

Monday 25 June 2012

Input.Touches update v1.1


I'm pleased to announce that Input.Touches has been given a major update. It's a huge change to say the least, almost all of the core code has been reworked. As a result, the library is now support multi-touch, multi-gesture concurrently. Following is the major change/addition in a nutshell:
  • added support for multiple (2 or more) fingers version for most event. These events included tap, long tap, multiple (2 or more) tap, charge, drag.
  • added support for multiple concurrent input event. These events included tap, multi-finger tap, long tap, multi-fingers long tap, multi-tap, multi-finger multi-tap, drag, swipe.
  • swipe event can now be triggered consecutively without needing to lift the triggering finger.
All the events in the previous version is still intact. I've tried to minimize the change to the event API as much as possible.

Following the new update, in theory, one can now make a multiplayer game on i-Pad with multiple touch gesture with Input.Touches. Or indeed, build a complex control scheme using the possible combination of gesture type. Very neat I think. I'm rather pleased with the result. It has certainly took me a lot of effort, a lot more than I initially anticipated. But then I've done a lot more than I initially have in mind. Overall this is a huge improvement over version 1.0. I'm fairly confident that most existing user will agree.

The package is now live on AssetStore. Feel free to post any question or comment on the official support thread.

Thanks for reading!


Sunday 24 June 2012

Catching a little breather

Been busy as hell lately. And very eventful as well. Let me list down the thing that have been on my to-do-list.
  • contract work
  • temporary teaching at uni
  • overseeing 2 iOS projects, courtesy of joint investment with friends.
  • support work for AssetStore's customers.
  • update for Input.Touches
  • update for TDTK
  • personal projects, remember the platfomer?
Did I mention I have a internet breakdown last week for a whole 2 days? Terribly inconvenient, it's like having my keyboard taken away to be honest.

Well, don't feel sorry for me, apart from the internet breakdown bit. The work has been fun. Loving the challenge and the pressure. I don't choose this line of work so I can have many days off. But I certainly wish I'm a time-lord at time like this so I can somehow grant myself more time. Suffice to say I didn't manage to complete all the tasks need doing at this point. But I guess it's ok for me to be here, having just submitted both updates of TDTK and Input.Touches to AssetStore. So expect me to make a post about these two very soon. It feels good to break from the normal routine, not working but just talk about the things I've done. Phew...

I've actually spend a great deal of time reworking almost all aspect of Input.Touches. It's now a much more comprehensive and advance framework. I'll make a post about it when it's finally live. But I hope it lives up to expectation of many of its current user. Yes it's quite well received and it's only fair that I make it as best as it can be.

I've also spent a lot of effort on a contract work. It's a TD game based on TDTK. I'm rather fond of what I've made but unfortunately I can show it just yet. It would nice to showcase what TDTK is capable of, without using colored cubes.

Anyway, it's 4am in the morning. Time to bed. I have a feeling that I will be dreaming of me working on multi-concurrent-touch gesture... whatever that means.  It's all I can think of now, despite my best effort to clear my thoughts.  Thanks work, thanks(!)  >.<


Thursday 14 June 2012

Alive and Kicking! Sort of...

It's been a while since I've post anything. This is just to say that I'm still alive and more importantly, working. Ya I know this might not excite many people. I'm not really working on a game which many people are anticipating. I certainly hope I do though. But at least I'm working on getting there. It's about full filling an obligation to myself, as well as paying the bills of course.

I have some good news and bad news to both TDTK and Input.Touches users. The good news is I'm working on new updates for both package. Input.Touches in particular would have some major tweak to fix some of its current short-coming. Bad news is the update might not come that soon. The reason being I'm extremely busy with recent personal related event and a series of other stuff. I sincerely apologise for that, it's not my habit to keep things hanging, especially when it concern benefit and welfare of others. 

Also I've also notice that both package has received some decent review recently. I like to thank all the users for supporting and using the packages.

Friday 1 June 2012

Input.Touches v1.0 Update


I like to thank all the user for supporting Input.Touches. It has received some postive recognition following its featuring on Unity AssetStore madness sales.

Now, an update has been made to the package following feedback and suggestion from users. I've revised almost all of the code to solve the mouse and touch input conflict when running on unity editor with target platform set to iOS or Android. I'll be eager to receive any feedback and comment regarding the new change. I like to thanks Chris Byers for suggesting the possible solution in the first place.

Also along with the new update a bug or two has also been fix. I certainly hope I didn't miss out any. So the full changes in version1.0 are as follow:
  • Code revision, no more platform dependant compilation. Touch and mouse input are now compatible with each other under any circumstances.
  • fix bug where the angle of a swipe is not calculated properly
  • fix bug where onDraggingEnd event doesn't pass the correct touch position when running on device
The latest package has been submited to AssetStore and should be available shortly.

TDTK Update - v2.0.3



A new update for TDTK! again...

This update is relatively small compare to previous. And it's mostly focus on PC and desktop. The most notable being manual targeting and custom cursor. The webdemo has been updated to reflect the change.


The full list of change are as follow:
  • added build and shoot animation support for towers
  • added manual targeting for selected towers
  • added CursorManager, support custom cursor for mouse
  • fix bug for creep pathing
  • fix bug where slow effect doesn’t apply to creep
  • fix bug for UI.cs where level complete/failed message doesn't displayed properly
The update has been upload to Unity AssetStore and is now live.

Thanks for all the users support and feedback.


Saturday 26 May 2012

Hotfix for TDTK 2.0.2

Following the release of v2.0.2 I have found a few more bugs with the toolkit, mostly the new feature related. I have since made and upload the hotfix to AssetStore. Twice if I'm honest. That's how careless I can be sometime. Find myself leaving some logic error in the submitted version just after I made the submission.

So a quick look at the bug fix of v2.0.2h:
  • fix bug where wave would not register as cleared correctly.
  • fix bug where creep spawned by destroyed creep not follow thought the path taken correctly
  • fix bug where tower only appear partially transparent when dragged in DrapNDrop mode

By the way, the "buy TDTK" on the right side of the screen is exactly what you think it's. It's a directly purchase of TDTK via my Paypal. It's slightly cheaper than AssetStore purchase. For the discount, a slight penalty is it's not as convenient Unity AssetStore importer. But you will are still entitled to all the update just like it's in AssetStore. You will be add to my mailing list so I could inform you of any updates.

Tuesday 22 May 2012

TDTK v2.0.2 update

The latest update of TDTK, with lots of bug fixes and a few new additions.

The new features are actually quite cool. The first new feature are creep ability to spawn creep when killed. A feature I have always want to add but somehow it keep escaping my thought when I'm working. So now you can have a big boss creep that spawn a bunch of smaller creeps, which will then spawn another bunch of smaller creeps and it goes on. Of course, the unit to spawned and the number to spawned is configurable.

The next feature are dynamic waypoints. Very simple conceprt really. Instead of a fixed waypoint, creep randomly follow the waypoint with a slight offset. In short, the creep will no longer stick in a queue and follow each other. The placement and formation of creep seems a lot more natural and less boring with this.  I'm very very pleased with this. However please note that there's a limitation to this, be sure to read the ducomentation regarding how to use this.


Dynamic Waypoint in action, and guess wat's the orange color bigger creep does.


To see this two new feature in action, check out this updated webplayer demo.

Oh, I've also tweaked the camera as well. Adding dual finger camera rotation for iOS as well as improve the zoom input. The full list of the change in this update are listed as follow:
  • fix bug where TurretTower won't shoot when there's no turretObject assigned.
  • fix bug where tower will target a creep even when it's destroyed.
  • fix bug where GameControl will always auto initiate AudioManager and override user created AudioManager.
  • fix bug with editor for GameControl and SpawnManager.
  • fix bug for tower editor where TurretAnimateMode doesnt assigned properly.
  • fix bug where creep will replay death animation when hit after they are destroyed.
  • fix bug where override speed value in SpawnEditor doesn't take effect.
  • Added option for dynamic waypoint, randomise creep position along the path in some extent. Make group of creeps movement and placement more natural. The parameter can be turned on/off or adjusted using “Dynamic WP” in Path.cs.
  • Added option for creeps to spawn more creep upon destroyed. Configurable in UnitCreep.cs.
  • Added camera rotation for iOS, configurable in CameraControl.cs.
  • pinch-zooming in iOS has been reworked and now work more consistently.

In case you are not an existing user of TDTK and interested in getting it, here's the link to AssetStore. Alternatively you could contact me directly, a discount might apply I might add. :)


Thursday 10 May 2012

I are game developer. Can I haz cake?

I have been busy as hell recently. And I expect things will stay the same in the coming months. Blame myself for being too greedy, always want to try out interesting concept and take on new challenge. I never thought myself could be such workaholic until I start using Unity.

But complaining about how busy I'm is not the reason I'm here writing this post. Hell I'll be better off working rather than spent the precious time complaining. Or indeed play some games, which I'm ashamed to say that I haven't done so for quite sometime. I mean really sit down and play for a few hours. I've always believe that a game developer that doesn't play game will never make great game. It's just like a cook that doesn't like eating couldn't possibly be a great cook.

The reason I'm writing this, is that it's fast approaching one anniversary of me starting to work as a freelance game developer officially. Yes I got my first job around this day last year, for $100. I feel like I should really share my story. Who knows it maybe an inspiration for any eager young blood. Or at the very least it will serve as a warning.

So my story as a game developer in a nutshell. Tough! It's certainly not easy at all. I work almost non stop and that's the easy bit. The harder part is to endure the financial difficulty. And trust me I have been through some very stressing financial situation. I was earning $500 or so during the first few months. That was like £300. Trust me, it's a very puny amount when you are living in UK. How my parent always say study hard so you can get a job with good prospect. A year ago this time, I've just past my PhD viva. To others, I might have just earn my passport to any job I want. But the truth is no where near. Anyway that's another story. The point is I've op for a career path that is frankly not very promising and a millions miles away from what I've been doing academically.
 
I really appreciate those who have gave me the opportunity to prove myself when I was a newbie, unproven and with no experience. Of course I did work very hard to impress. I often work 3 hours for the pay of one, at my own will. I will go the extra mile whenever I can, without being told. All this regardless of the pay. Still, there are time where there is simply no work available. I filled the hours, in fact I filled every hour that I can spare, including my gaming time to work on my own project. Some of them you seen on this blog, some... I hope that one day I will be picking them up again. The problem is I'm simply not adept at 3D modelling, something those project of mine desperately need. It doesn't help that I don't have artist that I could work with. Despite my regular visiting to unity forum. I have yet to meet a decent artist and willing commit their precious time. I know this is largly because I'm very fussy but I simply refuse to let my work turn into some mix quality product.

I should make clear here that I hold one principal for my work, do my best, and it should be driven by heart and soul, not financial gain. I consider game developing an art-form, as such they should be a work of passion. Every game is a piece of art work, a brain child of a game designer. No less than a movie to a director, a piece of music to an composer. The highest reward you can get from game developing should be the enjoyment of playing the game. Of course money is a factor and no doubt a good game will most probably sell, even it it's not better than some soulless junk out there. Yes I'm quite upset at the current state of the gaming industry both as a gamer and developer. The only decent studio whose sole objective is not to milk their consumer seems to be CDProjekt. I have maximum respect for them and I absolutely adore Witcher2, a true RPG for pc. unlike some others... Skyrim interface *cough*

Gone slightly off topic there. But a word of advise to anyone intend to start making games. Get a friend or two who can do things that you cant, and learn to do things that they cant, a little help from each other can help you go far. Alternatively you can learn to do everything yourself and forever be alone. Yes it's quite lonely doing this. Especially when no one shares your ideal.

So I've started off as a freelancer, coding for others, slowly crawling my way up to become a game developer. Thanks to a year long of determination and some luck, my situation has improved. Partly due to the relatively success of TDTK. And partly due to the fact that I now have a much more convincing port-folio. Also well done job with satisfied customer goes along way.  I'm still doing freelance work though, whenever I think I can manage it. Just because it's interesting to help others and I love a new challenge. Ok, the money helps too. I wont consider myself a game developer yet, not until I have a pc title under my name. Yes I'm not a fan of console. If you ask me they are the reason why the industry is in it's current state. And it's no secret I'm not a fan for mobile platform either.

Off topic again. So the long term plan is to gather enough resource, gather the right people and get myself into a right position where I can really start making games that I love. With no compromise to financial restriction, no worries about financial returns, just games that I can truly be proud of. The road is still very very long. And just in case you are wandering where am I, I would say I've just taken the first step. Annoyingly financial status is again the key factor for me to say that. Despite being better than when I first started, I'm definitely not loaded yet. My average income is just about enough to cover my basic living expenses, and I do mean "basic", probably more basic than average people. So go figure.

So here I'm, I could be working as an engineer or hell even a lecturer in a university and lead an luxurious life, with plenty to spare in pocket. But I've choose this over anything else. For one very simple reason. I love it! I love the challenge, I love being able to create something enjoyable, and it's damn satisfying watching something you work really hard slowly coming together. Also, coding is just so much fun. I can make cool stuff happen with a few lines of code. It's so simple it's magic! It's quite simply, perfection.

That pretty much sums up the reason why I'm doing this, the seeking of perfection, in the form of gaming.

Wednesday 9 May 2012

Project Unibot

I think it's about time I show this. Something that I've been working on since... well a long time ago. Unfortunately I have to shelve it in order to focus my effort on some other stuff, TDTK and DashMonster *cough*. Only for the past week I manage to find sometime to work on it. Anyway, I present my little platformer, temporarily named Project UniBot.


It's meant to be a simple and fun platfomer, something Mario like. As you might imagine, this is meant for iOS. Sometime I wonder why everything I ever made has to be tagged with iOS when I personally hate playing or indeed developing iOS game. But hey, no harm make it playable on PC.

You can't make a post shouting about some work with just an image. So with this post I shall include a demo webplayer for this cute little game. I think this is the first webplayer demo on this blog that resemble a real playable game. Not the usual showcase stuff that I made for TDTK and others. I hope you enjoy it. Do give me comment and feedback about it, positive or negative. It's always a treat. I'll say that although it looks very simplistic, I can assure you that it has gone through many iteration of modification to reach this point.

By the way, I'm very fond of the art and theme, all designed by Mr Fabian Schmidt aka acumen on unity forum. All credit goes to him for the artwork.