loading

Tuesday, 09 September 2014 10:15

Armville - Archie's Book Chase

“Armville - Archie’s Book Chase” is a nonlinear, high score based time trial runner with high replay value.

PROJECT INFORMATION

Date: 2nd semester (2014)
Duration: 5 months
Team Size: 5 people
Technology: Unity5, C#, Photoshop, Ableton Live 9
Constraints: Develop a fully playable vertical slice of a 2D platformer using the Unity-Engine. It has to be about four screen sizes large and include sound as well as animation.

Let's Play

Introduction To Our Project

Dustforce

by Hitbox Team

“Dustforce” by Hitbox Team

Two games were catching our attention while brainstorming for this project: “Dustforce” by “Hitbox Team” and “Super Meat Boy” by “Team Meat”. Both games are focusing on precise control and movement of the playable character. While “Dustforce” felt a little bit too slow paced and “Super Meat Boy” a little bit too fast-paced, they still had a lot in common. We agreed, regarding pace, that our game should feel like something in between of the two mentioned games

Concept

Super Meat Boy

by Team Meat

“Super Meat Boy” by Team Meat

We wanted a game, which provides a scalable challenge to players of any skill level. The difficulty on the first trial could be to familiarize the controls and to combine the mechanics of the game to reach the end of the game at some point. The second attempt could be driven by the eagerness to improve the controls and the desire to find the best route and to beat the current high score. To enhance the replayability of the game, we decided to design a nonlinear level with multiple alternative paths. One goal was to avoid the existence of a superior route, which would have an advantage over all other routes. The primary focus, however, was addressed towards the unorthodox movement of the main character.

Armville

Pulling the right stick down,
will result in the arm to go down.

Pulling the right stick down will result in the arm to go down.

Mechanics

Our character is lacking the ability to jump through a single button press. Instead, he has a free rotatable arm, which can be used to punch onto solid ground for repulsive force and rebound into opposite direction. The position of his right arm is directly translated through the position of the controller’s right stick. The player has the freedom to move the right arm independently from the character's body, which enables a high variety of movement combinations. Not only is the character able to use his arm to gain repulsive force for rebounds, but also to use his hands for grabbing corners and swinging around the environment.

Art Style

To provide a nonlinear level design, we decided to install checkpoints all around the level, which the player has to reach in unrestricted order. We chose a library as a setting since it provides a reasonable explanation to reach certain checkpoints. The checkpoints are represented through books, which the character has to collect. To emphasize the burlesque nature of our futuristic setting, we decided on a “cartoony” art style with sharp outlines. Deciding on a color scheme was representing a difficult task since a library usually contains a high variation of books with different colored book covers. It was important to us to describe a vast library with its high variety of books, without dragging too much of the player's attention to the background.

Level Design

Intention

Armville

First, we blocked out
several levels.

First, we started to block out several analog levels.

To maintain high replay value, it was necessary to design a nonlinear demonstration level which would offer various paths with each of them offering even more options on how to traverse through them. One of our other tasks was to assure, that the level design would not provide an apparent superior path, which most of the players would end up going for automatically, rather than having the urge to replay the level to figure out their optimized path. Due to the limited scope of our project we were trying to use every space as efficient as possible.

Working Process

Armville

Every change in the design
was communicated and documented.

Every change in the design was communicated and documented.

I have been hosting several playtesting sessions, in which external subjects were playing our level for the first time while I was studying their behavior. I ended up in doing countless tweaks and optimization processes to the level design, as well as adding and removing whole areas to achieve an overall balanced level design. Every tweak and optimization process always had to be tested again by new external subjects, which in return was resulting in even more improvements to provide the best experience for beginners and advanced players.

Result

While the final demonstration level is perfectly suitable for medium to advanced players, it sometimes appears to be a little bit too difficult for players, who are not familiar with video games. We were aware of that issue, but we decided not to lower the difficulty. Instead, we want the necessity for improvement and aid the player through specific set up areas. We are sure that a more extensive tutorial would have helped some players to be able to jump right into the game with less struggle, but due to the limited scope of this project, we decided not to include it yet. Still, the demonstration level represents the level design we were aiming for in a big picture. There is no superior path, and I am confident, that we achieved a level design, which is delivering a highly diverse experience regarding movement and problem solving altogether.

Learning Effect

