Added basic event system and particle basics

This week I got a chance to sit down and get my first attempt at a particle system working. The thing that slowed me down was only having an Update all actors loop. Since I was spawning particles on things like death of an asteroid I was invalidating my iterators. Rather than switching the container I was using etc. I decided getting a event or messaging system going would be better.

Now my main update looks like this:

  • Update tuning variables from Lua
  • Process message queue (this is new)
  • Handle input
  • Update all actors
  • Special collision death loop (this will be rewritten to use messages)
  • Game end condition check (this will be rewritten to use messages)

I am starting to think that if I had actually created a messaging system up front then I would have had an easier time over the last few weeks. Doing this system has made me re-assess if doing it right from the beginning is actually better or not. Next steps are to get some fun particles going in game so I get some visual progress and perhaps some sound FX as well! Then I might look at getting my custom message classes into Lua since I think that might actually save me a serious amount of time. I’m hoping that in the next three weeks I will have a rough working version of my ship vs. inanimate object combat working and looking good.

The bad news is that my laptop is really starting to slow me down. I sort of noticed that it only lets me have two simultaneous keys down awhile ago but it didn’t really affect anything. Now that I want to accelerate, turn and shoot it is getting very annoying. I currently fear that this is a hardware issue. Anyone know how to find out about key press limits? I cannot even find anyone else complaining about it so I think something might be wrong with my laptop. I ran into huge issues when I was trying to indulge in some retro Myth 2 gaming. Keys would get stuck for several seconds rather than updating smoothly. Looks like I should pinch pennies and buy a new laptop. Front runners are the Dell XPS line and a MacBook. Any recommendations?

Posted in Technical | Tagged , | 2 Comments

Finding Motivation and Inspiration

The past week has been filled with great things in my life however progress on my game was not really one of them. I have been spending some more time playing games, watching movies and reading books in the last little while. Why? For me project motivation comes from many places but this week I have been reflecting on motivation from two perspectives: Positive motivating factors and negative motivating factors.  Let me describe what I mean starting with the negative motivating factors.

Negative Motivating Factors

Negative motivating factors sounds like an oxymoron so let me be clear by giving an example. Part of why I started a side project was because I wasn’t not enjoying my day job and I wanted a plan B. I picked the “I, Game Maker” moniker for this site because that is what I really like doing; making games. My day job had somehow turned into managing the people and process and not focusing on making a product. This kind of motivational factor isn’t bad, it just stems from dissappointment rather than passion for an actual product. It got me started in the right direction but not for the right reasons. The good news is that my day job has been awesome in the last couple of weeks. Negative based motivation got this project started, but in order to keep it going I’m going to need positive motivating factors so I have been recharging the creative batteries with positive motivating factors.

Positive motivating factors

Making games is a creative process. I have made it to a point with my engine where I am now starting to actually make creative decisions. Creative decisions need inspiration so my search for motivating materials has been the priority over game progress. My research so far has been mostly in books, TV and playing games.

Books

atallcost
If you like the Epic Space Opera genre, you are missing out if you haven’t read the Honor Harrington series. I just finished the 11th book in the series At All Cost and I loved it. I was surprised to see an add for a video game in the back of the book and went to the Honorverse site and it seems a little dead. If I’m ever doing a game like Stars! I may take a little inspiration from this series. Reading this reminded me to try out Sins of a Solar Empire which I haven’t really been able to get into yet.
hedgeknight2

The standard geek balance is between space and fantasy. I balanced out the space reading by picking up George RR Martin’s Hedge Knight 2 graphic novel. I didn’t enjoy it as much as the first installment in the series, but it was still a great read. I don’t read nearly as much fantasy as I do science fiction but I am waiting as impatiently as everyone else for the next installment in the Song of Fire and Ice. Checking out Mount and Blade is also on my TODO list in this genre, or maybe Depths of Peril, both Indie titles.

Television

b5-boxed-s4-lgFor some reason I missed out on Bablyon 5 back in the day and I have just finished the fourth season on DVD. This show was way ahead of its time! I’m hesitant to start the fifth season for two reasons: I have heard it isn’t as good as the rest of the season and Battlestar Galactica is back on! I have a fascination with story lines that have a planned interaction or over-arcing story for the duration of series. Diplomacy and space combat in this series is just amazing. On a game front this makes me want to try out Sins of a Solar Empire.

