Search Unity

Bomb Blox - Development

Discussion in 'Works In Progress - Archive' started by akstudio, Feb 4, 2013.

  1. akstudio

    akstudio

    Joined:
    Feb 4, 2013
    Posts:
    33
    Hi everyone,

    This is my first post in the forum. So why not start off with a bang!

    I have been working on Bomb Blox for several months now and am close to completion. There is still alot of user testing to be done and sound work to be complete, but all in all I am very happy with how it is going.

    What is the aim of the game. Well, its as simple as a 3d physics puzzler. You have to land the red Blox on the X. Some Blox a destructible, where some are not. One Blox will even blow the scene up is used at the wrong time.

    Currently there are 18 levels. When completed, the player is able to submit their score to the leader board. Now the score is made up of two elements, time to complete the level multiplied by the number of Blox destroyed to complete the level. I believe this will add a competitive edge. When posting your score to the leaderboard, you are able to see how different your score compares to others, and then retry levels to lower.



    A link to the beta version webplayer is here


    UPDATE1: Sound Effects, slightly different textures and a little background tune... all of which are still in development...

    UPDATE2: New textures (Normal Maps too) see images below. Next step is to implement exploding mesh for the Blox when touched!!!

    UPDATE3: Updated leader board to avoid overwriting other players scores with same name.


    Following are a few pictures of the games menu layouts and in game (webplayer version).













    I hope you enjoy. Please feel free to give any constructive criticism.

    Cheers,
    K
     
    Last edited: Feb 12, 2013
  2. CubePhysics

    CubePhysics

    Joined:
    Oct 31, 2012
    Posts:
    20
    Last edited: Feb 5, 2013
  3. akstudio

    akstudio

    Joined:
    Feb 4, 2013
    Posts:
    33
    Thanks mate! I really appreciate the comments... I plan to start with the Mac store, but it will be such an easy port to IOS and Android. They will probably follow soon after! But I still have a lot to do to polish the entire experience.

    I had a look at your game a few days ago and yea really like the idea there. I have always wanted to make a game with a rag doll similar to this.
     
  4. carmine

    carmine

    Joined:
    Jan 4, 2012
    Posts:
    394
    This was actually a lot of fun. I'm glad you're using what's available to you instead of trying to make something that's impossible for you to make :)

    Definitely need explosion sounds. You can find some at www.freesound.org (there are some packs in the asset store too).

    Also... I found the 2nd level a bit too difficult. I almost quit. I managed to get by it... but I think it's good to keep the player feeling good about themselves for the first 3 or 4 levels, and then zing them on the 5th.

    I think this would be great for iOS. You mentioned mac store (and I know it's free and all). But this is a nice concept that is playable with 1 finger. It's really hard to come up with something someone can play with one finger. Make the first 10 levels free or something and do an in-app-purchase to get more.

    Good luck with this!
     
  5. CubePhysics

    CubePhysics

    Joined:
    Oct 31, 2012
    Posts:
    20
    Thanks. You Should Add A Ragdoll It Would Make It Really Cool!
    Also Upload A Trailer Or Something On Youtube Like I Did, It Would Make It More Popular!
     
  6. Joshbot5

    Joshbot5

    Joined:
    Jan 20, 2013
    Posts:
    19
    Very cool and addicting but needs more levels and sound.

    Also two questions

    1 : Is the player trying to achieve the lowest score or the highest?

    2 : How did you do the score ?
     
  7. akstudio

    akstudio

    Joined:
    Feb 4, 2013
    Posts:
    33
    Thank you Joshbot5, I am happy to hear that!

    That was one of the things I wasn't too sure on... i.e. do I make 18 hard levels, or have maybe 36 progressively harder levels... and should I make a leaderboard for each level with a grandtotal leaderboard? As you can see I still have a long way to go on this :S

    The aim is to get the lowest score, and this can be achieved by replaying levels.

    The mechanism I have used is "time taken" (to complete level) x "Blox destroyed" (to complete level). The great this about this is that scores can get as close as fractions of a second hopefully adding to the replay-ability.

    I appreciate your feedback!
     
  8. akstudio

    akstudio

    Joined:
    Feb 4, 2013
    Posts:
    33
    When I have implemented a few more features I will definitely create a "beta" type trailer.
     
  9. akstudio

    akstudio

    Joined:
    Feb 4, 2013
    Posts:
    33
    Thank you! I am definitely trying to make the best of what is available. I dont really have to skill to create an mmo per say.

    That link is awesome. I have already found several sounds that would be suitable... The theme music is going to be the hard one to capture.

    I was aiming to set the level skill to hard from the get go, but now i'm not too sure. but for example, Angry birds (an many other games) have heaps of levels that start from very basic to very hard. Is that the formula that works? Its funny you say that about the 5th level. A mate of mine said the same thing!

    I think if I go down the path of many levels, then I would look at in-app purchasing after the first x amount of levels... When i started this game, I actually designed it for the ipad, but given the flooding of games on the ipad ios store, i thought maybe I would start with the Mac store, then push into the IOS and Android stores.

    Thank you very much for your advise, link and comments!
     
  10. Joshbot5

    Joshbot5

    Joined:
    Jan 20, 2013
    Posts:
    19
    You could make 20 levels that are Easy , 20 levels that are Normal and 20 levels that are Hard. Then if its a app they could buy 20 more for there favorite difficulty for a small fee or they could buy a jumbo pack for cheaper.

    And if the leader board just for the player then a score for each level would be good along with a star system. So if they are playing an Easy level they need to get below 5000 points for 1 star , 4000 for 2 stars etc.

    Also on the score I was wondering how it saved my score and what level I was at each time i played. As I want to use some thing similar in my game

    http://forum.unity3d.com/threads/168657-Memory-Bomb-The-Game-That-Tests-Your-Memory?p=1153376#post1153376

    Another thing is to tell the player that the objective is to get the lowest score.

    EDIT : Also I forgot I use this for my sounds
    http://www.drpetter.se/project_sfxr.html
     
    Last edited: Feb 6, 2013
  11. akstudio

    akstudio

    Joined:
    Feb 4, 2013
    Posts:
    33
    I guess the hard part to that is coming up with 60 levels :S but hey that's game development. I do like the idea for "star" system... perhaps a "Blox" theme instead of stars.

    They way I managed to get this game to remember individual players is through the PlayerPrefs. Even in the webplayer it saves your current status. Figuring this out was timely!!! But also I have adapted the DreamLo leaderboard system. Easy to use. The only issue is have at the moment is that if someone posts a score with the same name (spelled exactly the same), it will overwrite your score... Unfortunately I cannot for the life of me figure out how to implement gamecenter for mac!!! If I could do that then things would be a lot better... scores would be specific to the player at all times. achievements would also add a nice addition.

    One other thing I want to do is implement on the first level some key instructions with the "BlindGui" asset from the store... that would look awesome.
     
  12. Joshbot5

    Joshbot5

    Joined:
    Jan 20, 2013
    Posts:
    19
    Here is the code that i use for my pop up in my game with your game in mind.

    When the level starts it should create a popup in the middle of the screen. You will probably have to edit the VECTOR3 (this is location (This is X),(This is Y),(This is Z) ) and Quaternion.Euler (this is for rotation) numbers to your liking.

    Create a JAVA SCRIPT then add this code , delete every thing in it first.

    Name it PopUp. ( If you change the name you will have to go through all the code and edit PopUp.TextCodeNumber)

    Then attach it to your camera.

    Code (csharp):
    1.  
    2.  
    3.  static var PopUpIsAlreadyUp = 1;
    4.  
    5. var button1 : GameObject;
    6.  
    7. var button2 : GameObject;
    8.  
    9. var button3 : GameObject;
    10.  
    11. var background : GameObject;
    12.  
    13. var text : GameObject;
    14.  
    15. var TextCode : GameObject;
    16.  
    17. static var TextCodeNumber = 1 ; // Since this code doesn't get deleted its a good spot i thought
    18.  
    19. function Awake() {
    20.  
    21.  
    22. Instantiate(TextCode, Vector3(0,0,0), Quaternion.identity);
    23.  
    24. Instantiate(button1, Vector3(0.7,-0.25,3), Quaternion.Euler(90, 180, 0));
    25.  
    26. Instantiate(button2, Vector3(0.7,-0.25,3), Quaternion.Euler(90, 180, 0));
    27.  
    28. Instantiate(button3, Vector3(1.4,-0.25,3), Quaternion.Euler(90,180, 0));
    29.  
    30. Instantiate(background, Vector3(0,0,4), Quaternion.Euler(90, 180, 0));
    31.  
    32. Instantiate(text, Vector3(0.4,0.55,3), Quaternion.Euler(90, 180, 0));
    33.  
    34. }
    35.  
    For the TextCode

    Code (csharp):
    1.  
    2.  
    3. var textv ="";
    4.  
    5. var gText: GUIText;
    6.  
    7.  
    8. function Update(){
    9.  
    10. if (PopUp.TextCodeNumber == 1) {
    11. textv = "FIRST INSTRUCTIONS HERE "
    12. }
    13. if (PopUp.TextCodeNumber == 2) {
    14. textv = "SECOND INSTRUCTIONS HERE "
    15. }
    16. if (PopUp.TextCodeNumber == 3) {
    17. textv = "THIRD INSTRUCTIONS HERE "
    18.  
    19. // You can add more just copy and paste it and change that number after == ( == means equal , = tells Unity to change it) to what ever you want . Oh and don't forget to edit the buttons max values
    20.  
    21. }
    22.  
    23.  
    24. function OnGUI(){
    25.  
    26.    gText.text = textv;
    27.  
    28.  
    29.    }
    30.  
    31.  
    For the buttons they could say * BACK * , * CONTINUE * ,*CLOSE*

    For BACK create a JAVA SCRIPT then delete every thing in it then add this. Then Attach it too your prefab.
    The prefab should be a plane with a material that is TOON so its lighted.

    Code (csharp):
    1.  
    2.  
    3. var material1 : Material;
    4.  
    5. var material2 : Material;
    6.  
    7. var click : GameObject;
    8.  
    9. function OnMouseDown (){renderer.material = material1;}
    10.  
    11. function OnMouseUp (){
    12.  
    13. renderer.material = material2;
    14.  
    15. Instantiate(CLICK, Vector3(0,0,0), Quaternion.identity);
    16.  
    17. if (PopUp.TextCodeNumber > 0 ) {
    18.  
    19. PopUp.TextCodeNumber = PopUp.TextCodeNumber - 1
    20.  
    21. }
    22. // that if statement keeps it from going over. This one should not be changed.
    23.  
    24. }
    25.  
    26.  
    FOR CONTINUE create a JAVA SCRIPT then delete every thing in it then add this. Then Attach it to your prefab.
    The prefab should be a plane with a material that is TOON so its lighted.

    Code (csharp):
    1.  
    2. var material1 : Material;
    3.  
    4. var material2 : Material;
    5.  
    6. var click : GameObject;
    7.  
    8. function OnMouseDown (){renderer.material = material1;}
    9.  
    10. function OnMouseUp (){
    11.  
    12. renderer.material = material2;
    13.  
    14. Instantiate(CLICK, Vector3(0,0,0), Quaternion.identity);
    15.  
    16. if (PopUp.TextCodeNumber < 3 ) {
    17.  
    18. PopUp.TextCodeNumber = PopUp.TextCodeNumber + 1
    19. }
    20. // that if statement keeps it from going over other wise u click it hundred times and you will have to click back a hundred times change it if you add more to the TextCode
    21. }
    22.  
    FOR CLOSE create a JAVA SCRIPT then delete every thing in it then add this. Then Attach it too your prefab.
    The prefab should be a plane with a material with TOON so its lighted.

    Code (csharp):
    1.  
    2.  
    3. var button1 :GameObject;
    4.  
    5. var button2 : GameObject;
    6.  
    7. var button3 : GameObject;
    8.  
    9. var background : GameObject;
    10.  
    11. var text : GameObject;
    12.  
    13. var material1 : Material;
    14.  
    15. var material2 : Material;
    16.  
    17. var click : GameObject;
    18.  
    19. function OnMouseDown (){renderer.material = material1;}
    20.  
    21. function OnMouseUp (){
    22.  
    23. renderer.material = material2;
    24.  
    25. Instantiate(CLICK, Vector3(0,0,0), Quaternion.identity);
    26.  
    27. PopUp.PopUpIsAlreadyUp = 0;
    28.  
    29. Destroy(button1);
    30. Destroy(button2;
    31. Destroy(background);
    32. Destroy(text);
    33. Destroy(button3); // this should be self so it destroys it self after every thing else is destroyed
    34.  
    35.  
    36. }
    37.  
    For a button that brings it back up

    Code (csharp):
    1.  
    2.  
    3. var material1 : Material;
    4.  
    5. var material2 : Material;
    6.  
    7. var click : GameObject;
    8.  
    9. var button1 : GameObject;
    10.  
    11. var button2 : GameObject;
    12.  
    13. var button3 : GameObject;
    14.  
    15. var background : GameObject;
    16.  
    17. var text : GameObject;
    18.  
    19. function OnMouseDown (){renderer.material = material1;}
    20.  
    21. function OnMouseUp (){
    22.  
    23. renderer.material = material2;
    24.  
    25. Instantiate(CLICK, Vector3(0,0,0), Quaternion.identity);
    26.  
    27. If (PopUp.PopUpIsAlreadyUp == 0) {
    28.  
    29. Instantiate(TextCode, Vector3(0,0,0), Quaternion.identity);
    30.  
    31. Instantiate(button1, Vector3(0.7,-0.25,3), Quaternion.Euler(90, 180, 0));
    32.  
    33. Instantiate(button2, Vector3(0.7,-0.25,3), Quaternion.Euler(90, 180, 0));
    34.  
    35. Instantiate(button3, Vector3(1.4,-0.25,3), Quaternion.Euler(90,180, 0));
    36.  
    37. Instantiate(background, Vector3(0,0,4), Quaternion.Euler(90, 180, 0));
    38.  
    39. Instantiate(text, Vector3(0.4,0.55,3), Quaternion.Euler(90, 180, 0));
    40.  
    41. PopUp.PopUpIsAlreadyUp = 1;
    42.  
    43. }
    44.  
    45. }
    46.  
    47.  
    Also this is probably the longest post i have ever done and i had enough coffee to make mistakes so test carefuly but it should work. If there already any ( which im sure about it ) Unity should help you find them.

    EDIT : I keep editing this lol. click is a prefab with a sound source set to play once with a code that destroys it after it plays heres the code

    Code (csharp):
    1.  
    2. var self : GameObject ;
    3.  
    4. DontDestroyOnLoad(self);
    5.  
    6. yield WaitForSeconds (1);
    7.  
    8. Destroy(self);
    9.  
     
    Last edited: Feb 7, 2013
  13. akstudio

    akstudio

    Joined:
    Feb 4, 2013
    Posts:
    33
    Hey Joshbot5,

    Thank you very much for this. I had a go at putting it together and it was a bit tricky. I think I got it right. That must have taken a while to put together last night... multiple coffees! I really appreciate it!!!!! I may take a slightly different approach but i must say, I have found things in your code that I hadn't thought about at this point i.e. swapping materials (or in my case images) when mousedown and up. I really like the approach you have take for "click". I have sent all my if button statements though to a coroutine so I can yeild... with your way, i just need to instantiate a prefab!

    It's quite overwhelming the support and comments I have received so far... I didn't actually think anyone would look twice at my game as there are so many great WIP games on here!
     
  14. Acelondoner

    Acelondoner

    Joined:
    Jul 27, 2012
    Posts:
    101
    Simple yet very cool concept. Love it.
     
  15. akstudio

    akstudio

    Joined:
    Feb 4, 2013
    Posts:
    33
    Thank YOU! Appreciate the comment!
     
  16. tapanui

    tapanui

    Joined:
    Nov 9, 2012
    Posts:
    182
    looks nice but would look at geting new textures
     
  17. akstudio

    akstudio

    Joined:
    Feb 4, 2013
    Posts:
    33
    Thanks Tapanui... when you say new textures, what ones are you referring to? the Blox themselves? and the gui graphics?
     
  18. Joshbot5

    Joshbot5

    Joined:
    Jan 20, 2013
    Posts:
    19
    I use PAINT.NET for my textures.

    You can get it here

    http://www.getpaint.net/index.html

    or a direct download

    http://www.dotpdn.com/files/Paint.NET.3.5.10.Install.zip

    Its for windows only. For MAC try GIMP ( I would of dug for a direct link but I have headache sorry )

    http://www.gimp.org/

    Then create what ever you want and save as jpeg. Go to Unity right click in your project tab or click assets in top bar. Click Import New Asset then find that jpeg.

    Then right click in your project tab and click Create then over and down to Material. You Should have a Material prefab ready to be renamed. Name it what ever you want i found putting numbers like 1RedCube 2GreenCube helps keep your new materials and textures at the top.

    When You click on the new material You should see some thing like Shader click the tab to bring down a drop box and then select what ever you want, I found toon basic to be lighted and nice but you might want some thing else. Then Look for the top box and click SELECT a window should pop up and your jpeg should be in there.

    Find MESH RENDERER in your cubes and look for MATERIALS should be a clickable name then Element 0 right next to that should be a BLUE SPHERE and a NAME then on the right of that should be a circle in a circle click that then select the material you want or the one you just made.

    You may or may not need to go through all your levels just depends on how you have your objects set up.

    EDIT: I Made you some JPEGs for you Red Cube, Just Right Click them and select Save Image as.. . They are 32x32 and 64x64 with Noisy and Clean effects.
     

    Attached Files:

    Last edited: Feb 8, 2013
  19. Stardog

    Stardog

    Joined:
    Jun 28, 2010
    Posts:
    1,913
    This is a nice game. One thing to add polish would be to smoothly move the blocks back into the "Reset" position, instead of reloading the entire scene.

    Just store their default position/rotation on an BlockScript (attached to each block), and when you press Reset, Lerp them from the current pos/rot to the default.

    This will be a problem if you're "Destroy"ing blocks on click, so maybe disable the renderer/collider instead. On reset, just enable the renderer/collider, make them Kinematic, and do the Lerp.
     
  20. akstudio

    akstudio

    Joined:
    Feb 4, 2013
    Posts:
    33
    Hey Stardog,

    I like the sound of that... just tried to script it but am going to have to work on it. Thanks for the idea!
     
  21. akstudio

    akstudio

    Joined:
    Feb 4, 2013
    Posts:
    33
    Hey Joshbot5,

    So you reckon i need to change the textures im using? I was aiming for a really simple look so that the effects stand out...
     
  22. Joshbot5

    Joshbot5

    Joined:
    Jan 20, 2013
    Posts:
    19
    It is your game you can do what ever you want. But yes I think the textures need improvement to me there just too plain, not change though I like the colors. I also think you need a background, more sounds and music to create your theme for your game. Also after I played it again I just noticed you have a light following the camera I think that is cool and when you improve your textures try to take advantage of that.

    To edit your background go to EDIT in the bar at the top and select RENDER SETTINGS. The Inspector tab should change to RENDER SETTINGS then you edit it to what ever you want. I think a sunny sky box might be too much and would take away from the explosions.

    For music i use Anvil Studio. I have not made any thing with it yet, I'm not very creative :(.

    For controlling the music I use 2 Java Scripts

    EDIT: I forgot I'm guessing the camera moves so you need make sure the music is NOT 3d so it doesn't mater how far away the camera is. You can do this for the sound or music in the inspector panel when you click on the file.

    Attach this too your menu camera

    Code (csharp):
    1.  
    2. var music : GameObject ;
    3.  
    4. static var playing  = 0 ;
    5.  
    6. function Awake(){
    7.  
    8. if (playing == 0){
    9.  
    10. Instantiate ( music,Vector3(0,0,0),Quaternion.identity);
    11.  
    12. playing = 1;}
    13.  
    14. }
    15.  
    This is the code for the music prefab. I found it on Unity Answers and i cant remember who posted it so sorry if your reading this.

    Code (csharp):
    1.  
    2. public var SoundClip : AudioClip;
    3.  
    4. private var SoundSource : AudioSource;
    5.  
    6. var Self : GameObject ;
    7.  
    8. function Awake()
    9.  
    10. {
    11.     DontDestroyOnLoad(Self);
    12.  
    13.     SoundSource = gameObject.AddComponent(AudioSource);
    14.  
    15.     SoundSource.loop = true;
    16.  
    17.     //SoundSource.playOnAwake = false;
    18.  
    19.     //SoundSource.rolloffMode = AudioRolloffMode.Logarithmic;
    20.  
    21.     //SoundSource.loop = true;
    22. }
    23.  
    24. function Start()
    25.  
    26. {
    27.     SoundSource.clip = SoundClip;
    28.  
    29.     SoundSource.Play();
    30.  
    31. }
     
    Last edited: Feb 8, 2013
  23. akstudio

    akstudio

    Joined:
    Feb 4, 2013
    Posts:
    33
    Brilliant! Thank you... I will update you later this weekend with improvement taking into account what everyone has said... a lot of wisdom on this forum. I'm just annoyed I didn't post here earlier!!! haha.

    Thanks
     
  24. Joshbot5

    Joshbot5

    Joined:
    Jan 20, 2013
    Posts:
    19
    That you did and i must say the music is AWESOME. With the textures i'm not quite sure what you tried to do but they looked better to me. The sound effects helped a lot with the immersion.

    I noticed a bug that when you finish a level and hit level select your score that you got is not updated.

    Also did you make the music in Anvil Studio?
     
  25. akstudio

    akstudio

    Joined:
    Feb 4, 2013
    Posts:
    33

    Thanks mate! Yea I use Logic 9 on my Mac. I've been using it for a while now as I record demos for my band. This little tune was just a quick one. still more can be done but hey its a start.

    Yea, the main issue i am finding with textures is the stretching... I made a texture for a sqaure face, and when the Blox are stretched, so is the texture the the Blox faces.

    I'll check out the bug and see whats going on there. I have it so that when you click "Next Level", it saves your score to the PlayerPrefs is it is less than your previous score.

    Having looked at this game for so long, I feel I do not know where to go with it now... I mean am I close to finished? should I implement more levels and if so whats a good number?... plus the leaderboard will overwrite someones score if they type the same name!! I have mentioned this to the developer. I hope its just something i am doing wrong cos DreamLo is amazing easy to use!

    I really appreciate the time you take to post on my thread!
     
  26. puppeteer

    puppeteer

    Joined:
    Sep 15, 2010
    Posts:
    1,282
    The gameplay mechanics are solid, and the game as a whole has potential.

    It would be a shame to release it like that without a graphical overhaul. You could have a background environment, or at least give the blocks an interesting texture.
     
  27. Joshbot5

    Joshbot5

    Joined:
    Jan 20, 2013
    Posts:
    19
    You could try Tiling your textures. To do this you need to go to the MATERIAL that you want and look for Tiling and 2 boxes underneath. They should be at 1 and 1 and just edit them to what ever looks good.

    For that button bug you can have it do any if statement. Since the button is not going anywhere attach some thing like this to the LEVEL SELECT button.

    Code (csharp):
    1.  
    2.  
    3. static var CubeHit
    4.  
    5. if (CubeHit == 1)
    6. {
    7. savescore();
    8. }
    9.  
    10. // Before the do Load Level maker sure you add this // CubeHit = 0;
    11. // So that it only saves score when the player finishes level.
    12.  
    13.  
    Then attach some thing like this to the red Cube or the X so that it changes when the cube hits the X.

    Code (csharp):
    1.  
    2. *LEVEL SELECT BUTTON CODE  NAME HERE*.CubeHit = 1
    3.  
    You could try what I posted before and do like 20 levels of easy 20 levels of normal and 20 levels hard, you could back it down to 10 for each one till you have more time. Then have separate leader boards for each one.

    Also like you I'm having trouble with my game too, so any suggestions on that would be very helpful.
     
  28. akstudio

    akstudio

    Joined:
    Feb 4, 2013
    Posts:
    33
    Update 4:

    Well I am now at a point where I think I have covered most of the enhancements. The only thing left being more levels! I have implemented the mesh explosion.

    Please have a go and let me know what you think!
     
  29. Ben Jammin Games

    Ben Jammin Games

    Joined:
    Nov 19, 2012
    Posts:
    13
    this game could potentially do really well on mobile, it's nice and simple (perfect for touch), and casual, but still challenging!
    as far as the texture stretching, what joshbot5 mentions will work :) basically if you scale the object you're scaling 1 axis of its UV as well.
    Another easy lazier way around the issue is to simple create separate prefabs for your different sized blocks. you can then store them in an enum on your level management script (or anywhere really), and when you recreate the puzzle it will be forced to use the right one. (I'm still relatively new to programming so there may be a better / easier way, but i figured this one out pretty quick in my game)

    Also, look into using GUIskin and some open source fonts to spice up your UI :), its easy and you can set all the attributes of how your gui will look