Torn

An image of Lok Tin's Torn profile, under the in-game username Per5eus.

Torn deserves a page of its own. To me, it is so much more than just a video game.

Torn is a text-based role-playing game made by Joe Chedburn over 20 years ago. Unlike other games, where you might sit down and play for an hour or two, Torn gaming sessions are much shorter, but you may check in multiple times a day. For example, you can spend your Energy to train in the gym, which would only take a few seconds. Upon depleting your Energy, it would take five real life hours to regenerate back to full. Hence, you would not stay online for those five hours but get on with your daily life, and only come back later in the day. Processes in Torn are very slow, as it is meant to be a long-term game. Education courses in-game can take somewhere between 1 to 3 real life weeks to complete. Bank investments can take up to 3 months before one collects interest and is able to withdraw. Skills are perfected over the course of multiple months or even years. Torn, being a crime-based game, is somewhat of a mix between reality and the game franchise Grand Theft Auto to outsiders. For a daily player, it is much more than that. In a sense, Torn is a socialising game. You meet lots of people, through forums, leasing properties, marriage, wars, special events, and more. You can choose to attack them, trade with them, or be friends with them. One crafts their own persona by different ways of social interaction. Players who write guides are well respected, while scammers are shunned, hated, and often bountied (verb, the act of putting a bounty on someone's head).

I first started playing Torn around 2020, eventually deleted my first account due to boredom. Curiosity got the best of me and I started a new account in 2021, wanting to see what more the game can offer. Once again, I grew bored and took a yearlong break before returning in April 2022. Since then, I have been playing it on a daily basis. What finally kept me from leaving the game? The answer is obvious: people. After my return in 2022, I contacted a trader I met back in 2021 named Mizak. Somehow, he remembered my name and we caught up.

In Torn, a faction is a group of people with common interests. Beginners may join a faction for protection from muggers, as members in a faction often fight on each other's behalf. Players looking for money may join warring factions that pair up against other warring factions and fight for a paycheck. Think of warring in Torn like sports. Two warring factions, or two sport teams, get matched up based on their rank (Bronze, Silver, Gold, Platinum). Throughout the next several hours or several days, the factions will relentlessly attack their opponents to gain points. Whichever faction that holds a specific lead in points wins, and both sides will receive a payout depending on performance (the winner gets better rewards). In my experience, wars can take somewhere between 9 hours to 3 days. The latter is obviously very tiring.

Additional note: Multiple factions with common interests can group up and form a family. A single faction can only have up to 100 players, but a family may consist of a few hundred.


Community

Back to talking about Mizak. Though we created our accounts at approximately the same time, my yearlong break put me significantly behind him. He became my mentor, teaching me about different aspects of the game while continuing to be my exclusive buyer. At the time, I joined a massive warring faction and met lots of great people, including Jynnx, who was my faction leader and is now a notable member in the Torn community. Eventually, Mizak invited me to serve in his faction. I joined him and became part of a small family.

As time passed, a rift grew between us and the family. Mizak and I felt that the leader of the family wanted to pursue different goals and sometimes carried a “toxic” attitude. Unfortunately, while there are most certainly nice people in Torn, many players are quite horrid. I have once shared to the said family my experience of getting scammed and losing my Steam account. More than one fellow member laughed in my face, unbelieving of my carelessness without a trace of sympathy (I was not asking for pity to begin with, but just to warn others of scams).

In September 2023, Mizak and I, along with a few friends, left the family and formed our own, originally called Sliders Syndicate but now renamed to The Syndicate. One of the main expectations of our members is to not start drama; they were not allowed to attack other active players or make enemies with anyone. There were a few bad apples in the last two years and we took our time to weed out rude players and those that broke the game's rules (for example, one is not allowed to have multiple accounts). During this time, I felt like I was working in the human resources department of a company. Tasked with recruiting fresh blood to our family, I had to host events to test the neophytes' participation and commitment to the game. Should any drama arise, for example, if an outsider repeatedly harrasses one of my members, I would intervene by asking them to stop, or even contact the offender's faction leader.

Here are some skills that I have picked up or improved during my time of being a faction leader in my family.

  • Solving disputes without escalation.
  • Sending concise newsletters/instructions. Emphasis on concise because I have noticed that attention span among most is very short *.
  • Reminding members to do or not do something without inflicting blame.
  • Being a down-to-earth leader and conversing with members like a friend, rather than a superior.
  • Admitting my own mistakes and correcting them.
  • Giving members incentives to encourage participation in events.

Over the course of around two years, we have grown the family from no more than a dozen, to being composed of six factions with 246 players at the time of writing. We have a Discord server designated for our members to chat in. I am proud to say that I manage most Discord-related things, including but not limited to creating new channels, general Discord troubleshooting, and introducing bots to make our lives a bit easier.

A Discord message showing a list of factions and leaders.
A roster of our factions and leaders in Discord. Per5eus is my username in Torn.

*I think the popular trend of short (less than a minute long) videos on Instagram, TikTok, and YouTube, has led to a significant decrease in attention span. People lack patience, getting bored of a video within seconds and scrolling to the next. They crave for content whenever they are waiting in line, have nothing to do, or watching a video game load. I speak from personal experience; I found myself scrolling a few Reels during game loading screens, when the process would have only taken about 30 seconds. This is unacceptable, considering that said Reels are often provocative, misleading, and carry very little educational value.


Computer Science in Torn

I am able to use my programming skills to assist the operation of my Torn family. Recently, we have been hosting a racing league. With a simple JavaScript function, I could make API calls to the game to retrieve the racing skill of an arbitrary number of players, and display the skill of each player in a Google Sheets. This was done not long after I discovered the power of API calls. It is very satisifying to automatically update information (that is otherwise only viewable in-game) of multiple players in a Google Sheets, by the press of a single button.

A Google Sheets displaying the racing skill of about 20 players.
Said Google Sheets. Clicking the image of the red button runs the JavaScript function below.
											
function rsUpdate() {
  // Set your active sheet
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("Racing Skill");

  // Function to generate API call based on given ID.
  function makeCall(id) {
    return "https://api.torn.com/user/"+id+"?selections=basic,personalstats&key=[redacted]";
  }

  // Get the JSON response from the API and save it as an object
  function makeJson(url) {
    return JSON.parse(UrlFetchApp.fetch(url).getContentText());
  }

  // Enter or update info for all racers.
  for (i = 2; i < 50; i++) {
    if (!sheet.getRange("A" + i).isBlank()) {
      sheet.getRange("B" + i).setValue(makeJson(makeCall(sheet.getRange("A" + i).getValue()))['name']);
      sheet.getRange("C" + i).setValue(makeJson(makeCall(sheet.getRange("A" + i).getValue())).personalstats['racingskill']);
    }
  }

  // Finish pending spreadsheet operations
  SpreadsheetApp.flush();
}
											
										

Next, we would like to keep score of each player in each of our 16 races. If there are 10 racers in a league, first place gets 10 points, second place gets 9 points, third place gets 8 points, and so on. In other words, points earned can be represented as number of racers + 1 - race placement. It is then a simple matter of putting this formula into the Google Sheets, such that the person filling in the race results would only need to record the race placements, and the formula will automatically calculate points earned for each racer.

A Google Sheets displaying the points earned for each racer in each race.
Cell B1 is aRacers in the formula. Just as an example, once cell F4 is appropriately filled, cell E4 will reflect the points earned for that player in that race. All of the "Points" columns will take care of themselves.

At the time of writing, I am working on a project for Mizak. It is going to be a website that makes API calls to the game, to fetch a list of our family's members. Then, on the website, "admins" can assign awards to any displayed member. The information of which member has which awards will mostly likely be saved in a .json file, so the next time one browses the said website, one can see new awards being assigned or removed.

Here is a prototype of the project.


Torn Gallery

I make splash pages for my Torn faction family. Usually Mizak gives me his expectations of the end product, and I will repeatedly send him different versions until one satisifies him. It is like designing something for a client.
Note: The word after "Discounted" is censored.
A banner I made for one of our factions in the family. I have made banners and splash pages for all the factions in our family, until new designs replaced mine somewhat recently. Note that Sliders Syndicate is our old family name.
I was warring with my old faction (before joining Mizak's family). raj, or raj_sinha, was a sworn enemy of my faction mates. raj happens to be our war opponent then. In the 1000th hit of our chain (an attack streak), Artanix defeats raj, netting us 640 war points. For context, the 1000th hit could have been performed on any war opponent, but doing it on the most hated individual gave us additional satisifaction. The chat on the lower-right corner was our immediate reaction.
I drew this by hand. I used it as my Torn profile signature for a while. The names written in blue were my Torn friends, some I have now lost contact with. Stygean was my first faction leader, but has gone inactive. As usual, Mizak's name is present.
Casual conversation with Mizak. We've known each other for around four years now. One of my most long-lasting online friendships. He sent me a T-shirt printed with a funny message in real life. I sent him a few Hong Kong coins to support his coin collection, and a handwritten card.

Torn really brought us together. He is of a different ethnicity and a completely different age than me. When I first met him, we did not even live on the same continent. Without the game, we would have never known of each other's existence.