bsglogoBattlestar Galactica is flat out the best thing I have watched on TV for years. I am still trying to think of how a game could capture the desparation and tension of this series and I haven’t figured that part out yet. I will choose watching BSG over working on my game any night of the week until the series is done! My wife enjoys the show as well and I probably know as many female fans as I do male. I am drawn to stories that put characters on the dramatic edge of survival where the fate of the human race lies in the balance. Star Control II, Wing Commander (1, 2 and 3), X-Wing/Tie-Fighter and X-Com are some of my favorite titles that “feel” like battlestar. I might need to dig up Homeworld and Freespace 2 since I missed those games and I believe they are classics.

Games
psn_pixeljunk_monsters_icon
I have been a bit lighter on gaming in the past little while. My new trick is fitting in gaming time with my wife. We are currently trying to get all the rainbows in Pixeljunk Monsters. Hopefully I can do a break down of this game after a bit more play time. In the meantime I am trying to figure out what makes the game fun for my wife. Tower defence games are a favorite of mine and I think that Monsters brings both a cuteness and a cooperative rewards based experience that is good for everyone. Much like Battlestar Galactica, Monsters appeals to both a male and a female audience. If I’m interested in having the most people possible enjoy the games I make then I think there are some real lessons to learn. It also means that I don’t have to compromise the experience in anyway since I love this game. Does a space opera game exist that is a cooperative game? Perhaps there is a way to design that in…

Summary

I am thoroughly enjoying my space genre research and I am getting excited about the types of games that I can build. I think I am nearly at the point where I need to start an actual design and I believe my posts will be a combination of design and engine development in the coming weeks. If anyone has suggestions for other great space opera inspiration, please send it my way in the comments!

Posted in Game Design | Tagged | 1 Comment

Dapple – Indie development in streaming colour

Dapple

1 : any of numerous usually cloudy and rounded spots or patches of a color or shade different from their background

My friend, Owen at Streaming Colour, has released his companies first game: Dapple. The game is now officially available on the Apple store and I highly recommend it! Am I biased? Sure, but that doesn’t mean it isn’t a really good game. I’m going to do my best to give it an honest review and game play breakdown. To find out what Dapple is, the best way to find that out is from this video:

Puzzle Games and me

First of all I have to come clean and say that I am typically not a fan of puzzle games. Why bring this up? Well typically I feel that puzzle games don’t really have a purpose other than killing time. There are a few that I have played that I find step out of this mold: Tetris, Bejewelled, Lumines, Bookwork, Bookworm Adventures and now Dapple. To capture my attention a puzzle game needs the following ingredients: Polish, interesting decision space, sense of accomplishment and skill.

Polish

Dapple is a very polished experience. The art, audio, menu flow and above all the operation of the in game controls are very polished. There are the odd times that a tile I didn’t mean to gets selected, but the double tap mechanism protects this from causing issues. In the puzzle game world I prefer a solid core mechanic that is well done rather than a boat load of features. The polish also needs to have the right timing and reward feel for scoring well. Dapple does a great job of showing you your chained successes without having to long of a stop in game play.

Interesting Decision Space

I found the learning curve for Dapple a bit longer than a game like Bewjewelled. Changing paint colours is a bit of a different rule set to remember than just pairing up blocks of similar colors. Because I have to focus on getting a successful move in Dapple, I find I don’t have “as” much time to determine my long term chained results as I did in Bewjewelled. I would categorize Dapple as much harder than Bewjewelled to start, but finding a good combination before the hint icon shows up is more rewarding as a result. I’m hoping that as I play, the strategy space for the board will open up a bit to me so I can plan more move chains. The brown paint and special icons always factored into my paint selections and made me feel good about the long term planning.

Sense of Accomplishment

My favorite mode for accomplishment is the two player mode. This is a typical push the board in the other players direction. I think the first time I played this was in Lumines and I really loved it there as well. Having the competition plus colours coming in from both ends of the board is really exciting. During the regular course of the game you have a bonus meter and many animations and rewarding sounds for chained scoring paint matches. To me Dapple is on par with the high standards from PopCap games.

Skill

If I have one criticism for Dapple, it is that it takes a little while to “get”. I think this is because I’m a little slow on the colour matching. Every time I pick the game up I need about four to five selections before I really get back into the groove. Once the initial barrier is broken, I still find I’m spending my cranial power to find and evaluate the best initial move and that I find it a bit more difficult to plan out combos. However, when I am in the groove my brain slowly adjusts and then it is a blast. I think that game is actually training a little bit of the right/left brain rivalry. My logical side wants to find the best match but I really need to tune out in a way and let instinct kick in. When that happens it rolls really well.