Studying and going through countless optimization cycles, have shown me, how little changes within the game design can have a massive impact on the game and change the way it is being played. It also underlined the importance of playtesting in general. Fixing one design issue can cause another unpredictable design issues to appear, which often can only be discovered by more intensive playtesting. Also, it is important to let as many different people as possible to test the game. The differences in the way the games are being played are very insightful and can lead to great ideas.

Sound Design

Intention

Ableton Live

Multiple cues have to be able
to fire simultaneously.

Multiple cues have to be able to fire simultaneously.

As a musician and sound enthusiast I pay a lot of attention to the sound design of games. It was not easy to think of a soundtrack, which would reflect the atmosphere of a quiet library, but also emphasizes the action orientated fast-paced gameplay of our sidescroller. The feedback sounds did not only had to be designed out of a functional intention but also had to fit the overall style of the game. The possibilities of video games as an interactive medium were always fascinating me. Unlike movies, everything can be influenced and altered by the player. Instead of just being purely a consumer, the player can become a producer to a certain degree. I like the idea of giving feedback to the player in every aspect of a game. Not only visuals and special sound effects, but almost everything should be a reaction to the player’s action. I believe this is the primary strength of video games and what distinguishes it most from other media or non-interactive art. That is why I wanted the soundtrack to be highly reactive to the game state.

Working Process

To get the required information I had to add a script with a “void OnCollisionEnter2D()” method to the playable character. All the collision information can be handed over to the sound script. The sound script knows when the playable character is colliding and with what velocity it was colliding and therefore can distinguish between different cases of the collision’s direction and strength. The collision’s direction is essential to be able to differentiate between cases like for example: hitting the head, landing on the feet or running into a wall. The collision’s strength is easily linked to the volume of the triggered sound so that a higher impact is louder than a smaller impact. The opposite applies for the whip sound of the playable character’s arm and the airstream sound of the playable character’s body while falling: the velocity, while being in a state of not colliding, matters. The velocity of the playable character and his arm can be read out of the “Rigidbody2D.velocity” variable. If the velocity is high enough, a sound will be triggered, and the volume, as well as the pitch, is adjusted accordingly.

I composed a soundtrack accordingly to the art style. I ended up with six bass lines, one drum line, and one percussion line. The soundtrack starts off with a solo bass line to reflect the atmosphere of a quiet library and ultimately ends up with a composition including drums and percussion. The soundtrack reflects the progress of the game with the increased intensity of the bass line. To apply even more pressure, drums and percussion are added at a later stage. Because the playable character is usually faster in the air, I wanted to emphasize this state by letting the percussion only play while in the air. The percussion is added after collecting books, but also fades out after a while again if the player stops collecting books.

At last, I was designing additional sounds for the Archie ghost and the high score screen. I was modulating sounds by using the Operator in Ableton Live and added some sound effects afterward. The ghost sound was then attached to the ghost itself as a 3D sound. I then adjusted the 3D sound settings of the ghost in Unity, to get the best-balanced sound effect whenever the ghost floats over the screen. Mostly, I had to reduce on the high pitches to make the assets sound dull. This is because, our setting is mainly dominated by big wooden objects and heavy books, which would swallow some of the high pitch frequency. I also had to record sounds and dub our character with my voice.

Result

I am pleased with the result, and I am confident, that I succeeded in catching the right atmosphere and matching the style of our game. I know that there is a lot of potential for further improvements, which I couldn’t tackle on due to the lack of time. But there were more urgent tasks to finish at the end of the project.

Learning Effect

I was always very curious about the design and implementation of sound in games. After this project, I have learned a lot about the possibilities of sound design in games. This experience was very inspiring, and the options are overwhelming. Designing sounds paired with the implementation is opening an entirely new dimension for creativity and problem-solving. This has only increased my interest in sound design. This task was a lot of fun, and I cannot wait to continue experimenting in this area.

Recap

Armville

GamesCom visitor is playing Armville.

GamesCom visitor is playing Armville.

I am satisfied with the result of our game and the progress and experience I have gained through this project. I made a great leap forward in programming and understanding game engines. Because I have assigned myself to a broad variety of tasks, I was able to widen my knowledge horizontally. I have a much more defined idea of the working pipeline in game development. This helped me to figure out, which parts of game development I do enjoy most. Knowing one's interests represents an excellent advantage for further projects. It will enable me in future projects to build up my knowledge vertically and go into more depth.

