Whistle Your Way Through A Cave in: Hyper Bat Simulator 2018!

A few weeks ago was the end of January, and many game developers know what that means: It’s time for yet another Global Game Jam! The GGJ is a world-wide event with hundreds of locations where people meet for 48 hours of rapid game development.

This year’s theme was “Waves”, and I found myself in a team where I didn’t know a single person – which is always challenging, but also fun! The development went nearly without any hitches and I’m really content with our result:

In the game, you are a bat flying through a cave looking for its bat pups so you can go hunting. The cave is dark and the pups are tiny, so you use your echolocation to see and hope the pups answer. You steer with the gamepad – but to use the echolocation, you have to whistle into a microphone! (Like the title suggests, this is definitely the latest in bat simulation technology.)

Here’s a video of our presentation after the GGJ (starts at 0:29):

 

And a small trailer video Emily and Caroline made:

 

The game and its source code is available at its Global Game Jam entry page.

Before I talk a little more about the development, here’s the team:

We also used some assets:

Okay, on to the development! This time (and very atypical for me), the concept was rather simple. A single player game with no really hard development challenges – well, that leaves more room for polish, and sounds just right for 48 hours!

This was also one of the few times where the game design didn’t change much over the course of the weekend. Everything just worked. In the end, we actually finished the game with all the features we wanted! We even removed some features we already implemented because they made the game less accessible and weren’t as much fun as we had imagined: Dizzyness when the bat crashed into a wall, and not being able to call out to children when there’s a wall in the way. We also wanted to add monsters that follow sound, but in the end the game turned out to be plenty fun without the added complications, so we decided not to go that route.

The microphone implementation was incredibly easy, more so because this isn’t my first microphone controlled game. I just had to sample the input volume and detects peaks.

First I wanted to do the echolocation waves via shaders, but that that would’ve taken some time. Then I remembered something I learnt about in a Pluralsight video tutorial just a few weeks ago: Light Cookies, which allow you to put shadow masks on Unity3D lights. The final echolocation waves are just multiple spotlights with a circular light cookie mask shining from above, and the angle gets progressively bigger. That way it “runs” across obstacles and scales walls and stalagmites instead of just looking like it’s two-dimensional shape projected from above. The effect is a bit hard to describe, but you can see it quite often in the videos linked above.

I am really happy with our result! Thanks a lot to my team for being the best team – and to the location organizers and the Global Game Jam team who made it possible for us to jam without worrying too much about such mundane things as work space or food!

Tobi’s Unity Utilities

When you google “unity utilities”, it seems like everyone and their dog has one of those. Well… now there’s one more of them! Open-sourced, well-commented, with descriptions, examples and class documentation. Get it while it’s hot:

GitHub repository

Class Documentation

Overview

  • Countdown: Useful for things like cooldowns or spawn delays. It is also helpful for tweening things by using the PercentElapsed property.
  • EditorHelper: Gets the [Tooltip] attribute content of fields for editor classes. Might get more helper methods in the future.
  • LINQExtensions: A collection of extension methods for IEnumerable, List and arrays.
  • MathHelper: Helper methods for time-independent eased lerping, mapping and angles.
  • MeshCreator: Makes it more convenient to create meshes via code.
  • NoiseOutputValue: Enter a range and a speed in the editor, get an output value that fluctuates over time using Perlin Noise.
  • RandomBag: A RandomBag gives you random items from a group while ensuring that in a certain interval every item was given back the same number of times.
  • Range: Editable data types that take an int/float range. Used for things like “Spawn 2 to 4 enemies.”
  • RollingArray: Collection that keeps the last x elements that are added to it.
  • Singleton: Allows easy and convenient creation of a Singleton. Optionally makes a Singleton persist between scenes while ensuring that only one exists.
  • UnityHelper: Contains a plethora of useful extensions and helpers for Transform, GameObject, Vector2/3/4, Rect and more.
  • XmlHelper: Serializes data to XML strings and makes accessing optional element content and attributes in general XMLs easier.

Usage

To use the scripts, just drop them into the Assets folder of your projects. Or better yet, make an “Assets/Extensions/TobisUnityUtitilites” folder and drop them there. Hurray for proper organisation.

You can also just use selected scripts, but you should check the “Dependencies” section in the respective folder to make sure you copy everything you need.

Generative Art – Sketches #029 to #035

It’s been over a year since I last posted a collection of small generative art sketches – but that’s not because I stopped making them, I just got a bit lazy with posting. There’s quite a lot queued up now! And without any further ado, here are candidates #29 to #35.

#029: Plasma Blob

This one isn’t terribly impressive, but it was made in a few minutes to demonstrate Processing to a colleague and is reasonably nice to look at.

s029_plasma_blob_03      s029_plasma_blob_02      s029_plasma_blob_01

#030: Mara’s Ocean

A typographic variation of #028: Isles using the Mara’s Eye font.

s030_maras_ocean_01      s030_maras_ocean_02      s030_maras_ocean_03

s030_maras_ocean_04      s030_maras_ocean_05      s030_maras_ocean_06

#031: Chimera Maker: What Has Science Done?!