Price

Owen has a great commentary on how he picked the price for Dapple. The apple store is an interesting place. It has bargain deals on lots of great products and basically makes game pricing on other platforms look atrocious. Console games go for $30-$60. Many Indie PC/Mac games go for $15-$20. Why does the apples store have so many products that are less than $5? I think that this is because people think of these as novelties or disposable content. Music you listen to a bunch for a little while and move onto the next song. Lots of people do that with games as well and at that price point you can try a lot of product for much less. In some ways I think Apple might be catering to the A.D.D. that seems to affect an entire generation. In that regard, I think that Dapple fits in an awkward spot. The game experience can be entertaining for hours but doesn’t have the first two minute hook. If you give a bit of time to learn Dapple $5 will be an absolute steal for this game but if you give it the 30 second unfair try, you might feel a bit burned at $5. If you do like games like Bewjewelled and don’t mind a bit more complicated version you should feel safe to pick this one up.

Summary

My wife and I have both put in a fair number of hours and are really happy with our Dapple purchase. Not only do I have a great game to play, but I can support someone who is out creating games that they love to play themselves. So many things on the apple store look like a money grab, Dapple stands out to me as a game with heart rather than as an attempt to get rich. That is the kind of product I want to support with my $$$.

Posted in Game Breakdowns | Tagged , , | 1 Comment

Simple ship movement with Box2D (Part 3 – Trying to tune the force)

Use the Force, Luke. – Obi-Wan

In the previous Part 1 and Part 2 I did what I would consider the easy stuff for tuning ship movement. This week was an attempt at getting a tuned ship movement experience while still using ApplyForce.

Goals

  1. Respect a top speed clamp when accelerating
  2. Provide a function that changes the force applied based on the current speed
  3. Have a method for damping when not accelerating

This weeks attempt

I realized this week that focusing more on management in my day job rather than coding has made me very rusty! I sat down for about an hour to work out how to do this and only a little bit of the dust wore off. I ended up with an experience I don’t mind the feel of but it isn’t “correct”.

Top speed

Originally I wanted to try to use damping to control the top speed and the deceleration. I wasn’t able to maintain a consistent top speed with damping enabled. I believe that damping is applied every frame and is applied as a percentage. This means that the faster you go the more speed is bled off. Rather than digging in to confirm this I decided to set damping to zero when the engines are on and to use a function (speed/top speed currently) to make sure that I’m not applying any additional force when I’m at top speed. This worked great and I thought I was done. Two problems, one my ship can go in reverse and when this happened the speed accelerated like crazy because the backwards top speed is different and two traveling at top speed if you turn the ship and attempt to accelerate no force is applied. Bummer dude.

I still don’t think I have found the correct way to account for this and if someone has a pointer to that I would be much obliged. What I am currently doing is using a dot product of the normalized velocity and the angle the ship is pointed at. If the value is less than zero I apply the full force since you are pointed in the opposite direction. That covers the backwards direction but I still haven’t found a good way to do the slightly off angle clamp. I’m going to work on that sometime in the next couple of weeks. The other thing I haven’t really covered is doing the same scale backwards. That is just a time limitation rather than not knowing how.

Function for top speed

Currently I am using speed/top speed as the force scalar and it is working fairly well so far. At a later time I’m going to make this exposed as a lua function that can be tuned per ship. For now this is functioning well enough.

Damping

Using damping to cause a deceleration has worked really well. I am currently using a value of 5 when above 1/4 of top speed and 20 when below 1/4. This lets me stop really fast and coast a little when “cruising”. Ideally when I rewrite all my ship code this will be a function as well.

Next Steps for Ship Movement

I really want to find a way to correctly control and map the top speed. This might go back to clamping the speed rather than scaling off the acceleration or actually taking into account the ship angle when scaling the force. I’ll those in the next couple of weeks. As it stands my ship can circle strafe and is actually feeling better as an experience so I am going to take a small break and design some game play or work on the look for the next couple weeks.

Sneaking in an update on art

When I get frustrated at not being able to solve something I take some advice from Micheal Abrash (Graphics Black Book – but I can’t find the chapter I mean!) and think about something else. In this weeks case I decided to fix my awful background image which was basically a noise texture. Space isn’t “space” without some nice stars and nebula’s. So I found this great old school space generation program. It took me about 5 minutes to download and create my own custom background. This is one of those pieces of software I am going to buy since it adds a ridiculous amount of “good space feel” to my game even if I’m not an artist!

