violet viveiros

Writer & Narrative Designer

Access my resume here.

Below are examples of projects I’ve worked on. More information about my role on these teams is linked below.

Tired Turtle Games // Narrative Designer & Co-owner
More info…

digital janitors

Tired Turtle Games // Narrative Designer & Co-owner

In Digital Janitors, you play as the IT manager of a major soft drink company, and on the eve of Y2k, a virus wracks your company’s servers. Ascend Merter Tower, meet the unique characters that work there, and get to the bottom of the mystery. Why are these hackers targeting this company? How deep does the virus go? Discover the motive of the hack and uncover the story of Digital Janitors.

check it out on steam!

my role:

At Tired Turtle Games, I’m a co-owner as well as the Narrative Designer. This means I’m responsible for all the writing in the game, as well as programming major systems related to the narrative. For example, the dialogue system in the levels and in the overworld was programmed by me. In a small team like ours, we all wear a lot of hats, and as a co-operatively organized studio, I’m equally responsible in making decisions regarding the company’s business and future.

Mediakraft // Content Writer (March to September 2021)
More info…

mediakraft

Mediakraft // Content Writer (March to September 2021)

Playing to an audience of over 300,000, IT’S HISTORY is a production of Mediakraft that takes it’s viewers on a journey through history – discovering the world’s most important eras, the minds that changed everything and the most important inventions that helped define our world today.

my role:

In my time at Mediakraft, I was a major script writer for their various YouTube channels. Originally I covered a broader circuit of content but eventually my writing was primarily for It’s History, one of the company’s tentpole brands. During my tenure there I wrote 33 scripts, with variable length but averaging a 2 to 3 thousand words per script. Content had to be thoroughly researched and historically accurate, as well as entertaining and well-written. I was also responsible for a lot of my own research, formulating ideas and doing independent research.

I’ve included a select few of the scripts I’ve written below.

Partial Eclipse // Solo Developer (2022)
More info…

This project was about expanding upon a game I made. I had concepts to add a more expansive and complete narrative to my arcade-spaceship-fatherhood game, Partial Eclipse, but due to the time constraints, I didn’t end up adding it. Now, it’s in the game.

Adding further narrative to Partial Eclipse

Here’s a mockup I did of what the UI should look like on the chat function. A text based conversation on the left, and her social media profile on the right, a useful way of representing her internal thoughts and feelings to the player.

I also sketched out how those three responses represent changes behind the scenes for your daughter’s emotional state. This is tracked by one stat (respect) and changes based solely on your responses and gift giving.

The Final Product

https://virtualvolt.itch.io/partial-eclipse
Available for download on itch!

Now the game has major narrative systems in place AND they’re scalable! The “respect” system is totally functional, as well as the social media system. So if I wanted to make the game’s story twice as long, all I’d need to do is feed in more dialogue (and more pseudo-tweets) and it’ll work.

Here are some screenshots of it functioning.

Here’s the associated code running the chat system.

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

public class ChatScript : MonoBehaviour
{
    [Header("References")]
    public GameObject endCanvas;
    public List<TextMeshProUGUI> chats;
    public List<TextMeshProUGUI> posts;
    public List<TextMeshProUGUI> buttons;

    [Header("Data")]
    [Range(0,100)]
    public int respect;
    public List<string> allPosts;
    public List<string> allDialogue;
    public List<string> postTimeline;

       
    // Start is called before the first frame update
    void Start()
    {
        respect = SaveInfo.Instance.respect;
        postTimeline = SaveInfo.Instance.savedPosts;

        //Sets the Chat Text and the Button Text based on the current level
        string[] tempString;
        tempString = allDialogue[SaveInfo.Instance.level].Split(new char[] { '|' });
        for(int i = 0; i <= 7; i++)
        {
            if(i < 5)
            {
                chats[i].text = tempString[i];
            }
            else
            {
                buttons[i - 5].text = tempString[i];
            }
        }

        //Populates the social media timeline based on past posts and adds a new one based on current respect level.
        if(SaveInfo.Instance.level != 0)
        {
            allPosts.TrimExcess();
            respect /= allPosts.Count;
            postTimeline.Insert(0, allPosts[respect]);
            allPosts.Remove(allPosts[respect]);
        }
        for (int i = 0; i < 4; i++)
        {
            posts[i].text = postTimeline[i];
        }

        SaveInfo.Instance.savedPosts = postTimeline;
    }

