Playing Games Via... Email?
Published Nov 19, 2024
Hi! Can you tell us who you are and what you do?
Hello everyone. I’m Richard Rognlie and I’m the creator of gamerz.net—a place where you can Play By eMail (PBeM) and have fun with all kinds of text-based games.
I’ve been working as a programmer for a long time, and I’ve handled lots of projects, ranging from maintaining military intelligence systems and being a commercial webmaster under Erols Internet.
In gamerz.net, you play by issuing commands to the server., and the site supports many different kinds of games like C++ Robots and Warship. Try it out to see how retro we used to do it back in the day!
What game do you like to play?
Backgammon, by far. I've always got three or four backgammon games going simultaneously. It's kind of funny, there have been times when my wife and I would be playing backgammon by email sitting on our computers because it was too much trouble to get out the physical board. So it's almost as fast.
How did you get into programming?
Well, I was very fortunate to discover when I was about 12 that I was good at computers. I was very fortunate to discover early on that computers just made sense.
When I was visiting my brother one summer, he was working for a big mainframe shop. He didn't have time to babysit me, so he said, “Here's the phone number to dial into the work computer, and here's my user ID and password. Then here's where the games are.”
So you dial up, you're playing an old text adventure like “Black Box”, those types of games back in the day. And then one day, he brought home the listing, the programs themselves, I'm like, this makes sense. I could do this. I went out and bought myself a book on Trash-80 Basic (TRS-80), then taught myself to program in BASIC. Then school came along, and I started using the school computers. And next thing I know, I'm doing it for a living.
How did gamerz.net come to be?
I started off with eSquire—a mailing list manager. It was my answer to Majordomo. I wanted a mailing list manager that worked and a web interface for it. So I played around with that, and eSquire actually came out after gamerz.net started. So PBMServ started on June 8, 1994.
My tagline in my email has been “Helping reduce world productivity since 1994”. The way it started was kind of funny in that I seemed to be changing email addresses a lot. For whatever reason, I got a new one at work and then a new one for home. And I was actually playing a game by email, playing in a tournament. And the guy who was maintaining that server was maintaining all of the user information by hand. So every time somebody changed an email address, you had to notify him and wait for him to do it and then get the mail going to the right place.
So I said, “You know what? I could probably automate this.” That became the reason I created gamerz.net; to automate email processing and maintain its administration, if you will. So keeping track of the users, their actions and all that type of stuff.
And it started out with a strange game called Trax. That was the first game I implemented. It’s a very simple tile-building game where one side of the tile has a black line and a white line and a cross and the other side of the tile has two (2) quarter circles, one black, one white. And you're trying to create a loop of your color while preventing your opponent from creating a loop of theirs. So it’s a very simple game.
And then we created Hex. It’s a game where you play on a hexagonal rhombus, in a 15x15 array of hexes. One person's trying to create a line going north-south, and the other's trying to create a line going east-west. Another very simple game.
Created a handful of those first and then it started growing and then a guy in Denmark got involved, a guy named Søren. I was using Usenet News back then, the old Usenet news boards. So rec.games.abstract was where we would post and he got wind of the server, and we shared some of the source code. Next thing I know he's implemented a dozen games, so we incorporated them into the server. It wasn't gamerz.net at that point, it was pbmserv@netcom.com, and I convinced them to let me set it up there, but I only had five megabytes of space.
Next thing I know I'm running out of space and I'm not willing to pay for more space. So I started running it on a computer at home. Well, lo and behold, my ISP gets cranky at me saying, “Hey, you can't be connected 24/7, What are you doing?!” So I went to the office and I said, “Hey, I'm doing this experiment. Do you mind if I run it on the office computer?” They said, “Yeah, alright, as long as you're not goofing off all the time.”
Well, that was when I was working for a defense contractor and lo and behold, we've been running it there for a couple of years at this point. And the web is fairly new and one of the higher-ups, a VP or something, used a search engine, and it wasn't Google back then, by the way. They searched for the company name and lo and behold, the top dozen or so entries are a game server in their domain. Can you imagine the fallout from that?
While I had permission to run it from my management, they hadn't passed it up the chain. So, yep, that got shut down very quickly. So that was how it all started. And then eventually I went to work for an ISP and decided, you know what, I'll just buy a domain and run it on my own server at that ISP. And that's when gamerz.net became official, and I've had that domain for about 25 years now.
Is it hard to add so many games to your server?
It's very easy to add a new game because early on in the development, all of it was done in C. But then we discovered, “Oh, we have a bug. I have to fix it in each and every program.” or “I want to add a new feature. I have to add that feature to each and every program.” Whereas I mentioned Søren before, he said, “Hey, why don't we convert it from C to C++ and create objects, make it object-oriented?”
So now we have a game class. Now we have two-dimensional and three-dimensional boards. Chess is a two-dimensional board. Okay, do you want a chess variant where the pieces move differently? Okay, start with chess, then implement your variant.
Did you build your own architecture for the server?
It's just a Linux box running SendMail. An email coming in for pbmserv@gamerz.net gets piped into a Perl script to get parsed and figured out what to do. And then that Perl script then decides which game engine, subject line, player actions, etc.
The logic is like this: Do I know how to play chess? Okay, we've got a binary for it. Is the move a valid command? Yes. Are boards 1, 2, 3 active? Yes. Is it your move? Yes. Do you have the right password? Yes. Does this move make sense? Yes. Update the board. Notify all the players.
And all is done in ASCII. Additionally, the code is open source, though only for non-commercial purposes.
Has email spoofing and other cheating been done on your server?
Every move done requires a password. They can try to spoof or cheat, but the password is the deciding factor. Besides, theoretically, you can cheat, but where’s the fun in that? If the game uses a random factor, you know, dice or whatever, as it does in backgammon, there is a seed as part of the board, if you will. I would keep track of the initial seed and how many times the dice have been rolled so that, in theory, I can predict what the next roll might be. I could do that to cheat, I don't, obviously, but we do it that way because otherwise if multiple moves came in at the same time, it's possible for the dice to be the same and you want it to preserve as much of the randomness as you can.
How’s the current traffic of the site?
The usage is definitely going down. People want more interactive experiences than play-by-mail or even play-by-email. At its peak, it would handle maybe 3,000 moves a day. That was back in the early 2000s but now it's down to about 200 moves a day, and about 200 games are being started each month.
Tracking numbers
So that’s 200 moves a day, meaning I'm sending 400 or so messages every day just to the players making moves. But it would be the same players back and forth. I'm not getting a whole lot of new players these days. Now, when you join, it invites you to join the mailing list that goes along with it. And there was a time when I worked for SendMail. I was actually one of SendMail's roaming consultants for eight years and then engineering for five. And I've been working from home since 1999, basically.
But back then what that meant was “Oh, it's Monday morning, you're on a 6:00 flight to God knows where.” Because I could be anywhere in the country by noon and then I'd be on the red-eye flight back home Friday night. Repeat that two or three weeks a month and it gets old. But with the mailing list I could let people know, “Hey, I'm going to be in this town this week. Anybody want to get together for a beer?” You know, I think one of the best times I ever had was when I was in Melbourne, Australia, and a dozen of us got together, and everybody knew everybody from playing games on the server, but many of them had never actually met. And so we did beer and snooker. That was a lot of fun.
Do you monetize your website?
Well, for a while I did have ads on gamers. Interestingly enough, casinos were approaching me online. Casinos were paying me $50 or you know, $100 a month to host their ads on my game site on the website itself, but not on the email. Nobody wanted a tagline on the email for some reason.
Have you considered going beyond PBeM and asynchronous game development?
I have not actually. I've actually thought about how could I hook this up to integrate it with Facebook or something like that. So play it by way of Facebook. I've thought about it, but who has time, right?
I’m currently stuck on one game that I’ve been trying to implement, and I haven’t been able to figure out how to do it. The game’s called Trench—it's played on an 8x8 board similar to a chessboard but half of the board is white and half of the board is black and it's got a diagonal line going across the long way between them and that's the “trench”. It's kind of a chess-ish game, but the problem I'm having is how to represent that in ASCII. I haven't been able to come up with a good way to represent it because of the middle squares being triangles.
I’ve got around 270 of these games here, and there’s another game I’d like to highlight but I can’t say it because Hasbro has rights to it, so I’ll just call it “Risque”. It’s that game in particular, yes, but we have a different ruleset for it. It's simultaneous.
So what happens is this is one where you give it the subject line, telling it that you're going to be making the move, but the move itself is in the body of the email. This is one of the only games played like that. So each region has its own three-letter code, right? So like, Australia would be AUS, and I can't have Indonesia because we also have India. So I renamed Indonesia to Malaysia, and that’s MAL.
So if you want to move three armies from Australia to Malaysia, you'd say AUS 3 MAL. And so each line of your body is telling it all the different moves you're making for this turn. And then once I've gotten everybody's moves for the turn, it then re-solves the board, and then every third or fourth move is reinforcements. It's very different from the other games on the server.
The nice thing about doing it by email is we can implement some different features that, you know, you can't do in the real-life Hasbro version, like fog of war. In our variant, if you turn on fog of war, that makes it so that you see your territories and you see the territories that are adjacent to them. If they're farther away than that, you don't have any information. Part of your alliance strategy is, “Hey, I'll show you my map if you show me yours.” But do I really show you my map or do I show you a doctored version of my map? Because I'm getting ready to stab you in the back.
What would you do differently if you had the chance to?
If I were starting it today, I would probably go straight to somebody else's API rather than trying to create something from scratch. I created this thing from the ground up and didn't have a whole lot to go by. It really started out as a solution for work, as I had a work project where I needed to automatically respond to emails, an early autoresponder if you will. So how do I know who to respond to? How do I process it all? All that kind of stuff, all those questions I had to ask. And that was where the Perl script came in. Because if I'm parsing emails, let's do it with Perl.
But if I were doing it today, I would probably go straight to doing it by web rather than email simply because that gives you a lot more flexibility in terms of presentation. But you know, because I started with ASCII, I've stayed with ASCII because some of my players are visually impaired and therefore, you know, the web is harder for them to use. Trying to keep a level playing field for everybody.
And like I said, we do have web interfaces for some of the games. My site has been used by some well-known game designers and researchers and game theory people. And so they actually use my site as a reference in some of their published works because, you know, they've got a history of all the different games that they can go back on and pull the information. The last big crash I had was probably 10 years ago, so I've got data going back forever.
Accessibility for the impaired
I've got a very good friend of mine. He is blind, but because everything's in ASCII, he's able to move his mouse around to read the board and we always have backgammon games going all the time. And he was actually the first blind Jeopardy contestant, a five-time winner, but I didn't find out until he went on Jeopardy.
Gonnect
It's kind of interesting that some games only exist in pbmserv. I would have game designers approach me and say “Would you be willing to implement my game?” And I did in its early development it was a lot of fun. Take the classic Go game, there's a guy in Brazil who said, “You know what, what if we take the game Go, keep everything the same but change the win condition?”
Instead of trying to capture territory, you're trying to go up and down or across the board, you're trying to connect it. So we called it Gonnect, but as far as I know, I've never seen it anywhere else except gamerz.net.
Where can we find you to learn more about you and your projects?
Go to my primary site, gamerz.net. Everything you need to contact me is there, along with the server and the games.
Have a game to sell?
Let’s find out if we play well together.