Glub

Glub is a funny cross-platform side-scrolling game where the player has to navigate the cute character Glub through a complex of test tubes which are full of different kinds of more or less dangerous bubbles.

Story

An old scientist experiments a lot and therefore has already produced lots of different mutant animals. Glub is one of them. The game starts after Glub ecloses out of his egg in a complex of test tubes. He is very curious and hungry and therefore he swims away to look for some­thing to eat. But there are lots of risks waiting for Glub. The user will help Glub to survive in this dangerous environment where electric bubbles and barriers try to stop the unfamiliar creature.

Gameplay

In the game the main character, called Glub, swims in a test tube. The player shall help Glub to survive all the risk, which will appear in the level. Therefore Glub can be navigated up and down using the mouse wheel on a computer or tilt the device when playing on a mobile de­vice. In the test tube there are obstacles which have to be avoided and lots of different kinds of bubbles. Some of the bubbles can be eaten by Glub, but if he eats too many he will explode. Others can be thrown onto obstacles to destroy them. The goal is to navigate Glub safely through the levels.

Simple bubbles can be burst by a click or eaten by Glub. If Glub has eaten too many bubbles he will explode and the player has to restart from the last checkpoint. But bubbles will also be digested when the main character has not eaten any bubble for a longer time period. Another kind of bubble is the electro bubble. It is necessary to avoid them, because the water will be energized when the character collides with it or the player touches such a bubble. Sometimes there will be obstacles in a level, which can be destructed by throwing a smash bubble at them using the mouse or a touch gesture. Also simple bubbles can be destructed this way, but if an electro bubble was hit by a smash bubble Glub will also die. The eaten bubbles have an influence on Glubs weight. Simple bubbles will make him light, smash bubbles will increase his weight. His weight influences how fast he can swim up or down. Additionally there are also star bubbles in the level which make Glub thin again. Collecting them is necessary to unlock new levels.

Programming Specials

 

DynamicLevelLoader

dynamic level loading in Glub

As this game is a side scrolling game for mobile devices we decided that we would not load all objects which are in the level at the beginning. Therefore we created the dynamic level loader. This class has descriptions of all the objects of the current level in a list and is responsible for telling the level creator when to create or destroy the required entities.

Input

For input we used several different sources. On the PC or Mac we used some functionalities of the mouse: The wheel to navigate the character and the press, release and move of the left mouse button to destroy of throw bubbles. On android devices we decided to use the acceler­ation values to control the character and touch clicks and swipes for the interaction with the bubbles.

Terrain

terrain decoration creation in Glub

To make it easy to create the terrain, we developed an algorithm which automatically detects the corners and draws the blue decorations at the outlines. This is done by the TerrainLogic. This module gets notified by the DynamicLevelLoader every time when a new vertical line of terrain objects is loaded. It compares the last loaded object line with the new one. It iterates over the line from bottom to top and checks where to place a decoration. When there is for example a quadratic terrain object on the left side, but not on the right it knows that it has to draw a decoration there. When two edges lie on top there won’t be such a graphic.

Animations and Specials

It was very important to us to develop a lively game. We found lots of possibilities to do that and could achieve to implement some of them:
We created PropertyAnimations in the GUI, for example we animated the position and the scale factor of the camera in the main menu. To create the illusion of a 3D perspective we ani­mated the different images at the same time variable.
In the game we added some additional effects via sprite animations. The main character can for example blink.
There are also lots of effects in the game which are (nearly) only created by programming. The player blinks when it would die when it would eat one more bubble, it glows when it has eaten a star bubble, when it gets electrified by a shock bubble the whole screen flashes and when it swims upwards or downwards very quickly, it will rotate a little bit in this direction. Moreover there are special animations when a terrain or a bubble is destroyed.
We also added self-written shaders, like the background blur and deformation and the magni­fying effect on the bottle, which represents a checkpoint.

Gesture input

We experimented a lot to find a comfortable way to throw smash bubbles using gestures.
At the end we just discarded our original algorithm to swipe a bubble and developed a new version, which worked much better.
First we tried to find out if the gesture was a click or a swipe. We did this using the time between the click and the release and the distance be­tween the two positions. Then we told the InputManager, which knows about all the clickable bubbles in a level about this input. It checks if a press event hits a smash bubble and remembers this bubble. If it gets a release event it checks if there was previously a smash bubble hit by a click and tells this object to move to the new position.
By adding a MouseMove or TouchMove listener we could also implement a graphical indicator consisting out of several arrows, which visualizes in which direction and with which speed the bubble will fly. Moreover we also highlighted the selected bubble to improve the usability.
If you're interested in the different methods we came up with, you can download the paper.

Downloads

GLUB Alphafor Android

Download

GLUB Alphafor Mac OS X

Download

Documentation

Download (english)

Our Responsibilities

Angelika

  • Dynamic Level Loading Algorithm: unloads objects out of the screen which are not visible anymore and reuses their entities for the upcoming objects in the level

Christoph

  • Grid Decorations: developed an algorithm which automatically detects the corners of the grid-based terrain and draws blue decorations at the outlines on each side
  • post-processing shaders
    • liquid shader - simulates water movement in the test tubes
    • magnifying effect - emphasise the checkpoints
Game Infos
Genre Side-Scroller
Platform Android, Windows, Mac OS
Language C++
Game Engine xis-engine
Status Alpha
Date Oct. 2012 - Feb. 2013
Project Members
Programming Angelika Bugl
Christoph Lipphart
Art/Animation Philipp Gratzer
Game Design Philipp Gratzer

Featured GamesCheck out our latest developments!

RIZE: Zombies

Christoph Lipphart, iOS, At Marmalade Game Studio

Elements

Angelika Bugl, Christoph Lipphart, Android, iOS, Mac OS, Windows

Grimoire

Angelika Bugl, Christoph Lipphart, iOS, Mac OS, Windows

Bubble Shooter Extended

Angelika Bugl, Christoph Lipphart, bada

Betreten verboten!

Angelika Bugl, Christoph Lipphart, Windows

Glub

Angelika Bugl, Christoph Lipphart, Android, Mac OS, Windows

Jaro and the Myth of the Blue Diamond

Angelika Bugl, Christoph Lipphart, Windows

Swat the Fly

Angelika Bugl, Christoph Lipphart, Android, iOS

Bank Robby

Angelika Bugl, Christoph Lipphart, Windows

Painting for Inmates

Christoph Lipphart, iOS, Windows

Quadrolypse

Angelika Bugl, Christoph Lipphart, Mac OS, Windows

Circle Run

Angelika Bugl, Christoph Lipphart, Mac OS, Windows

Lawn Bomber

Christoph Lipphart, Windows

Lawn Wars

Christoph Lipphart, Windows

4 Motion

Christoph Lipphart, Windows