    //Button function for a supportive response to her
    public void Supportive()
    {
        Debug.Log("Supportive. Respect: " + SaveInfo.Instance.respect);

        SaveInfo.Instance.respect = SaveInfo.Instance.respect + 10;

        Debug.Log("New respect: " + SaveInfo.Instance.respect);

        SaveInfo.Instance.level++;
        endCanvas.SetActive(true);


    }

    //Button function for an unsupportive response to her
    public void Unsupportive()
    {
        Debug.Log("Unsupportive. Respect: " + SaveInfo.Instance.respect);

        SaveInfo.Instance.respect = SaveInfo.Instance.respect - 10;

        Debug.Log("New respect: " + SaveInfo.Instance.respect);

        SaveInfo.Instance.level++;

        endCanvas.SetActive(true);
    }

    //Button function for a neutral response to her
    public void Neutral()
    {
        Debug.Log("Neutral. Respect: " + SaveInfo.Instance.respect);
        int tempRespectVal = (SaveInfo.Instance.respect / 10) - 5;
        float coinFlip = Random.Range(0, 2);
        if(coinFlip >= 1)
        {
            SaveInfo.Instance.respect = SaveInfo.Instance.respect - (10 + tempRespectVal);
        }
        else
        {
            SaveInfo.Instance.respect = SaveInfo.Instance.respect + (10 + tempRespectVal);
        }
        Debug.Log("New respect: " + SaveInfo.Instance.respect);

        SaveInfo.Instance.level++;

        endCanvas.SetActive(true);
    }

}
DVNC Tech // Game Design Intern (March to September 2020)
More info…

dvnc tech

DVNC Tech // Game Design Intern (March to September 2020)

DVNC Tech is an ambitious, young studio from Philadelphia taking on their first major commercial release, Monochrome RPG. Monochrome RPG is a cartoony turn-based RPG made unique with ’20s rubber-hose animation. Players take to the stage with a variety of toons to entertain your opponents and try to make it to work on time. Are you ready to joke and laugh your way through a raucous world of vaudevillian antics?

my role:

I worked on Monochrome RPG very early in development, so I was responsible for writing game design documents and level designs, as well as helping in early creative ideation. DVNC utilizes a unique approach to game development, relying on a mass of amateur work through their “Workshop” program. Would-be developers sign up and produce work for the game, with the promise of returns once the game has made money. One of the other important jobs I did at DVNC was manage the pipeline for hundreds of developers. The ability to maintain quality and timely work was paramount to the projects success.

This GDD was written up by me and Lillian Joyce, another intern at the time. Incorporated within the document is a lot of illustration work from other parts of the development team. This document is no longer representative of the game, but the work and ideas within were influential on development.

Personal Project // Tony Soprano x Overwatch
More info…

what if tony soprano was a character in overwatch?

A lot of times in games writing, you’ll have to take characters that already exist and apply them to specific game contexts. Whether that’s Spider-man in a fighting game, or an original character who needs a dozen barks, I wanted to prove I’m able to utilize this skill. I took Tony Soprano, from the popular HBO series The Sopranos, and reimagined his personality as a character in Blizzard’s popular hero-shooter Overwatch.

Chatter

Hero Selected
All due respect, you got no idea what it’s like to be number one.
During Set Up
You’re not family, but we’ll get it done.
Just when I thought I was out…
Waste management, complicated business.
Follow my lead, I’ve handled rows like this before.
Respawn
Can’t take out the boss that easy.
Marone, that hurts.
Not in Jersey anymore, eh?
It’s a young man’s game.
This woulda never happened in the old days.
I should’ve had Chris do this.
After this, I’m headed to Boca Raton.
Health Pack
Feels better.
That hits the spot.
Buona fortuna!
On Fire
Kind of a big deal around here.
Don’t mess with me!
This is my city!
Marone, I’m on fire!
Damage Boosted
Now that’s the good stuff.
Ayy, Tony’s here!
Let the boss handle this.
Thanks, Angie. I got this.
Woo, baby!
Discord Orb Received
Ubatz.
Voted Epic (5 Votes)
Nice to be appreciated.
Decent kickback, but you all still owe me.
I’m the capo regio.
Voted Legendary (10 Votes)
Dr. Melfi will love this.
Who else would’ve gotten it?
You know, I think this therapy is really helping.
Enemy Resurrection
Jesus, they’re back!
Resurrected
Can’t keep the Don down, eh?
Hey, I owe you one.
Thanks, doll.
Bada-bing, back in the fight.

