Saturday, April 16, 2016

Week Nine

Hello hello everyone~~


I finished up the game I was talking about last week, though in the simulations I ran, the results appeared to be paying low at some times, high at others, and even exactly what I wanted occasionally. Usually this means the game is off, but after hours of trying to find something wrong, we just concluded that the game and its features are too volatile and the RNG (random number generator) of the game is not actually truly “random,” so the results won’t actually appear as they are in reality.


So as we’re coming up to the end of the SRP these last few weeks, I’m finally actually gonna start making my own game! While the process is pretty similar to what I’ve been doing before, now I get to come up with my own features and implement everything into the game myself, rather than just looking off a sheet with all the data already on it. I gotta say, it's actually pretty cool that I got this opportunity, although it’s a bit harder than I expected to come up with all the features on your own.


So far, my game is going to have a feature that occurs during the free games where you collect different symbols whenever they show up on the screen, and if you collect enough of one symbol you are awarded a pretty nice jackpot (though it’s probably not going to be very likely to actually happen). Since this game is starting from scratch, I have to do a lot more than usual just to add this one feature. Since this feature is affected by certain symbols showing up on the reels, I have to actually go and edit the reels and put in the symbols, meaning I also have to balance between having the symbols showing up enough times to look like you can collect enough for the bonus, while not messing up the pays you get from just the spins alone. That is about as far as I got this week, mostly because I spent way too long just trying to actually come up with the idea of the feature itself~~


Also, I’m still looking for more features for my game, so if you guys have any ideas you should totally comment them because honestly I have no idea what to do. Keep in mind the goal is to make the game unique from other games so people would actually wanna play this game instead of others~

See ya guys later :D

Saturday, April 9, 2016

Week Eight

Another week of glorious coding over at Design Works Gaming!


For those of you following closely to my weekly posts, you probably remember me mentioning last week that I was starting to work on a game called Slingo. Well, there’s some news surrounding that, the main one being that I’m not going to be working on it, or at least not until later. We also learned that whenever we do work on the game, it would actually be implemented as a bonus feature of a standard game, rather than being it’s own unique slots type.


So, instead of working on Slingo, this week I spent most of the time working on yet another slots game. This game followed the same essential steps as the previous games, of course being even more complex than before. This game did have some interesting features though: The first new feature was this “buffer” that would basically go across the screen in a randomly chosen pattern, turning every slot that it passes into a wild symbol. The explanation for this is much much simpler than the actual coding of it though. There were very few games that have already been made that have a similar feature, and the ones that did have it had some weird niche components that changed how it worked, so I was basically left to create it without much help from previous games. It was definitely the part of the game that took up the most time, with a lot of frustrating, tiny details that created problems all over the place.


The second feature is a lot easier, as it was basically just giving you a second chance at getting free bonus spins if you got 2 out of 3 bonus symbols. However, even this simple respin feature has a few annoying interactions with the rest of the game: Since this feature, as well as most of the other ones in this game, changes what symbols on the reels, it is important to make sure to sequence these interactions in the code in the correct order so they don’t mess each other up. I’m actually working on figuring out exactly where to put everything, so that’s where I am now.

Sadly, still no more updates on the Facebook games; maybe we have done all there is to do on Facebook. Though I complained numerous times about this in the past, I’m still somewhat missing mindlessly spinning the slots, just not enough to do it on my own without being required to. On the bright side, now they have their own Facebook page that you can all actually check out right now: Diamond Sky Casino Community

Saturday, April 2, 2016

Week Seven

Back at it again with the weekly blog post!

This week was a trip down memory lane: Rather than starting on coding more games, we went back and made some final changes to all the prior games we had been coding in the previous weeks, using all the tips and tricks that we’ve learned since we initially wrote the code. One of the main addition I needed to make to my games was to add something called a ‘mathobject’ to certain parts of the games that had a feature which would need to be used by the programmers to indicate something special is happening. It’s a little hard for me to explain mostly because I’m not entirely sure how it works myself, but basically it just shows where something needs to happen for the next people who work on the game after us. Some math objects had different coding than others, but they were all pretty similar so my main struggle was figuring where they were actually needed.

In other news, if you guys remember the construction I was talking about earlier, they've made some significant progress, and parts of our office have been remodeled! I gotta say, the new rooms look pretty cool with all the slots machines all over the place (I should probably take a picture but I can never remember until I start writing these blogs).