Universe background

I, Game Maker: Universe background

What am I thinking for this week

I think I need to take a break from physics and I may be doing one of the following:

  • Re-writing all the game play classes and exposing them properly with Lua
  • Adding in particle systems to make it really feel like a space game and be rewarding to shoot stuff
  • Changing the shooting system to be aim with the mouse, steer with the keyboard
  • Adding an enemy that is a ship to learn a bit about AI and OpenSteer

Any of the above is going to be fun to work on.

Posted in Art, Technical | Tagged , , | 5 Comments

Layoffs, Writing References and Independent Development

Layoffs drive the reality of recession home
This week has been fairly shocking week for me personally. Usually layoffs are a cold hard number I look at on a website and feel a little sorry for. This was my first time sitting through a day of layoffs where people I work with every day for the last few years are no longer at work the next day. These aren’t people that weren’t doing their jobs. Nothing has driven home the severity of the current recession more than seeing talented people let go and finding out there is a flood of HUNDREDS of talented workers in Vancouver when six months ago any of those people could have walked across the street and gotten a great job.

Writing References

Since I am focused on “doing” rather than talking about stuff this year, I decided to put my project aside this week and devote that time to writing references for my friends and coworkers in order to do my small part. Much like blog writing, I found that these are something you need practice at to make them sound good. What I like to see in references are specific examples. Many recommendations boil down to “this person was great to work with”. I prefer to try and put specific skill examples that are both relevant to that persons profession and also to my point of view reviewing them. Those simple rules help me picture what the person has done and give my own, hopefully more credible view, into the work that they have done and also highlight work or performance that might be out of the ordinary.

Independent Development

A part of me cannot help but wonder with that many talented people in the market, is it inevitable that we will have a flood of independent games in six months to two years? Had I been on the list at my company, I don’t think I would immediately look for a job. I think I would try and start something even if money is low. I have read an article or two that look into if casual games are “wrecking the games industry” and I actually wonder if the reverse is true from a development perspective. I think next generation development has it all wrong. It is like the freaking cold war where companies are doing an arms race with the number of staff that they have and forgetting about efficiencies. I do agree that the industry got itself into this position and I am interested it will either go back to independent contracted studios or if it will generate more of a contract business. If someone wanted to start an engineering or an art contract/outsourcing business in Vancouver, the timing is ripe.

Conclusion

So in the end, I think we are either going to see independent start ups or some contract houses that shrink the gap between foreign outsourcing and local contracts. I hope to see many of my friends among this growth.

Posted in Uncategorized | Tagged , , , , , | Leave a comment

Simple ship movement with Box2D (Part 2 – Changing the limits)

In Part 1 there were a few things I needed to adjust in how I was using Box2D for my application. This post is basically about trying those changes out.

What did I learn?

Sometimes I find that when you are not sure how to do one things it gets much easier to do the other things that you do know how to do. Last week I set out to do five things with Box2D. I knew how to do most of the API related changes but I am less sure how I actually want to tune the ships. So instead of thinking about it, I just went ahead and did the API related changes and it went really well. My lesson for trying new things is Don’t think, just try. Playing with scale in Box2D worked really well and was easy enough to tune without understanding.

Changing the scale by a factor of 10

I went through the code and scaled the size of everything down by 10. A few small issues later and I was up and running at light speed! With the original impulse/speed values it was like WAY more than 10 times faster. If you tune with a clamp you end up with lots of values that would go over that clamp in an unconstrained environment. I had to go through and scale things down until it was starting to look correct. With the new scale my ship could easily travel at 2000m/s (thats 2 KILOMETERS per second!). It turned out that at my orginal scale the correct speed for the right space/speed size was around 300m/s. I’m going to toy around with that as the top speed.

Tuning correlated systems is challenging

The other changes that I made were: moving to using torque to turn the ship and using the built in damping in Box2D. After changing all of these variables I found out that they are all related to each other. I just don’t know the specifics of how yet. Given enough time the ideal thing would to to sort out what the combination of changing the scale (which changes the mass), adding damping and converting to using torque does to the overall ship balancing. Instead I just kept tuning with my Lua tuning file and found ranges that worked for me. I know that in the future I’m going to have trouble working with force since as I change the size of my ships the mass changes. I have to find a way to fix the mass to keep the balancing simple. You can avoid understanding for awhile, but in the long run you need to understand how things work to build on what you have.