Call-Outs

TriggerQuote
Hero ChangeYou needed a professional.
Sniper SightedA sniper, keep those heads down!
Enemy SightedGot eyes on ‘em!
I can see ‘em!
Turret SightedWatch out for that turret!
Enemy Has a TeleporterI’m thinking they got a teleporter.
Let’s take out that teleporter already!
Teleporter SightedFound the teleporter!
Ally DamagedHey! Watch it!
Don’t get yourself whacked!
Time Running Out (Defense)We’re almost done with this thing, hold it together.
Time Running Out (Attack)Come on, we have to go now! Almost outta time!
If we don’t get this now, we can forget about it!
Nano-BoostedDon’t mess with my family!
You can’t get to this family!

Mission-Specific

TriggerQuote
Point Contested (Defense)Giving me agita!
Point Being Captured (Defense)Marone, don’t let ‘em take this!
Capturing PointEh, goombas, let’s get this point already.
Locking down the objective.
Point LostHey, whadayagunnado?
Payload StuckDo I have to push this thing myself?
Paesan, let’s get this going!
Escorting Payload (Attack)Finally rolling on this job.
Payload Moving (Defense)Get ‘em off this thing!

Eliminations

Final Blow
Whacked.
One down.
Jamoke!
Can’t step to the boss.
Should’ve made Paulie do this.
I’m not cleaning that up.
(vs Pharah) Clipped your wings, heh.
(vs Soldier: 76 or Reinhardt or Torbjörn) Early retirement.
(vs Reaper) Not the first time I’ve beaten death.
(vs Sombra) Let’s keep it old-school.
(vs Roadhog) Now that’s a lotta gabagool.
(vs Reinhardt) He’s a real goomba.
(vs Winston) I may be a dope, but I won’t be beaten by an ape.
Solo Elimination
Usually I hire people to do that.
Kill Streak
I’ll whack a hundred more, where that came from.
Turret Elimination
Took out their turret!
Teleporter Elimination
Their teleporter’s busted.
Melee Final Blow
A Soprano beatdown.
Revenge
I don’t hold grudges, but I don’t forget.
Team Kill
Well, that’s that handled.

Communication

Hello
Hey.
How are ya?
Come stai?
Hey there.
Ciao.
Thank
Thank you.
Thanks.
Appreciate it.
I owe you.
Acknowledge
Got it.
I getcha.
Understood.
Uh-uh.
Need Healing
I need healing.
Need healing.
Group Up
Group up.
Stick with me.
Group up with me.
Get over here.
Ultimate Status (0-90%)
My ultimate is charging.
The Boss is almost ready.
Ultimate Status (100%)
The Boss is ready to get dirty.
My ultimate is ready.

Voice Lines

Default
Bada-bing.
Purchasable
Family.
Need some gabagool.
Hey, you’re not my goomar!
Woke up this morning…
Just when I thought I was out, they pull me back in.
I’m the boss of this family.
Stunade.
I love my paesanos.
What are you thinking?
What’ll you do for me?
Ciao, bella!
Summer Games (2016)
A don doesn’t wear shorts.
Summer Games (2017)
I’m sweating like a pig out here!
Halloween Terror (2016)
Boo! Hahaha, gotcha, hahaha.
Halloween Terror (2017)
I got a lot of skeletons.
Winter Wonderland (2016)
Buon Natale!
Winter Wonderland (2017)
Too cold for my line of work.
Year of the Rooster
I miss those ducks.
Year of the Dog
You’re a bunch of rabid dogs.

back

discord – volt#4444