How are programmers made? Some of them have always dreamed of becoming one, so they finished proper courses and eventually found their dream jobs. Some didn’t plan on doing that, but eventually got tired of their jobs and decided to pursue this new path. Some… played a video game about breaking and placing blocks.
My name is Daniel Wegner and I’m a retired moderator and host from the /r/ultrahardcore subreddit (http://www.reddit.com/r/ultrahardcore). In this article, I’d like to present some observations I’ve made during my 3 years in that community.
The UltraHardcore Community
Let’s not get ahead of ourselves though and start from the beginning. The mentioned community is gathered around a very specific gamemode in a game called Minecraft. Before I get down to the details, let me quickly explain what Minecraft alone is.
Minecraft is a game where the player starts in a world made out of blocks (the game tries to make it look like the real world). He has to survive by fighting monsters, gathering resources, crafting his tools etc. There’s no real end goal in the game. It allows a lot of creativity – many players create complicated in-game contraptions or structures. The multiplayer feature allows players to cooperate… or to fight each other. A lot of servers are based on player versus player combat, which many players enjoy.
The UltraHardcore (UHC for short) Community is based around the gamemode which makes the game more challenging. In standard Minecraft, the health of the player regenerates automatically when he is not hungry (his food bar is full or almost full). In UHC however, it does not – you have to craft items called Golden Apples, which require you to find gold first. This was invented by a group of YouTubers called Mindcrack and proved to be a real challenge at first. After watching 3 seasons of their series based on the idea, some viewers decided to create a place where games like this could be played on a regular basis. That’s when the /r/ultrahardcore subreddit first started.
The way it works is: someone buys a server, sets it up, opens it at a specific time and the game starts shortly. Most of the time a modified version of Minecraft server is used – either Bukkit or Spigot. Both implement the same API and allow users to create server-side plugins. At first, we had about 1 game per week, with about 10-20 players. Nowadays, there are a couple of them per hour and some gather over 100 players. A typical game lasts between 60-100 minutes.
In the classic (so called ‘Vanilla’) version, players are scattered in the same world and have to compete with each other to be the last man (or team) standing. To set up a server for this, some publicly available plugins can be used. For most of the hosts who decide to customize their games one way or another this is where the topic of this article starts for real.
To give you an example of such customization, let me bring up one of the oldest gamemodes the community has come up with – Moles. In this scenario, one of the players on each team becomes a mole (after about 15-20 minutes) and his goal is to kill his old teammates. He gets to pick one of the possible sets of items to help him achieve this goal and can communicate with other moles. Players on his team don’t know who the mole is and they have to guess to get rid of him.
To achieve this server behavior, where the mole is picked automatically, can choose a kit and communicate, a Java plugin for the server had to be made. This one, in particular, was made by the user under the name Bergasms, who at the time was already a full-time programmer. However, this was just one gamemode and by now users of the subreddit have come up with hundreds of them. At the same time, there are not many people who came to the community with the knowledge required to create plugins in Java. Also, gamemodes are one thing, hosts also want to customize their servers in other ways (for example: create a PvP practice arena, have a special sound played when a player dies, have the world for the game prepare itself automatically etc.). This is where other players took matters into their own hands.
First steps with Skript
Java, however, is not a simple language to learn for a teenager (we’re talking about players who are typically 13-18 years old). They usually discard it at first glance, because they want to achieve something simple in a small amount of time. This is where a language called Skript comes into play. Skript is actually a Java plugin of its own, which allows players to control the server using its own scripting language. Let me give you a quick example.
on rightclick: message "boom!"
This short script makes it so if a player rightclicks, it messages him. This alone would take a lot of lines of code in a Java plugin. Of course, most Skript scripts (also called ‘Skripts’ for short) are not this simple. A good example would be a scatter skript made by a user under the name Camaro6460. With a single command, you can scatter players on the server (all of them or select one) into a specific world, with a specific radius, around specific coordinates, with a specific minimum distance between players. This also takes into account the fact that players should not spawn in lava or underwater. In the end, it’s a pretty complicated piece of software. Just like most skript makers, Camaro6460 is not a professional programmer, but a teenager who learned the language during his time in the UHC Community. I asked the community about why they started to use this language, let’s look at some of the responses:
“I originally started using Skript because it seemed like an easier bridge to cross, than using Java for making little features here and there for a Minecraft server. It’s nice when you can just write something in 3 or 4 lines that would have otherwise taken you 15-20 lines in a plugin. It’s faster, easier, and was just all around more convenient with a much lower learning curve than Java.” – HunterWolf105
“About 3/4 months ago, I created a server. I had no idea how Skript functioned, so I took it upon myself to learn how. Initially I was not very good, I just copied skripts off the subreddit (…). However, as I progressed, my knowledge grew massively and I enjoyed it more. It’s always been about a journey of stretching my abilities and applying them.” – OrganizedMadness_
„I started using skripts because they were easier to modify or fix if anything had to be changed. I decided to self-teach myself some skripting so I didn’t have to rely on others to make skripts for me.„ – 016Nojr
„I had ideas for gamemodes and minigames and stuff, that I really wanted to make happen. I had a lot of time on my hands, so I figured it was as good a time as any to learn!” – bjrs493
In general, the average response mentioned how easy it is to use and how the hosts wanted to customize their games in one way or another. The age of skript makers in the poll ranged from 15 to 19 and most of them described themselves as very skilled in this area. I also asked them if they considered learning Java after Skript. Only one response discarded this possibility completely, others have at least considered that idea or are already in the process of learning.
One step further
While Skript is the most popular way of implementing gamemodes and customizing games, Java plugins are still there, I have already mentioned the Mole plugin. Some of the oldest plugins in the community were created by 2 users – Bergasms and Ghowden. Unlike the previous group, they didn’t learn a new language (or to program at all) because of their time in the community – they were already skilled programmers before. A good example of someone who learned Java specifically for use in plugins and uses his skills a lot to work on his server, is a user under the name LeonTG77. At the age of 16, he already implemented many existing scenarios on his own and his server is running mostly on his own code. Let’s take a look at his reasons behind learning Java.
„I used to own a survival/pvp network, where my plan was to have every single server type on it and I was tired of never finding plugins that did what I wanted. I wanted to make my own, I also had wanted to try out coding for a while, so one day, on Feb 2014, I was like “fuck it, what can go wrong by trying?” and started watching coding tutorials.” – LeonTG77
LeonTG77 also expressed his interest in becoming a professional programmer one day. That wasn’t the case for all skript makers, but some of them consider this as a potential path in life. Only two users said straight up, that they are not interested and one of them was the same person who doesn’t want to learn Java.
Pressure, deadlines and teamworking
There’s also another thing that needs mentioning. Becoming a skilled programmer is one thing, another is working in the IT environment. Very often we are under a lot of pressure, because of deadlines or that something simply broke at the worst possible time. It’s not different when you host games for the UHC Community. After you open the game and there are over a 100 people on your server, you should better be sure, that you prepared everything perfectly. There were many instances of hosts not testing their plugins/skripts and paying the price later. The players are not very patient in general, if something goes wrong, they will start complaining, making your job even more difficult than it already is. At this point you are basically facing an angry mob, coming after you with torches and pitchforks. Many faced such experience and learned the importance of two things: testing your code and working under pressure (because sometimes you can fix your mistake on the go if you don’t panic). Mistakes in the code or the server’s configuration are not the only source of said pressure – there are also cheaters, servers get DDoSed and sometimes it’s just players complaining. HunterWolf105, who I quoted earlier, is a system administrator for a few Minecraft server networks. Despite being relatively young (18), he already faces the usual challenges of an administrator.
„I do feel a lot of pressure all day, every day. Even the slightest blip or performance problem is a serious problem for networks and guess who gets to fix that? I’m basically on call all day and night, so if anything goes wrong, I’m going to get woken up by my monitoring system so I’ll have to fix it.” – HunterWolf105
I mentioned Minecraft server networks. Some hosts decided that they can’t afford to pay for their own server, don’t want to set it up or simply prefer to work with others. They formed such networks and host games under a common name. Just to give you a few examples: Arctic, Harbored, Psychedelic, Sankakkei. If someone is a part of such a network, he is required to work with his team, while at the same time everyone has individual responsibilities – spectating for cheaters, making plugins/skripts, hosting etc. Of course, there are also people who have to manage those teams, which gives them a lot of useful experience for the future.
As you can see, many young people from the /r/ultrahardcore community developed skills that will help them if they choose the IT path in their lives. Not many of them ever planned to learn anything related to programming and yet it happened ‘on its own’ when they simply wanted to play their favorite game the way they wished. They are teenagers, this gives them a huge headstart and a lot of time to learn even more. I’m sure that if they start to pursue a career in IT, they will have an easier time thanks to their engagement in the community. One day someone will ask them about how they got interested in programming and their answer will be: ‘I played a game about breaking and placing blocks’.