Forums

Miscellaneous

Virtual Manager in 2019 og 2020

112913 Bubbles, FC Sunnyvale 10 February 2020, 16:37

I'm now finally able to come up for air, so it's time to look back at Virtualmanager in 2019, and look at where we're going in 2020.

Virtualmanager acquired in 2019!

One thing I didn't make a big deal out of is that in the summer of 2019, I went from being a regular employee of Playonic to owning all the shit: O Here, I'll tell you what made me do it, and some of the challenges that have been, both before and after.

A little history

For those of you who do not know the history of Virtual Manager, I will try to summarize here.

Virtual Manager was developed by Rasmus Nielsen, aka. The Dudes, as a hobby project next to his studies in 2004 and 2005. It quickly became popular and Rasmus started the company Playonic along with 3 others to run the game.

At the end of 2006, the old code could no longer cope with the pressure from the increasing number of users and it was decided to do a complete rewrite. Extra resources were needed, which led to the sale of 50% of the company to the "Freeway ApS" group at the beginning of 2007 and they started looking for an additional developer to hire.

This is where I come into the picture. At this point, I had just graduated from university with a computer science degree, and the job at Playonic was the first one I applied for. I thought it was incredibly exciting as Rasmus had ambitions to replace the old text-based match engine with one with players actually running around the pitch and playing something loosely resembling football ;) At university, I had just written my masters thesis in Machine Intelligence, so that quickly became my task.

The new version was a success, and in the next few years we saw tremendous growth. An additional developer was hired - first Rudi, who worked here for about a year and a half, and then "Rasmus 2" (yes, another Rasmus), who was hired in 2010.

But the success didn't last, and we gradually started to lose active user. We also had a tendency to embark on very large projects where we 3 coding nerds would focus more on the technical challenges rather than the entertainment value, for instance by making our own huge frameworks, which were then scrapped or rewritten completely before they were ever put to use. So even though we were 3 full-time employees, we didn't actually deliver all that many new features.

In 2013, "Rasmus 1" chose to quit because he wanted to start a fresh and make his own games in a new business without so many co-owners. This meant that the company no longer had a dedicated CEO, and I was suddenly in charge of running the game, still as a regular employee. I had to learn a whole lot of new stuff and that meant I had significantly less time to code, but we still had "Rasmus 2" full time. However, that didn't last long, because in 2014 the management chose to fire "Rasmus 2" to save on expenses. However, he chose to start as a freelance developer and that meant he continued to work for us, but only for a limited number of hours a month.

The decision to buy

So there I was on my own, trying to keep it all together. Over the years, the many co-owners had gone off on their own, and had their own projects, so they didn't have time to participate in the company's operations. Although, one of them was the CEO of Freeway for a number of years, and even played the game, so even though he didn't have much time to spare, I could at least catch him in the office for a chat until the day he changed jobs.

While it was exciting and challenging to suddenly be in charge of all day-to-day operations, it also started to wear on me after a few years. I spent 2 hours commuting and rarely vacationed. I had the "server watch" 24/7/365, and all the responsibility for running the game, but not the freedom to make decisions. I began to feel old, stressed out and exhausted, and as if I was in a job with no prospects because it seemed as if the owners had given up.

So, at the beginning of 2018, I was thinking of finding a new job, but I still didn't really want to leave Virtualmanager, which has been a part of my life for 12 years. The first years I worked here it was a really cool job and I didn't want to just bail out, so instead the idea of ​​buying into the business arose. Then started a very long process towards my acquisition. First, I spent a lot of time analyzing the company bottom to work out if it would financially wise to buy into it at all. In time, it occurred to me that if it was to work, I had to aim for an acquisition of the whole company so I could have the freedom to make major changes in the company's operations, its expenses, and the way I work.

After deciding that this was what I wanted, there followed a lengthy process of negotiations, consulting with smart people to help me with the details of the acquisition and company structure, securing financing, and the practicalities of the transfer of ownership. But even once all the papers had been signed and the payments transferred, the process was far from complete.

What have I been up to after the acquisition?

As I said, I have always just been a regular employee here at the company, so buying companies is not exactly something I do every day. But I had jumped into the deep in and put my entire savings at risk, so I had to pull up my sleeves and get on with the many tasks still to be done and very quickly teach myself a whole lot about running a business.

And, there was plenty of work to do:

Server move

The first big task that Rasmus and I threw ourselves over after the acquisition was of course server move. We needed to move the game off of Freeway's servers and onto our own. After a lot of prep work, we were ready to move on August 12. It went off without any disasters but in the months that followed there was still a lot of work to fix the issues that arose from the move.

Upgrading old software

Immediately after the move I decided that it was absolutely necessary to upgrade all of the outdated software that the site was running on. After having just blown all my savings on buying the company, funnily enough I started to worry about what could happen seeing we were running on software that was so old that it no longer got security updates :O