Last weeks hit list updated

  • How do I set the mass of the ship? – I think this one is going to be fairly easy.
  • If I change the scale from 1 unit = 1m to 1 unit = 10m, what other variables do I need to change for mass?
  • Convert from setting angular velocity to applying torque
  • Determine how I want to tune the acceleration/force curve over time – I’m thinking that I will use a force vs. current speed function to tune this with a fixed mass per ship.
  • Use Box2D native dampening rather than my own hacked functions

What is next

Physics

  • Determine how damping works (top speed seems limited by this)
  • Implement an engine system that will let me tune the ship experience
  • Determine how to set the mass

Polish

  • I’m dying to add particle FX for a reward on explosions and gun shots
  • Starting to worry that I might not be able to do good missile trails in the PopCap framework

Art

  • It has been to long since I’ve exercised the right side of the brain: Colors? Particles? Who knows…

So I’m not sure what I will be doing this week. You will have to wait and see.

Posted in Technical | Tagged , , | Leave a comment

Simple ship movement with Box2D (Part 1 – Box2D basics)

When adopting any technology it is always a good idea to look into how its authors intended for it to be used. Since I  skipped that step with Box2D and was having issues with physics, I thought I would start the process of evaluation over from the beginning. I want to go over the basic restrictions/recommendations for using Box2D and talk about how I am going to make a tuned ship experience based on these recommendations and my own tuning/design needs.

Box2D Units and restrictions

Scale – Does not fit my needs exactly
Given that most of the objects I am working on are roughly fighter sized, 10 meters is actually a bit on the small side. I may have to go with 0.1 = 1 meter to get the scale where I would like it. With this, my smallest moving unit would be a missile at 1m length and the largest would be a 100m boss ship. I’ll have to test if I can simply scale this. Metric calculations should scale with this even if they aren’t mathematically correct as long as I am consistent.

Top speed
I have tested the top speed in my game and it is clamped to 200m/s. However, if you assume that the ship should cover 10-30% of the screen and lets assume it is 10 meters. This would mean a screen width of 33.3m – 100m. Giving it between 1 second to 1/3rd of a second to cross the width of the screen. I think that top speed should be fine but I will have to use ray intersections for things that travel faster and handle them as special cases. If I do my scale hack, I think that since 1m becomes 10m, 200m/s should become 2000m/s which should be more than enough for missiles (roughly mach six given that the speed of sound is about 340m/s).

Getting my ship moving
With the global restrictions out of the way, how do I move my ship?

  • ApplyForce/ApplyImpulse – These will let me move my ship forward or backward using the API properly (SetVelocity bypasses this). The difference between a Force and an Impulse is that an Impulse is N*s (kg*m/s) whereas the Force is N. In my case I will be applying these at the center of mass so no torque will be applied.
  • ApplyTorque –  This will cause the ship to have an angular velocity. This can be overridden by setting the AngularVelocity directly.
  • Damping – Both linear (velocity) and angular damping are supported and should make space…well less space like and have the ship slow down and be controllable by people that are used to friction.

In order to tune with the correct functions, I am going to be applying kg*m/s. For tuning what I am really interested in is things like the following:

  • Time to top speed
  • Max acceleration
  • Ease-in/ease out
  • Damping

These aren’t the things that you tune with Box2D so I am going to need another layer.

What do I have to figure out this week?

  • How do I set the mass of the ship?
  • If I change the scale from 1 unit = 1m to 1 unit = 10m, what other variables do I need to change for mass?
  • Convert from setting angular velocity to applying torque
  • Determine how I want to tune the acceleration/force curve over time
  • Use Box2D native dampening rather than my own hacked functions

I now have a better idea of how to use the technology correctly and I am looking forward to mapping it to a more friendly tuning mechanism. More on the practical issues I run into next time.

Posted in Game Design, Technical | Tagged , | 2 Comments

Independent Game Creation – How do you work towards success?

How do you work towards success? One small step at a time. I do not believe in overnight success. I agree with the numerous sources Jeff Atwood’s recent post on Coding Horror. The one that particularly caught my eye was Peter Norvig’s Teach Yourself Programming in Ten Years. Given that programming is only one part of making a game, I may be at this “I, Game Maker” business for a VERY long time! Rather than finding this discouraging, I am using again to make sure that I have realistic expectations and that I make sure that I follow Peter’s advice:

