Saturday, March 30, 2013

Universally inspired

On of the great things about doing stuff is that any experience could be the catalyst to creating great new things.

This was the case yesterday when I went with my family to Universal Studios Hollywood for my sons birthday. There are so many experiences from annoying to amazing and any one of these could inspire in me the next newest fun idea I might use. For example...

At the start of the day we had to drive down the freeways of LA to get to Burbank. This is in itself an interesting environment with lots of possibilities of excitement depending on what kind of game i was interested in writing. but lets move forward from more daily stuff to more memorable Theme park excitement.

We were at first treated to lots of crowds and navigating through them to get into a good line with our tickets etc. Not bad, but it was frustrating, and might be for a player too.

In the theme park we encountered a lot of fun things to do and experience. From the Scary Maze to the Transformers 3D spectacular and new ride. This was amazing and the kind of technology they employed was fascinating. Lots of movement linked with fast shocking visuals. These kind of things inspire me to want to create fast action games, though of course Transformers is not interactive. something of course I feel like I could add.

I am going to skip a whole lot of amazing experiences and jump to the final few shows of the day, Waterworld, which is a live action spectacular and makes me want to create wonderful scenery and story to go along with sweet effects, and Shrek 4D. Which make me feel like I need more interactivity with the player, though of course I cannot yet blow wind on the back of the players neck, or spray them from some Dragon sneezes. Still It gets me excited to think how wonderful some games could be if they had more tactile interfaces and additions. Of course I am always on the lookout for tech developments that add on to real world connectivity.

It was an inspiring day and watching my family and my kids friends have such a great time, smiling, laughing and being so buzzy. It makes me want to help make people feel that same way through my games and books.

Laters
Da Voodoochief

Wednesday, March 27, 2013

Sfx stands for.. Silly?

I have started the sound effects for the game. Althuogh I don't actually have real ones, or even a full list of required SFX it never stops me from proceeding. The one way I have found to get a full list of effects for the sound guys is to simply put some in. This way I quickly find out which ones I have missed off my notes/list.

So a few nights ago I was recording 32 sound effects for all sorts of things, from starting level ditties to explosions, from gutteral 'urgh' to flying chairs. I did this not by searching libraries of sounds (that takes real time!), instead I decided to record them all with my voice. I even managed to get my kids to help me out with a few, as they wandered in to see what all the noise was about. Only to find me slapping my face while making gurgling noises to simulate a smack to the face of Kal. Ahh the fun of it.

In the end about half of the sounds are in fact not terrible, but there are still a bunch of really silly sounds. This is not a bad situation though as replacing a sound is pretty easy, and simply having a placeholder sound helps me do the code or get the timing right for a sound to happen. All good and necessary work.

So I put it on the iPad and let the kids laugh at the cacophony. It sounds worse than it should as I have not yet implemented the individual effects volume settings.. so a swish of air is as loud or louder than a big explosion. That will most likely be my next job. then I can balance some of these effects a bit.

It was a fun time recording these effects and it took me about an hour in total to get them ready for use in game. Not bad for 32 sfx eh!

Laters
Da Voodoochief

Monday, March 25, 2013

Down Time

Sometimes during development I get down on the project in general. This weekend is one of those troublesome weekends, and now I wonder just how many more days I will feel this melancholy towards my current game dev project.

Team:
One of the most awesome things about working in a team is that when one of the members gets a bit down as always happens, you know the weight of what is left to do, or the burden of a difficult and annoying task is getting us down. Their spirit can be buoyed by the other teammates, which always feels good for everyone on the team. Seeing that member suddenly brighten and become productive again can give the whole team a great boost.

Individuals:
By oneself it is hard to sort out when stuck on a particular problem for too long, or simply things are not going as well as hoped. For myself I find my artwork is not coming in anywhere near the degree I would like, also I find my scoreloop programmer is not producing the work needed to get the job done, and I am now waiting on that. Yesterday I was going to knock out some temp SFX to put into the game as place holders, but I cannot get my super microphone to work on my laptop, gah! Along with these external problems the one I am stuck on is a bit stupid, simple even. Yet I seem to be unable to solve it. This I am starting to find is grinding on my nerves.

