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!

Generative Art – Sketches #043 to #050

Alright, next batch of generative sketches coming up. Grab them while they’re hot!

#043: Das Kollektiv

This is the first time one of my artworks is inspired by music! The song in question is Das Kollektiv by ASP. I’m taking a fairly literal interpretation of a swarm of little entities in between the walls, sucking out the essence of the “guests”. The images are pretty dark; you might need high contrast settings.

043_das_kollektiv_01      043_das_kollektiv_02      043_das_kollektiv_03

#044: Into Oblivion

This next one isn’t just inspired by music, but directly driven by it! There is already a post about it, so I’ll just post the visuals here.

Here is a video using a shortened version of Push Every Button by Lapfox:

044_into_oblivion_01      044_into_oblivion_02      044_into_oblivion_03

044_into_oblivion_04      044_into_oblivion_05      044_into_oblivion_06

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

Canada’s Marvelous Singing & Dancing Animals

The newest entry in a series of silly animal-themed generative art: An animal music visualizer. Well, it started out as a music visualizer, but I don’t think it would work with many tracks and it needs a lot of configuration. It makes for a fun video nonetheless. I proudly present: Canada’s Marvelous Singing & Dancing Animals!

The song is Python by Rolemusic and the images used are all public domain/CC0.

If any of the animals aren’t Canadian after all, this is an unintentional error; I just identified them by the way they move their snouts.

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:

Catcher – Procedural backgrounds and enemy particle spawning effects

It’s been a while since the last update. I spent the months working on interesting prototypes and experimental installations, but now I finally have time again to come back to Catcher!

Since the last time, I picked up generative art to make interesting backgrounds. After a lot of experiments, I finally settled for a background that looks similar to the old one, but more interesting and with more dashes of color – and because it’s procedural, it will always look different.

I also visited the AMAZE Indie Festival in Berlin and got lots of great feedback that I used to improve this build.

Here is the changelist:

  • New procedural background
  • Made level transitions more fluid
  • Tweaked movement and net opening/closing
  • Replaced A-F rating with stars
  • Added a score malus for death
  • Added a particle mouse cursor ingame
  • Capped player ships at screen border
  • Improved “Sector Clear” screen
  • Improved rocket visibility
  • Improved level progression
  • Improved tutorial
  • Improved feedback
  • Fixed several bugs, including net collision problems with fast-moving enemies

You can download the current versions here – and if you do, please give leave me some feedback!

A few examples of the new background:

This slideshow requires JavaScript.

 

Another thing that changed is that enemies now have appearing animations! Instead of just suddenly being there, they are generated out of particles using Particle Playground:

2015 09 13 appear01

2015 09 13 appear02

2015 09 13 appear03

2015 09 13 appear04

Next up:

  • Prototyping and testing of two new game modes
  • Experiments with limited net count
  • Improved sound effects
  • Rework the whole ingame and menu UI

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.

Critical Hit 2015: Fruit Fever (Week 2)

Last week we finished the third week of Critical Hit 2015 in Montreal, an incubator for experimental wearable games! We continued our game from the week before about eating foodstuff to balance your health values:

The player is ill – their heart rate, body temperature and digestion are either two high or too low – and so the player tries to get healthy by eating foodstuffs. Each foodstuff raises or lowers one or two of the aforementioned properties. (To keep it replayable, those effects are randomly decided at the start of each round.) It’s a logic puzzle: The player has to find out what each foodstuff does by eating them, then look at the current status on their apron, and in the end figure out which foodstuffs to eat to get healthy.

The core concept didn’t change much except going from multi- to singleplayer – this week was mostly about finishing the hardware (last week we only had a digital prototype to test with) and figuring out how to teach the game to new players.

We came up with two ways:

  1. Starting simple, upping the difficulty: First there is only “temperature slider and 2 foodstuffs”, then there is “temperature + heart and 3 foodstuffs” and finally we get to “temperature + heart + stomach and all 4 foodstuffs”.
  2. Using a screen which displays hints for the effect of all 4 foodstuffs in the beginning (“Kiwi: -1 temperature”, etc.) and then reducing the amount of hints by one every round.

In the end, we couldn’t decide which one we prefer and implemented both: One version self-sufficent with just the apron/fork/Arduino, and one version with an additional screen.

And now, without further ado…

FF

Malnutrition is making you sick.
Luckily, you have found some healthy-looking
food, but you don’t know what it does yet.

Pick up your fork and watch as what you eat changes
your body and figure out the right combination.

Munch your way to health in FruitFever!

Source code available at GitHub.

Made possible by Critical Hit 2015.

Fruit Fever (Critical Hit 2015)

 

Credits:

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.