An agility focused, rocket propelled, speed running game.
Created by a team of sixteen in a year, Kickshot is an homage to the rocket-jumping of Quake re-imagined in a slick new environment. Speed run through floating islands or the sandstone cliffs of the desert level using your rockets and grappling abilities.
Although my official title was engineer on Kickshot, I wore many different hats throughout the development process from desiging UI/UX to modelling environment art. Here are some of the highlights of the sections I worked on and a little insight into my thought process when creating the assets. Be sure to click on the images to see the full gallery.
Through an interative collaborative process, I developed the title, world select, and individual level select screens. In accordance with our project specs I kept each screen as minimal as possible separating complexity into individual screens. To maintain consistency, every clickable element highlights/hovers with the same color scheme and animations. The entire multi-screen setup was contained in one Unity scene and transitions were implemented using a cubic easing function to interpolate between camera positions.
Click on the image the right to see a gallery of all screens created.
Inspired by minimalist art styles like Cluster Truck and The Witness, our team decided to create the world of Kickshot in their image by reducing all unnecessary details. That choice allowed for increased readability at high speeds so players wouldn't have too hard a time with the grappling mechanics. To supplement the reduced details, all paths to complete the levels are outlined by black stones to guide the player when lost. Albeit unneeded on such a simplistic game, I optimized the assets by making the rocks and grassy models use the same material only with differing UV maps.
While the islands themselves were pretty, they were also very static. To solve this I decided to add waterfalls: a common sight in floating islands. The effect is achieved using several layers of meshes adding components of the waterfall. The script itself is rather simple, just a scrolling UV space for the blue background, while the foam is a little more interesting. The foam is achieved by sampling a perlin noise texture and discarding any fragments within a certain range. This range is tunable on the asset to allow for multiple scales of waterfall.
void surf (Input IN, inout SurfaceOutputStandard o) {
//Get proper UV coordinates from model
float2 dispUV = IN.uv_MainTex;
//Displace UV coord using _Time
dispUV.x += _Time * _USpeed;
dispUV.y += _Time * _VSpeed;
//Sample and return proper color
fixed4 c = tex2D (_MainTex, dispUV) * _Color;
o.Albedo = c.rgb;
o.Alpha = tex2D(_AlphaTex, dispUV).r;
}
void surf (Input IN, inout SurfaceOutputStandard o) {
//Sample proper UV coordinates
float2 dispUV = IN.uv_MainTex;
//Displace UV coords by _Time for scrolling effect
dispUV.x += _Time.r * _USpeed;
dispUV.y += _Time.r * _VSpeed;
//Sample noise texture
float4 c = tex2D (_MainTex, dispUV);
//Clamp return value and use full alpha for open spots
half ret = clamp((c.r - _AlphaCutoff) * 100.0, 0, 1);
o.Albedo = _Color.rgb;
o.Alpha = ret;
}
Invited to an indie showcase in the local Microsoft Store.
Invited to EAE Day, an end of the semester game showcase for the EAE program.
Showcased in the Microsoft booth at the Salt Lake City Gaming Con (2018).