Byte Tank

Pedro Lopes Blog

Survival Ball: Making the Game

Before: Initial prototype, built 6 years ago

After: Current version, released last November

This article/postmortem provides an in-depth look into the process of building Survival Ball, a Single / Local Co-Op physics-based game available on Steam for Windows and macOS. From prototype until showcase at Lisboa Games Week, passing by the related principles, design decisions, level creation process, tools and technical details.

Unity: Dynamic Multi Target Camera

Mostly invisible, yet essential, camera work is key to any game with dynamic cameras. This article dissects a concise Unity open source library which dynamically keeps a set of objects (e.g. players and important objects) in view, a common problem for a wide range of games.

The library was developed for, and used by my first Steam game, Survival Ball. The game has an heavy shared screen local co-op component, which requires the camera to dynamically keep many key elements in view.

React Native Offscreen Toolbar

In material design, there is a common scrolling technique in which the toolbar is smoothly tucked away while scrolling down and is made visible again when scrolling up. This behaviour is fairly straightforward to implement when developing a native android app, but for a react native app, the best solution I found was Janic Duplessis’.

The library I am releasing today is an encapsulation of this behaviour and its implementation is heavily based on Janic Duplessis’ approach.

Library usage in both the example bundled with the library and in the search screen of a to be released application

Deep Reinforcement Learning: Playing a Racing Game

Agent playing Out Run, session 201609171218_175eps
No time limit, no traffic, 2X time lapse

Above is the built deep Q-network (DQN) agent playing Out Run, trained for a total of 1.8 million frames on a Amazon Web Services g2.2xlarge (GPU enabled) instance. The agent was built using python and tensorflow. The Out Run game emulator is a modified version of Cannonball. All source code for this project is available on GitHub.

Attenuate GoPro Chest Mount Heartbeat - Using GarageBand/iMovie

If you have a chest mount (chesty) for your GoPro, then you might have had the surprise of hearing your heartbeat on the recording, since it may lay fairly close to your heart, picking up its beat. This post will:

  • show you how to attenuate the heartbeat sound to a point where it is almost imperceptible, while maintaining the overall sound
  • attenuate the difference between quiet and loud sounds, so the listener gets less startled by a sudden noise created when entering with the bike on rought terrain or the common bike bell sound.

Survival Ball on OUYA

Survival Ball in now available on OUYA, and its publishing process was fairly straightforward. From the day of submission (2nd of September) to its approval (5th of September), it took a mere 3 days, counting that a re-submission had to be made in-between.

Survival Ball was already available on Google Play, Amazon and Kongregate, but OUYA just felt like the perfect platform for the game. With it, you could just grab the OUYA controller and/or a spare XBox/PS3 controller, and just have a quick match. I really loved the concept, and re-iterated on the previous version of the game to give it more controller friendly menus, better graphics, refined textures, and an overall revamp.

Nordic Game Jam’s Winners

This year’s Nordic Game Jam was crowned as the world’s largest game jam with about 470 participants. The winners have been announced, and can see the full list here: http://nordicgamejam.org/2013/01/21/winners-ngj13/

My personal highlight goes to Stalagflight (https://dl.dropbox.com/u/85666/Stalagflight-web/webBuild.html), which is as simple as stupidly fun! Stalagflight can be played with the keyboard, but it is tricky. If you have a gamepad the experience is much better.