Program. The best kind of learning is learning by doing.

I think that this advice works for any discipline. Picture an athlete only reading about how to get in better shape. These days people have too much confidence in what they “know” because they can search on google for it. Knowing where to find something and actually knowing what something is are two very different things. This further reinforces my resolve that my new years plan is to learn by doing. Two other blogs I follow also seem to take this to heart: Noel Llopis’ gamesfromwithin has created Tea Time! in order to learn how to release a product on the iStore and my friend Owen has released the first video of his up coming iPhone/iTouch game Dapple. Good to see that there are one man teams making games full time!

Given all that talking what have I done? I’ve made a few small steps towards success by evaluating what my game needed the most next and adding them.

  1. Sense of motion – You cannot tell where you are or how fast you are going. Need some starfield and some parallax going on. Done rough version, helped but not as much as the mini-map did.
  2. Controls – Inertia and movement speeds suck. Cannot aim or fly easily. I’m going to have to play with the force and inertia and find out why impulses are varying so much with Box2D. I think parallax will help here as well. [UPDATE] Exposed the variables and tuned some but need more time spent here. It should be faster to iterate on physics now that the values are exposed in Lua.
  3. Firing should be exciting and fun – Shooting is currently boring, hard to aim and uninteresting. I need bullets to die after a certain amount of time and not get stuck on the edges. They also need to pack a wallop and go where you intend to shoot them. I’m having real inertia problems here and might need to design around it.
  4. Finding asteroids – The game size to asteroid ratio became sparse today and that sucks. Might need a mini-map in the corner to help the hunting. [UPDATE] This may have been the largest change I made. Being able to find tings changes the game completely. This probably should have been #1.
  5. Visual reward for destruction – No explosions/scoring for killing an asteroid. I think I need to add some explosions to things that die and perhaps have some kind of collectible in them for killing them.
  6. Sense of Peril – There isn’t anything to kill you yet but bad driving. Until I can easily fly around and shoot rocks this doesn’t bother me yet. One thing at a time.
  7. Visual punishment for death – Not really easy to die and it goes by without noticing. Death is probably less important than peril.
  8. Camera on edges – Camera is just centered and shows game world edges. Need to look at something that hugs the edges and perhaps something that lets me scale the visual distance better.

Why did I go out of order?

Never assume your priorities are correct. If something is much easier to implement than another area you aren’t sure about then just DO IT. Learn by doing. I was wrong about the priorities because the mini-map was huge!

What is next?
I think I will work on having the shots disappear and then investigate how to get the physics in Box2D working how I would like.

IGameMaker_addedminimap

Posted in Game Design, Industry Commentary, Technical | Tagged , | Leave a comment

2009: New year, new plans

Plans:

  1. I will finish a game this year. There will be no worrying about check points along the way or releasing an engine, the game will always come first. I’m not guaranteeing it will be good or that it will be a version 1 release, but  I will have a game.
  2. I will post once a week about the progress I am making or about things that are making me a better Game Maker.

Where is the game at and what is next?
I can summarize where I am in three sentences: Fly around and shoot asteroids. Large asteroids then break up into smaller asteroids which can then be destoryed and they dissappear completely. Run into asteroids and you will lose health but not die.

What to do tonight?
I love simplifying things and my view on work is that there are always two options for progress:

  1. Plan work
  2. Do work

Everywhere I have ever worked over plans and under delivers. I’m going to spend 5 minutes planning and an hour working. Planning should always be to get more work done.

Today’s quick plan (5 minutes):

  • Add a number of lives for the player and a death state
  • Create a “you win” when all the asteroids are cleared

Today’s results (1.5 hours):
Completed the plan and got lives and a you win case in. The you win continually increases the number of asteroids you have to destroy.

Today’s post (1.0 hours):
Posting is taking WAY to long. I decided to do a video again today and it is a long laborous process and since the video is boring I don’t think it will be worth doing these until I have something cool to show!

Project Assessment
Design:
Tonight’s progress drew me to two conclusions: My games currently sucks and it takes to long to modify stuff in my code base. It is still better to have a game that sucks than something that isn’t a game!