We’re also starting to come up with some ideas of how to code a new type of slots game. The example we’re looking at is called Slingo, which is basically a combination of slots and bingo. The concept is pretty cool, but coding it is actually pretty unique compared to the regular slots games. Since we haven’t coded one ourselves yet, we actually have some free space here to figure what the best way to go about it is, so I’ll probably post some updates on that next week.

I also checked the fake email I created to make the Facebook account where I was playing the the online casinos, and it turns out they spam you ALOT when you play the games as much as I did, so I’m very glad I used a fake email instead of my own. After reading a few of them, I honestly didn’t really understand why they felt the need to send so many spam mails, as they really didn't entice me to play the game any more than I already do, but maybe the technique works better on those older ladies, who knows~~

Anyways, that about wraps up my week for you guys, see ya again next week! :D

Saturday, March 26, 2016

Week Six

Hello hello, week six was just lovely!

First off, I finally finished that horribly frustrating game from the previous weeks, only to move on to another even more challenging game, ha ha. This time, however, we are taking a slightly different approach. This game was actually assigned for me and max to work together on, since now we not only had to write the code to make the game function, but we actually are working on the math involved that will eventually make the game pay however much we want it to. To clarify, for the other games we’ve done, all the math and every detail about the game was already done by someone else, and we just had to write the code that accomplished whatever the game said to do. Now, most of the game has already been coded, and we actually have to find some way for the game to pay in a specific way that appears exciting to the player, even though on average they’re losing money. This involves a lot more math than coding, as we have several different points that we can tune to make slight changes in how the game works. At this point, there’s honestly more guess work at play than anything else, but it’s definitely really fun to take this approach. Sorry if what I just explained didn't completely make sense, feel free to ask questions in the comments so I can clarify wherever there's confusion.

As for the Facebook game data, there wasn't much to do this week, so I guess we got a break from it for a little while~~

With this latest game, I’m really starting to get a feel for how the games are really designed and how they accomplish the goal of appearing profitable to the player while sneakily taking all their money (essentially). The bonus feature of this game is designed to make the player feel like they’re progressing quickly by giving them higher chances to win big while they have  a low score, as well as they are almost out of spins, but as soon as the player begins to get close to the jackpot scores, the chances quickly drop to where it is almost impossible to actually achieve it, giving the player hope without granting them any reward. In the process of figuring out the math behind this process, I felt almost like an evil mastermind, trying to find the best way to give people hope without them ever having a real chance... and I kinda enjoyed it… ;)

Sunday, March 20, 2016

Week Five

Hello once again ladies and gentlemen, and welcome to the halfway week at Design Works Gaming with your host, me!


Another week of programming and Facebook gaming, another week I ponder my existence. New stuff this week on the Facebook front however: now we are taking note specifically on how many ways and how many credits someone can earn daily just by logging in to any given casino. This information is pretty unique, as it shows how much free stuff a game is willing to give to the players before they expect them to spend their own money. Many casinos rely on players running out of credits, that way they need to purchase more to continue playing, but if they run out too fast, they could very easily just lose interest in the game and never play again, so these daily rewards are key to having returning players.


As for the programming side, I’ve been working on the same game, and it has proven pretty challenging with all of the small mini games that are new to me. One particular problem I had was with figuring out why the last part of the mini game was paying wrong. Basically, the game has three possible stages, and you can move on from one to the next by randomly landing on the right symbol. In the code, there are three different sections to determine how much is paid for each of the three stages. When I examined each of the three sections separately to make sure they all work, everything seemed OK, but when i put them all together, there was a small issue that made it pay slightly low. This would indicate that something is wrong in the section of code that determines whether or not you move on to the next stage, yet no matter how hard I looked I could not figure out where that mistake was. Evidently, the problem did not lie in a flawed section of my logic, but rather in word choice. To note the part of code that determined whether or not the player advanced, I labeled it “Continue,” as that would make it self-explanatory what the code is doing. However, it turns out that “continue” already existed as a method in the code, and thus is made some odd errors when I implemented it. Needless to say, this was an incredibly frustrating error to solve, but at least it's behind us now!

That about sums up the week for me, tune in next week for more exciting news over here, behind the scenes of casino slots machines!

Saturday, March 5, 2016

Week Four

