Linebound


Duration: 4 Weeks

Engine: Unity

The poster for the game "Linebound" by Oliver Svensson.

Team Size: 7

Duration: 4 Weeks

Tools used: Unity, Jira, Miro, Perforce

Tools used: Unity, Jira, Miro, Perforce

Linebound is a cooperative puzzle platformer where one player controls the artist, interacting with the game-world through drawing, while the other plays as Sketch, a doodle come to life.

Roles & Responsibilities

Lead Designer
Worked as a design director in collaboration with PO. Many if not all design choices ran through me, as I helmed an effort to keep the game’s vison coherent and its scope manageable. I actively made an effort to work in and with many roles.
Pitched the game to the team through a prototype made in 3 days, easily selling the game and how it could work before pre-production even began.

Gameplay Designer
Designed and balanced all player controls and movement. Implemented said design in collaboration with gameplay programmer based on previously made prototype.

Systems Designer
Designed and balanced the crayon and its colors, abilities and resource gauge.

Level Designer
Created, playtested and reworked 6/15 levels present in the game, focusing mostly on early game onboarding and puzzle design.

SCRUM Master
Upheld and reinforced SCRUM board and usage via Jira.

Prototype

Before production of Linebound kicked off, I had just some months prior prototyped a simple game concept in Unity of a 2D platformer with the gimmick of the player drawing their own platforms. An idea similar to some Nintendo published DS games like “Kirby and the Canvas Curse” and flash games like “Linerider”.

During a period of 3 days I was able to quickly design, prototype and playtest this project, to a degree that in my mind fully sells the games base concept.
A physics based 2D platformer where you draw your own platforms, behaving differently when drawn in various ways (vertical, horizontal, curved).

This came to be the basis for what became Linebound, as it was used to pitch the game concept to the rest of the group.
The clear distinction however was that we where to turn this singleplayer experience into a co-op one while giving it a unique visual aesthetic and more engaging mechanics.

Line Code Snippet

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Line : MonoBehaviour
{
    [SerializeField] private LineRenderer _renderer;
    [SerializeField] private EdgeCollider2D _collider;

    private readonly List _points = new List();

    void Start()
    {
        _collider.transform.position -= transform.position;
    }

    void Update()
    {
        if (Input.GetMouseButtonDown(1))
        {
            Destroy(GameObject.FindWithTag("Line"));
        }
    }

    public void SetPosition(Vector2 pos)
    {
        if(!CanAppend(pos)) return;

        _points.Add(pos);

        _renderer.positionCount++;
        _renderer.SetPosition(_renderer.positionCount-1,pos);

        _collider.points = _points.ToArray();
    }

    private bool CanAppend(Vector2 pos)
    {
        if (_renderer.positionCount == 0) return true;

        return Vector2.Distance(_renderer.GetPosition(_renderer.positionCount - 1), pos) > DrawManager.RESOLUTION;
    }
}
      
Draw Manager Snippet

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class DrawManager : MonoBehaviour
{
    private Camera _cam;
    [SerializeField] private Line _linePrefab;

    public const float RESOLUTION = 0.1f;

    private Line _currentLine;

    void Start()
    {
        _cam = Camera.main;
    }

    // Update is called once per frame
    void Update()
    {
        Vector2 mousePos = _cam.ScreenToWorldPoint(Input.mousePosition);

        if (Input.GetMouseButtonDown(0))
        {
            _currentLine = Instantiate(_linePrefab, mousePos, Quaternion.identity);
        }

        if (Input.GetMouseButton(0))
        {
            if (!_currentLine) return;
            
            _currentLine.SetPosition(mousePos);
        }
    }
}
      

Gameplay Design

Linebound Movement Showcase
Turnaround Speed Showcase
Linebound Drawing Showcase

Throughout the project I had ownership of the design and feel of all game mechanics. This includes the player controller, player abilities and game balancing. I was also able to lead multiple playtest to inform and iterate on all of my design.

As Linebound is a physics based platformer, I found it imperative that our player felt like they had some real weight when navigating our levels. As can be seen in the final movement controller there a re a lot of options for gravity, friction and momentum. All aspects of the controller have been fine tuned to find our balance between usability, responsiveness and “fun”. Playtesting it helped greatly as well, as certain aspects of it where added after we received feedback or “wants” by our fellow designers. One such addition is the turnaround speed slider that increases player friction on the ground if they suddenly turn around. This addition helps the player navigate and more importantly stay on smaller platforms in harder areas of the game, where without it they would more easily fall of due to the carried momentum from their jump.