The sillyness levels go through the roof with this one. For executables for Windows, Mac, Linux and Android and for more pictures, check out it’s own blog post!

031_chimera_maker_01     031_chimera_maker_02     031_chimera_maker_03

Together We Defend, A Cooperative Crowd Game Prototype

I’ve made prototypes for local multiplayer games with 10+ people before – some very successfully, some less so, but always with great pleasure. There is something magical about a crowd of people all playing the same game together. You don’t just need to design good mechanics though – the game should balance well with a few or with a lot of people, which is also hard to test because you always need a crowd. Another problem is input: While yelling with varying volume in Screamy Bird is tremendously fun, it is a bit limited control-wise. Unless your crowd is very small, giving everyone a gamepad is not an option. But these days, most people have a smartphone with a web browser, and luckily, platforms like AirConsole and HappyFunTimes make using these as controllers extremly easy!

My goal was to make a game where people have to cooperate and that scales well with different amounts of players. To ensure cooperation, the game would feature two radically asymmetric roles: the Shooter, which can attack but dies to a single hit, and the Defender, which has no offensive capabilities, but whose shield can absorb any amount of damage. In the center of the games are the Cores which the players have to defend. Enemies come in from all around the screen and try to destroy the players and the Cores, whatever is nearest. The enemies’ projectiles are heat-seeking – they will always hit something, so without the Defenders, the Core and the Shooters will be destroyed rather sooner than later; but without the Shooters, the defenders could not destroy a single enemy.

This was a jam game done in about 12 hours and everyone around me was busy, so I there was no way I could balance it properly. I solved that dilemma by assuming the role of the game master: I would sit at the keyboard and spawn enemies.

Apart from troublesome connection problems, the game worked rather well for a jam game and the crowd loved it. Here is a video of the presentation:

Together We Defend, A Cooperative Crowd Game Prototype

The video was filmed by Iwan Gabovitch and the sound effects are from the fabulous Universal Sound Effects which I can very much recommend.

Connection problems aside, I am very content with how the mechanics worked out and I think there is a lot of potential there. I will probably revisit this prototype some day and make a proper game out of it.

Ritual Breaker: A GGJ Game For Four Druids And Two Traitors

It’s been a few years since the GGJ whose theme was “deception” – a theme that we, back then, utterly and completely ignored. The only way to make up for that (I assume) is to use the theme in another GGJ! So here, after 6 years, my honor as a jammer is finally restored. I proudly present our game:

logo

Six druids have come together to perform
the yearly Super Important Ritual.
But unbeknownst to them, two traitors
have infiltrated their ranks!

Complete the rituals, but watch out for
those which fail – and who participated!

Watch your fellow players!
Identify the traitors!
(Potentially) Save the world!

A deceptive platforming game for four druids
and two traitors with XBox360 Controllers.

GGJ Page with Windows build

Ritual Breaker (Global Game Jam 2016)

Credits:

  • Elise Terranova: Art, Game Design, Hat Design
  • Heiko Weible: Programming, Game Design
  • Tobias Wehrum: Programming, Game Design, Sound Design

Used assets:

Critical Hit 2015: CloudKeeper

Continuing the series of Critical Hit 2015 prototypes, here is the next one: CloudKeeper. Again, we had two weeks and a completely new team of four people to make another experimental game. Our discussions quickly arrived at magic as a theme and circular projections. Some members of my group had a circular projection on the floor last time, so to shake it up a bit, we wanted the projection to by on the ceiling. And thus, the idea of the magical sky creatures was born: Creatures that escaped into the heavens, and the player, a cloud keeper, has to bring them back.

I had a lot of fun with electronics in my last project, so I wanted to do more of that. And I still had a Touch Board that I never had time to use so far – an Arduino with capacitive sensing, which, among other things, can do this:

Distance capacitive sensing! (photo taken from the Touch Board kickstarter campaign)

It worked quite well for very low ranges (<4cm), which was suitable for our purposes. At first we tried to make one crystal which players can touch from multiple directions, but players used to swirl their hands around it like it was a crystal ball and that didn’t make for very predictable controls. In the end, we settled for 5 cardboard crystals, each with only one function and aluminium foil inside. The capacitive sensing actually worked really well through the cardboard! Some crystals controlled movement, and the closer you got to them, the faster the movement got. (And not being able to see why cardboard can sense how close you get to it added a fun technological-magical aspect to the whole thing.)

Apart from that, we also wanted to have generative creatures – kind of like my Chimera Maker, but this time I also got to procedurally animate the creatures! Kailin Zhu drew them and created the crystals you see in the video and pictures below, Titouan Millet made beautiful generative cloud shaders and Peter van Haaften generative music and sounds.

Oh, and I also made the creature nest, a separate executable which showed the creatures flying away from and returning to earth, seen in the video on the monitor. It communicates with the main game via a server using the Yahoo Games Network (formerly PlayerIO). I tried to make it work with standard Unity peer-to-peer networking, but the University network didn’t like direct connections at all.

Finally, all this generativeness combined resulted in:

Cloud-Keeper-Icon

Magical creatures have escaped into the heavens,
and the player must sift through layers of clouds
to bring them back to the earth.

