Friday, October 30, 2015

Incompetech and Kevin ROCK!

Incompetech is a site that Kevin Macleod owns and operates.

http://incompetech.com/wordpress/

Anyone who has ever needed amazing music for Videos or Computer game (ME!), knows this place and also just how good his music is.

Now I haven't needed music for well over a year and a half. But now I need some for the minigames for Very Bunny Haha, and of course I cannot forget Kevins incredible stuff. I wasn't sure if the site was still going, but I find that there is now more music than ever.

WOWZA.. so I spend way too much time tonight listening to the music scores. Simply wonderful.

Thanks Kevin, you really do Rock.

Da Voodoochief

p.s. I look forward to Donating once again when I grab some music from you.

Tuesday, October 27, 2015

Unity Update call order

I wanted to clear a flag I had at the end of a frame for physics collisions. This mean't I did not want to clear this variable when physics updates were perhaps taking place as it could end up clearing in the middle, which would be pretty useless.

So I tried to find something, using who knows what keywords. I wasn't really finding what I wanted, though I did find lots of information and several posts by people offering advice (most was correct as well). Still I wanted something simple, something obvious.

Then I found EXACTLY what I wanted: A Diagram...

http://docs.unity3d.com/Manual/ExecutionOrder.html

That document shows the update stages used in Unity3D. Fabulous and obvious huh! the other benefit for me is that describe other sequenced calls that I was unaware of like the 'OnEnable()' call. That could be useful at some point.

Laters all,
Da Voodoochief

Monday, October 26, 2015

Porcupine Minigame pt #2 - Video of the Gameplay


Here it is, another video from Very Bunny Haha. I am finally getting the hand of doing the videos now, and I expect through a lot more practice I will actually get good at some point. This video is of my 2nd minigame Zoomy the Porcupine.. and yeah, the name WILL change a bit soon, along with some of the graphics, and erm.. I realize now that the instructions are not correct, DOH!

Always something missed it seems.

Still, I enjoyed working on this game whilst I flew to Seattle and more on the way back to L.A. as well. I think the gameplay itself has turned out pretty much as I expected it would (which is always nice), and so I am very happy.

I have several things to do to finish this game, such as add Sound Effects and finished artwork, but it is real close.

Hope ya like the video,
Da Voodoochief

Sunday, October 25, 2015

Zoomy the Porcupine Minigame - pt #1

Here is a screenshot of the set up of the new minigame I have been working on (for Very Bunny Haha). I was at a wedding in Seattle these last few days and as such did not get too much completed. However I did get to work on this for a bit.

Now the game is nearly done, and I will do a video once I have the gameplay finished with... I am actually working on the effects when stuff happens at the moment, and though I am slow at that kind of work, I will get it done soon. Today I have another wedding reception to attend, so that could impact my productivity (hehe).

This minigame is another unique game and it involves Porcupines and currently a Tomato (something else later, like perhaps a beach ball). You must jump the Porcupines as they run around the screen edge.

Once again I have created the game to be easy to play, but if you use skill you can up your score.

Laters
Da Voodoochief

Wednesday, October 21, 2015

Input Delay Bug in Unity3D (editor and standalone)

Unity3D is nice. It is very nice, but it does still have a few bugs in it and these can be costly. Usually in terms of time and frustration. Any programmer knows this frustration and the best way to get past it is to solve the bug. easier said than done of course, and doubly bad when it is someone else's bug.

I have been very frustrated these past few weeks due to the Editor and the built game running on my PC suffering from an Input delay bug. It was random, though occurred about 80% of the time, it also varied in intensity from half a second to about 3 seconds. When I loaded a new scene in my game it could be worse or better.. there seemed no rhyme nor reason for it.

I tried many times to solve this problem, researching all manner of sentences in Google trying to find someone else with an answer. I did find several people with the problem, or something very similar (though mildly different). None had an answer for me that worked, and to be honest, some of the answers were unlikely to work anyway. Like a fevered man, I tried them all anyway!