The player’s drawing tools where also designed with some clear intent. As we have 3 different crayons, each acting in a unique way, we wanted to portray that to the player. The red and green crayon for example affect how you move, so having them be operated through point-to-point drawing felt more natural. Not only does it make drawing specific angles easier but it also inadvertently informs our players of a shift from the norm set by the blue crayon, that earlier in the game is drawn through free hand motion. In turn, as the blue crayon is the only one that does not directly influence the players movement, its unique functionality is that of a less restricted canvas, having the player be able to draw more complex shapes to achieve their goals. This is not obvious to players directly as they start their playthrough, but is rather a reshaping of how they approach and understand a core mechanic of the game as it progresses.

Early on in Linebounds development it was decided upon that the games scope where to be on the lower end. This was due to the fact that our group lacked in numbers, with about half the amount of programmers of any other given group. This together with our time constraint lead to production having to occur very rapidly, and since our gameplay programmer Alex Strandh wanted to tackle the coding for our player movement himself he was tasked to do so instead of me. In hindsight I’d really wish for this not to be the case, not in any part due to Alex as I think he did a great job, but due to me losing a valuable learning opportunity. I still worked closely in tandem with him in the creation of what became the character controller, both via the one from my own prototype as well as through a design document detailing all aspects necessary for a fluid feeling 2D controller that I created.

Movement Controllers

Prototype
Linebound Final Iteration
Prototype

Gameplay Videos

Movement Showcase
Turnaround Speed
Drawing Showcase
Linebound Final Iteration

Level Design

I was the sole level designer for levels 3, 4, 5, 6, 9 and 13. I also collaborated with others on levels 1 and 2, as well as a unreleased version of level 14. I was in charge of early game onboarding and making sure that the player had enough time and space to understand each mechanic.

Each level would start as a rough outline of intended difficulty, what skill should be tested by the player and about where it should take place in the level order. After these guidelines where set in place, each designer was free to try whatever they wanted. Playtest where held often between designers to make sure everyone was on the right track towards the type of level they needed to produce.

With my overall task of onboarding the different colors to the player, I combined the already established “dot” indicator found in levels 1 and 2 together with level design that facilitated that the player would have a certain level of understanding of the color before they could proceed. My levels surrounding these skill checks are intended to hint to the player where to go and what they might be missing to get there, to early on build a “want” for the player.
An example of this would be seeing a wall to high to jump over in level 5, to introduce the “want” of a higher jump, making the player feel like they acquired something that they already wanted with the unlock of the green “jump-pad” crayon.

I believe my best design work is in levels 4 and 9, with both exploring the mechanic of erasing, a mechanic not really found in other levels. A system to have persistent, pre-drawn crayon lines was created by myself to make sure that these levels could exist the way I intended them to. I particularly like these levels as during playtest, it was very rewarding seeing players get their big “AHA!” moment when they figured out what to do in these levels. It was also very entertaining seeing just how differently players solved the levels after this moment, as they could vary quite a lot.

The picture found in the “Level Design Process” drop-down to the left is what my usual level design process would look like, from a rough sketch based on an idea, puzzle concept or learning outcome to a fully implemented level in the game with all art assets included.

Level 4 Playthrough
Level 9 Playthrough

Planning

Level Design Process
Detailed Level Sketch

Level Playthroughs

Level 4 Playthrough
Level 9 Playthrough

Main Takeaways

The main point that I will carry with me from Linebound is how we as a team approached and handled it. Entering the project and very early being able to locate and address what could have been major issues, like scope and manpower, started us and kept us on a very solid path. I believe myself to have been instrumental in this, and I whole heartedly believe that Linebound would not be nearly as tight and polished of an experience without my guidance and direction.

Linebound is also the first game I’ve ever been a part of to get an official Steam release. Presenting the game at various indie game hubs and marketing it where experiences I can uniquely hold it to. Having it also do as well as it did was a real highlight, with 32,000+ total players and a peak concurrent player count of 164 three months since launch. Seeing content creators, peers and friends laugh, scream and share the game have been my favorite part of it all. Having a game I made get this sort of reaction is something I could have only dreamed of.

Linebound started its life as a dinky little prototype, and made it all the way to Steam in just over 4 weeks. Having reached over 32,000 people, I do believe it to be, in some way, greater than the sum of its own parts. It might just be my sentimentality talking, but I think you can feel a real warmth from it, as something strikes me as particularly human about it.

A hand-drawn thank you note for the game "Linebound" with the text "Thank you for: 32,000+ players." It includes a simple smiling face drawing holding a marker, with decorative corner details.