Friday, April 15, 2011

We're in Beta!


Los Angeles, CA -- PopStocks (http://apps.facebook.com/popstocks), the pop culture stock trading game has transitioned to Beta! After a month-long Alpha period with over 2000 test users, PopStocks has been improved in myriad ways, including:

  • An improved market simulation making the game more fun and challenging.
  • Players can upgrade their office with items that give gameplay bonuses, like bigger daily gifts.
  • Leaderboards have been integrated, showing how players stack up against their friends.
  • Trade Power and the Pops Exchange Commission make the game more strategic and in-depth.
  • Many, many bugfixes and performance improvements.

About PopStocks: PopStocks is a pop culture trading game where players can invest virtual money (Pops) into their favorite movie stars, musicians, celebrities and other pop culture icons. Players can use their in-game earnings to upgrade their office and compete with their friends. They can also trade their Pops for real-world items like discounts! PopStocks combines the excitement of stock trading with the fun of pop culture! PopStocks can be reached here: http://apps.facebook.com/popstocks

About the developers: PopStocks is developed by 4 indie game developers with their roots in the console gaming world. They wanted to try their hand at creating a smaller game where they could interact more with their players. For more information, contact press@pop-stocks.com

Tuesday, March 29, 2011

Making Stock Trading Fun




How fun is a graph? What about a P/E ratio? For most people, not very. Sure, there are people out there who live to day-trade, but PopStocks is meant to be fun for everyone, not just people with MBAs. For those of you who've been with us for the last couple weeks, you've seen some changes to the game, including:

  • Limit orders are gone
  • Sliders for how much to buy/sell
  • Orders fill instantly (no more pending order table)
  • Simplified portfolio view
We made all these changes so that we could focus on the fun parts of the game: finding and buying stocks you like and flipping things for profits that you spend on your office. We think we've made the game a lot more approachable and intuitive (and that seems to be backed up by the reduction in feedback that players don't understand how the game works).

But we hear you advanced users, too: you'd love it if we brought back limit orders and many of our feedback items would be satisfied by us adding the ability to short a stock. Here's what I can tell you: we haven't ruled these things out. Right now we're just really focused on making a fun experience that we can build on. As PopStocks continues to grow and evolve, we'll look to bring new features (and some old ones we had to turn off) online, as long as it doesn't get in the way of the fun!

Keep the feedback coming, guys! We're having a great time interacting with you all and improving PopStocks!

Monday, March 28, 2011

On the Horizon


PopStocks launched a couple weeks ago, and after lots of work to iron out bugs and scalability issues its really starting to feel like a fun game.  Facebook is all about interacting with your friends, and until now we have focused on our core 'fun' mechanics: trading stocks, creating rumors, and earning money.  After alpha is complete we have some ideas of where to take our gameplay:

Profit Racing
The market is all about earning profit, so why not race your friends to see who can earn the most profit?  These could be held over a fixed period of time, or they could be races to a specific amount of profit.  By default we could have everyone compete in an all-time race to maximize profit, and users could check their status on a global leaderboard.

Mutual Funds
Mutual Funds are investments that contain a list of other stocks on the market.  Users would be able to create their own funds, and charge administrative fees to people who purchase the fund.  The better your fund performs, the more people will purchase it, and the more money you earn.  We could create a leaderboard for funds that users can shop within.

Friend Charts and Leaderboards
Compare your performance on the market to your friends with both absolute and percentage based charts.  We could also create a personal leaderboard to help you track your friends' progress.

Which of these sounds fun to you?  Vote in our poll on the right and let us know!

Thursday, March 10, 2011

PopStocks is now live.

We launched the game about 4 hours ago... all hands are on deck for fixing bugs...

Come play along with us, click here.

Launch!

Today's the big day! PopStocks is Gooooooooooo!!!
http://www.facebook.com/apps/application.php?id=201641909847723

Wednesday, March 9, 2011

Quotes of the Day

Rachel - "We have no good from quotes today."
Paul - "That's because we were doing serious things."

Tuesday, March 8, 2011

Quotes of the Day

