Summary

Gameplay video

Title: Sled Builders

Engine: Unity 3D

Programming Languages: Unity Visual Script

Assets Used: Most 3D, 2D and Sound assets are from Unity Asset Store.

Year: 2024 ->

Steam page: https://store.steampowered.com/app/2828850/Sled_Builders/

X (Twitter): https://x.com/JanAmuncaste

Sled Builders is a game where player can design sleds with physics-based building mechanics in first-person and then take the sled to slide trough different slopes (levels). Player can also modify slopes (levels) by adding static or dynamic objects on to the slopes (Level builder).

The goal of the project is to create a complete commercial game, publish it on the Steam platform and make a portfolio page for the game. The objective was to go through the entire process from the initial idea and concept to creating a Game Design Document (GDD) and then developing the game based on this document. By doing this, the aim was to learn the entire game development cycle from idea to release, including all the aspects involved in between, such as marketing, creating a store page, and establishing a social media presence.

About the project. Years ago, I played a mod called Sled Build in Garry's Mod. Later, I saw videos on YouTube where groups of friends were playing this mod, and I realized how much fun it was to play this type of game with friends. I decided that if I couldn't find any other games similar to Sled Build, I would create my own version and release it on Steam. After finding no similar games, I started developing Sled Builders. The concept of Sled Builders was promising because it would bring nostalgic memories to those who had played the Sled Build mod before, and for those who had never heard of Sled Build, the idea would be quite unique.

I began my project by outlining the features and mechanics I wanted to include in my game. I used the Sled Build mod as inspiration, analyzing its various aspects, from player movement to sled building. I examined the tools provided to players for building sleds, identifying what worked well in the mechanics and where I could make improvements. I documented my analysis and started sketching out my own version.

Prototype. First, I created an empty object for the player and added a capsule collider for player collision. Then, I added a camera as a child object and implemented basic mouselook logic for the camera. After implementing movement logic (using WASD keys for movement in different directions), my player prototype was ready for testing. Since many FPS games, including my reference game Sled Build, have jump and crouch abilities, I implemented those as well. Later I added ability to sprint.

After working on the player object, I began implementing the tools that the player can use to build sleds. The physics tool (magnet) uses a raycast from the center of the player's screen towards the point the player is pointing at. When the ray hits an object tagged as "item" (and later other tags such as "mount" and "other items"), the item is grabbed.

Initially, I set the grabbed objects to move with the mouse while the left mouse button is held down. If the left mouse button is released, the object falls. If the player holds the 'R' key while moving the mouse, the object rotates. Finally, pressing the right mouse button while grabbing the object freezes it in place.

I used the FixedUpdate method to move and rotate the objects. Each item object had a Rigidbody component attached to respond to physics. The Rigidbody component's freeze option was used to freeze objects in place.

The next tool was the blowtorch, which the player can use to weld objects together. Like the magnet, the blowtorch casts a ray, but instead of grabbing objects, it initializes a list and adds the hit object to that list. By moving the mouse, the player can add other items to the list. If the player moves backward (selecting the previously added item), the current object will be removed from the list.

Each item object has a slightly larger duplicate model with an orange transparent color as a child object. This child object is activated or deactivated based on whether the parent object is added to the list of objects to be welded. The items on the list will be welded together using the FixedJoint component, so the first item will be linked to the second, the second to the third, and so on. This way, each item remains an individual object but is physically linked to the others with the FixedJoint component. After player release left mouse button and more than one object is on the list object will be weld as described below and the list will be destroyed. Item object now will be set as child of an empty Sled object.

After adding the magnet and blowtorch tools and conducting extensive testing and tuning, I began building the first level. I wanted the first level to be simple, featuring a straight path with a huge jump towards the finish line. The purpose of this level was to define the overall look of the game world and the design of the levels in general. Additionally, the first level served as a testbed to fine-tune the sled building, sliding mechanics, and collisions. For more details about the first level, please refer to the Game Design Document (GDD) below.

While working on the level, I also added a bunch of items for sled building parts.

Another important item type, besides base items, was items that the player could use as a seat, referred to as "mounts." I implemented this new item type, "Mounts," with the same base logic as the other items. When the player points at a mount and presses the 'E' button, the player is mounted onto it. This is achieved by adding a new player object on to the scene that only has a camera with mouselook logic and removing the previous player object.

When the player wants to dismount, the process is reversed. The mounted player's position updates to match the position of the mount object's camera mount child object, making it appear as though the player is sitting on the mount.

By pressing the 'V' button, the player can switch the view from first-person to third-person perspective.

I also implemented air control for the sled. When the player is mounted on the sled and the sled is airborne, the player can rotate the sled in all directions using the WASD keys. The rotation direction is defined by the camera's orientation, so regardless of where the player is facing, the sled will rotate as the player intends.

At this point, I created a simple menu where the player can spawn items. By holding the Tab key, the player can open the menu, and by clicking an item, it will spawn in front of the player with the same rotation as the player object.

I also implemented UI elements like a timer, speedometer, and crosshair. The crosshair changes depending on what the player is pointing at. For example, when the player points at a mountable item, a mount icon will be displayed as the crosshair. The timer counts the duration of the current run and saves the time of the last run and the best run. The speedometer shows the speed in both kilometers and miles per hour.

