cubeia

Cubeia Provides Poker to the Indian Market

Cubeia has provided the software for a real-money poker network in India.

14 October 2013 (Stockholm, Sweden) – Software development company Cubeia is set to unveil a brand new real-money poker network in India in collaboration with local partner Mirch Entertainment.

The network is based upon the open source platform Cubeia Poker and is one the first pure-HTML5 poker clients to land on the largely untapped and exciting Indian market. The fully responsive and flexible HTML5 poker client runs on any computer and most mobile devices, as well as on all major browsers and on all operating systems.

Please see this press release for more information: Cubeia enters Indian market

By |Monday, October 14, 2013|cubeia|Comments Off on Cubeia Provides Poker to the Indian Market

Try our Social Poker

Our social poker network is now up and running in beta mode. We have been hard at work the last couple of weeks to react to the feedback we have been getting from our players and operators. If you are interested in running your own Social Poker network as an operator you can get more information at http://www.cubeiasocial.com/ and if you want to try the game out you can play through our example integration at http://www.cubeiapoker.com/.

By |Wednesday, April 24, 2013|cubeia, social poker network|Comments Off on Try our Social Poker

Cubeia Poker Cloud Scalability

Introduction

Would you want some cloud with your game server?

Cubeia Firebase was initially build for real money gambling and for deployment on dedicated hardware. It makes sense to control your hardware when you’re dealing with monetary systems but as gambling focus has shifted the last couple of years towards social gaming cloud based deployments makes much more sense. In this article we’ll present Cubeia Poker running on Amazon AWS and our initial load tests and evaluation.

By |Wednesday, December 19, 2012|cubeia, firebase|1 Comment

Cubeia + NDA = No Go

Frequently we’re asked to sign Non-Disclosure Agreements (NDA). Either they’re presented at an exploratory stage or when agreements or licenses are to be written. Generally we say no to them, and here’s why.

By |Friday, November 30, 2012|cubeia|2 Comments

MongoDB, Morphia and EmbedMongo

Most of the times when working with online games we run into the need to persist data that is produced by the games. This can be anything from hand history to game state to audit trails for remote calls to other systems. But what they usually have in common is that it is high volume writes, hardly any updates, some reads and that the data has large variation in what we need to store even if it is within the same context.

That last part about the data having variations is what makes this interesting. Take hand history for instance, we want to save events that are executed on a Poker table. On a Poker table many things happens – player join and leave the table, bets are made, cards are dealt, players get more chips etc. etc. These individual events might have a very different set of attributes; a raise will be type of action (i.e. raise) and an amount, but a player making a buy in will have completely other attributes. So how can we best solve this with the lowest complexity?

By |Thursday, March 29, 2012|cubeia|5 Comments

Cubeia Poker Network Demo

We are quickly moving forward with our HTML5 support and are now proud to make our complete poker network demo with an HTML5 prototype client publically available!

You can grab the demo here: http://www.cubeia.org/index.php/labs

Download, unzip and run startup.bat (the demo only runs on Windows).

NOTE: There is a problem with some of the USB demos we handed out at ICE where some files were marked as read-only. If you have a USB demo and it is not starting up correctly you can follow the steps below to fix it (or download the zip above):

  1. Mark all files and folders in the root of the USB stick
  2. Right click and select ‘Properties’
  3. Uncheck ‘read-only’, click OK
  4. Choose ‘Apply changes to the selected items, subfolders and files’, click OK

Thats it! Now it should start as intended. If you want to speed up the startup process you can copy the content from the USB stick to a local hard drive.

Feedback is, as always, most welcome! 🙂

By |Tuesday, January 31, 2012|cubeia|Comments Off on Cubeia Poker Network Demo

Mobile devices on the rise!

While doing some research for an article today I stumbled upon a study made by KPCB regarding Internet trends for 2011. Below is a graph from the study depicting the percentage of traffic generated from mobile devices for some of the leading service providers Facebook, Twitter and Pandora respectively.

Mobile device traffic

These numbers are actually staggering. In only 3 years one third of the traffic to Facebook have shifted from computers to mobile devices. Mobile search has grown four times in past years. The estimate is that 152 million Android mobiles have been shipped in the second quarter of 2010.

There is no doubt that this will completely change the way we look at online services and how we use them in the near future.

Of course, as a platform developer we ask ourselves how can a game developer most efficiently provide content on such a fragmented market? Choosing the right client technology has never seemed more important than now.

By |Thursday, December 1, 2011|cubeia|Comments Off on Mobile devices on the rise!

What’s up with Cubeia Poker?

Observant visitors have noticed that on our Community site there mentions of a Cubeia Poker. It is indeed a poker implementation we started a few years back to have a demonstration game. It’s been developed on and off since then and stands at the famous 75% done. But now, thanks to a collaboration with our customer Jadestone AB it’s under active development again!

The source code is available under an AGPL license and there’s even a small demo to download. Even though it is early days still and the poker is not yet an “official” Cubeia product, you can hit the forums at our community site to ask questions. See you there!

By |Tuesday, August 23, 2011|cubeia, firebase|Comments Off on What’s up with Cubeia Poker?

How I Learned to Stop Worrying about Serialization and Love the Wrapper

Background
One of the great benefits with Firebase is the support for transparent failover. All you as a game developer have to do is to make sure that your game state is serializable.

The Problem
One common pattern that follows from this approach is that non-serializable classes (such as the Notifier or the Scheduler) tend to get passed around a whole lot, because they can’t be stored as instance variables. If you want to do Domain Driven Development, this is a bad pattern.

Half of the Solution
Storing those instances as “transient” is always an option, but only solves half of the problem. On deserialization, those values will be null and there’s no way to recreate them in readObject().

The Solution
Instead of referring to the Scheduler and Notifier directly, create a wrapper class which holds them as transient members. Then, pass that into all your collaborating classes. The parent class will hold a reference to this same wrapper and on each call from Firebase, it will inject the live versions of the Notifier and Scheduler and since all collaborating classes refer to the same instance of the wrapper, we’re now all set!

An Example
I find that a concrete example always makes things clearer. Here’s some code for a poker game. First, here’s the game state class.

public class Poker implements Serializable {
    private Wrapper wrapper = new Wrapper();

    public void addPlayer() {
        Player player = new Player(wrapper);
        ...
    }

    public void handle(GameDataAction action, Table table) {
        injectCallbacks(table.getNotifier(), table.getScheduler());
        ...
    }

    private void injectCallbacks(GameNotifier notifier, Scheduler scheduler) { 
        wrapper.setNotifier(notifier);
        wrapper.setScheduler(scheduler);
    }
}

And here’s the wrapper.

public class Wrapper implements Serializable {
    private transient GameNotifer notifier;
    private transient Scheduler scheduler;
    
    ... getters and setters ...
}

Which means that from any any place in the code, we can do something like player.updateBalance(newBalance), which would look like:

public class Player {

  private final transient Wrapper wrapper;

  public Player(Wrapper wrapper) {
    this.wrapper = wrapper;
  }
  
  public void updateBalance(int newBalance) {
    balance = newBalance;
    notifier().notifyAllPlayers(createGameDataAction(newBalance));
  }

  private Notifier notifier() {
    return wrapper.getNotifier();
  }
}

So, time for you to fire up your refactoring tool and put some candy in that wrapper!

By |Saturday, June 18, 2011|cubeia, firebase, java|2 Comments

What’s New in Firebase 1.7.2?

Firebase 1.7.2 is just about to be released and even though this is a small release I figured I can go through some of the additions.

By |Wednesday, March 9, 2011|cubeia|1 Comment