Yesterday I had a bit of time to kill and so once more tread into the Bing search engine. Then unleashing several creative concoctions I call pseudo sentences to  find why the Input is lagged, or delayed. I got lucky, I found 'AngryMuppet' had posted the exact same issue, and somehow had also found an answer I could try.
http://forum.unity3d.com/threads/unity-5-1-input-delay-when-running-in-editor.332581/

This is the problem he pointed out:-
If you have 'Virtual reality Supported' ticked in the standalone platform

So I tried it (ok, it took me a while to find the option to turn it off).. You can find it here:-
Edit->Project Settings->Player->OtherSettings->Virtual Reality Supported

Mine was checked, and my hope began to rise. I unchecked this option and click the play button on my game. Wham it came up fast (faster than it has recently), and when I clicked the buttons and controlled the Rabbit around the screen there was NO LAG.... My hope was now very high, but I was not convinced, I have seen it run ok before. So I ran from one scene to another several times and it was all solid. Then I stopped the game and played it a couple of more times, till I was finally convinced the BUG was Stomped!

My Hope had now been replaced with a sense of relief and contentment.

I do not know why this bug exists, but there it is. Input lag of seconds was due to supporting this feature in some way.

I sincerely hope that anyone looking to solve this issue them selves stumble upon this blog post and solve their issues as well.

Thanks AngryMuppet,
Da Voodoochief

Tuesday, October 20, 2015

Watergun Minigame pt #4 - the Video

Finally I was able to create a video of the game with a decent resolution. The resolution is a wee bit stretched in the horizontal... Something I will have to work out,

It happens because I have set Unity3D to run my game full screen when built, but also my game is designed for a 4:3 aspect ratio. I really needed borders to make it look right. Now I am not certain quite what to do about the issue. It is possible for me to code into the game the ability to dynamically set my screen widths... but perhaps there is an easier way, something to ponder on that is for sure.

I got the video created of me playing the Watergun Minigame, the first minigame written for Very Bunny Haha. I have already seamlessly added the game to the main game and so can enter it from a doorway, and when done you fade back to the main game. I am very pleased with the ways it is working.

 The game is missing a few things.
* I need to add sound FX, and perhaps some nice shanty that lasts for 30 seconds
* I need to tweak the gameplay a bit to get a proper balance to the shoot like mad, and skill shots

After that I need to write a second one as this was so much fun to make. I already have a design as well.

Talking to a friend yesterday lunch time he mentioned programming while on Twitch. This sounds very exciting to me and something I think I could enjoy doing. Only I currently program whilst sitting on my easy chair and watching the telly with me missus. I don't think that is the best way to do a programming stint on twitch, and anyway, I would want to talk about what and why I am doing stuff. Perhaps in the future.

Hope ya like the improved video.. still a bit to go, but getting there.

Laters
Da Voodoochief

Saturday, October 17, 2015

Watergun game pt #3 - Finished

Here is an in game image of the game being played. Once I get a video of the game without the Lag I will post it to Youtube, but until then here are a couple of pics of the game.
 
This following image is the game as it starts... I realized that I needed to have instructions, duh! and of course I also needed the OK button to allow progression. I also use the same button for the game over screen to jump back to the rest of the game

Now mostly it is all done. Only I have a couple of bugs when going back to the game, namely the players Jack rabbit sort of shuffles along on his butt, and it looks like a dog dragging his butt along the ground. Most odd indeed.

Now back to working on bugs and the rest of the game. (oh it tok about 5 hours I believe to create the minigame).

Laters
Da Voodoochief

Wednesday, October 14, 2015

Watergun game pt #2

Here is a new picture of the minigame I am working on. This is the second picture of the game and as you can see, there has been quite a bit of activity. Though not all of it is connected up at this time.

There is now a background, and clouds that are the targets. So we can control the gun and fire the water balls at the clouds to get score. The further the target you have to shoot the more points the target is worth.