Solution:
My usual solution is to simply move onto another task that can easily be accomplished. Then I start to get my mojo back and will build up enough of it in a few days to re-attack my current stumbling block. Meanwhile I will continue to enquire about the external dependencies I have.

Well that is enough moaning for today, off to work I go :)

Laters all
Da Voodoochief

Friday, March 22, 2013

Dangerous Flying Chairs

Sports can be so dangerous it seems, especialy future sports played out on your iPad.


flying dangerous chairs from Robert Toone on Vimeo.

Above is one of the enemies I have written for Hoop Fighter and I want to talk about some of the elements that went into this final incarnation.

The chair above when I first put it in was simly spinning across the floor, and that was just boring, it was also none threatening, and I wanted something threatening to liven up the level of the game this enemy is going to appear on. So throwing it in at you, as though an opposing player had urled the thing your way seemed a lot more fun and  exciting. Once I threw it in I detected when it hit my floor level and simply reversed the vertical velocity, only I dampened it 50% to make the next bounce up smaller than the last. This happened to be a nice value from a looks perspective. My gravity balanced with the amount of velocity I rmeoved seemed to give a nice look and feel (though of course not an accurate simulation at all).

Then I realised that the forward momentum also needed to be dampened because the friction of hitting the floor would slow that too. This time I experimented with a value that would work and ended up with a 40% dampeneing amount. With all the velocities now being dampened when hitting the ground the chair did what I wanted, so I simply had to alter the inital velocity values to get the chair to bounce in the right place to make me be able to jump it, but also have the chair land right in front of the player. The reason landing in front of the player was important was I wanted to fool the player into jumping a bit early, and as the chair lands in front and has it's velocities dampened, you can be fooled in this way.

Next up I had a problem that the chairs diminishing velocities made it stop just under my player character. Oh Noes, so I had to implement a minimum forwards velocity. Which worked surprisingly well to simply drag the chair off screen.

And that's my chair.

Laers
Da Voodoochief

Wednesday, March 20, 2013

Hoop fighter Todo list

I have been keeping this list and expanding it when I think of something in a program called Onenote on my windows phone. I have to say it is quite handy to do that, as I come up with things to add at all sorts of odd times. The one thing this list below doesn't show is the check marks telling me I have already completed that item. Which is a pity as I have completed about half of these below. Still, I will keep adding items and solving them as time passes.

I do wonder what other devs are using to track a todo list like this one, or if they simply remember everything. I used to write it all down on a pad with me pen, finaly I am coming into the next century haha.

Hoopfighter to do
• Popup numbers. Test completed move in collectables.
• Code entry screen.
• Adverts screen, page
• Video working
• Include cheer move
• Include ballistic move, or design a new move
• Use spiky ball in 1 or 2 modes
• Use chair for enemy
• Create flash in stands
• Use multiple lives
• Do save game system
• Design code features
• Design in game purchase features
• Design achievement s
• Get scoreloop in
• Finish credits
• Fix back/pause button on ipad
• Sort out continue or new game
• Put in test, placement sfx
• Finish dunk minigame, use dying anim for dunk anim
• Do more advert banners for my book games
• Find more sponsors for banners?
• Lay out the basic instructions and put them in game
• Talk to Scott about adding cheering manager,teammates in the background
• Fix shop item selector to match code entry version
• Put in the code to activate bought packages
• Put in code to activate code entered items
• Punching enemy should do damage
• Flying enemy should do damage
• Name all levels
• Restrict playable levels based on progression

Laters
Da Voodoochief

Monday, March 18, 2013

Tidy up Rewrites

One aspect that people do not generally consider when looking at how much work it is to write a game, is the time it takes to rewrite parts of the game. These rewrites tend to fall into certain categories and I am mostly talking about the little ones, the ones that always get overlooked, yet can take a significant amount of time. Big ones would be like replacing the rectangle to rectangle collision system with a more comprehensive polygonal area to polygonal area. To obtain more perfect collisions. Those kinds of rewrites are more what I would call re-developments, and should be planned for in the technical design phase of a game.