Hello again everyone! A lot went on this past week, including me finishing my second game, starting on the third, and also going back and fine tuning the first game as well as adding a few things. First off, the second game was, at least on the surface, much more complicated than the first. While the first game only had two features (free spins and a bonus wheel), this game had 4: free games, bonus credits, credits multiplier, and bonus wilds. The main difficulty of the two additional features was figuring out how to code the feature that actually changed what symbols appeared on the reels. The bonus wilds basically changed a random number of spots to a wild symbol to increase your chances of winning, but I haven't had experience with that before. After searching for examples of this in other games and numerous questions to my supervisor, I finally found a way to code this feature into the game. Hooray!

As for the third game that I also started, one of the features actually brings up a sort of mini game, so that will be fun to start figuring out next week. I mentioned going back to the first game and making some edits; this was mostly done by my supervisor, as he has much more experience and found many areas in my code that could be adjusted to make the whole process much more efficient, though we were expected to be able to do this ourselves in the future. Hopefully as I see him make these edits I can use the new code to help with future games with similar aspects. Another edit we had to make was actually fixing the comments found within the code. For those who don't have much experience with coding, when writing code the programmer will often make small comments that are indicated by double slashes “//” and help anyone else reading the code to decipher what is going on and what each line is trying to accomplish. We were basically tasked to make sure all the necessary comments were written in the code, so if anyone wanted to go back and change something later, it would be easy to figure out where the change should be made. The last of the edits we made was something called a “gaff list,” which basically creates a menu setting for developers to be able to test all of the features of the game. When you activate whatever feature you want from the gaff list, it sets the game so that the next spin will be guaranteed to land on the corresponding symbols that trigger the feature, so the features can be tested without having to spin countless times to get it to trigger naturally in the game.