What are the next steps to make this fun?

  1. Sense of motion – You cannot tell where you are or how fast you are going. Need some starfield and some parallax going on.
  2. Controls – Inertia and movement speeds suck. Cannot aim or fly easily. I’m going to have to play with the force and inertia and find out why impulses are varying so much with Box2D. I think parallax will help here as well.
  3. Firing should be exciting and fun – Shooting is currently boring, hard to aim and uninteresting. I need bullets to die after a certain amount of time and not get stuck on the edges. They also need to pack a wallop and go where you intend to shoot them. I’m having real inertia problems here and might need to design around it.
  4. Finding asteroids – The game size to asteroid ratio became sparse today and that sucks. Might need a mini-map in the corner to help the hunting.
  5. Visual reward for destruction – No explosions/scoring for killing an asteroid. I think I need to add some explosions to things that die and perhaps have some kind of collectible in them for killing them.
  6. Sense of Peril – There isn’t anything to kill you yet but bad driving. Until I can easily fly around and shoot rocks this doesn’t bother me yet. One thing at a time.
  7. Visual punishment for death – Not really easy to die and it goes by without noticing. Death is probably less important than peril.
  8. Camera on edges – Camera is just centered and shows game world edges. Need to look at something that hugs the edges and perhaps something that lets me scale the visual distance better.

After the above list I will be able to re-evaluate and actually take the game in a better direction. Choosing the control and firing method may also redefine what my game is.

Technical Design (lesser priority)

  1. Compile times: On my little laptop things are taking about 3-6 minutes to compile each change. I might test out some compile flags or get the Christmas tree of my desk and use my PC again.
  2. Game classes not exposed in Lua: Variable tweaks are still exposed through C++ and increases iteration times. This might be something that would save time to address for tuning ship navigation and shooting.

Summary
I am happy that I made progress on my game. Before there wasn’t really any objective or consequence for action and now it meets the minimum bar for me to consider it a game. Now comes the exciting part of taking it from barely working to something interesting to play. Assuming my planning ratio holds at about 5 minutes of planning to 1.5 hours of work then I have my next few weeks planned! I’m also going to have to cut down on the time I take to post but I hope this video is entertaining for someone (deep down I doubt it though). See you next week.

Posted in Game Design, Technical | 3 Comments

Realistic Expectations

Excitement, interest and commitment for a project are largely based on feeling a sense of accomplishment. The number one risk for many teams that I have worked with is having unrealistic expectations that set the team or individual up for failure before they have even started. I have already started to see warning signs for my own project because I am not living up to my own schedule. In order to avoid unrealistic expectations for my own project I wanted to take a look at some areas of game development to ensure I do not set myself up for disappointment and I have decided to start with Art.

Art


I have no professional art experience. I would put my hobby hours of experience at under 100 which would barely qualify me as an amateur. Speed modeling is a good way to help learn, but if you look at this article from Resistance 2, you will notice that the characters in that game take a professional artist 3-6 weeks.

Most final pass models would be complete with models and textures in about 3 weeks per character.

Most companies I have worked at challenge their employees with phrases like “reach for the stars”, “challenge yourself” or the unforgettable “think outside the box”. If I consider that I get about 1 hour a week to work on my blog/project and that a professional artists takes 120 hours to make ONE model for a next gen game then it would take me TWO YEARS to make one asset. That also assumes I have the talent to make a model like that in the first place. Obviously that is beyond the stars for me! With that in mind, what would a realistic expectation be and what did it change for my perception of work to date?

My sense of accomplishment for my vector art ships that I completed in about 15 minutes rose considerably and I felt much happier about it. In hindsight, I should have been setting my expectations more appropriately much earlier. In the art sense, I am going to walk before I run and look at doing solid 2D vector art in Inkscape before moving onto 3D. This should let me focus on colour and silhouettes before getting bogged down in 3D asset creation.

I find it funny that when I did my vector art I didn’t even consider posting a “how to” for the artwork. Now that I am thinking my entire first project would be best done in this method. Making art like this might also be relevant to my audience rather than something I gloss over.

Adjusted expectations in Art have not only made me feel better about the progress to date, but have actually made me excited to post a how to example and to time myself to set a correct expectation of art deliverable in 2D. Of anything that I want my project and blog to be about, it is being able to make games fast and efficiently. Getting bogged down with a quality target that is too high could kill my project so I am happy I caught the warning signs early.

Rather than meekly posting my artwork without talking about it I am now happy to post the images I made in under an hour in a program that I had never used before:

Posted in Art, Industry Commentary | Tagged , , , | 2 Comments