My brother and Zero Gear contributor Ian has had his iPhone app Scoops nominated in 4 categories for the 2008 Best App Ever Awards! Go help him out and vote for Scoops with these links! The winners will be announced at Macworld.
Vote for Scoops in the "Best App Ever" category!
Vote for Scoops in the "Best Casual Game" category!
Vote for Scoops in the "Best Kids Game" category!
Vote for Scoops in the "Best Kid Distraction App" category!
Posted by David Marsh at 9:10 AM
Hope everyone is relaxing and having a great holiday instead of reading this post! Here is a little purple present in your Zero Gear stocking. This has to be our most ridiculous character yet, it's a blast to play with the colors and put items on this little dude.
if you direct your internet browsing machines to MyZeroGear.com, the main Zero Gear website, you will see it has gotten a nice little face lift.
While Brian is working on a re-write of part of the network system (keep an eye out for a blog post about that soon) I took advantage of some of the down time to doll it up a bit.
Take a while to look around, let me know if you find any little typos or errors!
In our effort to be like everyone else, we setup a Twitter account here: http://twitter.com/NimbleBit
Check it out if you want to read about what chunk of code is currently making Brian angry or what color Dave is thinking about.
Zero Gear contributor and also my brother Ian Marsh, is the creator of a rather popular iPhone game called Scoops (iTunes link). If you haven't played it you should buy it, it's a great little game about stacking ice cream scoops.
Here is the "scoop",
148apps.com has created the BestAppEver awards site to try and choose a list of the best apps of 2008 not based solely off sales numbers (like Apple’s).
Click Here to nominate Scoops for the Best Casual Game! I think it matches the category description pretty well: “The game that is easy to pick up and play while you wait for your coffee to brew”.
Posted by David Marsh at 9:43 AM
It's been a while, but I pulled some time out of nowhere to make a new kart model. A ww2 era Willys MB!
Beta spots are full for the moment, we will open up more again in the near future!
I needed an excuse to try out YouTube's new HD video format so I decided to try posting a short flyby of a new level I am making called RinkyDink. RinkyDink is the same "goal" mode gameplay as Kick It, only with ice and a puck. It is hard to pick out in the video but the ice in the rink is using our patented, cutting edge, "Reflect-o-Matic" reflection whizzbang technology.
It was Brian's birthday recently and he was lucky enough to receive some Zero Gear t-shirts as a present! Since Brian insists that cameras capture his soul and cause his physical body to crumble to dust, we contracted out a top model to display them for you!
I feel happy! I feel happy!
We have been keeping very busy as usual - spending a lot of time dealing with some nasty memory issues and other non-glamorous things. But to keep our spirits up we started on a new game mode, check out the screenshot and maybe you will be able to guess what it is!
Steve Streeting, best known as the creator and lead developer of Ogre, posted something on his blog that I thought was interesting: User generated content and centralised control don’t mix.
It reminded me of a similar post we made a while back.
This also reminds me that the latest version of Ogre, 1.6, was just released a few days ago. We have been using it for a while now and I can report it is scrumtralescent (very good).
Dave has been working hard on this super-duper-mega-informative-game-manual so check it out!
Other than that we haven't really been doing much. We haven't been working way too much this past week getting the game ready for IGF submission. Nope, mostly just watching old reruns of Family Matters (so did they kill off Judy Winslow or what?).
We are getting ready to begin a small beta test. We want to get more and more people involved over the next few months. For the time being we have a limited amount of keys and are looking for anyone who can host a dedicated Zero Gear game server with a fast connection (Windows only for the time being, sorry Tux).
If you are interested in helping to beta test, I would recommend joining our new Steam game group and forums.
Just a quick note to drop off, we have a newfangled "Official" Game group on Steam, which you can join to show your support here.
It has some new screenshots on it that you I also added to our official media page here.
Well, not really at all - but it's something every project needs to stop and work on every once in a while to make sure things will run smoothly. As we race towards the deadline for submission to the IGF, we had to come to terms with the fact that performance was not where we needed it to be with 16 players on the screen. In a game which focuses so much on physics and flying and tumbling around, not to mention driving at high speeds - you really need some steady performance in order to have the most fun.
So for the last week and a half we have been overhauling certain parts of the graphics in order to speed things up. With 16 players on screen at once, we were getting around 20 fps with our decent rigs, so we had a lot to work on.
The thing we had to work on was the "batch count" in the game, which is basically a measure of how many tasks the computer and video card need to do in order to render everything on the screen. Ideally, grouping as many things as you can into one of these batches is the best way to make things faster. So we set upon figuring out where every single one of our batches was going. Right off the bat, we found that we could treat the level entirely as one piece, and reduce the number of batches it took to render significantly. This was our first easy fix, and as anyone in development will tell you, there is nothing quite so sweet as discovering an easy fix. Once we addressed that, things were running really fast with nobody playing. We knew the performance issues were in large part tied to the number of players in the game, so Brian hooked up a key to pop a fake client into the game. Now it was easy to drop 15 other players into the game and test performance.
Not too surprisingly, performance was still underwhelming although a bit better becuase of our changes to the environments. We decided to use NVIDIA's PerfHUD to step through all the rendering steps, which was pretty easy to do since Ogre already supports the tool.
After some testing we figured that every new player added to the game averaged around 20 new batches to display, which multiplied by 16 added up to a lot. This was due to the fact that each players stuff was made up of a lot of different customizable items: there are separate karts, characters, hats, accessories, and wheels. Those are only 5 different items, (8 if you count every wheel) but each item could have any number of materials on it (in order to make it look awesome, of course) and also the kart and the wheels were casting a shadow,each of which made up it's own batch.
So, optimally we needed each player to use the absolute minimum number of batches, which would be 5, since each player loads 5 meshes. To achieve this, we created a simple shader that would enable us to do the effects that we used such as color masks, environment mapping, and rim lighting - but all in one material. Each character kart hat, etc could be rendered all in once batch now since it was all inside one material. Since we are shader noobs, it took us a few days to get the shader working, as well as a few days to move all of the items we had previously made to this new material format and make sure they would work. Brian also created a shader especially for the wheels that made use of Ogre's model instancing to render all 4 wheel models in one batch instead of four. After all these changes, we succeeded in reducing each player to 5 batches instead of 20! Huzzah!
We also decided to move away from the stencil shadows we were using to create shadows under the karts and items, they looked great - but the way they are created was more and more of a bottleneck the more players that were on screen. We dug into Ogre's texture shadow system, and set up some render to texture shadows that while not totally inexpensive, at least performs better with many shadows being cast at once.
All that work, and hopefully nobody will ever know about it when they go to play the final game! Here is a screenshot with myself and 15 test players onscreen, with Ogre's performance display.
We still have a lot of improvements to make, the soonest of which will probably be hooking up our new shader to utilize hardware skinning in order to move some of the animation cost to the GPU. But we are off to a good start! Already the game feels a lot more responsive with lots of players, and that's fun for everybody!
p.s. here is the 3d mark score for my computer which this screenshot was taken on.
Posted by David Marsh at 4:14 PM
I know it is sat. night, but what else would you expect us to be doing with under one month left until IGF submissions are due? Tonight we took a break to make a little video showing how fun our new twister item is. It is the latest in our quest to create physics based weapons. Click to watch!
In Braveheart, William Wallace yells out "FREEEEEEEEDOOOOM!!!!" while being tortured.
That is PC development.
The PC is an open platform which means developers can do anything they want. There is nobody telling you how big your game can be or what other people can add to your game. Openness is very important for Zero Gear. The game is built around the concept that anyone can add anything after we release it. This is simply not possible on a lot of closed platforms.
This is freedom.
However, because the PC is open, there are so many different configurations of what a PC actually is. A closed platform is strictly defined and so developing for a closed platform is generally easier. Zero Gear needs to run on every video card, CPU, different amounts of RAM, etc.
This is torture and we are really starting to feel it...
introducing the L.U.V. Bot:
The primary function or intended purpose of the L.U.V. Bot is still a little hazy. However it is known to run lustfully at any moving object and latch on in a merciless hug, until it's emotion chip shorts, resulting in a massive L.U.V.-splosion.
we are having a lot of fun with the tag game mode in our playtests, but we only have one map for it. So I decided to whip up another quick one for fun. This one is called the Punch Bowl:
I saw this story about how GameStop believes digital distribution won't be a threat to their current business model until 2020.
Well, that sure seems like an absurd claim. They must have some data to back up that claim.
McKenzie - "We've done some internal studies, really looking at the bandwidth of the internet in the U.S. as it is now, and, I mean, it's years before you would be able to take a larger game and timely download that within the current configuration of the internet,"
Wait, so they are making a prediction of the trend of technology based on current figures? Surely somebody at GameStop must have heard of accelerating change or even observed the increase in the speed of the internet over the past 10 years, right?
And this doesn't even make sense right now. I regularly download "larger" games and I am usually playing them faster than I can go to GameStop to buy them. So their claim doesn't even hold up right now.
No, they seem to believe that "the current configuration of the internet" will remain as is now for the next 12 years!
GameStop, please do a little reading or even critical thinking before making such a claim.
Meet Squiddles and the Brain:
We are looking to rent a dedicated server pretty soon to host Zero Gear game servers as well as other services. We are hoping to get some suggestions from people for good (and cheap!) servers.
Here is what we are basically looking for:
1. We need full access. We have multiple software servers to run on the machine and need to be able to customize things to our liking.
2. Windows OS is required for the time being.
3. Hopefully around $100 a month but we are able to go a bit over if it is worth it.
4. It needs to have enough bandwidth and speed to host a few game servers. I don't have exact numbers for this yet but think a few TF2 or CS:S servers.
5. We want this first server to be in the L.A. or Bay Area in California.
If you have a suggestion, please leave a comment or better yet, reply to this forum post.
Now, on to the code!
Exposing the privates of a class to other classes explicitly
I have been told that title sounds dirty. I don't understand why.
This post will only be of interest to programmers who use C++ (and maybe programmers in general). No artsy fartsy stuff going on here.
Say I am designing a NetworkManager class. This class has a SendPacket() function that I don't want to expose to the public. However, I do want some classes, like my GameObject class, to have access to SendPacket().
The obvious solution is this:
friend class GameObject;
void SendPacket(int packet);
This works but has a few problems. First of all, we don't want GameObject to have access to ManageConnections(). Also, we later discover that the ChatManager class needs access to SendPacket as well. The lesson: friendship is hard.
The solution I use is to create an accessor class which is friend to NetworkManager and only exposes the SendPacket function. Then any other class can use this accessor to send a packet.
The best part about this is that I can be very explicit about which parts of NetworkManager I expose.
Code is the best explanation:
friend class SendPacketAccessor;
void SendPacket(int packet)
void SendPacket(NetworkManager & netManager, int packet)
//We have access to SendPacket()!
void Update(NetworkManager & netManager)
//We have access to SendPacket() though the accessor
//Our key to SendPacket()
void Update(NetworkManager & netManager)
If other parts of NetworkManager needed to be exposed, those parts should have special accessors just like SendPacket() does.
As I have been promising for some time now we finally have a new video for everyone. This video showcases our initial 3 race maps that we are working hard to outfit with all the gameplay gears and gadgets that Brian is developing as we speak. These will be 3 of the 5 maps that we plan to have for our first beta release.
Looking forward to racing some of you in these soon!
P.S. These beautiful levels would not be possible without the fine rendering engine Ogre3d, as well as the well crafted particle engine, Particle Universe.
I am happy to report that Zero Gear has just turned 1000!
Well, we just made our 1000th Subversion revision. Subversion is the version control tool we use to keep in sync. It is really a great tool and I recommend it to anyone who wants project management, even if you are a single developer.
We will have some more exciting posts this week with actual images and maybe even a video! I know everyone is getting bored of reading by now. Boo reading!
the artist, if we start development on the remaining features now, we can make the IGF deadline in two months.
Dave: “That’s why you’re no longer the producer. Two weeks! Let’s do it in two weeks! Hey!!!".
At that point, "The Final Countdown" played from my computer speakers "magically". He threw 100 pennies at me as well.
On a more serious note, we only have 2 months until the IGF deadline. Can we do it?
Answer: Yes, probably...
I'll tell you a secret, Zero Gear is not a kart racing game.
That might be surprising if you have been reading this blog for a while. All of the images and videos we have released so far make it look like a kart racing game.
If it isn't a kart racing game, what is it? It is many games disguised as a kart racer. Yes, we do have a racing game mode. We also have two other game modes right now, with a few more to come before we release.
Zero Gear is more of a game platform than a game itself. All of the gameplay is actually written in a script. This allows us to quickly prototype and create new games. It will also allow anyone who owns Zero Gear to create their own game and play with other people online.
We aren't the first to do this, nor will we be the last. We see a lot of potential in kart games that hasn't really been explored yet. We hope to do that exploration through Zero Gear.
By the way, The Behemoth's game Castle Crashers just got released on XBox Live Arcade today. So congrats to them! I personally can't wait to slash, smash, and crash some cute enemies tonight.
Posted by Brian Cronin at 11:00 AM
I have been spending a lot of time polishing up the tracks in our game in preparation for the race mode that Brian is working on. One of the fun parts is adding particles to the level, here is a shot of the mine from Spaghetti West with lots of glowy particles.
This will only be of interest to a small group of people using Bullet for vehicle physics. I actually spent a few days tracking this bug down so I am posting it here just in case it helps somebody else.
If you are trying to create a "sensor" or "trigger" type object using Bullet so you can detect if your vehicle enters or exits an area, you might notice your vehicle's wheels colliding with the otherwise invisible, "non-collideable" sensor. Read more about it here.
Posted by Brian Cronin at 3:59 PM
bitburo just posted a little interview with Dave about Zero Gear.
Here is the full link to the article
On the technical side of things, I decided today was the day to finally get my networking code threaded. Dave is touching up some of our maps and one of them was taking a bit too long to load which caused the client's connection to the server to timeout. This no longer will happen...
The latest version of Boost came out yesterday for you C++ programmers who use it. The Thread library has been improved greatly from pre-1.35 versions.
Also, Bullet 2.70 was released a few days ago. I haven't updated yet but I will be soon. They are doing some really cool stuff with soft bodies in newer versions of Bullet. Check out this video:
Will you see soft bodies in Zero Gear? Perhaps ;)
The other day we were trying to figure out exactly how long we had been working seriously on Zero Gear, so I went into my backups folder and lo and behold - the first backup of "kart game" I have is dated August 13, 2007. Things have come a long way since then, and there is a long way to go as well.
Apart from doing all we can to get a build of our game ready for the IGF, we have been distributing alpha builds of our garage editor to salivating artists who are hell-bent on creating all sorts of custom items for the game. As part of that process I have been writing documentation for creating those assets on our new Wiki. We are already building a great community with lots of talented artists around Zero Gear which is very exciting. Here is just a sampling!
If you would like to see what other stuff these talented guys are cooking up, go check out the polycount thread (23 pages long! might want to skip towards the end ;)
Also, a sneak peek of our main menu:
Something a little darker than usual happened to show up in the garage today, check out these shots!
Here is another fabulous sock monkey whipped up by the lovely Chelsea Heyneman. Hopeully you will have a chance to bid on some of them soon to help us raise development funds!
As you have noticed by now, we like to use Vimeo to host our videos. It is an awesome service.
Recently the Vimeo staff have announced that "game videos" will not longer be hosted on the site. Their reasoning is valid, however the announcement was a little vague in regard to people like us. We own the content we are taking video of and we very much feel the content we are recording is creative in nature (and not a recording of gameplay footage from a 360 game).
So what we have done is simply setup a group on Vimeo for game developers. If you are a developer and use Vimeo, you should join this group. Our hope is that the Vimeo admins will see that the content in this group deserves to be hosted by them and maybe it will become a sort of filter.
Here is the link: Game Developers
NOTE: This is for game developers only (indie or otherwise). So if you wish to join, please provide a link in your Vimeo profile, or better yet, a video. Anyone is able to view the videos from this group of course.
Posted by Brian Cronin at 4:43 PM
Here is our latest video!
Here we are showcasing the garage portion of the game which will allow players to customize their kart and character. We built this portion of the game with heavy utilization of Hikari which enabled Zero Gear developer Ian Marsh to engineer the gui elements in flash and actionscript. We are using the open source Ogre3d to render the characters and environment. Also you will hear some great sound effects by Tapio Liukkonen of Kaamos Sound.
If you are interested in getting the the garage and toy with creating your own special character, stay tuned! You just might get the chance soon!
P.S. If you are in the United States remember to check out the latest issue of 3D World which has just hit newsstands! It features Zero Gear in their feature of open source software!
It has been a little while since we posted an update - Brian has been a little bogged down moving to another apartment in San Fransisco, and I have been slightly derailed doing some non game related contract work to bring in some more development funds.
But here is just a little feature we got working last weekend, a "look-back" key that you can press to check out what it going on behind you. I think it will be very useful!
Zero Gear Look-Back from marshmonkey on Vimeo.
Today marks the anniversary of America going independent, and to celebrate, I thought I would show you a bunch of new stuff we have been working on lately. This morning I woke up and realized we had no 4th of July themed hat, so I took care of that
Also, I have been working on a cool pirate ship kart as well:
Finally, a very enthusiastic Zero Gear fan (ok, my wonderful girlfriend) decided to make an entirely physical version of our sock monkey character, complete with a Zero Gear butt-label! Awesome!!!
Have a happy and safe 4th of July everyone!
Beyond all our expectations, the artists on the glorious game-art forum Polycount have started making custom content for Zero Gear before they have even been able to play the game themselves.
Here is a little collage showcasing some of the work they have already started on:
The people are hungry for Zero Gear!!! I had better get back to work. Here is the Zero Gear thread on polycount if you want to see what people are making, or are interested in making something yourself!
We have small mention in this month's computer graphics magazine 3DWorld! The issue focuses on open source technology, a lot of which we use in Zero Gear. If you see it on news stands, check it out!
Posted by David Marsh at 1:21 PM
Pior Oberson is the first person to make some custom content for Zero Gear! He has modeled a new character and hat for the game which I got into the engine today, check it out!
here is a video of it in action
Zero Gear: Space Bunny custom character by Pior Oberson from marshmonkey on Vimeo.
A few pieces to go into the garage that I did this weekend:
and a Shoe car!
Here is a list of some of the fuel that is driving development right now:
Grand Ole Party
Nick Cave and the Bad Seeds
The Presidents of the United States of America
Yeah Yeah Yeahs
Led Zeppelin (You don't need a link)
Nine Inch Nails
We listen to a lot of KEXP.
Dave is listening to a Pandora station he created: Whiskey In The Jar
And I get to listen to a jackhammer outside my window every day until they have decided they had enough fun breaking up cement...
Just a short note to show you another character I made today, a sock monkey!
Woohoo! This is our 50th post since we started the Zero Gear development blog! I am just taking a quick moment to post a revised GUI mockup of how we want the garage to function. This will hopefully be another GUI programmed in flash, and will feature floating elements that can be positioned by the user. Hopefully you will be tooling around in this garage soon!
After getting Hikari working, we wanted to test it.
We wanted to create something we could use in game. Something that would be difficult or time consuming to create manually. We also wanted to see how well it held up. What better test than a Mini Map?
First, here is the Mini Map in action:
It was created by Dave's brother Ian and supports rotating, zooming, and any number of icons on the map. It was written in ActionScript 3 and is a Flash element that is being rendering in our game using Hikari.
It performs quite well. There is barely a FPS drop and it is pretty smooth.
You can see the full source here and the data file here.
Here is a quick summery of what I needed to do to get it working in game.
I call the ActionScript
loadMap(imageUrl:String, mapWidth:Number, mapHeight:Number):void
function from Lua, passing in the name of the mini map image, the width of the map in game units (1 unit is a meter), and the height (or depth in 3D).
I can then call the ActionScript
setPlayerPosition(x:Number, y:Number, rot:Number, zoom:Number):void
function, passing in the x position, y position (or z in 3D), the degrees rotated around the y axis, and a zoom amount (based on speed of the player).
There is a similar function for setting data related to other players called setObjectPosition().
From there Ian takes care of the rest and that means I have time to watch an episode of Dexter instead of writing a Mini Map in C++. Yay!
As we are starting to build pieces of the GUI for the much anticipated race mode for our game, I spent some time mocking up a general outline of what it might look like. What do you think? We will use this as a guide to build the real pieces. Click to see the bigger picture.
I have added 6 more screenshots to the Zero Gear media page. Go check them out!
As you may have noticed in our last video, we have finally gotten some sound effects for Zero Gear. This is all due to our partnership with Kaamos Sound, which is run by Tapio Liukkonen, a friendly and frosty fellow who lives down the street from Santa Claus in North Finland near the arctic circle.
Tapio found our game online and was very excited to help, we are excited to be working with him because he is very passionate about his work. Here is a sound sample of some of the work he has done for Zero Gear:
Tapio braves bears, junkyards and go-kart dealerships on a regular basis to find and record the source material he needs to transform into crisp, clear sounds. Here is a picture of him with his giant fuzzy microphone.
You can look forward to some of Tapio's great sounds in Zero Gear!