Search Unity

Match-3 Starter Kit – Just released!

Discussion in 'Assets and Asset Store' started by DFT-Games, May 26, 2011.

  1. DFT-Games

    DFT-Games

    Joined:
    Jun 24, 2010
    Posts:
    454
    Hi guys,

    @MattyMatt: We've been trying to repro this without any luck, but as a result the QA has been halted. Can you please send me the board file you're using?

    @chaya: no, sorry, Unity Script has too many limitations hence we onloy code in C#.

    @prototype7: the reason for the very limited comments is that it's just one script with a preatty clear nomenclature, so it's almost self explanatory. If you have any specific question about the code please feel free to send me an email and I'll be happy to help you out.

    @all: as told before, our QA halted because of a bug that we cannot reproduce. As Unity 4 has come out we need to issue an upgrade all the same, so please check here and your Asset Store account to see when it's approved. In the new version the demo scene UI is based on NGUI and the project carries the free NGUI distributable. If you have the Full NGUI in your project make sure NOT to import the NGUI folder!
     
  2. DFT-Games

    DFT-Games

    Joined:
    Jun 24, 2010
    Posts:
    454
    Hi all!

    As we got no other info about reproducing that bug (see previous post) and on our end all works just fine on all supported platforms we've decided to submit the new version (2.3).

    Main points in this version:

    • Switched to integrated NGUI support
    • Added a delegate to check the bonuses. The quantity of tiles destroyed on last move is passed as parameter to the delegate.
    • All loops have beed cut off as much as possible, making the board some 20 times faster on average
    • Added some more comments in the code where necessary
    All the points suggested in this thread have been included where possible, A full list will be posted in a while as I get it back from QA.

    Cheers,
    Pino
     
  3. DFT-Games

    DFT-Games

    Joined:
    Jun 24, 2010
    Posts:
    454
    The version 2.3 has been submitted to the Asset Store.


    Release Notes - Version 2.3

    Breaking changes


    • OnGUI has been dismissed favouring NGUI implementation as this is the common way nowadays and because the upcoming new Unity GUI system will be very much NGUI-like as its author is the one hired by Unity to work on that new GUI system. We have added NGUI Distribution Edition to the kit, so if you have NGUI already in your project do not import our NGUI folder.
    New features


    • Added a new delegate (CheckBonusDelegate) to allow you to manage multipliers and bonuses
    • Added four static counters that are updated at every user’s move to be used in the CheckBonusDelegate code (see instructions)
    • Compacted the start board so that you can restart/reset/reload any board without having to load a new scene
    Other changes


    • The code has been completely revised and optimized for even better performances
    • The Board class now sets the Target Frame Rate to 30 as for this type of game there is no need for more than that, so this way we save battery life on mobile.
    • The code has been widely commented in the most complete way.
    • Refactored a few variable names that weren’t intuitive.

    Enjoy ;)
     
  4. DFT-Games

    DFT-Games

    Joined:
    Jun 24, 2010
    Posts:
    454
    New version 2.3 is live on the Asset Store, GO GET IT!!!
     
  5. DFT-Games

    DFT-Games

    Joined:
    Jun 24, 2010
    Posts:
    454
    BTW: Bomb behaviour is on its way in a few days ;)
     
  6. prototype7

    prototype7

    Joined:
    Aug 29, 2012
    Posts:
    12
    I've just upgrade to Unity 4 but still using 3.5 for some reason.
    I've downloaded V2.3 , nice to see more comment on the main script,
    Bomb behaviour sounds good, what exactly that is ?
     
  7. DFT-Games

    DFT-Games

    Joined:
    Jun 24, 2010
    Posts:
    454
    Hi All,

    prototype7 just noticed a racing condition that escaped our QA in which if the user moves real fast he can actually make a move while the pieces are still sliding... :(

    The fix will be in the upcoming version 2.4. in the meantime you can add this line in both public void MoveTo(int x, int y) and public void MoveTo(int x, int y, float z) in the script PieceScript.cs:

    Code (csharp):
    1. Board.PlayerCanMove = false
    Best,
    Pino
     
  8. prototype7

    prototype7

    Joined:
    Aug 29, 2012
    Posts:
    12
    Thanks for the respon
    Maybe in upcoming version i wish you could improve this too.
    less expensive game by using pool technique rather than create/destroy. Because if i add this match3 into my other 3D game i have to fix overhead of too many instantiate and destroy.
     
  9. DFT-Games

    DFT-Games

    Joined:
    Jun 24, 2010
    Posts:
    454
    Hi,

    the amount and frequency of objects instantiated/destroyed in a Match3 game doesn't justify pooling as it's really a very little amount of events, actually implementing a pooling system will make more damage than good. In a Match3 game normally you have a big range of tiles that are generated at random. Managing an adequate pooling will increase the memory footprint of the game, cutting off a lot of small Android phones... I don't think you want that ;)

    If for any specific need you want to give it a try to see what I mean (profiling the app). I guess you will get the Audio Toolkit to publish your game (IMO it's the best on the Asset Store): it comes with a good generic pooling system that you can implement in my script in less than 5 minutes. You'll see that pooling the correct amount of pieces isn't adviceable at all ;)
     
  10. eyalfx

    eyalfx

    Joined:
    Oct 8, 2010
    Posts:
    108
    I would love to buy it , but not going to upgrade to 4 any time soon.
    If I download it on unity4 and copy the project into unity3.5 would it work?
    Thanks,
    Eyal.
     
    Last edited: Jan 1, 2013
  11. DFT-Games

    DFT-Games

    Joined:
    Jun 24, 2010
    Posts:
    454
    Hi Eyal,

    the Kit does work in Unity 3.5 as well as Unity 4, so you can safely get it ;)

    Best,
    Pino
     
  12. DFT-Games

    DFT-Games

    Joined:
    Jun 24, 2010
    Posts:
    454
    Hi guys!

    during the QA of the new announced features we hit a bad memory leak that was not noticed during last QA, so we have just submitted an urgent update to the Asset Store (v. 2.4). Keep an eye on your updates and get it as it's approved because it's important! I know that nobody hit this as we didn't get any bug report, but believe me... you totally want to install the 2.4 ;)

    Cheers and have a great 2013!!!
    Pino
     
  13. DFT-Games

    DFT-Games

    Joined:
    Jun 24, 2010
    Posts:
    454
    Hi guys, just published a screencast to illustrate our kit's features. I hope it'll help. A coding screencast will follow.

     
  14. ProjectOne

    ProjectOne

    Joined:
    Aug 9, 2010
    Posts:
    442
    Excellent, will watch later, great idea to do more videos.
     
  15. prototype7

    prototype7

    Joined:
    Aug 29, 2012
    Posts:
    12
    Hi Pino Happy New Year!,
    Could you tell me what part of script has been improved according to bad memory leak?
    Because it takes time to compare the old code and new code.
    Or maybe do you have some suggestion tool for comparing two version code, such as TortoiseSVN ?
    Thanks
     
  16. DFT-Games

    DFT-Games

    Joined:
    Jun 24, 2010
    Posts:
    454
    @prototype7: the changes are in the level initialization when cleaning up the resources. You can easily find the differences using WinMerge ;)
     
  17. ProjectOne

    ProjectOne

    Joined:
    Aug 9, 2010
    Posts:
    442
    Hi, your first Introduction video is excellent. I am about to start using your kit and your video I guess put me on the right track before even importing the kit :) As I was reading through this thread... wanted to ask if:

    1) the Bomb/Special Weapons type of feature has been implemented ?

    2) Is there a built in system that saves player progresses? So if the player clears 10 boards he/she can load it up and carry on from last unfinished board-session?

    Nice kit, grazie Pino, assumendo sei Italiano :)
     
  18. DFT-Games

    DFT-Games

    Joined:
    Jun 24, 2010
    Posts:
    454
    Why thank you for the appreciaton :) And yes, I am Italian, but we moved in Ireland in 2004 ;) If you contact me by email we can use Italian ;)

    Now, about question (1), it's still in QA. It was halted when QA found the memory leak, so I had to roll back all changes and deploy that fix urgently. Now is back in QA.

    About (2) in the tool I didn't think to add such a feature because the boards progression can change a lot depending on the gameplay, but I will add a sample based on what I believe it's the most common game progression. I've added something very similar to a new Kit that I'm just about to submit to the Asset Store (it's an Arkanoid-like Starter Kit with level editor and all), so I can add a similar thing in here.
     
  19. ProjectOne

    ProjectOne

    Joined:
    Aug 9, 2010
    Posts:
    442
    1) Thanks, good to know it is being tested, excellent.

    2) Yes I see your point. Probably it is more a matter of giving the player the impression of progression being saved and being able to choose a previous scene/board/challenge, which we can implement via a map like other match3 games (e.g. Candy Rush)

    Funny enough I have just started some breakout/arkanoid project, (not a kit just my games), can't wait to see your new kit, good timing! :)
     
  20. DFT-Games

    DFT-Games

    Joined:
    Jun 24, 2010
    Posts:
    454
    Just submitted to the Asset Store, so it'll be live in a few days. Here's the screencast link: http://bit.ly/XxSuYs For the first 30 days will be on promotion for just $25 ;)
     
  21. Geoffc

    Geoffc

    Joined:
    Feb 4, 2013
    Posts:
    39
    Hi DFT Games,

    Great starter kit! I have been playing around and creating scenes. I can see you have put in placeholders in the code for actions such as board completed and timed out. I would love to see more documentation on using the delegates in the script. Maybe some examples on a pause button in NGUI and loading a new level when the player completes the board. Delegates is a part of UNITY and C# that I am having trouble understanding.

    Thumbs up to you for the kit so far, it really speeds up the process of creating the scenes for match 3 (or 4) games.
     
  22. DFT-Games

    DFT-Games

    Joined:
    Jun 24, 2010
    Posts:
    454
    Hey Geoff,

    thanks for the appreciation. I have planned indeed a video dedicated to the coding side, showing how to practically implement all those features. What's holding me off is the fact that I'm 100% "screencast-impaired", so I have started many times but I've got to start anew every single one... I have to do some more practice speaking to the computer screen... it feels so wierd... my English degrades a lot and my Italian accent gets way stronger... but I guess you have already laughed at that watching my other screencasts :) I promised that I have to get overe this and I will... it's just too odd being able to speak to a floor of academics while getting confused by a darn computer screen :)
     
  23. MattyMatt

    MattyMatt

    Joined:
    Oct 7, 2011
    Posts:
    21
    Hello, Late last year I released my Mayan Mystery Gem https://www.facebook.com/MayanMysterygame to the iPhone/iPad app store a game built on top of the Match 3- Kit. I just wanted to give credit where it is due. Though I did modify quite a bit of the match 3 framwork; the bulk of the logic was useful and intact, level editing, matching logic, and tile code from the kit was invaluable. Letting me deal mostly with things such as power ups. I implemented NGUI for all of the GUI stuff, and 2DToolkit to replace the 3d models for the board pieces. I integrated Game Center Achievements and Leaderboards. I implemented "match counting" logic, a Level Selection screen using Scene Manager from the asset store (works awesome).

    Although it sounds crazy I have decided to start my new match-3 without using any of my old code. I thought it better to use the built in and supported Match-3 kit upgrades, then to stick with my shaky 'match counting' implementation. I am currently building a new match-3 with the updated Match-3 Kit on UNity 4 and I am very relieved at the additions ( I would have given a arm to have the match counting code already integrated in my last game as is the case in the new framework). I have integrated the Prime 31 Storekit for in-app purchasing (this game design is heavy in power ups and upgrades and that is how I am monetizing...),. So far I am pleased with the Match-3 kit.

    Things I would like to see:
    Though there is now an awesome Delegate Method for Bonuses; currently there is no actual example implementation of a "bomb" or other typical power up. Though this should be left to the actual game designer, showing a implementation example would be awesome because of the tightly integrated order of operations you have to perform to check for match types and possible outcomes. I had null exception after null exception during development of power ups and only eventually got my implementation to not crash 98% of the time (not good odds for a paying customer). I am hoping the new "match counting " system does away with any power up issues from my last game.

    Another feature that would be nice to add would be the ability to have tiles on the board that are already marked as "Done" letting a designer create levels with maybe a board of 10X10 but with only 4 or 5 pieces that have to be cleared to win. Though I am sure this wouldn;t be difficult to add myself. Someone else might use this out of the box.

    Things I am considering:
    As I mentioned before I integrated 2DToolkit into the framework for the actual board pieces and tiles. However, I was getting a new draw call for each and every board piece. So I would have over 40 draw calls in some instances.... crazy. I didn't really understand why that was the case. This time I am exploring integrating NGUI for the board pieces and tiles; using its atlasing system I should beable to minimize draw calls. Has anyone tried integrating NGUI to display the actual board pieces as sprites (maynot be possible with the NGUI layering and camera system)?

    Overall the match framework has been great and I look forward to working with the new updates.
     
  24. DFT-Games

    DFT-Games

    Joined:
    Jun 24, 2010
    Posts:
    454
    Hey Matt,

    thanks for sharing your work, I really appreciate it :)

    About the bomb implementation, that's on its way. It has been partially tested but QA found another problem that was missed previously so all efforts went to ship the last version with just that urgent fix. The bomb has then been back in QA but rejected with a list of use cases that didn't work properly, so it's currently in revision and will be shipped as soon as possible (passing QA!).

    I did many different tests with 2D assets and also with pooling systems, but I couldn't really find anything able to improve the rendering time without some other collateral problem, that's why I ended up leaving it in full 3D: at least it looks better :)

    At any rate, if you are interested in those 2D implementations (based on NGUI) I can dig up those tests and add them to the upcoming release.

    BTW, I'm about to release a new freebie: our typed pooling system, used in our new "Crash That Wall! Starter Kit" and will also be added to the Match 3 Starter Kit to show how to pool the pieces and the tiles, but... as I mentioned a few messages back, there isn't any real gain in pooling the Match-3, it's too costly from a memory standpoint, but it's true that in the 2D (NGUI) implementation this should not be a big issue... has to be verified anyway.

    About the ability to define "Done" tiles at design time that's quite simple, consider it added to the upcoming version ;)

    Best!
    Pino
     
  25. DFT-Games

    DFT-Games

    Joined:
    Jun 24, 2010
    Posts:
    454
    @all: I do see that the need to know how to implement the delegates is growing, so in the upcoming version the sample scene will carry a full implementation of all the delegates available in the starter kit ;)

    Cheers!
    Pino
     
  26. ProjectOne

    ProjectOne

    Joined:
    Aug 9, 2010
    Posts:
    442
    Hi Pino,
    Excellent news from the last few posts, will check it out
     
  27. Geoffc

    Geoffc

    Joined:
    Feb 4, 2013
    Posts:
    39
    Yeah that would be good Pino. Also an option to drag in a done tile audio would be great too. So the audio will play when a tile is cleared.

    The screencasting you have done so far is ok. The 19 min one explained things clearly enough to make it easier using the kit and board editor.

    Regards,
    Geoff
     
  28. DFT-Games

    DFT-Games

    Joined:
    Jun 24, 2010
    Posts:
    454
  29. DFT-Games

    DFT-Games

    Joined:
    Jun 24, 2010
    Posts:
    454
    Hi All,

    just a quick not to let you know that a new Commercial Grade Freebie is live: our new Pooling Manager. Check it out!

    The link: http://bit.ly/W6NCzh :cool:
     
  30. DFT-Games

    DFT-Games

    Joined:
    Jun 24, 2010
    Posts:
    454
    @All,

    my last update to the Asset Store was packaged with Unity 4. I apologize for that... I didn't really think about the fact that not everybody actually upgraded so there is a lot of people still on 3.5.

    I'm reinstalling now here Unity 3.5.7f6, so I'm going to re-package all using this version.

    I will post here again as soon as the new packager are live on the Asset Store ;)
     
  31. DFT-Games

    DFT-Games

    Joined:
    Jun 24, 2010
    Posts:
    454
    Hi guys,

    The updated version supporting both Unity 3.5 and Unity 4 is now live on the Asset Store ;)
     
  32. Geoffc

    Geoffc

    Joined:
    Feb 4, 2013
    Posts:
    39
    So no new features, just compatibility fix for unity3 yeah?
     
  33. eyalfx

    eyalfx

    Joined:
    Oct 8, 2010
    Posts:
    108
    I've just made a build to iPad and the pieces are not moving. After a quick debug I've noticed that I the pieces are getting Clicked() in PieceScript.cs but obviously the OnMouseDrag() and other mouse callback are not getting called since they are ignored on IOS.
    What causes the pieces to move on IOS?
    the only thing I've changed is deleting the mainCamera and reseting a new one. and parenting all of the pieces under a different transform?
    Thanks,
    Eyal
     
  34. DFT-Games

    DFT-Games

    Joined:
    Jun 24, 2010
    Posts:
    454
    @Geoffc: correct, new stuff is on its way ;)

    @eyalfx: your debug was too much quick :) The Clicked() is called at line 1427 in Board.cs, in the "#if UNITY_IPHONE || UNITY_ANDROID" block. I gather you customized something without having first a good look at the code and the comment at line 1411 that reads:
    // Here follows the mobile touch implementation.
    // feel free to change it with your preferred gesture manager
    // if you want to, just mind the logic ;)
     
  35. eyalfx

    eyalfx

    Joined:
    Oct 8, 2010
    Posts:
    108
    I forgot to respons , but I got it working that same day.
    It was definitely the camera that broke it :)
    Thanks
     
  36. DFT-Games

    DFT-Games

    Joined:
    Jun 24, 2010
    Posts:
    454
    Hello guys!

    I'm glad to announce that this Starter Kit has just been pushed up in our development queue!!!

    As you all know, we dedicate a resource pool proportional to the sales that each package produces. This kit has been selling more than usual over the last 2 months ( thank you all !!! :D) so this has allowed us to pull this up in our priority list!

    What this means for you? Well, from a support standpoint nothing changes: we always answer within 24 business hours to all support requests. From a package improvement standpoint this will change a lot: from now on we double the hours dedicated to this kit, hence new features will come real fast :) Also the QA priority has been pulled up, so guys... brace yourself and get ready to a lot of new features coming right up :D

    Thank you all again!
     
  37. voncarp

    voncarp

    Joined:
    Jan 3, 2012
    Posts:
    187

    Hello,

    Purchased this kit and was hoping you can suggest a simple way to score different points for different colors/tiles of matches. For instance, on default the board has 3 matches for normal at 5, 10 for strong, 15 for extra strong and super strong at 20. If I just wanted to have 3 matching blues equal maybe 1 point each on normal level and perhaps 3 matching greens equal 2 points on the normal level what would I do? Instead of all the matching colors on the normal level equals 5, how can I make each different colors score different points?

    What would be your advice in accomplishing this?

    Great kit so far. Thanks.
     
  38. ProjectOne

    ProjectOne

    Joined:
    Aug 9, 2010
    Posts:
    442
    going to start using this kit really soon (was supposed to start with it today but other business needed my presence)... good to hear more features/work is going to be injected in it.Cool!
     
  39. DFT-Games

    DFT-Games

    Joined:
    Jun 24, 2010
    Posts:
    454
    Hi,

    if I understand correctly you want to be able to differentiate the points not by strenght but by strenght and piece, so that you have a matrix of values, each piece having 4 different values, is that correct?

    If the above is correct, it's a simple change, but it's structural, so if you want to make such a change yourself in a way or another you'll lose compatibility with the upcoming versions of the kit. That's why I'm happy to add it on top of my to-do listand deliver it with the upcoming update, in a way that you'll be able to use it as it is now (keeping full backward compatibility) and this other way.

    Actually I have a pretty good idea about how to do that in a very simple way. If you want to give it a try while waiting for the next release (coming up real soon!) and still being compatible, here's what I'm going to do: I'll prepare a very simple script to attach to the pieces' root, a script containing just that values (one per strenght). Then I will add to the PlayingPiece class the relevant properties and in the internal constructor (line 222 in Definitions.cs) I'll look for that script to feed the values. In case the script is missing I'll just use those standard stored in Board.Instance.PointsNormal, Board.Instance.PointsStrong, Board.Instance.PointsExtraStrong and Board.Instance.PointsSuperStrong (so this is a 100% backward compatible change). Then I'll change accordingly the switch (PlayingPieces [x, y].pieceScript.currentStrenght) in Board.cs (line 1559) to use the new values stored in PlayingPieces [x, y].NormalValue, PlayingPieces [x, y].StrongValue and so on.

    Cheers!
    Pino
     
  40. vicenterusso

    vicenterusso

    Joined:
    Jan 8, 2013
    Posts:
    130
    May I suggest a diagonal falling for the next update? Almost all of recent Match3 have this behaviour. That would be a big addition.
     
  41. voncarp

    voncarp

    Joined:
    Jan 3, 2012
    Posts:
    187
    Yes, that is what I was looking for. If these features are on the horizon for the next update, then I look forward to them as I would also like to maintain the other functionality of this kit.

    Thank you for the quick response and looking forward to the next update!
     
  42. DFT-Games

    DFT-Games

    Joined:
    Jun 24, 2010
    Posts:
    454
    Hi,

    yep, as I told you by email this will be implemented as an option to be turned on/off via a boolean flag ;)

    Best,
    Pino
     
  43. DFT-Games

    DFT-Games

    Joined:
    Jun 24, 2010
    Posts:
    454
    Hi all :p

    I have a big question for you: you had to wait for the QA releases a lot before we pushed up this kit. Now I have ready the following:

    • Bomb behaviour
    • Side sliding
    • Points variable by piece and piece strength
    QA asks more time to test this set of changes because they have quite an impact on the code and on the gameplay, but I wanted to push this through :) So... my question is: Are you willing to get this release with minimum QA (passed)? This means that something could have been overlooked so you'll have to send me an email as soon as you see something that is not quite right from where you stand. Or you want me to leave it in QA a fews days to make them happy, so you get a fully tested release?

    While I wait for your answers I'll revise the documentation ;)

    Best!
    Pino
     
  44. vicenterusso

    vicenterusso

    Joined:
    Jan 8, 2013
    Posts:
    130
    If it's about days, I prefer to wait
     
  45. ProjectOne

    ProjectOne

    Joined:
    Aug 9, 2010
    Posts:
    442
    Hi Pino, 3 nice addition, thanks. I should start using your kit the day after tomorrow, which is Saturday. I can wait until Saturday morning :) but come Saturday I' ll be happy to start with minimum QA version and give u a shout if I encounter problems... U can always do an update on Monday if QA finds bugs over the weekend, yes sorry for the QA people u must work over the weekend:)
     
  46. ProjectOne

    ProjectOne

    Joined:
    Aug 9, 2010
    Posts:
    442
    Hi Pino, have you decided when the new version will be uploaded? Thanks

    1 - I have watched the introduction video. At the end it says there will be another video about Customising Scripts... did you get around to make this video?

    2- From the video I think I only see sets of 3 pieces getting matched and cleared... is there an option to have 3 or more if more than 3 pieces of the same time are connected (touching each other) in any direction? like L shape.. etc?

    Thank you
     
    Last edited: Apr 6, 2013
  47. vicenterusso

    vicenterusso

    Joined:
    Jan 8, 2013
    Posts:
    130
    This behaviour is already working, but only for the "auto matches" when new pieces fall
     
  48. DFT-Games

    DFT-Games

    Joined:
    Jun 24, 2010
    Posts:
    454
    Hi guys,

    sorry but with just 2 answers here I cannot bypass our rules, so the new features will stay with QA, hopefully cleared on Monday or Tuesday.

    About this: "2- From the video I think I only see sets of 3 pieces getting matched and cleared... is there an option to have 3 or more if more than 3 pieces of the same time are connected (touching each other) in any direction? like L shape.. etc?" it's working fine, clearing any shape at any given event. If this isn't happening then we've introduced a bug that has gone undetected in last version? I'll alert QA to verify.


    Best,
    Pino

    P.S.: I'm working on new videos, be patient... IO'm really impaired when it comes to screencasting :/
     
  49. DFT-Games

    DFT-Games

    Joined:
    Jun 24, 2010
    Posts:
    454
    Hi all,

    For some reason moving back to supporting Unity 3.5 the Documentation file went lost. I strongly apologise for that.

    Here's the file: View attachment $Match3_ReadMe_v2.3.pdf (also added to the opening post).

    The updated file will be back in the package with the upcoming release.

    Cheers!
    Pino
     
  50. DFT-Games

    DFT-Games

    Joined:
    Jun 24, 2010
    Posts:
    454
    QA went back on this with a full green light: all is working as expected, L shapes, T shapess and so on, no limitations to the matches you can do. Every time you move a piece all the combinations are checked in all directions at once. So I'm not sure to what you are referring, maybe in the video there are just 3 pieces to be matched.