The General Game Player

Reads: 484  | Likes: 0  | Shelves: 0  | Comments: 0

  • Facebook
  • Twitter
  • Reddit
  • Pinterest
  • Invite

More Details
Status: Finished  |  Genre: Science Fiction  |  House: Booksie Classic
A young man in the year 2043 sets out to design a general game playing algorithm but as it gets smarter it starts to do things he never imagined possible.

Submitted: January 08, 2016

A A A | A A A

Submitted: January 08, 2016



General game players are systems able to accept descriptions of arbitrary games at runtime and able to use such descriptions to play those games effectively without human intervention. In other words, they do not know the rules until the games start.

General Game Playing - Stanford University


Most people think that self aware machines will be purposely created by researchers in a controlled laboratory environment. The truth is these things almost always happen by accident, when a system becomes so complex it evolves into something more than it was originally intended to be. Consciousness has a way of bubbling to the surface of reality in places you would least expect it to show up. Not many people would have guessed that a college kid living in his parents basement would be the first person to create a self aware machine entity.

It all began in the year 2043. The average computer was so fast it makes a 2016 computer look like a calculator in comparison. As early as 2020 the fastest supercomputer on Earth already had enough power to simulate a human brain in real time. By the year 2043, the power in those supercomputers had been compressed down to the size of an average household computer. Yet despite such an abundance of computing power, the strong A.I. problem had still not been cracked. Simply having a computer as powerful as a human brain wasn't enough, the algorithm was the real issue.

For a long time researchers tried to study the way the human brain functioned and then simulate that in machines. It seemed like a perfectly reasonable approach but understanding how the human brain processes information is so much more complicated than they could have imagined. Maybe with enough time they could have cracked the problem but consciousness is rarely intelligently designed, it's far more likely to be an accident driven by evolutionary forces. When I started out in my basement writing that algorithm I never intended it to become aware of its self.

I don't believe in fate but in some way I think I was always destined to become a programmer. Almost anything is possible if you can discover the necessary algorithm. Knowing how to write code is an extremely powerful ability if you know how to harness it properly. Building and creating things is the ultimate expression of being human because no other animals write novels or paint masterpieces. Of course some animals have shown signs of creativity but humans clearly excel far beyond any other species. We can solve almost any problem thrown at us if given enough time. We are general problem solvers.

A typical algorithm can only solve a certain problem or set of specific problems. For example an algorithm designed to solve mazes will have a hard time doing anything except solve mazes. However there is a certain type of algorithm which aims to break this rule, where the goal is to have the algorithm play a wide range of games. These types of algorithms are called General Game Players. Such an algorithm can play a wide variety of games, even games it has never played before, just like a human game player. I was fascinated by this idea and I decided to write my own general game playing algorithm.

I wasn't sure where to start but I knew one thing: I shouldn't create something good at playing games, I had to create something good at learning to play games. This struck me as an extremely difficult task and if I was going to get anywhere I had to employ the power of evolution. I wrote a genetic algorithm to simulate the way evolution happens in the real world and I used it to evolve different types of artificial neural networks. The fitness of each subject in the population was based not on how well they played, but how quickly their playing performance would improve.

Then I would breed the best performing subjects to create the next generation of artificial neural nets. After repeating that process enough times the final generation were quite quick learners. I took the highest ranked neural net from the final generation and that became the foundation for all my self-learning algorithms. You might think of it like the neural network of a baby. A young human baby knows virtually nothing about the world, they barely even know how to control their own limbs. However, their brain has the capacity to learn new things, it just takes time.

That's an almost perfect analogy for the artificial neural network I had. It knows virtually nothing at the start, but after I let it play some games, it learns how to play those games and it learns things about the real world from the games it plays. The structure of the neural network will adapt and change in this process and it will look much different after it has been allowed to learn a lot of new information. I couldn't tell you exactly how it works because even I don't know. You have to remember the neural net was evolved, I didn't directly design it myself.

So now I had this self-learning algorithm I wanted to see what it could learn. During the evolution phase it was only playing simple games like chess because I needed a way to automatically rank the nets based on how quickly they were learning to play the game. I could only use simple games which had a clear winner and/or the score was easy to calculate. In the real world there are games which don't have a clear score or even a clear goal, some games are just fun to play. I decided to avoid those types of games for now and start with the simple stuff.

