YouTube Let's Player Simulator 2016 is a business management / simulation game I created in 2016. Its name is somewhat in jest, as the original game - created two years earlier - was intended to be a joke. The exact details of that are documented in a blog post I wrote when I released the source code to this game. In short, the first game was made quickly as a one-off joke, but became unexpectedly popular, which motivated a serious sequel. Though this sequel didn't enjoy the heights of popularity that the first did (the 2014 edition currently sitting at 371k plays), I am far more proud of it as I believe its modest success (around 45k) to be truly deserved.

In this game, you play a soon-to-be YouTube superstar, as you play your way to success by creating videos about the latest games. It was developed in ActionScript 3, the scripting language of Flash - though it wasn't developed with the Flash editor itself, but rather the free IDE FlashDevelop. This code-heavy approach turned out to be unwise, and a lot of coding time was wasted doing in code what would be much easier in an editor suited to content - like Flash. This project certainly taught me the importance of using all the tools available to me - instead of trying to dig myself out of a hole with more code.

This project was the last thing I completed before starting at Becker College. It was released just four days before the start of my Freshman semester. As such, it could be considered the last project of my High School career.

Highlight: Procedural Generation

The part of this game that makes it stand out from any other simulation game of this caliber is its procedural generation. The player can, in theory, continue playing this game as long as they want - and new games have to be released every few days to make the game keep flowing. That means there has to be a (realistically) infinite number of possible games that can be released - so procedural generation was a must. In addition, I wanted to add a "community" mechanic, where players could see other videos being released by other (AI) players. This would help the game feel more "real" and deep, instead of like a glorified spreadsheet.

For text generation, I chose to use Rant. Rant is a procedural text generation language that I worked on semi-concurrently with this project. It was a natural choice for generating video game titles and studio names. Rant is written in C#, though, so I had to port a subset of the language to AS3. This turned out to be pretty simple, but only because I'd already done this for JavaScript (documented in this article), and AS3 is a superset of JavaScript. The resulting Rant patterns (found here) power the procedural text of this game.

An example of the games screen in YTLPSIM 2016. The in-game list of released video games. The game titles and company names are generated with Rant.

I didn't just want procedural text generation, though - I wanted games to be more than just names and ratings. To solve this, I also created a method for generating posters procedurally. You can see one in the image above - it doesn't look like any video game cover art I've ever seen, but it accomplishes the task of being a unique image that adds flavor to the game's UI. Poster generation was accomplished through a collection of hundreds of public domain stock photos, cropped to the size of a poster. A base image would be selected, and then a random number of filters would be applied to the base image. These filters might invert or posterize the image, or they might combine it with other random images.

Some example posters generated by the game. A selection of game posters generated for an eclectic bunch of titles.

Community video thumbnails were also generated, through a simpler version of the above method (no filters):

A view of the community screen. A sample of videos from the Community screen. All these videos are randomly generated. If the player is successful enough, their videos will show up here too.