So tidy up rewrites are more in line with what tends to happen later in the games development process. Usually as a result of someone coming up with a better way to do something. such as an interface improvement. This is the case with Hoop fighter and my scrolling lists that I first wrote for level selection. The initial one used two buttons to scroll up or down through the list. Then I changed it to a swiping motion that felt more natural. So I was happy. Then of course it hit me that I now need to improve all the scrolling lists in the game to use this new method. Hence a rewrite... Only yesterday I improved the system even more and now I am retrofitting those enhancements into the other scrolling lists. As it happens I am very very likely to do yet one more rewrite, and that is to make a nice class for this new fandangly scrolling list control and display. Then I'll have to only change the class and get it in all the right places.. Still gotta make it work like that first, and that takes some tidy up rewriting.

My scrolling list has velocity, drag, finger drag, coloring and fading now all working. Quite a set of functionality that wasn't all designed in from the start. It is however a vast improvement over the classic button design I had when I started (I am more used to designing for controllers).

And the tidy up rewriting of course takes time from something else, which can make you late for milestone delivery.

Laters
Da Voodoochief

Friday, March 15, 2013

Escape char that Percentage

One of the unique aspects of programming is that it can sometimes need codes. These codes have to work in some specific ways and it makes things a little more complicated or unusual in its appearance.

My example for this is the Escape chars used in string formatting in C/C++ and also many other languages. These codes are necessary to complete a variety of jobs. Although I have been using these special characters and string functions now for about 18 years I can sometimes forget exactly what I need, though I admit it is rare.

Tonight I came across one that I believe I have never had cause to use. Let me explain the situation.

In the new Menu I just coded I enter a game code, this will allow a player to enter some special codes supplied by people on Twitter or Facebook, and entering a valid code would empower and reward the player in some way. One of the rewards happens to be +20% Energy restored Immediately. So I have a table of strings for the rewards so I can explain the valid code entered has given the player 'X'.

Well the string it printed on my screen was quite amazing. The '+20% Energy' became '+20 2.20000E+22 nergy'. Boy did it make a mess. Now my experience told me it was a simple escape char problem, however I have never encountered the % used with the normal escape char '/'. So I was initially puzzled.

Upon investigation I found that I needed to do this '%%' to escape the percentage symbol with itself. Wonderful.. and the result is good too.

Even after all these years, somethings I take for granted can still produce surprises.

Good Night,
Da Voodoochief

Thursday, March 14, 2013

Spiked in the Head

Here is an enemy I just wrote for Hoop Fighter for the iPad. In the video you will see what I ended up doing, but let me back up a bit and explain some decisions I made.

I was given the Spiky ball as a test enemy. Here he is...
As you can see this is a test render and so isn't lit etc. Still I was given this and I had pretty much free reign over what I could do with this. Now it's a ball, and erm.. it's spiky. So what should I do with it?

I have two main areas to attack Kal, the top or bottom half of his character. So I figured this object should be thrown at Kal by someone off screen. It IS a ball after all, and balls get thrown. As for it being Spiky, well I hope that just adds to its atmosphere and dread by the player. As it is extra scary with the spikes, I felt that this object should instill fear and so decided I should make it do something Nasty.

Nasty can come in several flavours in a game like this, lets revue some of the more notable and obvious ones.
  • Size. I could make this really large.
  • Speed. I can make this travel at great speed.
  • Damage. do a significant amount of damage to Kal.
  • Stealth. Make it hard to see.
I chose to go with making the ball slightly larger than a real basketball (Size), and also I went all in on the Speed, and now this enemy flies so fast at Kal that it can be a real shocker. So I had my design and just had to implement it.

To get the ball to have some character and make it appear to function in the 'real' world. I gave it a simulated gravity which is great for making people believe it is connected to the scene and 'real' world. I then worked out the speed I wanted the ball to move at and then added the correct vertical velocity to get the ball to fly up and then collide with where Kals Head could be.