After these updates, I added start and finish lines with the necessary logic.

Next, I implemented special items like boosters and some effects like trails. Trails are similar to base items with a few small differences.

For the booster item, players can define a button on the keyboard that activates the boost. Each boost can be activated from different keys or all on one key. The booster provides a boost for a fixed amount of time and can only be used once. It adds force to the rigidbodies of all the items linked to the parent sled object.

So what did I learn. Creating SledBuilders taught me a great deal about Unity's physics system. For example, I learned how to create detailed convex collision hulls, which Unity's physics engine requires. I discovered that this could be achieved by creating multiple convex collision hulls for a single item object, using a plugin from the asset store.

I also gained experience in making collision-based sounds in Unity, which was a new learning experience for me.

Beyond game development, I learned a lot about marketing and maintaining a social presence, as I had never uploaded my games to any marketplace before.

To improve my knowledge in this area, I took the "Full-time Game Dev" online course by Thomas Brush. Thomas teach about how to design games, how to write GDD and how to use Unity in general.

He emphasized the importance of having a social media presence even early in the game's development and advised starting marketing as soon as possible. Additionally, he taught how to create an outstanding Steam page for the game.

I also learned various aspects of Unity in general, including visual scripting and project management. Additionally, I became proficient in using visual planning tools like Milanote to organize and present ideas in a visual manner.

Next Steps. After completing the prototype, I was satisfied with the progress and began working on the content for the Steam page, including gameplay screenshots, videos, and descriptions. I also updated my social media platforms and gathered some feedback.

The next step is to polish the prototype and create a demo build for testers and Steam Next Fest. During this phase, I will also start implementing additional features, such as the Level Builder.

Game Design Document

Game Overview

Title: Sled Builders

Super Short Description: Physics-based sled-building game where only your imagination is the limit.

Short Description: 

Sled Builders invites you to dive into a winter wonderland with your friends in this exhilarating sled-building extravaganza! Unleash your creativity to design the ultimate sled, then take on your friends in a high-stakes race for victory. Maneuver through icy landscapes, striving to be the first to cross the finish line. Brace yourself for an adrenaline-fueled adventure as you envision, construct, and race your customized sleds in this thrilling winter challenge!

Long Description:

Embark on a thrilling winter adventure with your friends in this ultimate sled-building experience! Unleash your creativity to craft the perfect sled, then hit the slopes and race against your friends to secure victory. Navigate through freezing winter landscapes, aiming to be the first to conquer the finish line. Get ready for an adrenaline-packed ride as you imagine, build, and race your dream sleds in this exciting winter challenge! 


Physics based Sled Build


Design sleds by freely moving items, welding them together, and adding tactical elements to gain an advantage over your competitors.


Race Against your friends or the clock

Position your sled at the starting line, and when the lights flash green, the thrill is in your hands – it's just you and your sled, ready to conquer the challenge ahead.


But most Importantly: have fun!


Genre

Primary Genre: Creative, Racing

Secondary  Genre: Competitive

Target Audience

Age Group: 12-70

Language: English

Taste: Building Sleds with physics and racing, Garry’s Mod Sled Build

Target Player’s features: Creative mind, competitive, likes physics-based building

Gameplay Rewards

Winning a race

Fastest time

Craziest looking sled

Other Gameplay Mechanics

Player Movement: First-person movement

Half-life 2 like build physics

Spawn items and weld them together to make a sleds

Remove items

Save / Duplicate Sleds

Ignite some items for boost

What game can teach to player: 3D Perception, Physics (arcade way)


The Core Game Loop

The Loop

Step 1 Build Sled

Step 2 Race against yourself or your friends

Step 3 Repeat

The Primary Mechanic

Player will build sleds using different items and props. With these sleds player can race against clock or other players. Player can control the sled while the sled is in the air.  Also player can modify slopes by adding different props as static / dynamic obstacles (or ramps for example) onto the slope.

Half-Life 2 -style physics set to Sled build theme. Sled sliding physics and limited controls over the sled combined with racing against a clock or a friend online. (Sled Air control, Booster props)

Level Design

The game world is set in wintertime (snow on the ground, snowfall, auroras, nighttime/daytime.

Colors:

Level 01

A straight slope with a huge jump towards the end, resembling a ski jumping ramp. The player can achieve high speed due to the straightness of the slope.

Nighttime, snowfall, auroras.

Start - The area where the player builds the sleds and where the race starts.

Details - background story element, eye catcher and exception to rules (otherwise level consists of trees, rocks and grass except for this area).

Huge Jump - A specialty related to this level that has an impact on the gameplay. Huge rocks besides the jump forms a cliff where the jump is built on.

Start - The area where the player builds the sleds and where the race starts. Top of the hill area with open space where player builds sleds. Start line is highlighted as a red color to stand out from the rest. Log cabin to bring background story.

Colors: blue gradient, brown, green and red as highlight

Details and Huge jump - Background story element, eye catcher and exception to rules (otherwise level consists of trees, rocks and grass except for this area). Tent, campfire, snowy log and snowman tell a story that there might have/have been the spectators right on the best spot to spectate the sled race. Huge rocks which forms a cliff where the jump is

Huge Jump seen from the finish area. Jumps landing area and finish area are wider than the rest of the slope.