This post was a long time coming.
I can’t believe I’m saying this but over the weekend I completed my longest running game project ever. At just over six months of development, Driveby Gangster has been finished and submitted to the Mac app store for review!
It almost feels like I’m not really done. It’s going to take a while for it to settle in the accomplishment of producing and finishing a 3D game of this scale by myself in any reasonable amount of time – especially with a custom from-scratch C++ game engine. Every 3D Game that I’ve ever tried to make that had any scale larger than a small mini game had to be abandoned due to the loss of focus and eventual giving in to life’s demands. I definitely wanted to throw in the towel at a couple points and came close to putting the project on hold, but something told me to finish the damn thing now or never!
I’m going to wait a couple weeks, and then post a proper post-mortem of the project and maybe even discuss some of the initial sales (which I expect to be weak due to the competitive nature of the game market these days).
I also plan on live streaming a full play-through of the game on twitch sometime in the coming weeks so stay tuned for that.
For those of you interested in purchasing & playing the game, it’ll be priced at $4 and will feature no stupid freemium or IAP crap ($4 buys the whole thing). I’ll post the link to the mac app store as soon as it becomes available.
The Windows version is still pending steam green light which could use your help! So if you want the game for windows, please head over there and vote via the greenlight link at the top of this page!
It’s 1am and I don’t want to go to bed yet. Thus, I’ll supplement the last post with some of my latest screenshots.
As shown, I now can select my retina mac book pro’s 2880×1800 resolution (and watch it have a disastrous effect on my framerate) as well as support anti aliasing in combination with post processing effects (which is actually alot more work in OpenGL than it would seem).
It may not seem it from reading this blog, but this game is actually nearing release. Since I’ve last posted, I’ve put all of my efforts into finishing the game during the month of March. All of the levels 1-30 are functionally complete, and Ive moved on to the remaining items on my master todo list. These include implementing cutscenes such as the game over sequence, implementing graphics options such as resolution settings, pause menus, and otherwise polishing the game as much as possible.
I also stumbled onto a hard to detect bug in the SSAO shader settings that made the quality of the SSAO effect in the actual game to be much poorer. Once I fixed that, I was able to dial the ambient occlusion for the game scenes as I originally intended and it looks really nice (albeit still subtle).
The steam greenlight campaign has slowed quite a bit. I’ve decided that unless this picks up, or other more popular windows deployment options become available, that the Mac platform will be the initial release for this game. In other words, I’ll be holding off on the windows version until it gets approved for steam.
Still working on things..
After a long vacation abroad during the past month or so, it is a must that this game will meet it’s goal of completion in march. I’ve pushed through to level 19 today with great progress. The new newspaper-esque art style looks really good and at this point, it’s just a race to the finish line. The coolest thing about experimentation sometimes is how you stumble on to a specific kind of rendering style by accident. I’ve found that by using the same SSAO technique that I have previously implemented while removing the depth-checking produces a dark outline halo around most models in the scene. While for generalized SSAO this would be undesirable, I love the way it looks and have decided to make it part of the art style for the dark/noire second-half section of the game. Combining that effect with a lack of the blur post-processing effect on the noisy SSAO results in the very newspaper/comicbook style that I was already going for.
Needless to say, things are going well now that I’m back at it.
So I had to make a tough choice recently. The game originally planned to have 36 levels in sets of 12. Each 12 would feature a specific art style, decreasing in realism with each set. A major snag related to my own lack of art skills alongside an increasingly pushed back completion date for this game has lead me to make a change to this plan.
Toonshaded games are not as graphically “simple” as they appear to be. I quickly realized this while attempting to adapt one of my environments for this look. A perfect example would be to look at any recent celshaded game such as Zelda Windwaker HD. You will notice that all the textures are hand painted with a very high attention to detail an artistic quality. This is an artistic talent that I simply do not possess, and it would be a mistake to pretend that I do.
So what I’m going to do instead is break up the game into two halves of 15 levels each, and bring the total level count down to 30. This will allow me to do just one alternate art style (an easier to render dark noire style) for the final half of the game. Combining the dark black and white effect with the recently implemented SSAO effect that I’ve added to the game should look really cool for these last 15 levels.
The only remaining problem with this new plan is that I only had 12 levels done sofar and I would really hate to re-hash the same 3 environments again to fill the last 3 before changing art styles. This lead me to the decision to make yet another new 3D environment for the game which I’ll use to create 3 more levels. I initially really didn’t want to do this because I am approaching a burnout risk for the game, meaning I’m starting to get tired of working on it.. which puts the entire project at risk. So, I decided that It’ll be a simpler level so that I can keep the total game size low (both in disk space and complexity). I’ve posted a screenshot of what I’ve got sofar for that level.
More on all this soon…
So I got the ambient occlusion effect implemented in the actual game shader code. I followed the technique outlined in this article. I must say, it’s very subtle, but it looks nice. The real benefit here is that when I turn off the “check depth range” mechanism, I get a very awesome surreal dark outline around all of the models in the scene. This will be an excellent effect to use when I work on the second half of the game (which will use an artistic black and white noire post processing style signifying the protagonists slowly weakening grip on reality).
I didn’t understand how ambient occlusion worked at all before implementing the effect, but now I must say, I have a pretty reasonable grasp on it. Basically in one brief description, it takes random samples at every point on the surface to determine how much ambient light from the rest of the scene can reach that point. In other words, how much of the ambient light is occluded by other nearby surfaces. This is done by randomly sampling points within a small hemisphere emanating from the surface. What makes SSAO so nice, is that this technique is approximated entirely in screen space, making it reasonable for real-time rendering in a game. The downside is it seems to be a little noisy and I see artifacts from time to time on the screen, but hopefully I’ll be able to clean some of that up in time.
Below are some more progress shots showing the kinds of subtle shadowing I can achieve using SSAO in the VGLPP/DrivebyGangster engine.
Today was huge! I am exhausted. I busted my ass today to get an affect known as screen-space ambient occlusion (SSAO) working in a prototype scene in verto studio. Right when I was about to give up, I got it working! I’m too groggy to explain anything about it, so I’ll just post pictures!
This is going to add a huge boost to the visual look-and-feel of the game without a severe performance penalty. Needless to say, I’m pretty stoked!
If you’ve been following this game and you want to see it on steam please head over to the greenlight page and vote yes!