Category: Development

I have a lot of projects on the go. As I’m sure most developers do, I get curious and decide I need to try and make something that’s been done a hundred times before.

What I have I done that’s been done a hundred times before? Rolled some dice. It’s been done physically, and in almost every programming language I can think of. I did it in high school in QBasic. I did it in college in C, C++ (using OOP methodology), Fortran, and even COBOL. This time, I did it in PHP.

Why did I put myself through the bother of creating a dice roller in PHP that’s been done a hundred times before? The short answer is because it gave me something to do that has nothing to do with any paying project I have on the go right now.

The long answer is that I miss playing D&D. I used to play at least twice a month, over skype, with my brother in-law and a friend of his. It was a small crew, my brother in-law was both the DM and the fighter of the party. His friend was a warlock, who was completely obsessed with finding new books. Not spell books mind you, but books. Last time we played, he had to leave his pack behind while we went off to talk to a Dragon, as he was afraid his books would get burned. I was the unbalanced Moon Elf wizard, who suffered a traumatic brain injury as an apprentice. This basically caused my character to roll randomly on a chart for every decision that had to be made. This has resulted in some pretty funny and scary situations, but my party has adapted and sometimes casts silence on me to prevent me from saying something stupid.

Anyhow, back to the reason for the dice roller in PHP.

We haven’t been able to play for a long time. We are all quite busy in life, and keep missing the opportunity to pick up the game again. Part of the issue is the fact that we need to be rolling so much, so our 3 hour sessions sometimes turn into 6 hours while we figure out what should actually happen and all the dice results to come back.

By making a new dice system, I’ve started the building blocks of being able to make faster decisions, publicly available to anyone who logs into a game server. This may be a small part of a much larger project that I’ve started for myself, but it’s one I enjoy working on.

Originally, I was going to turn this all into a restful system that can be plugged into any system (including mobile apps) to have dice rolls done based on anything that is a valid D&D dice string. In other words, send the server the phrase “2d6+3” and you will get a value anywhere from 5 to 15.

I’ve decided that creating a complete RESTful interface to ask for a dice roll was a little much. Instead, I’ve created a library that can be used in any PHP application (even a RESTful one if you want) to roll the dice in any project. I’ve gone back to my roots of creating libraries that can be plugged into applications, instead of the current method that is popular of making everything a service. For this project at least, I’m taking a break from REST. I don’t have any data that needs to be updated. I don’t have any regular data that needs to be processed, stored, logged, or downloaded.

And it feels good. Go back to your roots when you can. Keep yourself grounded, and remind yourself why you started developing in the first place. It’s been surprisingly rejuvenating.

If you want, I’ve put the dice roller library on github. Take a look at it, and let me know what you think.