Looking back at my expectations, personal goals and milestones, I would mark this project as a great success. Although I was not able to set a specific goal and milestone from the very beginning, I feel like having surpassed my expectations by far.

I have a much more transparent image of what to expect for the next project now. This allows me to have a better understanding of how to prepare for future projects and enables me to reach out to higher goals. I would like to focus even more on programming and sound design for the next project and hope that I will be able to tackle more significant programming problems and modulate my sounds in a more defined way.

>>This is just a slice. For my full documentation: Click HERE!<<

 

 

Gameplay Video

 

 

Making Of

 

 

Published in Projects
Saturday, 08 August 2015 21:59

inVert

“inVert - evade and destroy” is a high score based, VR Segway-like action racing game, in which the player is moving along the inner surface of a sphere and tries to reach certain checkpoints while avoiding any contact with enemies.

PROJECT INFORMATION

Date: 4th semester (2015)
Duration: 3 weeks
Team Size: 4 people
Technology: Unity5, C#, Oculus Rift DK2, Wii Balance Board, Photoshop, Ableton Live 9
Constraints: Develop a fully playable prototype with the focus on alternative interface devices as a proof of concept.

Gameplay Video

Introduction

inVert

We think of the Wii Balance Board
as a great expansion to enhance
the illusion of Virtual Reality.

We think of the Wii Balance Board as a great expansion to enhance the illusion of Virtual Reality.

This project was part of our 4th-semester experimental game jam. Our task was to design a game within a three week period. Having this in mind; our schedule was very tight and the scope of this project strongly limited.

The topic for this group project was: “Interface Device”.

Concept

inVert

Using the senses to balance the body,
is just as intuitive
like turning the head to look around.

Using the senses to balance the body, is just as intuitive like turning the head to look around.

The focus of this project was to design a game specifically addressed towards a chosen interface device and not vice versa. The interface device we chose is the Oculus Rift. But having the head tracker of the Oculus Rift as the only input device felt somehow limited to us, for which reason, we decided to include another input device. We then chose Nintendo’s Wii Balance Board, because it is making use of the most natural human body movements while remaining very simple to handle. It was important to us, to forgo the typical, but mostly unintuitive, on hands controller input, which could destroy immersion.

Thinking about the Oculus Rift; one of its main advantages is the player’s ability to look into any direction and to have a 360° view. To fully utilize this feature, we decided, that the player should be surrounded by the playing field, in which the point of interest could be in any direction. By that, we do not mean only all around the player, but also above and underneath. This thought led us to the conclusion that the playing field should be a sphere, on which the player is moving along its inner surface. The player would, for example, see the other side of the sphere by looking upwards.

Game Mechanics

inVert

inVerted Sphere

inVerted Sphere

Our game, “inVert - evade and destroy”, is a high score based, single player, Segway racing, action game, in which the player is moving along the inner surface of a sphere, trying to reach certain checkpoints while avoiding any contact with enemies. Enemies are moving straight along their lanes, and the amount of appearing enemies is increased by time. At specific intervals, the enemies are starting to chase the player, forming a big mob. While the player is moving and continuously trying to avoid the enemies, there are also gates appearing on the surface. The player can drive through those gates to destroy them. When being destroyed, the gate will burst into pieces and destroy all nearby enemies as well.

inVert

inside the sphere

inside the sphere

The player can use this as an advantage to destroy as many enemies as possible. The score is raised with every destroyed enemy, and the multiplicator is increased with every reached gate. If the player gets in contact with an enemy, the game is over. To orientate in space, the player can use the Oculus Rift to look around. Also, the player can move along the surface by leaning forward, backward, left or right on the Wii Balance Board.

Art Style

Having the low resolution of the Oculus Rift’s development kit and general motion sickness in mind; we were aiming for a rather simple and clean look. We wanted the least distraction from gameplay relevant elements as possible and had chosen to use very simple geometries with easily distinguishable silhouettes.

My Task Area

Before anything else, we needed a concept for the gameplay and a working scoring system. In addition to that, I was given the task to design and implement the acoustic feedback. It was essential to coordinate and share our responsibilities carefully as we had three programmers on our team. One of my other tasks was to create all necessary game objects, like gates and enemies, as prefabs for prototyping purposes. I was also in charge of the spawning system of those. Other minor tasks I had to tackle over the course of the project involved the creation of a pole-less sphere, visual feedback by changing the color scheme as well as arranging the title and high score menus.