Paul - "That song smelled." (Gives the song a thumbs down on Pandora.)
Pandora Commercial - "You know what that song needed? [...]"
---
Geoff - "So now I have the fudge, I can fudge it up, down, or none. The fudge factor."
---
Geoff - "Did you know that nose drops are habit-forming? So is shampoo. Your body will over compensate for their use, making using them more necessary."
Marc - "Yeah, and meth. Meth is that way too."
---
Rachel - "Aren't we going to be at work tomorrow. The other job that doesn't pay us."
Paul - "It's hard hold two jobs that don't pay."
Marc - "Actually it's pretty easy."
---
Geoff - "I'm making fudge."
---
Andy - "God. Our fucking god damnit- Shit."
---
Paul - "Nghhhhnnnn?..."
Rachel - "Discerning cow disagrees."
---
Andy - "I keep forgetting what I'm [currently] working on."
Rachel - "I was basing it off of the tab I had open on github issues."
Marc - "I'm currently working on 500 Internal Server Error." (Github is down)
---
Geoff - "Marc, you and I had Reese's Pieces for dinner tonight'
Marc - "If you made that a hamburger I would totally agree."
Geoff - "What? Did you eat a hamburger for dinner?"
Marc - "No, but if you said a hamburger I would agree."
Geoff - "What?!"
---
Paul - "I just escaped a quote in Schindler's List."
---
Paul - "Word."
Marc - "Up."
---
Marc (Shoots at Pandora on the TV across the room, to signify his distaste of the current song by The Cars.)
Paul - "Don't shoot my TV."
---
Paul (Looking at his ceiling lamp) - "I hate how this thing is crooked."
Marc - "Is it?"
Rachel - "Well at least it's asymmetrical, so you can't really tell."
Marc - "Thus my 'is it'"

Alpha Milestone

After a couple weeks of not so solid work (GDC tends to be an interruption in this industry...) we feel like our alpha milestone is close... Hopefully tonight!  Here's a screen shot of what it looks like right now... If you look closely you'll see there is not very much movement in the market, but once we have some more players buying and selling things will start going.

Tuesday, March 1, 2011

House (Office?) Manager

One of the things you never really think about before you agree to allow a team to 'garage game' it in your dining room for a couple weeks is how much it affects your house.

For the record, I am a single guy, I have a 1 bedroom house that I live alone in.  It's nice, and more than enough for just me.  Typically I only have to take the trash to the curb once a month, and the half a gallon of milk I grab at the store usually goes bad before I can finish that last 10-20% of it.  Like I said, I live alone, there's not a whole lot of trash being produced by just me.

Then bam, all of a sudden there are 4 or 5 more people in your house, every day, all day, and late into the night too.  My trash cans are filling up with burrito boxes and mountain dew bottles daily, the toilet paper roll is having to be changed every other day or so, there's power cables and wires everywhere... it's just a mess.

This is just a warning for those of you thinking of inviting a team over and making a game out of your house, apartment, garage, whatever.  Make sure you buy extra toilet paper.

Saturday, February 26, 2011

Quotes of the Day

Rachel - "I don't know anything about dict accessing."
Paul - "How to access dicts."
Marc - "Well I know how."
---
Rachel - "Do you know who was the first person to die in an airplane crash?"
Marc - "Who?"
Paul - "Amelia Earhart."
Rachel - "Orville."
Andy - "Redenbacher? That's too bad man, that guy made some great popcorn."
---
Paul - "Should I just warp?"
Marc - "Aaahh, give it a couple half seconds."
Rachel - "A couple half seconds? So, one second?"
---
Jake - "I own stock that pays dividends, KB Homes."
Marc - "Kaite Holms?"
Jake - "no."
Paul - "Yea, Kaite Holmes."
Rachel - "She pays crazy dividends!"
---
Rachel (Listing to the UFC announcer) - "Did he say "Eat my biscuit?"?!"
Paul - "No he said "Kneed by [Michael] Bisbing"
---
Marc - "Thin mints are great but they are completely miss-named. I have not been getting thinner."
Rachel - "Thick mints?"
---
Paul - "Firebug has that in typo."
Marc - "Typo-pedic."
Rachel - "What?"
Marc - "Firebug Typo-pedic."
Rachel - "OH"

Being Sneaky

One of the advantages to having total control over a market is you can be sneaky about things and as long as you don't do anything totally egregious, no one is the wiser.  For the sake of gameplay and market flow we are experimenting with all kinds of stuff that you can't do on a real market, for obvious reasons:
  1. Selling something at one price, but actually charging (or crediting) the user a different value... That sounds confusing but what I am trying to say is that if the market can't match up a buy and sell order at an equal price, we bend the rules a little bit, and send the stock over to the buyer at the price they put in their buy order but still credit the seller with the full price they asked for... sneaky, but in stocks that aren't moving much, this logic may force the action a little bit.
  2. Putting stocks with the most open sell orders in front of the user first... Someone has to start buying it!
  3. Using helper AI ("the broker") to identify and push along slow moving stocks by recommending users buy (or sell) them.
  4. Automatically crediting shares of slow moving stocks to users as daily log-on gifts.  Even if they immediately turn around and sell the stock, there will start to be some movement. 
Sneaky.

Friday, February 25, 2011

Quotes of the Day

Geoff (Talking to himself.) - "Fuck you."
Andy - "Fuck you too!"
Paul - "No, FUCK you."
---
Andy - "This pickle smells." (Pushes the cup at Rachel)
Paul - "What the fuck?"
Andy - "What? She ate the other one."
---
Geoff - "Why would they give us a number as a string? Because they're fucks."