Using a set of five crystal touch/distance-sensing controllers,
the player wanders through a generative audio/visual cloud world
to catch these lost mythical beings and return them to their home.

CloudKeeper (Critical Hit 2015)

Credits:

  • Titouan Millet – Programming and generative visuals
  • Kailin Zhu – Craft and illustration
  • Tobias Wehrum – Programming, electronics, and generative creature engine/animation
  • Peter van Haaften – Generative music and sound engine

The video footage was recorded by Mattias Graham and Tobias Wehrum.

This project was made possible through the Technoculture, Art and Games Research Center’s Critical Hit: Games Collaboratory and the support of Concordia University and Dawson College and financial contribution of the Ministère de l’Enseignement supérieur, de la Recherche, de la Science et de la Technologie.

Chimera Maker: What Has Science Done?!

After doing dailies a few weeks back, I’ve started working on my first bigger generative art project: A chimera generator which fits slices and parts of animals together collage-style. And now I’m finally done! I proudly present:

#031: Chimera Maker

Chimera Maker

Remember all those times when you
really needed a weird animal generated?

Now there’s an app for that!

Get it in the Android Play store for free!

Download it for Windows/Mac/Linux!

All generated pictures are licensed under CC BY-SA 3.0.

Original picture credits:

031_chimera_maker_01     031_chimera_maker_02     031_chimera_maker_03

031_chimera_maker_04     031_chimera_maker_05     031_chimera_maker_06

031_chimera_maker_07     031_chimera_maker_08     031_chimera_maker_09

031_chimera_maker_10     031_chimera_maker_11     031_chimera_maker_12

031_chimera_maker_13     031_chimera_maker_14     031_chimera_maker_15

031_chimera_maker_16     031_chimera_maker_17     031_chimera_maker_18

031_chimera_maker_19     031_chimera_maker_20     031_chimera_maker_21

031_chimera_maker_22     031_chimera_maker_23     031_chimera_maker_24

KinectMagic – A Kinect Wizard Duel Game Prototype

In my studies at the HTW Berlin, I had a course called “Independent Coursework” where I could choose to work on any project relevant to my studies. I chose to work on a Kinect multiplayer game which should also be interesting to watch. Most important to me was that the game uses what the Kinect does best in my opinion: Spacial movement. I didn’t want any repetitive gestures, just a direct relationship between the players and their avatars. So, together with my fellow student Jana Leinweber I set out and developed, and a few months and a dozen iterations later we had this:

KinectMagic

Create spells! Attack! Defend! Dodge!

Tactical spellcasting meets fast reflexes in this
duel game for two wizards and a Kinect v1.

Download for Windows

KinectMagic - A Kinect Wizard Duel Game Prototype

Starship Command Center Pro, The Trial Version of a Global Game Jam 2015 Game

Somewhere in space, a lone starship discovers that the theme for this year’s Global Game Jam was “What do we do now?”. It also discovers that a very cool game was made for three players. And that there something is wrong with its Operating System.

Starship Command Center Pro

Starship Control Center Pro

Deep in space, nobody hears you scream
when the trial version of your OS runs out.

Not that screaming would do much.
Instead, you and your two friends now need to
figure out what the randomized buttons of the
free version of your system do.

Together, operate thrusters, cannons,
shields and a mining magnet, collect
gold and buy a proper license!

A cooperative and confusing space adventure
for three players with gamepads.

Download for Windows
GGJ page

Starship Command Center Pro (Global Game Jam 2015)

 

Credits:

  • Brian Davis: Idea, Game Design, Music and Sound Design
  • Mikko Lepistö: Art
  • Tobias Müller: Programming
  • Tobias Wehrum: Lead Programming

With sounds assets by Ricky SituCST 201 KaWilson and Jim Rogers.

The theme is used twice in our game – once in the game mechanic with players having to talk to each other what do to next because they need to work together, and secondly in the story: The trial version of our control system has ended and the result is a chaotic and unknown button layout, what do we do now?

We even satisfied a diversifier (sort of an achievements for the developers) this time: Noise Generator, “The mechanic of the game is based on players having to stay in constant communication with each other.”

Fun fact: Originally we wanted to do the controls Spaceteam-like with custom controls on multiple smartphones – buttons, sliders, rotatable knobs. It took us over a day to get it to connect and run smoothly between Android and PC, only to find out that using controls on a touch screen while looking at another monitor felt awful and (apart from buttons) was nearly unusable. So after that day of work, around 5 in the morning, I spent 30 minutes to program replacement gamepad controls. It worked perfectly and felt good.

Super Fruit Punch (Global Game Jam 2014)

With the current Global Game Jam right around the corner and only just about 11 1/2 months late, here is the project that we did for the last Global Game Jam: Super Fruit Punch!

Super Fruit Punch (Global Game Jam 2014)

You can find a download at the game’s GGJ page.

Credits:
– Game Design: Thomas Bedenk, Norbert Haacks
– Programming: Tobias Wehrum, Benjamin Schug, Richard Wepner, Martin Heller
– Art & Animation: Kirill Krysov
– Music & Sound: Lesley Dean