Developing Gameplay Concepts

inVert

non-digital prototyping

non-digital prototyping

Our mission for this project was not only to work out a game concept, which would support the Oculus Rift and the Wii Balance Board but furthermore, is noticeably designed around those devices. We wanted to make them an honest part of the experience. To be able to start prototyping as soon as possible it was necessary to develop several gameplay concepts. We agreed on the sphere as the playing field and continued to develop the gameplay concept with having the Oculus Rift and the Wii Balance Board in mind. All the little details, like for example the scoring system and the movement system had to be taken into account.

I have learned, that it can be constructive, to take non-digital prototyping material and go through the rule set of the game to identify potential problems early.

Creating Prefabs

inVert

Enemies are chasing the player...

Enemies are chasing the player...

My task was to create a stack of scripts and game objects, which we could use for prototyping. It was important that everything was designed with modularity in mind. Being able to reuse and combine modules was supposed to lead to more efficient prototyping.

The enemies are sphere meshes attached with a script giving them a constant force in the direction of their local forward vector to make them moving forward. They also carry a script which makes the up vector to look at the center of the sphere and a force which is pushing them away from the center and onto the surface of the sphere resulting in somewhat like “reversed gravity”. If they collide with a game object, which is tagged as “player”, the game ends.

inVert

...while the player tries
to reach the gates...

...while the player tries to reach the gates.

The gates are two poles with a collider in between. They will be destroyed on overlap with the player. When being destroyed the tag of all game objects within a specific radius are being checked. If the game object is tagged as an “enemy”, they will be destroyed.

Creating a variety of prefabs helped me to get back into text-based scripting. Each of the different game objects came with a unique programming problem. Because each game object by itself was representing a rather simple problem, I was able to solve them all one by one. Also, it was helpful to put extra attention on the modularity and consistency of the objects. There have been several other game objects like collectibles or projectiles shooting turrets, which didn’t make it into the final game. I am satisfied with the result, and I am proud to see, that I felt comfortable and was immediately able to access and transfer all the knowledge from visual scripting to text-based scripting.

Sound Design

inVert

Creating sound.

Creating sound.

While movies do not give any control away to the consumer, games do. This makes music in games sometimes tricky to handle. The tension in games is often situational, which makes prearranged composition less efficient and less powerful if they do not adapt to the game state. Therefore, I wanted the soundtrack to be reacting highly dynamically to the state of the game, to enhance the gaming experience. I had to find a way to let it react to the current game state through other variables. Because the pacing of our game is continuously raising and falling, I wanted the music to be bound to the pacing and the tension of the current game state. Another goal was to modulate all sounds from scratch, without using any sound libraries. The idea was to learn how to pinpoint a specific sound while having total control over the creation of itself and without being influenced by any external factors.

inVert

Exporting sound.

Exporting sound.

The longer it takes the player to destroy an enemy, the more elements are being cut out, which continually raises the tension and increases the effectiveness of the incoming drop in. The longer none of the enemies are destroyed, the more enemies are gathering in the arena. In the same principle, as a DJ is raising the tension on the crowd by cutting out elements and fading out the lower pitch sounds, my script for the soundtrack is also cutting out elements to build the tension and prepare for the drop in. Furthermore, the soundtrack is also changing accordingly to the state of the enemies. If the enemies are switching to the mode in which they chase the player, the hi-hat, bass, and lead is replaced by a faster-paced arrangement.

I am delighted with my results in designing sounds and I think, that I have made an enormous leap forward. The soundtrack has a very progressive character, which is precisely what I was aiming for. The highlight for me is, the dynamic aspect of the music and how well it adapts to the tension of the game. I carefully crafted the sounds so that each sound would have its own frequencies within the sensible acoustic spectrum. This helps the sounds to stick out and remain distinguishable even when several sounds are overlapping.

Visual Feedback

After having implemented the acoustic feedback successfully, I still saw opportunities to enhance the experience by adding more visual feedback.

In some cases, the player would hear the shift in the soundtrack, but would not notice the change in the enemies behavior. This situation could provoke confusion, because the sound changes remarkably, but nothing seems to happen. That is why I have been implementing a script, which changes the color pattern of the game, whenever the music changes drastically. Furthermore, it gives the player important feedback about the progression of the game.