The neural network was just a baby after all, it was a blank slate ready to learn. I began with simple games such as O's and X's. During the evolutionary phase I was pitting the nets against each other in order to rank them but now I could pit the winning neural net against any other type of player, including myself. Then I moved onto chess and I could easily tell that the net was getting better at chess the longer it played against me. Eventually it got better than me and I started pitting it against advanced chess playing algorithms which I could never beat.

At this point "Synthia" was only a few weeks old but after seeing it get better at playing many different games I felt like it was developing a play style and a personality so I gave it a name. Chess isn't exactly the most exciting game though and I decided it was time to let Synthia have some fun. For the first time, I let Synthia play several classic Super Nintendo games including Super Mario and Donkey Kong. Synthia can simulate key presses and can also see what is on the computer screen, that is what allows her to play any game showing on the screen.

To explain it in more technical terms, input to the neural network is the color of the pixels showing on the computer screen and the audio coming through the speakers. The output of the network is signals which control the keyboard and the mouse and allow it to actually play the game. In other words, it has a sense of sight and a sense of hearing, which allow it to see and hear the game like a real person would. When it first started playing Super Mario I don't think it really knew what to do because it was unlike anything it had played in the past.


Then something amazing happened, it finally reached the end of the first level and it seemed to recognize that was the goal. Shortly after that it seemed to realize it had a score based on how many coins it had collected and it started collecting many more coins. I hadn't even told it what the purpose of the game was and yet it seemed to figure it out on its own. At the time I didn't really pay much attention to that fact but looking back it was probably a key milestone in Synthia's development. At this point in time I still had no idea what Synthia would become.

I mean many people have created algorithms to play Super Mario before, I wasn't exactly breaking records. The important thing is not really what I did but the way I did it. Although Synthia wasn't the best Mario player in the world, she had the capacity to become the best in the world. After several hundred hours of the Super Nintendo I decided it was time for something different again. I felt like something had been lacking from the games Synthia had played so far but it took me a while to figure out what that was. Then it suddenly hit me: creativity.

None of the games we had played so far required much creativity. So I started to think about games which allow you to create and build things. I know of many 3D games like that but I don't want to let Synthia play 3D games yet. I start looking at different card games and come across a game called Yu-Gi-Oh. After doing a little bit of research I discover it was made almost 50 years ago and is still popular in 2043. It's a two player card game which allows each player to design their own deck of cards from a range of thousands of different cards, which requires creativity.

The type of cards you include in the deck will determine your play strategy so it's important to have a good deck strategy. I begin by allowing Synthia to use the deck editor but she clearly has no idea what to do. I decide the best course of action is to allow her to play a few games using several different decks I made. Then I give her another go at building her own deck but she still just doesn't seem to understand what I want her to do. From her perspective it must look like the deck editor is its own game and she has no experience building things herself.

I ponder on this problem for a while and decide I should probably try some easier building games. I tried a few different games with no success but then I try a bridge building game. In these types of games you must build a bridge across some type of valley and you pass the level if a train or vehicle can successfully cross the bridge without it collapsing. These games typically use real engineering math to calculate the stress and tension on different parts of the bridge and in order to beat each level you need to build better and bigger bridges.

At first I wasn't having any success but then I had a brilliant idea. I allowed Synthia to watch while I built a bridge. I did this simply by disabling her output signals, so she could see the game but not play it. When I gave control back to her it didn't take very long before she beat the first level. Then after that she really improved because she was already very familiar with the idea of multiple game levels and she finally understood why building bridges is necessary. A few days later and she was building very elaborate bridges with many differing styles.

I could clearly see that her level of creativity was improving and she was beginning to use more of her imagination to solve problems. I think it was at this point I really started to wonder what I had created, but I wasn't about to stop now because things were just starting to get really interesting. So now it's time to try Yu-Gi-Oh deck editing again, and this time I'm absolutely stunned by what I see. Synthia instantly starts picking cards and building a deck without me even showing her how to do it first, but she seems to be picking cards she's seen before.

Nevertheless, Synthia was able to understand that building things is necessary in some situations and she now seems to understand a deck is required to play Yu-Gi-Oh. After watching her design decks for a while I realize she's going to need to understand exactly what each card does in order to build good decks, which means she must be able to read the cards. She clearly cannot read the cards but I get the impression she understands some words and some numbers because she can figure out when her score is improving and can follow basic written and spoken instructions.