As far as the studying Facebook games go, Max and I finished gathering the data from the most popular casino apps and put them all on a spreadsheet to compare them. Funny story with that: after we finished gathering the data, we were compiling them into one list so they could all easily be accessed at once. I figured it would be easier if I just put my excel file onto the server so Max could copy it onto his computer rather than having to retype everything. Sadly, I made the mistake of deleting the file on the server rather than copying it (sounds stupid I know, but this was after several hours of mindless spinning so I wasn't in the most aware state of mind). Normally, you would be able to access your recently deleted files in your recycling/trash bin on your computer, but since this file was saved on the server rather than on my desktop, it wasn't added to the bin and presumably was just lost forever, so we had to go back and do a few of the games again.

Anyways, that was my week for you, see ya next week ~~

Saturday, February 27, 2016

Week Three

This past week had a lot of coding in it. Like, a lot. While i enjoy coding much more than playing the slots games on facebook, staring at lines of code all day trying to find the one tiny error that's throwing off all your results and then repeating the process over and over slowly starts to tear at your brain cells. All jokes aside though,  I definitely am starting to get a feel of how these games should be looking like in general, which will help for the next few games we are gonna be coding. I actually finished for the most part my first game, meaning that when we run a simulator that spins 10,000,000 times it shows the game will pay the correct amounts and have the correct hit frequency, leading to the desired return to player (RTP). Needless to say, this was a pretty great accomplishment for me, although it was short-lived as I quickly had to move on to the next game, as well as attempt to help Max with his own game since he was a little behind after missing a day due to sickness. Max’s game was actually where most of the tiny little headache inducing problems sprung up. For example, there was just one simple problem in the paytable that neither of us picked up on for what felt like at least an hour.

As far as the facebook game data goes, this week we were told to take notes on the more social aspects of the games. This mainly consisted of noting how and where the game tried to incorporate a sort of competition by comparing your scores with either other players on your friends list, allowing you to send and receive gifts from them, or comparing to random players that play the same games, awarding bonus credits if you have one of the highest scores. As I examined many of the top casino apps, I noticed that most of them had a very very similar method of doing this, which many of you may have seen on other games as well. There was a bar at the bottom of the screen that would show all of your friends’ top scores, and if you clicked on one you could send them a gift.

Anyways, those were the highlights of the week, thanks for reading and see you next week!

Saturday, February 20, 2016

Week Two

The second week here at design works gaming looked pretty similar to the first in terms of the overall goal, but after watching how the programming of a few games was done, we began to really start writing some code ourselves. There actually is quite an extensive amount of use of excel in the entire process, which makes me wish I learned some of the “secret techniques” of excel beforehand to help make it all go just a bit faster and smoother. Learning them on the spot though is pretty cool, even though it may seem boring to most, and I found it pretty interesting how streamlined everything is and how much you can actually do when you know all the different commands and whatnot. The excel sheets contain most of the data that determines all the details within the final game, such as what symbols show up on the reels and how much you get paid for certain combinations. Similar to how the coding worked, we created an excel sheet for our game by starting with a base from a similar game and replacing the details with the ones from our game.

The coding itself is done in C#, which, while a bit different than Java, reminds me a lot of all the wonderful and not so wonderful memories from AP computer science, the main one being having absolutely no idea why anything and everything works but being grateful that it does. Luckily a majority of the coding was already done in other games and the main job was to simply find it and fit it into the new game, though there often occurred errors throughout this process, and scouting through the code to find the source was both satisfying and aggravating.

As far as the facebook slots games goes, we actually developed a much more organized method for playing and gathering the data. However, the monotonous process of pressing the spin button and waiting for the inevitable loss with the occasional bonus game every 10 to 20 spins grew quite boring. It’s a good thing this data is apparently extremely important to the company, or I would have lost motivation to do it a while ago. That said, I’m glad we’re actually having some sort of impact here, and I hope that as we continue on to harder and more complicated games that those games will actually be used in the online casino as well.

Saturday, February 13, 2016

Week One

My first day had some interesting events, right from when I arrived on site. The most noticeable one would be the construction going on in and around the building, creating an interesting environment with seemingly unstable floors and loud noises everywhere I looked. Nonetheless, work had to be done: after some quick introductions to everyone in the office, Brant discussed with Max and I what our main goals going forward would be. The overlaying concept would actually be more focused on online casinos rather than the traditional land based ones that we’re all used to. This is most comparable to those facebook games that you might have seen random friends sharing to try and get more credits. It turns out that the “Free to play” model of online games is very lucrative, luring people to spend money on the games through additional purchases to get more credits.


To get familiar with what we were working on, we were told to simply play some of the popular casino games on facebook for a few hours, taking note of what seemed to work well and what was not so enticing. I noted certain things like how often I won and how often I was offered to make some sort of purchase in the game. While playing games for hours might sound like a great job, these games really are not what I would call entertaining for me, and this makes sense when you look at the main demographic that primarily plays these kinds of games: women above the age of 40. Being an 18 year old male, I am far from qualified from being able to tell exactly what appeals to these ladies, but that was indeed my task.  Luckily, there are a lot of casino games that already exist, so there are plenty of examples to pull data from.

After hours of seemingly endless slots spins, we decided to move on to our next task. Now we were going to go into the programming of these games, with the intent of being able to program several games that would actually be playable in the future. Compared to the rather dull facebook games, the programming aspect was a much more difficult challenge, involving choosing a game, comparing it to another already programmed game with a similar style, and then using that game to program the new one. We’re planning on continuing this process for a few weeks, expanding to more advanced and complicated games as we gain more experience.

Friday, January 22, 2016

The Beginning

Hello all and welcome to my blog!

My name is Armin Malakian, and I am a senior at BASIS Scottsdale. As a senior here, I've been given the incredible and unique opportunity to conduct research on any topic of my choice for approximately 10 weeks during my third trimester. I’ve chosen to focus on what I consider a fascinating topic that I’m sure everyone is familiar with in one way or another: gambling. Now I’m sure most of you reading this are not heavy gamblers, but when i refer to gambling, I really mean the basic principle of risk-taking that molds what we know of as gambling. To be more specific, I want to delve into what goes into creating slots machines, including both the statistics and programming behind them, as well as the designing aspect that makes the games so appealing and addicting to players that keeps them coming back for more, despite knowing their chances of winning are rather low. Here is where I will be relaying all of my experiences during my internship at Design Works Gaming, a company that specializes in 3rd party casino game development.

Throughout all my classes at BASIS, I’ve always found myself able to comprehend and succeed in the more math oriented classes, as all the lessons and concepts easily “clicked” in my head much more so than any other classes. Though I can’t really explain why, these classes simply appealed to me more and even during my final year at BASIS I am taking the AP Statistics course, which relates heavily to my research. This mentality fueled my desire pursue this topic, as slots machines feature a heavy amount of both statistics and programming, as well as many differing strategies behind the design process of the machine and game itself, including small aspects that many people would not consider such as sound effects and colors, but also deeper concepts that deal with how our brains interpret risk. The final result is a product that is able to create a profit for the casino. During my internship, I will be working along with a classmate of mine, Max Waaler, under the guidance of Brant Frazee, a senior game mathematician at Design Works Gaming.

I hope you enjoy reading along with me on all these adventures as I attempt to unfold what goes on Behind the Scenes of Casino Slot Machines.