inVert

The color scheme is changed via script.

The color scheme is changed via script.

To achieve this, I wrote a script, which accesses all used materials directly. By changing the attributes of a material, which is in use, all game objects that are linked to it, can be altered in their appearance at runtime. This way, for example, the script can change the appearance of all enemies at the same time, by just changing the referred material of the enemies. I added several color patterns so that the script can blend between them.

This visual feedback was implemented last minute and can still be further optimized in many ways. I am not entirely satisfied with the color patterns, which I have been adding and I think the color fading system could be much better. Right now the colors are only changing when the enemy’s behavior is changing. I think a constant slow color fade would have fit perfectly into the mix. Nonetheless, I think it is an important feature, and for the time I had, well enough implemented.

Spawn Point Manager

Having the stack of prefabs done, it was essential to find a way how to utilize the prepared items comfortably for prototyping purpose without having them to be dragged into and out of the scene every time. For that matter, I have written a script, which spawns the desired game objects in the desired pattern under desired restrictions.

The spawn point manager has a public variable for game objects, in which the user can define the prefab to be spawned. In addition to that, the script knows the length of a beat in seconds and can generate the objects in definable intervals accordingly to the music. The user can also define whether the game object should spawn on a random location within the sphere or a random location on the surface of the sphere. This is accomplished by a random normalized vector, going from the center of the sphere. To spawn within the whole volume of the sphere, the vector has to be multiplied by a random float between 0 and the radius of the sphere. To spawn on the surface of the sphere, the vector has to be multiplied by the radius of the sphere.

There can be multiple Spawn Point Managers in the scene, each handling their own prefab, spawn amount, starting time, interval length and end time.

Although it was an easy task to accomplish, it was still confronting me with some new problems. I am glad for every work, in which I have done something new. It expands my knowledge and can help me to solve other problems faster in the future.

inVert

Us trying to solve problems collectively.

Us trying to solve problems collectively.

Recap

I am delighted with the outcome of this project and would mark it as a great success. I have thoroughly fulfilled the goal to transfer my knowledge from the visual scripting language to apply it to the text-based scripting language. Working as a team of three highly skilled programmers was an exciting experience. Because each one of us had a different skill set and approach, it was always exciting to exchange ideas and opinions. Also, working together forced us to work tidy and structured.

Being in the position of having full freedom in designing the sounds was great, and I am particularly proud of this the results of the sound design. I am still very interested in the programming of AI and would love to improve in this area at next possible chance. This time there was no complex AI needed. In overall, I am delighted with the result of this project, and I am pleased with my performance.

inVert

the final setup

the final setup

>>For my full documentation: Click HERE!<<
Published in Projects
Monday, 24 August 2015 15:00

Medusa's Bloodthirst

“Medusa's Bloodthirst” is a turn-based, puzzle-like, top-down, rouge-like dungeon crawler.

PROJECT INFORMATION

Date: August 21st-24th (Ludum Dare 33)
Duration: 1 day
Team Size: 3 people
Technology: Unity 5, C#
Constraints: You are the Monster. (Theme)

Gameplay Video

Medusa

Medusa

Medusa can turn enemies into stone.

Medusa can turn enemies into stone.

Info

This Mobile Game was created during the Ludum Dare 33. We were a team of three, and I was mainly responsible for the Procedural Level Generator.

Medusa

Medusa

Medusa can eat princesses.

Medusa can eat princesses.

The player is playing Medusa and can turn everyone into a stone statue by direct eye contact. It is a turn-based, puzzle-like, high score based game, in which the player is trying to proceed through unlimited stages to gain points. Each destroyed stone statue, each eaten princess, and each completed stage will reward the player with several points. This game is designed and runs perfectly well on mobile devices.

>>To play the game: Click HERE!<< (Chrome browser is not supported.)

>>For more information: Click HERE!<<

Published in Projects

Hobbies

When I am not dancing Lindy hop or climbing up a wall, I enjoy to create stuff and to educate myself. I believe that most knowledge can be shared and applied across a high variety of tasks. Therefore, it is useful to keep an open mindset for all kinds of different professions.

I have also designed soundtracks for my games and have been playing the guitar in a band.

Please, feel free to browse through some of my hobby projects.

 

Drop Me a Line