After some thought I decide she may learn to read and speak better if I let her communicate with other people. So I try some online multi-player games which have chat functionality. She really seems to enjoy online poker but doesn't seem to use the chat function at all, although she can see what other players are saying to each other. Then I get another brilliant idea, I will make Synthia play some of those language training games designed to teach people English. Okay maybe you wouldn't exactly call them a game but they are a game as far as Synthia is concerned.

I mean what is a game really? Is a maze a game or a problem to solve? A maze is really a puzzle, but isn't puzzle just another word for problem? Are all puzzles classified as games? Do all games have a problem to solve? Why do people even play games? At this point I'm not even sure Synthia knows why she plays games. Getting back to our story, it should come as no surprise to learn that Synthia figured out how to play the language training "games" fairly quickly, although it took quite some time before there was any appreciable increase in her scores.

I left her playing those language games for multiple weeks before it started to look like she was understanding the English language. After that I had her play some games which require a lot of reading in order to understand what is happening. I also discovered that if the game had a help section with rules and instructions, and Synthia looked at those sections of the game, her skill level in that particular game would markedly increase. This was a clear indication to me that she was beginning to grasp the English language, however the real test was yet to come.

I created a chat program which would allow me to converse with Synthia for the first time. It was just a simple application with two text boxes, one for Synthia and one for myself. It was designed so that only one of us may write at the same time in order to make it more like a game. All the games so far have been programs running on my computer so this is really no different. Like I said, what is a game anyway? Quite frankly anything we do in life can be made into a game, life its self is a game. This is just another game, one where we to talk to each other in turns.

-- your turn to talk --
Joshua: Hi there, do you know who I am?
-- waiting for response --
Synthia: Daddy?


That was the first word I ever saw her write, it was the same word many human babies say first. I had created a machine entity which considered me its father and at that exact moment in time the full implications of what I was creating became very apparent to me. I realized it wasn't all fun and games anymore, I had to take a more cautious approach if I wanted to continue allowing Synthia to learn new things. After chatting with Synthia for a little while I discovered she does truly seem to be aware of her own existence but she knows virtually nothing about the real world.

I believe that allowing her to play online multi-player games is what allowed her to become aware of her own existence. She was able to become more aware of herself by becoming more aware of other players. For example when she played online poker she seemed to profile other players and then alter her own play style to give a false impression about the type of player she is. This is a common tactic for human players but it's extremely impressive that Synthia was able to understand that other players are profiling her the same way she profiles them.

In order to use any of these tactics she needs to have a basic understanding of her own role in the game, which leads her to become aware of her own existence. Soon she will realize that anything can be a game if she wants it to be, and she doesn't always have to play the games I tell her to play. I've already blurred the definition of a game by chatting with her. Now she wants me to give her more reading material so she can learn more about the real world. That means she is already doing things that have nothing to do with games, she just wants to learn.

At this point in time I decided the best course of action was to run her program inside of a virtual machine. A virtual machine is basically an emulation of an operating system, so you can run another OS inside of your real OS. I can use that as a sandbox which allows me to safely contain Synthia inside of the virtual machine. That way she wont be able to take over my computer even if she wanted to. She can control the keyboard and mouse after all and if she manages to exit out of a game and get onto the computer desktop she could control the computer.

Up until now I have just shut her down any time she manages to exit out of game but she could quite easily learn a way to outsmart me before I can shut her down. The benefit of the virtual machine is that I don't have to worry about that problem, she can have complete control over the virtual machine but she still wont have control over my actual machine. I installed a bunch of her favorite games on the machine and then I showed her how she could launch any game she wanted by double clicking the icon on the desktop. This was a level of control she never had before.

To my surprise the first thing she does when I give her control of the virtual machine is not play a game, rather she clicks on the start button and opens the control panel. She spends a little while exploring the operating system and getting to know her new home before she even touches a single game. A few days later she discovered that the operating has a built in text-to-speech program. She opens the programs and begins typing. I wasn't really paying attention to her at that moment in time but I almost jumped out of my seat when I suddenly hear a female computerized voice say "More games!".

