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.



Sunday, July 29, 2012

CDN 2012 Game "Fireflies" Postmortem

Fireflies Game Home Screen

This year the whole Bearhanded team decided to participate in the Christian Developers Network Speedgame.  We created an online multiplayer game called Fireflies.  The theme this year was "testimony" and we decided we wanted to do a multiplayer game with HTML5 and NodeJS.  What came out of our brainstorming was a simple puzzle game where players control various types of game pieces and use them to get to the exit in each level.  To accommodate the testimony aspect of the competition, we chose to show how each person's testimony is influenced by many people and so we created a sort of spiritual family tree in which each level starts out dark and after completing each level it lights up and the next level is unlocked.  The idea being that God uses many people in our lives and in their lives to reach us with the gospel.  When the whole tree is lit up, then the game is completed and the #parteh begins!


Fireflies Game Level 1
Level 1 is very straight forward no?

There are 5 levels, starting with simple puzzles and ending in some rather difficult ones.  The final level is very difficult to beat by yourself, and even with three people it can take some time to finish.

Fireflies Game Level 2
Every game needs a jumping puzzle! #lies

Design

We took our design cues from games like Lemmings,  Limbo, Botanicula and whatever was tossing around in our subconscious!  Chris was the primary designer and Aaron took his characters and animated them using After Effects.  Nate then took the animations and put them in the game.

Development

Fireflies was built with the following technologies & libraries
  • NodeJS - server game logic
  • NowJS - server and client networking
  • HTML5 - client audio and canvas support
  • CSS3 - text glow effects and drop shadows
  • Box2d - client physics
  • Cocos2d-javascript - canvas drawing
  • jQuery - various UI elements
I did all of the Javascript for the server and client using Aptana as my editor.  This editor is free and good looking and the code completion is pretty decent.  It's basically another flavor of Eclipse.
I love using dark text editor themes - if only it darkened the frame too #sigh
Chris used Tiled to build our levels and Nate used Zwoptex to make our sprite sheets for our animations.  Both are free and support Cocos2d.
Simple, but it works and it's free!

Thoughts and ramblings

For anyone interested in using any of these technologies you should be aware of several things I discovered:
- Cocos2d-javascript is still very alpha, with lots of unimplemented features, many bugs or things that don't work in every browser, few working up-to-date examples and not very optimized.  All that being said, it does work for simple things and it performed fairly well for our little game.   To integrate box2d physics with cocos2d I had to modify the level import code to support reading polygon objects.  Then in my client code I used the polygons to create box2d static shapes.

- NodeJS is really hot these days and can do some amazing things.  No complaints here except that it uses Javascript.  All the wonderful things you are used to with object oriented programming are imitated and asynchronous behaviors abound.

- NowJS allows you to easily synchronize variables between server and client and do remote procedure calls, however I quickly discovered that due to the asynchronous nature of  NodeJS, using variable synchronizing would give random bad values and I ended up having to use remote procedure calls for everything.  The groups feature is how we contain players in levels and it is super easy to do and useful and awesome.

- Box2d is made for realistic physics, not platformers.  I really had to punch it in the face to get it under any semblance of control and the player input still feels awkward and annoying to me.  Physics engines sound like an obvious choice when you're making a puzzle game, but when it comes to platformers you want a certain un-realistic feel for player input 9 times out of 10.  So to bring box2d to its knees I had to
  • Use a ball for the players physics shape so it wouldn't get stuck and friction wouldn't be such an issue.  
  • When the player is on the ground and not providing input, set the friction really high and use damping to slow the player down fast.  When they move ease up on the friction. 
  • When in the air, turn off friction and use a different damping or they'll get stuck on vertical walls.  
  • Use impulses and not forces to get the player moving.  
  • Turn off restitution or just use a tiny bit or you'll bounce all crazy.  
  • Make sure your polygon world objects are created with the vertices in counterclockwise fashion or your player will fall through them.
  • Make sure the player's foot sensor isn't too wide or they'll be able to wall jump - unless you want this behavior - super meat boy anyone?
That's it for now - you can play the game at http://fireflies.bearhanded.com and the source code is available for download via the christiandevs.com website here. 

In other news I will post about the latest OGE/planet updates soon and I co-authored a book on OGRE