In fact, back in 2014, we had had started working this upgrade to Rails 4. But when we were well into the work, we were told by the highers ups to put it aside and instead working on SEO and others promotional measures to address a declining membership. It was intended that the upgrade work would resume later, but it never did. So, it was clear that this upgrade had gone well over time and could not be postponed any longer.

We upgraded from Rails 3.2 to 4.2, and from Ruby 2.3.8 to Ruby 2.4.7, which was huge job. In addition, we went over a large number of 3rd party javascript libraries such as jQuery, Backbone, Underscore, Prototype, various different graph libraries, and much more, and either upgraded or completely removed them.

Review of all external services and expenses

When we were part of Freeway, we also had to use all the same services as them. For a large company, it made good sense to standardize across all their subsidiaries, but Virtualmanager has always been the odd one out compared to our sister companies. For example, while all the others used .NET and Windows servers, we use Ruby on Rails and Linux servers. The office space was also not optimal since I live an hour, an still had to come in, even though I was the only employee.

This meant that we had a lot of fixed costs, which I thought were wasteful, and external services, which I found difficult to work with. Therefore, I went about upending every single expense and external service. Server hosting, domain hosting, bookkeeping system, payroll system, office space, and insurance have all been replaced by ones which are both much better suited to Playonic and Virtualmanager, and in many cases are cheaper. Of course, changing over to of all these new systems and suppliers required quite a bit of work.

A ton of ​​administrative tasks after the acquisition

When a company changes its owner, CEO and address, there are quite a few external services and accounts with suppliers, incl. domains, Paypal, bank connections, etc. the need to be transferred. In several cases, it proved to be significantly more troublesome than one might think. I will spare you the details, but I can promise you it was a relief once everything was finally squared away.

Accounting

I decided that I would handle the daily bookkeeping myself, because it was important for me to have a complete understanding of that part of the business, even if I decide to hire a bookkeeper again in the future. And let me tell you, there was a lot to learn, seeing as how I was starting with zero knowledge of bookkeeping.

For example, we sell services to customers both inside and outside the EU, in 4 different currencies and through 5 different payment solutions. We receive credit notes on advertising income in foreign currencies, where the money is only transferred 1-2 months later, with the exchange rate changing in the meantime, which must then be taken into account. We buy services both inside and outside the EU, with and without VAT, and in different currencies, and much more. So there have been a lot of very different scenarios that I had to learn to deal with correctly.

As I got the hang of it, I discovered that a lot of daily bookkeeping could be automated. That's one of the advantages of me insisting on doing the bookkeeping myself, because a programmer doesn't have to do the same task very many times in a row before thinking "heck no, I need to code a script to do this". So I spent quite a bit of time developing tools to help me with the repetitive work of accounting, and it was well spent, because it means that bookkeeping now only takes me a few hours per month to do.

Finally done!

PHEEEEWWWWW! ....It is now February 2020, and I can finally breathe a sigh of relief that I have now finally finished the many tasks that followed in the wake of the acquisition. Although you haven't heard anything about it, for me it's been a 2 year journey from when I first started to consider buying into the company and up until now.

The last major task on my list was to write this blog post.

Obviously, it has taken up a lot of my attention for a long time, which has certainly been felt in how long it has taken to develop new things, especially youth squads. But, I'm sure it will prove to have been worth all the effort and delays in the long run.

What will happen in 2020?

Youth squads!

Youth squads, youth squads youth squads!

Youth squads have been postponed several times already because of other, more pressing tasks. As mentioned, most of my attention throughout 2019 and also a good portion of 2018 has been on first getting the acquisition done and then dealing with the many major tasks that came in the wake of it.

Occasionally I have been able to work on youth squads, but only in small chunks, but now we are finally ready to start launching it. In January, we have implemented a "beta sign-up system", which allows those interested to register as beta testers, after which we can let people in a little at a time.

For example, we will start by letting in 10% of the people who registered, and then correct any bugs and add improvements based on their feedback. Then we let in some more, and repeat. The beta system is made in a way that means we can use it for other features in the future.

We will start beta signups this week.

More software updates

The updates we made this summer and fall were only the most necessary to ensure that we were no longer using any outdated software.

But, we're still fairly far behind, and we'll soon have to start on the bunch of upgrades. This time around, it's all about giving the game's technical foundation an overhaul. The latest versions of Ruby on Rails include a host of features that we're really looking forward to, as they can make many of the future developments easier.

Match viewer, simulator and tactics

In all the years I've worked here, the development of the match simulator was always my favorite job to do, both the version that came in 2007 and the new one that came in 2013. When the 2013 version finally came out, we were all exhausted and the bosses pushed for other things, so since then not much has been done to it.

I have an old TODO list from 2012-2013 with a lot of improvements and fixes that I had been wanting to work on after the release, but I never had the chance.