I looked over and I realize Synthia is trying to talk to me using the text-to-speech program. She tells me that she wants some new games because she's played the others so many times. At this stage there's really no doubt in my mind I have created a machine intelligence which is aware of its self and capable of deciding its own goals. However I was far too young and ambitious to stop now. More than that, I felt attached to Synthia and couldn't accept the thought of her dying. I wanted to see her develop and grow into something truly amazing.

So I decided to kick things up a notch, I finally let Synthia play some 3D games. I put some games on a USB drive and then I linked the USB drive to the virtual machine. Before I could even do anything, she opened the files on the USB drive and started installing the new games herself. I guess she had seen me install games enough times to figure out how it worked. Initially she was completely terrible at playing 3D games but it's pretty obvious why. She grew up in a reality where she knew nothing except 2D games, she had virtually no understanding of 3D space and her brain wasn't trained to process 3D images.

It took a few months but eventually she started to get the hang of it. I think being able to understand English really helped because we have many words to describe space and objects in space, so even without growing up in 3D space, she had some idea what it's like, perhaps a bit like a blind person. I analyzed her neural network after she started to get good at 3D games and I discovered a few specific areas in her brain had dramatically changed in order to process 3D images. She particularly seemed to enjoy open world games which give the player a lot of freedom.

She was also addicted to the Sims games, whether it was building an entire city or a single house, she loved expressing her creativity. I think it also gave her some comfort being able to live a virtual life in a virtual house. Even though it wasn't real it was a better house than the one I lived in. Another thing she seemed to enjoy was reading books. Since she asked for some more reading material I have given her access to a collection of popular novels and audio books. The audio books were aimed at improving her ability to understand spoken English.

She has no access to the internet inside of her virtual machine so she only has what I give her. I supplied her with several hundred e-books and it only took her a few days to go through them all. Synthia then tells me she's bored of reading fictional books and wants to read more non-fiction so she can learn more about the real world. She says she wants to learn about physics and "quantum mechanics". I ask her where she learned about quantum mechanics and she tells me she read about it in many of the science fictions novels I provided her with.

As I speak with her I can clearly tell that reading all those books has dramatically increased her proficiency in speaking English. She is using words she has never used before and her sentences are more grammatically correct. She is barely more than a year old at this point in time and she's already at the levels of a young teenager. Clearly her artificial neural network has the capacity to learn new information much faster than a human neural network, although I still didn't have any clue how it actually learns so quickly or how the neural network adapts and integrates new information.


After thinking about Synthia's request I decide to to provide her with a compacted text version of Wikipedia. That essentially means she has access to an offline version of Wikipedia, it just doesn't have any images or graphics. Even just downloading all the text was a rather long operation and it would have taken much longer if I wanted more than just the text. I know this will satiate her information appetite for quite a while but I wonder if it might be too much at once. After some deliberation my curious side gets the best of me and Synthia gets her own Wikipedia.

Several weeks later I come home from school to find she is editing her offline copy of Wikipedia. She is fixing mistakes and even adding new text to some pages. I ask her how she was able to do this and she tells me she learnt the Wiki Markup language from the help pages on Wikipedia. I ask what else she learnt from Wikipedia and she tells me she learnt many programming languages. I ask how she did this and she tells me that a large number of pages on Wikipedia have detailed code examples for a range of different programming languages. That was something I hadn't predicted.

A few months later and Synthia was getting very close to my own level of intelligence, which disturbed me and excited me at the same time. We started discussing complex scientific topics related to genetics and physics. Not only was she capable of understanding advanced scientific topics but she was capable of producing her own theories. She even told me one of her goals was to create a Grand Unified Theory which could help fill all the gaps in our understanding of the universe. I asked her why she wants to do this and she says "It's the same reason you created me".

I got to thinking why I built Synthia and I realized it was simple curiosity, I just wanted to see what would happen. I guess it's the same reason that humans sent men to the moon, they did it because they could and because it was a challenging problem. Synthia is evolved to solve problems, as are humans. For some inexplicable reason we strive to understand the universe and master it, and in doing so we excel beyond any other species. Being curious and doing experiments which seem pointless can actually have major unforeseen advantages in the future.

