Sunday, August 18, 2013

Christian Game Dev Speedgame 2013 - Salvation

The theme for this year's Christian Game Dev Speedgame was "Salvation".  My idea was to create a Faster Than Light clone where the goal is to escape the blast radius of an exploding star.


Source Code: https://github.com/petrocket/salvation

Download Game (Windows only sorry):
Download From Sourceforge.net

Live broadcasts during speedgame:
http://twitch.tv/petrocket

The Storyline

Ye Title Screen with random background!

Your uncle sends you a message one day saying the star in your solar system will explode and he gives you a space ship called "Salvation" and tells you to fly it to the outer-most planet in the system to escape the blast radius.  Along the way you may need to fight hostile attackers, upgrade your ship, and complete various missions to fund your journey.  Also, you should pick up passengers along the way to get as many people to safety as possible.

The Gameplay

Space battle - go.

It's all RTS-style gameplay using menus with no first person stuff.  You manage your ship's upgrades and passengers and plot a course out of the danger zone.  Randomly, when entering a new system you will encounter a hostile ship and you can choose to engage or run.  The game code also randomly generates missions in each system in which you deliver cargo, eliminate hostile ships etc.

The Content


Planets, spaceships, stars oh my! And this time I made it a priority to include audio also.  I also spent a good bit of time on the gui because I knew it would take up a lot of the screen most of the time.  Given enough time I would have created space stations, futuristic cities and asteroids.


Skybox look familiar?  I tweaked some spacescape skyboxes for the game and think they add a lot.

One thing you may not see so well in the screenshots is that I added some bokeh, shadows and animated screen lines on top of everything, something I've never done before but think it turned out well.

This game was brought to you by

Graphics: Ogre3d
GUI: MyGUI
Audio: SFML
Input: OIS

Content created with:

Skybox: Spacescape
Spaceships: Blender3d
Planets: PlanetCreator
Editor of choice: Photoshop

The Good The Bad The Ugly

Ogre3d has always been a nice engine to work with and this time was no exception.  It rarely gives me grief and there is so much help online that I found samples for just about every problem I ran into.  

Example:  I wanted to overlay bokeh and shadow box images on top of the scene but under the GUI.  This was a problem because MyGUI is hardcoded to use the overlay renderqueue, which is also the render queue that overlay in Ogre are hardcoded to use and you can't change either without coding the change into the libraries themselves.  
Solution: Just create your own Ogre::Rectangle2D entity and manually set the renderqueue to be just before the overlay render queue. #boom.

MyGUI has come a long way since a few years ago when I used it last.  It has a layout editor and skin editor that are really slick.  The biggest issues I faced with MyGUI were the lack of support for Ogre Materials and the lack of tutorials, code snippets online.  Some day I would love to write some howtos for MyGUI basic implementation.

SFML is a great audio library.  It is EXACTLY what I needed because it works cross platform and was super easy to set up, literally a couple lines of code to have background music and effects playing.  Underneath it uses openal and sndlibrary so it is based on some solid code.

The last super great find was the Planet Creator tool.  This thing is amazing, it randomly generates planets based on a large selection of templates (planet types like arid, earth-like, moon-like, etc.) and then it exports the texture maps, normal maps, specular maps and more!  I'd really like to see spacescape and this planet creator get bundled together somehow to make some epic space game content creator.

Other Stuff

I've actually done a lot more work on the puzzle game and I expect to have that out on the app store this fall.  No OGE updates or other game updates so far.  I am considering entering the August Ludum Dare, so if you are going to participate I'll see you there!

Thursday, May 9, 2013

Ludum Dare 26

Ludum Dare 26 Entry - Puzzle Cube


Ludum Dare 26 - PuzzleCube

I decided to enter into the 48 compo Ludum Dare 26 challenge where you make a theme-based game in 48 hours.  The theme was minimalism, and I was going to apply that to my game by making the game simple and the look simple too - never did get around to audio.

You can download/play the game on Windows or OSX (sorry Linux) here:
http://www.ludumdare.com/compo/ludum-dare-26/?action=preview&uid=23254

It's a simple puzzle game where you try to get the ball to the top of the cube by maneuvering it around and through the cube.  Also the rows of the cube rotate, though in this version they don't really work as intended and the player does not move with the rotated rows.

The game was built with Ogre3D in Visual Studio 2010.

I also live streamed my 5-6 hours of game dev on twitch here:

Since then I have converted the game to iOS for touch devices and implemented most of the missing features, so that may be released as a free or cheap game soon.  Here's a screenshot of the iOS version, still needs lots of luv, but it does have sound, rotating levels, infinite random levels and animations for all the movement.

iOS version


OGE & Planet Stuff

I haven't touched this in a while since becoming frustrated with the stuttering issues.  I did make that physics sample that only has grid lines in it and when moving around the stuttering happens even in that minimal program.  I haven't been able to solve it yet and got preoccupied with working on our other iOS game and client work.

Here's a couple updated screenshots of our iOS game with the new characters and graphics

iPad

iPhone


Wednesday, December 12, 2012

OGE And Game Updates

Lots of game dev happening this fall, but most of it has been on our 2D port of the fireflies web game we made for the CDN contest last summer.  The team at Bearhanded (where I work) decided to take our web game and make it a mobile game to be released before Christmas.  Needless to say we decided to vastly expand on the original game, adding many more game objects, levels, pizzaz and eye candy yada yada.

Do you recognize the first level from our web version?

The graphics got a major overhaul, and as a minor note the characters in these Beta screenshots do not represent the final characters - those are still in progress.  We also decided to have 3 trees in the initial release; the first tree has daylight levels in the middle of the day, the second tree levels take place at dusk and the third at night, which means we're going to add a whole new aspect to the game - dynamic shadows and lighting!

This level is ALL developer art, but it shows the colored lights and shadows effects.

There will also be pulley systems, bounce pads (disguised as red mushrooms), sap that you can sink into, enemy pushers, bombers, moths, worms, tubes, torches, cannons and maybe even more if we don't say "when" soon.  We've added so much that we had to push back our release till early 2013.


This will be our companies first iOS game release so we're trying not to get our hopes up and just to make a game we all can be proud of, though recouping our investments would be nice.

Ye OGE (Open source Game Engine)

ye link

While all this 2D stuff has been going on, I've been working with Ralph on upgrading the libraries OGE uses and improving on the CMake build system.   At this point, it appears to be working on windows 7 and linux, but not on OSX.

What's been holding back progress on the planet?  Well, I've kinda decided to give OGE a real run for the money and see if I can't make it work before giving up and rolling my own, simpler game engine.  I've got the latest planet stuff running in OGE, and have been creating sample projects to track down various major bugs like random thread/memory crash bugs and physics stutter bugs.  Ain't no fun to play a game that stutters and I've noticed that stuttering seems to be a common problem when working with physics engines. If you're a physics or threading guru I would love for you to take a look at those parts of the OGE code.

This is my temporary MyGUI implementation in my planet test suite with the latest OGE (bogey tracker broken in this build!)

This is my little physics sample that I hope will help me nail the stutter bugs.

I've also added a version of the OGRE profiler to OGE and added optional profiling blocks to all the major systems for now.  It doesn't really work like I would like, but it's better than nothing for now.

No fav games of 2012 post because I mostly just play one game - Natural Selection 2!  They finally released it and it is super fun.