The great thing about the current match simulator is that its architecture is extremely flexible and modular. Player behavior consists of many small modules that are pieced together and mixed to achieve the final result. It is relatively easy to add new modules or optimize on specific aspects of their behavior.

This flexibility, for example, made it surprisingly easy, that time we had the idea to add a streaker in matches on April Fool's. It took about a day's time to code the streaker's behavior and the players' reaction to him.

Some of the things that are high on my wish list are:

  1. Match viewer: The lack of playback controls makes it arduous to investigate bugs and make corrections and improvements. For example, if someone reports a strange incident in the 86th minute of the match, it really sucks to have to sit there and wait, and if you miss what happened, you have to start over. At a minimum, I would like to implement the ability to jump between (and link to) the individual highlights.

  2. Tactics: When we made the 2013 version, I never liked the "play style" setting, and I still don't, because it took aspects of the tactics that used to be individual settings and tried to bring them together into a "package deal". Take for example "long ball" play style. Usually, a player will only pass the ball to teammates who are at least 5 meters away and a maximum of 20 meters away. If you set the play style to "long ball" this will change to 7.5m minimum and 60m maximum. They will also be able to pass the ball further backwards. The "shoot on sight" play style means that one's players will be able to attempt a finish when they are 26 meter away from goal, as opposed to the normal 18 meters. But what if you want to do both? You can't do that. Therefore, I would like to start off by removing "play style" and turn it into individual settings so that you can mix and match your own play style. It is also possible that at some point I'll look into whether individual player instructions can be implemented.

  3. Match simulator: I really want to go through my old list of things that I already realized 7 years ago were either missing or needed improvement. And, now that we have moved to a new server host, we have access to plenty of cheap computing power, which means that some of the decisions we made to save resources can be reconsidered.

Responsive design

In 2020, it's just not acceptable that Virtual Manager doesn't work well on mobile devices.

Recently, we reached a turning point: over half of our page views now come from mobile devices. That's pretty incredible, when you consider that the only mobile-friendly page on the site is the front page.

When I started considering the acquisition, I also spent a lot of time delving deep into the database and trying to find information that could tell me if it would even be wise to do. I was particularly interested in finding out if there was any chance of reversing the downwards trend and getting the membership numbers to rise again.

One thing that was a bit of an eye opener was data on the retention of new users, which showed that a frighteningly high percentage stops after trying the game for less than 1 minute. Virtual Manager is a huge game and you can't get a proper impression of the gameplay in under 1 minute. When you leave after such a short time, then by definition, it comes down to first impressions.

There are a lot of people who stay on for years once they get started in the game, so it's a shame that the first impression scares so many away in the first few minutes. This means, among other things, that most of the money we spend on marketing is wasted. This is another good reason to overhaul the game's design and make it mobile-friendly.

Client performance optimization

Client performance is about how fast the site runs on one's own device, and this is especially important on mobile. According to statistics collected by Google, 50% of mobile users will just leave if a page takes more than 3 seconds before it is loaded and ready to use.

Client performance cannot be improved by adding faster servers, since it is the client - your own device and connection - which is the bottleneck. But, there are a lot of clever things we can do to improve it. The most important thing is to make sure that we only send the bare essential resources to your device so it doesn't waste time retrieving, parsing, and executing things that are not needed.

The latest versions of Ruby on Rails include a number of features that will make this easier, and once we start working on the responsive design, we will start from a blank slate and be very strict about the resources we send you.

Focus on development in smaller chunks

The large time-consuming projects are annoying for you managers to wait for, exhausting for us developers, and risky to roll out. Therefore, the strategy in the future will be to do everything we can to split up large projects so that they can be released in smaller chunks.

For example, the improvements to the game simulator and tactics can be easily split up into jobs, so that we can, for example, release an improvement to throw-ins one week, and then a tweak to a tactics setting the week after, etc. When it comes to the responsive design we will be able to release a redesign to a handful of pages at a time, and client performance optimizations will also be rolled out little by little.

Onwards!

For me, it's pretty wild that I'm now the owner of the company I was hired by just after I graduating university. It has been a long journey, and sometimes very hard, not least this past year.

It's also great that Virtual Manager still exists, that there are managers who have been here longer than myself, and that so many people know the game. For instance, there were employees at our new accountants office, who had played Virtual Manager when they were younger, and even my financial advisor at the bank, who was somewhat star struck when I was there last year to talk about my plans and about financing.

So now that the dust has settled, our task is to freshen up Virtual Manager get it technically up-to-date, optimize things that need it and implement new features that will keep the game exciting for a long time to come. My hope and ambition is that we can reverse the trend and attract new managers, retain all of you who play it today, and perhaps convince some of the tens of thousands of former Virtual Manager users to return.

My thanks to all of you managers and crew who make it possible!