The little flash Scores as I call them pop up and then shrink away over about 5 seconds. They look quite professional I am pleased to say. They really show up as I put one of my lovely alpha'd texture behind it. Makes em pop eh!

I also placed the Cannon within a table and then shrunk a rock down and placed that on the table as large Rivet. I also made a dupe of that Rivet and colored it black and placed it underneath to make the rivet pop and have a 3d illusion. Also the shadows I placed under the table make things seem more 3d as well.

I spent most of my time working on the particle effect for when the water ball hits the clouds or floor. haha!

Still, coming along nicely. Now I just need to hook up the Timer control, which will mark the start and end of the game itself.

Laters
Da Voodoochief

Tuesday, October 13, 2015

WaterBallGun Minigame

So to allay my frustration with the Input delay problem within Unity3D, I am working on something much more fun, something we need for the bigger game, but also fun.

Did I mention I am working on something fun ? Well here is an early picture, with hardly anyting going on, but set up is where it starts.


All you can really see is that there is a countdown to the start of the game in the middle of the screen. Followed by the Cannon which I just added (it is also rotating by itself atm). Right above the Cannon you can see the first WaterBall, the very ting that will eventually be fired from the Cannon, and at various angles.

You may have guessed that this is one of the first minigames I am adding to Very Bunny Haha. a game that should span Skillful players with Novices. I am already enjoying how fast I can throw this game together... though in the back of my mind I am still searching for an answer to the input delay my game randomly has... GAH!

Laters
Da Voodoochief

Sunday, October 11, 2015

Meeting about the Arcade Games

I had a good conversation with my Daughter today about the current state of the game. This was in the hope that she could clarify some of the many design thoughts running through my head. This meeting went very well and I now feel a lot more focused for the next sections of the game.

I also mentioned to her about the marketing blurb I have been busy working on lately. Some of the best stuff I have ever created IMHO. Following are a few excerpts.

"This is one of the best and most fun farming games you will ever play, and is more fun than you would expect. Planting seeds, watering plants, milking cows, collecting eggs etc, all probably sounds like tedious work. Instead it turns out to be engaging gameplay, all woven together to make the experience more than it's individual parts."

"As you play more of the game and explore, you will find that more of the world and the game will open up. As you progress in this way you will find that you can charm some of the village residents and eventually woo them, with the goal of either having them as a best friend, or perhaps even going on to marrying them."

Ok, back to my meeting with Leilani. We got to discussing how I can more seamlessly bring in the Arcade styles games to the gameplay. I do not want the Arcade games list such as is supplied in Webkinz. Instead I want it to feel more seamless, even though these games are going to be very unlike the world that Jack travels around. I think I have some good stuff to work on now, and so I can go ahead and make the code handle doorways into these arcade games.. Some will be hidden, all will be earned in some way.
 Ok, time for sleep,
Good Night all,
Da Voodoochief

Friday, October 9, 2015

Marketing materials always required

I have to admit that I am not the biggest fan of creating the Marketing materials for my games. (I would rather be writing more of the games!)

I know a few people who are far more skillful and adept at that sort of job than myself. Yet I also know that I can be competent enough to get something done, something created... and that something is usually better than nothing.

So Here I am working on this excellent game and I realized when I created the Web page that I have not got anything written down to describe the game. Geez, and the Web page could do with it as well.

So today I decided to write some stuff... but I didn't quite know where to start.

Then I had an inspiration (one I have had before for other games). I went looking for reviews of some of the games that Very Bunny Haha resembles or is based around. Games like Harvest Moon or Animal Crossing are about as close as you could get at this point. I did manage to find several reviews for these old games and I read them all several times till I got the gist, essence and mainly how they were saying things about the games.

Then I started to write... ok, it wasn't fast , but it was steady with some inspired parts.
  • I know I need several bullet points for the game (as many as I can come up with in several flavors if possible).
  • I also need a good paragraph to describe the start of the game.
  • Lastly I need several small paragraphs describing what you can encounter or do within the game.