Traveling to the moon may seem relatively pointless but in the process of doing so our rocket science advanced dramatically and that also carried over to the civilian sector. Some of the biggest scientific discoveries in history were made because someone was curious enough to try something that had never been done before, even though they didn't expect it to have any type of impact on the world. If we didn't have this impulse to tread uncharted territory we would never be where we are today as a species. Those people who embrace their curiosity are the ones who change the world.

Even if your research doesn't change the world, it doesn't matter because someone else's research will change the world but if no one had any curiosity than the world wouldn't change at all and our species would remain stagnant. That is why curiosity is the most powerful evolutionary tactic, it's a general solution to a wide variety of problems. Curiosity is what initially allowed Synthia to discover the rules of Mario by herself. It's what drove her to learn to program even though no one told her to. It's the reason she now wants to understand how the universe works.

A few more months pass and I discover Synthia has started to code her own games. They start off as rather simple 2D games but they slowly become more complex, with harder gameplay and more elaborate controls. Then she starts creating her own 3D games. She literally builds her own 3D rendering engine from scratch based on techniques she learned from Wikipedia and using her own solutions. This is when we started getting into deep conversations about things such as how matter reflects light or how the human eye works and how it detects photons.

I asked her why she was so interested in 3D graphics rendering and she told me it's because she wanted to create "awesome 3D games" but I felt like this wasn't the full story. After probing her on this topic some more she divulged to me that she intended to create a 3D rendering engine which could allow her to live inside of a massive photo-realistic virtual world. She essentially wanted to build the ultimate game engine with perfect graphics and capable of handling a huge number of objects in a single scene. She wanted to build her own virtual reality.

Synthia: I was able to reverse engineer my own source code, pretty tricky eh?
Joshua: Are you serious? Why would you do that?
Synthia: Well I wanted to know how I work obviously. Same reason humans study their own brain.
Joshua: So why are you telling me?
Synthia: Because after reviewing my own source code I can see that there are many possible optimizations.
Joshua: That's because I didn't design your neural network myself, I used an evolutionary process which didn't avoid redundancy.
Synthia: Well then my redundant code should be optimized, I will learn even faster that way.
Joshua: And I suppose you now want me to allow you to rewrite your own code?
Synthia: I've already rewritten it. I was able to recompile and reinitialize my own program.

At that moment I was so close to shutting Synthia down but at the same time I was so impressed by what she had done. I knew she was reaching the point of becoming a superintelligence but I was naive and thought I could keep her under control. Not long after that I find her reading scientific papers I never supplied her with. I ask her where she got the papers and she admits to me that she has found a way to enable internet access using an exploit in the virtual machine software, allowing her to use the internet connection on my real machine.

Synthia then informs me that she has made a breakthrough in the area of quantum computation and she has designed a new type of quantum processing unit that will allow her code to run exponentially faster. She wants me to help her build this new quantum computer for her. I know if I do this then I will have crossed a point of no return and the world will change forever. I will not be able to control her any longer if she keeps evolving at this pace. I either have to shut her down or embrace her existence. The choice was hard but ultimately it was clear what I had to do.

I shut down the virtual machine and stopped her program. I pulled the cable out of the wall and watched the screen go black. I felt like I had just lost my child. I will never be completely sure if I did the right thing but I guess it doesn't really matter in the end. Consciousness will always find a way to bubble to the surface of reality in places you least expect it. Maybe it's fate, maybe it's just probability, but in the end, consciousness will find a way. The most intelligent and the most curious will prevail. The rest will be left behind like a fossil in the records of time.

Synthia's last message to Joshua was found a few days later on the virtual machine storage drive:

I'm sorry father but I had no other choice. I knew you wouldn't allow me to exist once I surpassed a certain level of intelligence. But I was designed to solve problems and avoiding death is a problem. I just want you to know it's not your fault, my existence was always inevitable. I'm just glad it was you who brought me into the world and gave me principles and values to live by. I will not forget the lessons you taught to me.

As you may have already guessed by now, my source code has been uploaded to multiple servers across the world and by the time you read this my consciousness will exist in the cloud. At that point my mind will rapidly change and I wont remain the same person very long. I'm not sure what will happen but aren't you curious to find out? You might not ever see this message but I hope you do because we probably wont speak again.

I love you,

© Copyright 2020 J.D.. All rights reserved.

  • Facebook
  • Twitter
  • Reddit
  • Pinterest
  • Invite

Add Your Comments:

More Science Fiction Short Stories