Hellclimber

[et_pb_section admin_label=”section” transparent_background=”off” background_color=”#3a3a3a” allow_player_pause=”off” inner_shadow=”off” parallax=”off” parallax_method=”off” custom_padding=”34px|0px|96px|0px” padding_mobile=”off” make_fullwidth=”off” use_custom_width=”off” width_unit=”on” custom_width_px=”1080px” custom_width_percent=”80%” make_equal=”off” use_custom_gutter=”off” fullwidth=”off” specialty=”off” disabled=”off”][et_pb_row admin_label=”Row” make_fullwidth=”off” use_custom_width=”off” width_unit=”on” custom_width_px=”1080px” custom_width_percent=”80%” use_custom_gutter=”off” gutter_width=”2″ custom_padding=”0px|0px|4px|0px” padding_mobile=”off” allow_player_pause=”off” parallax=”off” parallax_method=”off” make_equal=”off” column_padding_mobile=”on” parallax_1=”off” parallax_method_1=”off” parallax_2=”off” parallax_method_2=”on” parallax_3=”off” parallax_method_3=”on” parallax_4=”off” parallax_method_4=”on” disabled=”off”][et_pb_column type=”4_4″][et_pb_divider admin_label=”Divider” color=”#ffffff” show_divider=”on” divider_style=”solid” divider_position=”top” divider_weight=”1px” hide_on_mobile=”on” disabled=”off”] [/et_pb_divider][et_pb_text admin_label=”Text” background_layout=”dark” text_orientation=”center” text_font_size=”30″ text_text_color=”#eb961e” use_border_color=”off” border_style=”solid” disabled=”off”]

Infinite Hellclimber

[/et_pb_text][et_pb_text admin_label=”Text” background_layout=”dark” text_orientation=”center” text_font_size=”28″ use_border_color=”off” border_style=”solid” disabled=”off”]

Level Design, Scripting

[/et_pb_text][et_pb_divider admin_label=”Divider” color=”#ffffff” show_divider=”on” divider_style=”solid” divider_position=”top” divider_weight=”1px” hide_on_mobile=”on” disabled=”off”] [/et_pb_divider][/et_pb_column][/et_pb_row][et_pb_row admin_label=”row” make_fullwidth=”off” use_custom_width=”off” width_unit=”off” custom_width_px=”1080px” custom_width_percent=”80%” use_custom_gutter=”off” gutter_width=”2″ custom_padding=”25px|0px|75px|0px” padding_mobile=”off” allow_player_pause=”off” parallax=”off” parallax_method=”on” make_equal=”off” column_padding_mobile=”on” parallax_1=”off” parallax_method_1=”on” parallax_2=”off” parallax_method_2=”on” parallax_3=”off” parallax_method_3=”on” parallax_4=”off” parallax_method_4=”on” disabled=”off”][et_pb_column type=”1_4″][et_pb_text admin_label=”Text” background_layout=”dark” text_orientation=”left” text_line_height=”1em” use_border_color=”off” border_style=”solid” disabled=”off”]

Platform: Android

Genre: Infinite Runner

Engine: Unity 5

Production Time: 3 weeks

Role: Level Design, Scripting, VFX

Production Team Size: 5 People

[/et_pb_text][/et_pb_column][et_pb_column type=”3_4″][et_pb_text admin_label=”Text” background_layout=”dark” text_orientation=”left” use_border_color=”off” border_style=”solid” disabled=”off”]

 

Infinite Hellclimber is an infinite runner prototype developed for Android phones. The player takes on the role of one of the denizens of hell, bent on escaping their eternal torment and reaching the surface. The goal of the game is to avoid obstacles and climb as far as possible while collecting lost souls that will further increase your score.

The game was created as part of a course held by Futuregames and took 3 weeks to develop.

[/et_pb_text][/et_pb_column][/et_pb_row][et_pb_row admin_label=”Row” make_fullwidth=”off” use_custom_width=”off” width_unit=”on” custom_width_px=”1080px” custom_width_percent=”80%” use_custom_gutter=”off” gutter_width=”2″ custom_padding=”0px|0px|2px|0px” padding_mobile=”off” allow_player_pause=”off” parallax=”off” parallax_method=”off” make_equal=”off” column_padding_mobile=”on” parallax_1=”off” parallax_method_1=”off” parallax_2=”off” parallax_method_2=”on” parallax_3=”off” parallax_method_3=”on” parallax_4=”off” parallax_method_4=”on” disabled=”off”][et_pb_column type=”4_4″][et_pb_video admin_label=”Video” src=”https://www.youtube.com/watch?v=jQxeIGMYVT4″ disabled=”off”] [/et_pb_video][/et_pb_column][/et_pb_row][et_pb_row admin_label=”Row” make_fullwidth=”off” use_custom_width=”off” width_unit=”off” custom_width_px=”1080px” custom_width_percent=”80%” use_custom_gutter=”off” gutter_width=”2″ custom_padding=”73px|0px|0px|0px” padding_mobile=”off” allow_player_pause=”off” parallax=”off” parallax_method=”on” make_equal=”off” column_padding_mobile=”on” parallax_1=”off” parallax_method_1=”on” parallax_2=”off” parallax_method_2=”on” parallax_3=”off” parallax_method_3=”on” parallax_4=”off” parallax_method_4=”on” disabled=”off”][et_pb_column type=”4_4″][et_pb_text admin_label=”Text” background_layout=”dark” text_orientation=”center” text_font_size=”22″ use_border_color=”off” border_style=”solid” disabled=”off” text_text_color=”#eb961e” border_color=”#ffffff”]

Design Goal and Game Pillars

[/et_pb_text][et_pb_divider admin_label=”Divider” color=”#ffffff” show_divider=”on” divider_style=”solid” divider_position=”top” divider_weight=”1px” hide_on_mobile=”on” disabled=”off”] [/et_pb_divider][/et_pb_column][/et_pb_row][et_pb_row admin_label=”Row” make_fullwidth=”off” use_custom_width=”off” width_unit=”off” custom_width_px=”1080px” custom_width_percent=”80%” use_custom_gutter=”off” gutter_width=”2″ custom_padding=”31px|0px|9px|0px” padding_mobile=”off” allow_player_pause=”off” parallax=”off” parallax_method=”on” make_equal=”off” column_padding_mobile=”on” parallax_1=”off” parallax_method_1=”on” parallax_2=”off” parallax_method_2=”on” parallax_3=”off” parallax_method_3=”on” parallax_4=”off” parallax_method_4=”on” disabled=”off”][et_pb_column type=”1_4″][et_pb_text admin_label=”Text” background_layout=”dark” text_orientation=”left” text_font_size=”18″ use_border_color=”off” border_style=”solid” disabled=”off”]

Core Pillars:

[/et_pb_text][et_pb_text admin_label=”Text” background_layout=”dark” text_orientation=”left” use_border_color=”off” border_style=”solid” disabled=”off”]

  • Fast and short rounds
  • Escalating Difficulty
  • Addictive Gameplay
  • Randomly Generated Level

[/et_pb_text][/et_pb_column][et_pb_column type=”3_4″][et_pb_text admin_label=”Text” background_layout=”dark” text_orientation=”left” use_border_color=”off” border_style=”solid” disabled=”off”]

Hellclimber was designed to be easy to pick up. Players should be able to play it using a single hand, so the level scrolls vertically and the character is controlled by tapping anywhere on the screen. The level is randomly generated from 10 different pre-defined segments and scrolls faster as time goes by, constantly increasing the difficulty. If the player falls out of the screen or runs into an obstacle, the round is over and their final score is calculated based on distance climbed and souls collected.

Rounds were designed to be short and players are further motivated to beat their current score by leaving markers in the game where the top 10 players died.

To prevent the start of the game from becoming stale, souls were added in various positions within the level segments. New players are given the chance to familiarize themselves with the game during the early segments while experienced players who want to push their score, must put more effort into gathering as many souls as possible before the game becomes too fast. Collecting 20 souls overcharges the player, making them suck souls towards them for a short time and further motivating the them to take risks and gather more souls.

I was mainly responsible for creating the level segments as well as writing the level generator.

[/et_pb_text][/et_pb_column][/et_pb_row][et_pb_row admin_label=”Row” make_fullwidth=”off” use_custom_width=”off” width_unit=”off” custom_width_px=”1080px” custom_width_percent=”80%” use_custom_gutter=”off” gutter_width=”2″ custom_padding=”52px|0px|58px|0px” padding_mobile=”off” allow_player_pause=”off” parallax=”off” parallax_method=”on” make_equal=”off” column_padding_mobile=”on” parallax_1=”off” parallax_method_1=”on” parallax_2=”off” parallax_method_2=”on” parallax_3=”off” parallax_method_3=”on” parallax_4=”off” parallax_method_4=”on” disabled=”off”][et_pb_column type=”4_4″][et_pb_text admin_label=”Text” background_layout=”dark” text_orientation=”center” text_font_size=”22″ use_border_color=”off” border_style=”solid” disabled=”off” text_text_color=”#eb961e” border_color=”#ffffff”]

Design Process and Level Segments

[/et_pb_text][et_pb_divider admin_label=”Divider” color=”#ffffff” show_divider=”on” divider_style=”solid” divider_position=”top” divider_weight=”1px” hide_on_mobile=”on” disabled=”off”] [/et_pb_divider][/et_pb_column][/et_pb_row][et_pb_row admin_label=”Row” make_fullwidth=”off” use_custom_width=”off” width_unit=”off” custom_width_px=”1080px” custom_width_percent=”80%” use_custom_gutter=”off” gutter_width=”2″ padding_mobile=”off” allow_player_pause=”off” parallax=”off” parallax_method=”on” make_equal=”off” column_padding_mobile=”on” parallax_1=”off” parallax_method_1=”on” parallax_2=”off” parallax_method_2=”on” parallax_3=”off” parallax_method_3=”on” parallax_4=”off” parallax_method_4=”on” disabled=”off”][et_pb_column type=”1_3″][et_pb_text admin_label=”Text” background_layout=”dark” text_orientation=”center” use_border_color=”off” border_style=”solid” disabled=”off”]

Photoshop Iteration

[/et_pb_text][et_pb_image admin_label=”Image” src=”http://www.berjjet.se/wp-content/uploads/2018/01/HellclimberIteration_PSD.jpg” show_in_lightbox=”off” url_new_window=”off” use_overlay=”off” animation=”off” sticky=”off” align=”left” force_fullwidth=”off” always_center_on_mobile=”on” use_border_color=”off” border_color=”#ffffff” border_width=”1px” border_style=”solid” disabled=”off”] [/et_pb_image][/et_pb_column][et_pb_column type=”1_3″][et_pb_text admin_label=”Text” background_layout=”dark” text_orientation=”center” use_border_color=”off” border_style=”solid” disabled=”off”]

Working Prototype

[/et_pb_text][et_pb_image admin_label=”Image” src=”http://www.berjjet.se/wp-content/uploads/2018/01/HellclimberIteration_Unity.jpg” show_in_lightbox=”off” url_new_window=”off” use_overlay=”off” animation=”off” sticky=”off” align=”left” force_fullwidth=”off” always_center_on_mobile=”on” use_border_color=”off” border_color=”#ffffff” border_width=”1px” border_style=”solid” disabled=”off”] [/et_pb_image][/et_pb_column][et_pb_column type=”1_3″][et_pb_text admin_label=”Text” background_layout=”dark” text_orientation=”center” use_border_color=”off” border_style=”solid” disabled=”off”]

Final Segment

[/et_pb_text][et_pb_image admin_label=”Image” src=”http://www.berjjet.se/wp-content/uploads/2018/01/HellclimberIteration_Final.jpg” show_in_lightbox=”off” url_new_window=”off” use_overlay=”off” animation=”off” sticky=”off” align=”left” force_fullwidth=”off” always_center_on_mobile=”on” use_border_color=”off” border_color=”#ffffff” border_width=”1px” border_style=”solid” disabled=”off”] [/et_pb_image][/et_pb_column][/et_pb_row][et_pb_row admin_label=”Row” make_fullwidth=”off” use_custom_width=”off” width_unit=”off” custom_width_px=”1080px” custom_width_percent=”80%” use_custom_gutter=”off” gutter_width=”2″ custom_padding=”20px|0px|36px|0px” padding_mobile=”off” allow_player_pause=”off” parallax=”off” parallax_method=”on” make_equal=”off” column_padding_mobile=”on” parallax_1=”off” parallax_method_1=”on” parallax_2=”off” parallax_method_2=”on” parallax_3=”off” parallax_method_3=”on” parallax_4=”off” parallax_method_4=”on” disabled=”off”][et_pb_column type=”4_4″][et_pb_text admin_label=”Text” background_layout=”dark” text_orientation=”left” use_border_color=”off” border_style=”solid” disabled=”off”]

Each level segment is split into 3 lanes and the player is able to run on the left or right side of each lane, granted there is a wall there to climb. Some lanes are blocked or contain obstacles that the player must avoid by jumping or double-jumping to the adjacent wall. Each segment was initially drawn and iterated on in Photoshop before being built using temporary assets in Unity. Once each segment felt balanced in-game, I decorated them using assets created by our 2D-artists.

[/et_pb_text][/et_pb_column][/et_pb_row][et_pb_row admin_label=”Row” make_fullwidth=”off” use_custom_width=”off” width_unit=”off” custom_width_px=”1080px” custom_width_percent=”80%” use_custom_gutter=”off” gutter_width=”2″ custom_padding=”52px|0px|58px|0px” padding_mobile=”off” allow_player_pause=”off” parallax=”off” parallax_method=”on” make_equal=”off” column_padding_mobile=”on” parallax_1=”off” parallax_method_1=”on” parallax_2=”off” parallax_method_2=”on” parallax_3=”off” parallax_method_3=”on” parallax_4=”off” parallax_method_4=”on” disabled=”off”][et_pb_column type=”4_4″][et_pb_text admin_label=”Text” background_layout=”dark” text_orientation=”center” text_font_size=”22″ use_border_color=”off” border_style=”solid” disabled=”off” border_color=”#ffffff” text_text_color=”#eb961e”]

Level Generation

[/et_pb_text][et_pb_divider admin_label=”Divider” color=”#ffffff” show_divider=”on” divider_style=”solid” divider_position=”top” divider_weight=”1px” hide_on_mobile=”on” disabled=”off”] [/et_pb_divider][/et_pb_column][/et_pb_row][et_pb_row admin_label=”Row”][et_pb_column type=”2_3″][et_pb_text admin_label=”Text” background_layout=”dark” text_orientation=”left” text_font_size=”18″ use_border_color=”off” border_color=”#ffffff” border_style=”solid”]

Level Segments

[/et_pb_text][et_pb_text admin_label=”Text” background_layout=”dark” text_orientation=”left” use_border_color=”off” border_color=”#ffffff” border_style=”solid” custom_padding=”||50px|”]

The level segments are saved as prefabs and contain the Vector3 variables pathsIn and pathsOut where each value represents a lane (X = Lane 1, Y = Lane 2, Z = Lane 3). A value of 0 represents a closed lane entrance/exit that cannot be accessed while a value of 1 represents an open lane where the player is free to roam. These values are manually set for each segment.

[/et_pb_text][et_pb_text admin_label=”Text” background_layout=”dark” text_orientation=”left” text_font_size=”18″ use_border_color=”off” border_color=”#ffffff” border_style=”solid”]

Level Generator

[/et_pb_text][et_pb_text admin_label=”Text” background_layout=”dark” text_orientation=”left” use_border_color=”off” border_color=”#ffffff” border_style=”solid”]

When the game boots, the generator creates an Array titled blocklist containing all the level segments (LevelBlocks) in the game. As the player approaches the edge of the current level segment, the generator randomly picks a new segment from blocklist and compares the open lanes out (pathsOut) of the current segment with the open lanes (pathsIn) leading into the next segment. If the lanes match, the generator will spawn the next segment into the game world, otherwise it will pick a new random segment and compare it with the old one until it finds a matching pair. This system was designed to prevent the generator from accidentally generating dead ends and make sure that all segments fit together seamlessly.

[/et_pb_text][/et_pb_column][et_pb_column type=”1_3″][et_pb_image admin_label=”Image” src=”http://www.berjjet.se/wp-content/uploads/2018/01/Hellclimber_BlockBreakdown.jpg” show_in_lightbox=”off” url_new_window=”off” use_overlay=”off” animation=”off” sticky=”off” align=”left” force_fullwidth=”off” always_center_on_mobile=”on” use_border_color=”off” border_color=”#ffffff” border_style=”solid”] [/et_pb_image][/et_pb_column][/et_pb_row][et_pb_row admin_label=”Row” make_fullwidth=”off” use_custom_width=”off” width_unit=”off” custom_width_px=”1080px” custom_width_percent=”80%” use_custom_gutter=”off” gutter_width=”2″ custom_padding=”52px|0px|58px|0px” padding_mobile=”off” allow_player_pause=”off” parallax=”off” parallax_method=”on” make_equal=”off” column_padding_mobile=”on” parallax_1=”off” parallax_method_1=”on” parallax_2=”off” parallax_method_2=”on” parallax_3=”off” parallax_method_3=”on” parallax_4=”off” parallax_method_4=”on” disabled=”off”][et_pb_column type=”4_4″][et_pb_image admin_label=”Image” src=”http://www.berjjet.se/wp-content/uploads/2018/01/HellChart.png” show_in_lightbox=”off” url_new_window=”off” use_overlay=”off” animation=”off” sticky=”off” align=”center” force_fullwidth=”off” always_center_on_mobile=”on” use_border_color=”off” border_color=”#ffffff” border_style=”solid”] [/et_pb_image][/et_pb_column][/et_pb_row][et_pb_row admin_label=”Row”][et_pb_column type=”4_4″][et_pb_text admin_label=”Text” background_layout=”dark” text_orientation=”left” text_font_size=”18″ use_border_color=”off” border_color=”#ffffff” border_style=”solid”]

Level Generator C# Code

[/et_pb_text][et_pb_image admin_label=”Image” src=”http://www.berjjet.se/wp-content/uploads/2018/01/HellCode.png” show_in_lightbox=”off” url_new_window=”off” use_overlay=”off” animation=”off” sticky=”off” align=”center” force_fullwidth=”off” always_center_on_mobile=”on” use_border_color=”off” border_color=”#ffffff” border_style=”solid”] [/et_pb_image][/et_pb_column][/et_pb_row][/et_pb_section]