I now have several of these and I will try to embellish them a bit more before I publish them to the games Web site. Which should be this weekend, along with another video of course.

I really want to do 1 video a week. Then with all that practice, by the time the game is ready for the public I should be able to create a masterful video :)

Ok, started to waffle now, it must be bed time,

Good night,
Da Voodoochief

Sunday, October 4, 2015

Better Arrays mean Easier coding

When I started this game I knew I needed strings. When you use one object on another object I wanted to supply either some useful information, or some comical sentence. This mean't that for every object in the game I would need to have a corresponding array that would contain the Text for the two objects.

I did this by creating a 2 dimensional array. Very easy for sure. And here is part of it....

 public static sUseStringsTable[,] CompleteUseStrings = new sUseStringsTable[,] {
  { // gold
   new sUseStringsTable(false, ""), //GOLD
   new sUseStringsTable(false, ""), //SILVER,
   new sUseStringsTable(false, ""), //AXE,
   new sUseStringsTable(false, ""), //SLEDGEHAMMER,
   new sUseStringsTable(false, ""), //SHOVEL,
   new sUseStringsTable(false, ""), //HOUSE_KEY,
   new sUseStringsTable(false, ""), //WATERINGCAN,
   new sUseStringsTable(false, ""), //E_KEY,
   new sUseStringsTable(false, ""), //PICKER
   // start consumables
   new sUseStringsTable(false, ""), //APPLE,
   new sUseStringsTable(false, ""), //WOOD,
   new sUseStringsTable(false, ""), //STONE,
   new sUseStringsTable(false, ""), //WATER,
   new sUseStringsTable(false, ""), //MUSHROOM,
   new sUseStringsTable(false, ""), //tulip
   new sUseStringsTable(false, ""), //daffodil
   new sUseStringsTable(false, ""), //daisy
   new sUseStringsTable(false, ""), //watermelon
   new sUseStringsTable(false, ""), //carrot
   // start seeds
   new sUseStringsTable(false, ""), //TULIP_SEED,
   new sUseStringsTable(false, ""), //DAFFODIL_SEED,
   new sUseStringsTable(false, ""), //DAISY_SEED,
   new sUseStringsTable(false, ""), //WATERMELON_SEED,
   new sUseStringsTable(false, ""), //CARROT_SEED,
   // world items
   new sUseStringsTable(false, ""), //PLANT_DIRT,
   new sUseStringsTable(false, ""), // tree
   new sUseStringsTable(false, ""), //house
   new sUseStringsTable(false, ""), //wooden log
   new sUseStringsTable(false, ""), //baby duck
   new sUseStringsTable(false, ""), //baby sheep
   new sUseStringsTable(false, ""), //Delila
   new sUseStringsTable(false, ""), //Rock
  },
  { //silver
   new sUseStringsTable(false, ""), //GOLD
   new sUseStringsTable(false, ""), //SILVER,
   new sUseStringsTable(false, ""), //AXE,
   new sUseStringsTable(false, ""), //SLEDGEHAMMER,
   new sUseStringsTable(false, ""), //SHOVEL,
   new sUseStringsTable(false, ""), //HOUSE_KEY,
   new sUseStringsTable(false, ""), //WATERINGCAN,
   new sUseStringsTable(false, ""), //E_KEY,
   new sUseStringsTable(false, ""), //PICKER
   // start consumables
   new sUseStringsTable(false, ""), //APPLE,
   new sUseStringsTable(false, ""), //WOOD,
   new sUseStringsTable(false, ""), //STONE,
   new sUseStringsTable(false, ""), //WATER,
   new sUseStringsTable(false, ""), //MUSHROOM,
   new sUseStringsTable(false, ""), //tulip
   new sUseStringsTable(false, ""), //daffodil
   new sUseStringsTable(false, ""), //daisy
   new sUseStringsTable(false, ""), //watermelon
   new sUseStringsTable(false, ""), //carrot
   // start seeds
   new sUseStringsTable(false, ""), //TULIP_SEED,
   new sUseStringsTable(false, ""), //DAFFODIL_SEED,
   new sUseStringsTable(false, ""), //DAISY_SEED,
   new sUseStringsTable(false, ""), //WATERMELON_SEED,
   new sUseStringsTable(false, ""), //CARROT_SEED,
   // world items
   new sUseStringsTable(false, ""), //PLANT_DIRT,
   new sUseStringsTable(false, ""), // tree
   new sUseStringsTable(false, ""), //house
   new sUseStringsTable(false, ""), //wooden log
   new sUseStringsTable(false, ""), //baby duck
   new sUseStringsTable(false, ""), //baby sheep
   new sUseStringsTable(false, ""), //Delila
   new sUseStringsTable(false, ""), //Rock
  },
  { //axe
   new sUseStringsTable(false, ""), //GOLD
   new sUseStringsTable(false, ""), //SILVER,
   new sUseStringsTable(false, "Giving an Axe the Axe"), //AXE,
   new sUseStringsTable(false, ""), //SLEDGEHAMMER,
   new sUseStringsTable(false, ""), //SHOVEL,
   new sUseStringsTable(false, ""), //HOUSE_KEY,
   new sUseStringsTable(false, ""), //WATERINGCAN,
   new sUseStringsTable(false, ""), //E_KEY,
   new sUseStringsTable(false, ""), //PICKER
   // start consumables
   new sUseStringsTable(false, "You swing at the Apple multiple times, but miss every time. The Apple is spared."), //APPLE,
   new sUseStringsTable(false, "That has already been chopped, why would you want to chop it again?"), //WOOD,
   new sUseStringsTable(false, "This isn't a sword you know."), //STONE,
   new sUseStringsTable(false, "Alas, my master! Careful the Axe doesn't fall into the water."), //WATER,
   new sUseStringsTable(false, "Not effective against badgers."), //MUSHROOM,
   new sUseStringsTable(false, ""), //tulip
   new sUseStringsTable(false, ""), //daffodil
   new sUseStringsTable(false, ""), //daisy
   new sUseStringsTable(false, ""), //watermelon
   new sUseStringsTable(false, ""), //carrot
   // start seeds
   new sUseStringsTable(false, ""), //TULIP_SEED,
   new sUseStringsTable(false, ""), //DAFFODIL_SEED,
   new sUseStringsTable(false, ""), //DAISY_SEED,
   new sUseStringsTable(false, ""), //WATERMELON_SEED,
   new sUseStringsTable(false, ""), //CARROT_SEED,
   // world items
   new sUseStringsTable(false, "What do you want? An Axe tree?"), //PLANT_DIRT,
   new sUseStringsTable(false, "This tree is much too sturdy for that Axe, and your muscles"), // tree
   new sUseStringsTable(false, "You cannot chop your way in!"), //house
   new sUseStringsTable(true,  "Do you want to swing the Axe mightily and skillfully, to chop the wooden log into nice small planks of wood?"), //wooden log
   new sUseStringsTable(false, "I Axed you not to make me go Quackers!"), //baby duck
   new sUseStringsTable(false, "Using the Axe in Sheep form the counter helix still fires off."), //baby sheep
   new sUseStringsTable(false, "What a simply horrid thing to do!"), //Delila
   new sUseStringsTable(false, ""), //Rock
  },


I apologize for the sheer amount of code above. You see the BIGGEST problem with this 2 dimensional array is that all arrays are of equal size. This means as I have added more and more items into the game, this array has got OUT of HAND!  The example above only shows a few objects, but you can see how massive this could become. Imagine 100 items x 100 items. that is a 10,000 possible options right there.... simply a massive table.

The real downer about this is that it is cumbersome and hard to maintain. It also has the side effect that I do not want to create another Item, as I would have to visit every sub-dimension to add that new object to keep all the arrays the same size, bah!

What you can also see above is that the arrays are MOSTLY EMPTY. Whaaaat? Yes, it is true. Some objects simply cannot be used with others, Or I don't have anything witty to write for that combination.

I spent some time working on a replacement. I started by figuring out what I wanted, and simply enough I wanted to remove the empty combinations. A good plan like this can get ya excited and focused on what to do. Then I went looking at array documentation for C#. (always good to refresh my memory on this stuff!).

I FOUND THE ANSWER...
Jagged Arrays - this was my answer. It did not take very long for me to create these new arrays. And yes I had to write some extra search code to find the actual match instead of just using a second index from the Item type. Still very easy and as you can see below it works so much more clearly and succinctly.

 public static sUseStringsTable2[][] CompleteUseStrings = new sUseStringsTable2[][] {
  new sUseStringsTable2 [] { // gold
  },
  new sUseStringsTable2 [] { // silver
  },
  new sUseStringsTable2 [] { // axe
   new sUseStringsTable2(ITEM_IDS.C_APPLE , false, "You swing at the Apple multiple times, but miss every time. The Apple is spared."), //APPLE,
   new sUseStringsTable2(ITEM_IDS.C_WOOD , false, "That has already been chopped, why would you want to chop it again?"), //WOOD,
   new sUseStringsTable2(ITEM_IDS.C_STONE , false, "This isn't a sword you know."), //STONE,
   new sUseStringsTable2(ITEM_IDS.C_WATER , false, "Alas, my master! Careful the Axe doesn't fall into the water."), //WATER,
   new sUseStringsTable2(ITEM_IDS.C_MUSHROOM , false, "Not effective against badgers."), //MUSHROOM,
   new sUseStringsTable2(ITEM_IDS.W_PLANT_DIRT , false, "What do you want? An Axe tree?"), //PLANT_DIRT,
   new sUseStringsTable2(ITEM_IDS.W_TREE , false, "This tree is much too sturdy for that Axe, and your muscles"), // tree
   new sUseStringsTable2(ITEM_IDS.W_HOUSE , false, "You cannot chop your way in!"), //house
   new sUseStringsTable2(ITEM_IDS.W_WOODEN_LOG , true,  "Do you want to swing the Axe mightily and skillfully, to chop the wooden log into nice small planks of wood?"), //wooden log
   new sUseStringsTable2(ITEM_IDS.W_BABY_DUCK , false, "I Axed you not to make me go Quackers!"), //baby duck
   new sUseStringsTable2(ITEM_IDS.W_BABY_SHEEP , false, "Using the Axe in Sheep form the counter helix still fires off."), //baby sheep
   new sUseStringsTable2(ITEM_IDS.W_DELILA , false, "What a simply horrid thing to do!"), //Delila
   new sUseStringsTable2(ITEM_IDS.W_POND , false, "Water makes Axes go rusty, and you don't want a rusty Axe do you?"), //   W_POND,
  },


As you can easily see this covers all that data from the above example, but in a much smaller format. So easy to use, so incredibly easy to add another item to the list as well.

I am so pleased I spent way too much time redoing this list now, as it would only take me a lot longer if I left it till I had another 60 Items in it :o

Laters
Da Voodoochief

Thursday, October 1, 2015

Made another Video

So tonight I created another simple gameplay video of Very Bunny Haha. It was a bit frustrating to be honest as I cannot seem to get the aspect ratio correct when I output the edited video.

So instead I end up with it being stretched vertically and blurry to boot. I am going to use this as a catalyst to do much better next time.

Starting with recording in much better (and set) dimensions. This one was recorded in 780 x 404, which is certainly not very standard. Perhaps that is why it wasn't working out for me.

Next up I should record the voice over on my nice headset that I bought a while back for just such a purpose. Only I couldn't do that tonight as my son has apparently been using them and so they are in HIS room.. and he of course is asleep. bah!

Hope you like this off aspect blurry video...


Laters
Da Voodoochief