How to connect a thing to Facebook...

Doing the dance with Facebook to try and discover the "right way" to connect your code to their service is quite maddening. 

The documentation is piss poor, 9 out of 10 searches will be filled with mostly unrelated questions being asked on stack overflow, and facebooks 'official' API's are lacking to say the least.  The official python facebook API over at github hasn't been touched in months, has several awesome pending pull requests that are being ignored and is missing functionality... we had to fork it and bolt things on already.

Thats definitely one disadvantage of being first timers to the whole facebook thing.  Getting the connection working here has been difficult and has taken a lot more time than we anticipated.  Black magic is required.

Dear Facebook, hire a technical writer or two and dedicate them to your various APIs... please?

Thursday, February 24, 2011

Quotes of the Day

Andy - "Man, I wish this was top hat ice..."
---
Geoff - "About things the fuck I give."

Still goin...

Ordering pizza during late night programming is such a cliche.

Oh well.


 "Man, I wish this was top hat ice..."

Automated API Beatdown

This app is being designed using a pretty commonly seen architecture these days.  JSON being posted to various API URLs and the server sending a response chunk of JSON back which is intrepreted by the client side javascript, and then if necessary, made all pretty and displayed to the user.

But an important part of this is making sure those API hooks are always responding well after someone makes a change, especially in the beginning when major things are changing constantly, like our database schema.  So to solve this we whipped together a quick beatdown script that uses abuses our API and makes double sure everything is responding correctly...

Eventually to fully test out our idea we will need to evolve this code into simulating a fully functioning stock market... scary, but I can't wait to see it working.

Demand based IPO price points.

So an interesting problem that a fake market has is that nothing has real world value, so things like IPO price points and the number of shares to offer are all arbitrary values.  Because of this we are, as least right now, going to try out using a demand based system to set the IPO price point.  Somewhat like a slient auction style of distributing the initial shares of a given stock.  Mix that in with another philosophy of ours, which is that we want users to be able to add stocks into the system with minimal intervention from the game's administrators and you have an even more interesting system.

Heres our thoughts.  IPO's are generated in a 3 part system:
  1. Stocks are added to the market by a user searching for a stock that's never been "hit" before inside the PopStocks system.  If we can find a facebook "page" (as opposed to a "profile" for a person) for this search, and it's in one of the qualified "page sections" of facebook (for example, musician/band) we generate a PopStocks page for the search and put it into a "pre-IPO" state.   In this state anyone who searches for the same thing will generate a vote for that stock in our back end.  From here we can see which stocks are getting a lot of buzz and need to have an IPO issued.
  2. Manually, a PopStocks administrator looks at the list of pre-IPO stocks and the ones with the most "votes" are considered for an IPO.  We set a launch date for a given IPO and push that into the database.  This moves a stock from pre-IPO to an "IPO Pending" state.  The users who landed on the page previously are notified that buy orders are now open for this stock.
  3. And here's where the silent auction mentality comes in... Based on the price points users put in their buy orders we generate an IPO price.  The goal of our system here will be to cut off the low ball outliers and fill as many of the pending buy orders as possible so that on launch day the giant sell order generated by the IPO system gets bought up very quickly and the stock becomes an active commodity on the market.  Nothing is worse than watching an IPO sell order sit for weeks because the price point was too high!
So in general we now have a system where in-game demand determines both if a stock will ever go up for sale, and then sets the price point for that initial set of shares going out during the IPO event, with pretty minimal work from the administrators.

Comments, ideas?  Let us know what you think in the comments section.

Wednesday, February 23, 2011

Inflation... Deflation... Short Sales?!?

Grinding into the night we are currently thinking about our database schema and just in general how markets work... None of us on this team would say they are an expert trader, but with the help of some google searches we are having pretty meaningful design discussions about topics like market inflation/deflation, if we should or can allow short positions, do we allow users to have margin trading capabilities, etc.

Of course we are keeping in mind that our market holds no real world value, but we do want it to behave and react properly, and even more importantly, we want it to do what people would expect.  But even along those lines, some hard questions arise:
  • In a game design that calls for lots of free money being injected into the market all the time (new users, daily log on gifts, incentives for getting friends to play) how do you combat massive inflation?  
  • Can we even allow short sales?  What if a user can't cover a short and goes negative?  
  • How can we possibly store every transaction ever made and not have our database host want to murder us?
  • How do we exercise market control as invisibly as possible, or at the very least without making a user ever feel cheated?
It's a fun topic, and has resulted in many, MANY tweaks being made to our database schema.  That's why you keep it on a whiteboard.

The humble beginnings...

Tonight the PopStocks project is still in it's infancy, but we are beginning to piece things together...

Ever wonder what the very baby beginnings of a facebook project looks like?  My guess is it looks a hell of a lot like my dining room does at this very moment:



More details soon...