Once I had the Spiky ball targeting correctly I added in the hit to Kal and finally the reaction of the ball after it hits Kal in the head.

The last touch I did was to give the player points for sliding under the spiky ball. As the ball is s dangerous I have not allowed Kal to be able to kick or punch it.

And here is the final product...


spiked ball attack from Robert Toone on Vimeo.
In this video you get to see the ball fly in and smack Kal on the head, and also it's reaction afterwards. The way in which the object reacts after the impact tells the player a lot about the object, such as it's weight danger level.

A very fun thing to create, Hope ya like it.

Da Voodoochief

Tuesday, March 12, 2013

Flying Attack Enemy Player

It is about time I showed you all some of the cool and exciting code I have been busy writing.

You see I got a drop of new test graphics to play with for the game, and so the radio silence has been me implementing them. I had to redo Kals animations setup, and that took a bit of time to get right. Then I had the very exciting prospect of coding some enemies to tackle Kal with.

So last night I recorded two videos and here I will present one I think looks exciting. check it out and I'll chat more after the video break.


new flying attack enemy player from Robert Toone on Vimeo.

This enemy cmoes along idling and waiting for you to get in range. Then quickly ducks and launches himself at you with a big smacking punch and raised knee to do some damage. I managed to record him flying over me as I slid and dodged under him, which I think lokos superb, and then I let him hit me so you could see that as well. The only thing I was unable to record (holding the camera and pressing the iPad screen is way too much for me) was me timing my kicks to knock him off the screen. Maybe I will get some help to record that hehe.

This enemy animation is setup as an idle (4 frames looping), and then when in range I start a sequence that sees the dude duck downa nd launch into the air. At the appropriate points I give these animations some velocities to have him go up and then down with gravity, as well as accelerate him off the ground as though he has kicked off. The duck and fly sequence is 14 frames. I then keep him on the last flying frame and let the velocities and gravity do it's work.

Laters
Da voodoochief

Wednesday, March 6, 2013

Art Driven Motivation

I am a very motivated individual when it comes to getting games created. I do not know where this drive comes from, but it is strong in me. I tell people that ask that the hardest part of writing a game is finishing it. After all I have seen so many people start writing games and really struggle to complete them. Though it seems the more experienced a programmer is the easier it is to finish. Maybe that is because experience has taught them just how many details require time and attention to complete a game.

Still being driven has allowed me to be very good at getting products created on time and usually on budget while working with a large and diverse assortment of individuals. I work very hard to make these individuals work as a team, but I also motivate them in various ways. Sometimes of course I am just not feeling it myself. My motivation can be at a low ebb and those days I struggle to move forwards. I have several ways that I use to help re invigorate my motivation but my favourite by far (and also my most successful) is not controlled by me.

Art.... Getting art for my games is the single biggest motivator I know. For some reason it works better than anything else. I don't know if it the realization of my designs in visual form, or is it because this is a part I cannot personally do? I am not sure, but the effect of receiving some new art for my game is a massive motivation boost. It also help if I simply know some new art is imminent as it helps me complete things I might be struggling with so I am free to put in all the new art when it arrives. I also see this same effect on my team members when they are given new art. So I know this effect is not just for me.

I love it best when  I know I will get new artwork on a regular basis, like every Wednesday or something. That gives me a lot to look forward to each week.

Time to go get some work done, ya see, I have some new art work to put into the game.

Laters
Da Voodoochief

Friday, March 1, 2013

Fully Texture Packed!

I don't usually like to put exclamations in my titles. But, well. Woah!

I think this deserves it though. I have been adding new test graphics from the artists for Hoop fighter and OMGoodness, is that texture packed to the gills or what.


This is a picture of TexturePacker of course. From Andreas at http://www.codeandweb.com/. It takes a while to get all that stuff packed together, but wow did it do an excellent job. I will have to move onto a second page pretty soon, and although the current version of TexturePacker does not support overflow into a second texture, it will not be very difficult to setup my code to handle multiple pages.

I highly recommend this app for anyone using textures and 2d imagery in their game.

Have a good one,
Da Voodoochief