BlueLine Games BlueLine GS
BlueLine Games BlueLine GS
October 2, 2014
United States 
BlueLine's Board Game Engine
We get a lot of questions about what engine we use to make our games.

In short: it's a custom Board Game Engine that we wrote on top of various libraries.

We started out with our first game on Xbox 360 which means that we were coding in C# and using the XNA game library.

A while later, Microsoft announced that they would stop supporting XNA, but an open source project, Monogame sprung up that would implement the same things as XNA so that developers who used XNA could easily take their Xbox games and bring them to Windows, Mac, Linux, iOS, and Andorid using the same code.

Some friends of mine who are also Indie Game Devs, notably MagicalTimeBean (Ian) and MisfitsAttic (Tim) who had been using a branch of Monogame to port their projects to Mac and Linux. That specific branch is maintained by Flibitijibibo (Ethan Lee) and it has grown into what is now called FNA[]. A bunch of quality indie games are also using this library: Terreria, Gnomoria, Chasm, Wizorb, Dust: An Elysium Tale, Axiom Verge, Fist Puncher and many more.

Since FNA was primarily used to port games to Mac & Linux early on, we got to stress-test the Windows functionality and have had the opportunity to give Ethan several gray hairs while reporting very picky little bugs ;)

FNA uses many other open source libraries that you may have heard of: SDL, OpenAL, OpenGL, etc..

Our Engine
It took about 30 months from when I started working on Hive for Xbox 360 until we got Hive released on Steam. There was a lot of work that went into making it, and fortunately, it has made it much faster to make subsequent games.

We have a "Game Common" section that contains functionality that all games would need, like players, menus, etc.. On top of that, we layered "Board Game Common" which contains functionality that all board games would need such as taking turns, "plies[]", board spaces, game pieces, zero-sum[] game outcomes, etc.

In addition to the general structure of board games, we have built a bunch of large features into the engine which gives us a huge advantage when making new games. For example, Simply Chess (coming September 2015, probably) is a rather feature-rich version of Chess and yet we were able to make it in only a few months since we were able to quickly plug into various features of the engine. Here's a preview of some of the things that the engine handles for us:
  • Various game mode setup. It takes months to add all of the different gameplay types to a game usually (play vs. AI, pass-n-play, local multiplayer with gamepad support, online multiplayer, etc.) but they are all wired up for each game now, so it only takes a little bit of work to glue them into each new game we make.
  • Asynchronous online gaming powered by our own Cloud Servers. This also uses Steam notifications. This is a HUGE undertaking to create, but now for each new game it's only a matter of a couple of weeks to get the initial version running.
  • A pretty advanced Minimax AI engine[] which can make decent AI for any turn-based game fairly easily. This took probably a year of work on its own to create the engine, the associated debugging tools (it's hard to debug a million nodes at once!), and all of the optimizations (such as alpha/beta pruning and the 'killer heuristic') that we needed to get it running on more complicated games like Hive.
  • A somewhat MVC (Mode / View / Controller) structure which gives us the flexibility to quickly swap in new Views so we can do cool things like switch a game between 2D and 3D instantly.
  • UI elements - unlike in HTML where making a very basic UI can be thrown together in a couple of hours, everything is harder when you're using a fairly low-level gaming library. However, since all of our games are using the same engine, we only have to write things once. So we created the Notification system (those little popups which tell you if you are trying to make an illegal move), a dialog system (such as the Rules and Settings) and various UI elements such as textboxes (that sounds simple, but just making that chat section in the Online Game Main Menu was a huge undertaking... once).

Another huge benefit of having 3 games on the same engine is that we have more eyeballs on every corner of the code. There are literally billions of edge-cases that users can hit in our games, and by having the user-base of 3 different games (soon 4) all "testing" our code, we can find errors more easily.

This is especially helpful for our Mac & Linux users since those versions don't have as many users on them normally... but now they have 3x as many people finding bugs as they would otherwise.

When we fix errors for one game, often this will fix it in all of our games.

It's been a huge investment of time to make this engine, but it's paying off all the time... it's pretty much the only way that a very small team (we're just two people) can make all of these games and do so fast enough that we can sell them for just $9.99 often, and can still survive to make another game.

A huge problem with the indie game industry is that many indie devs can only afford to bet all of their money and make one game... then they either blow up like Super Meat Boy / Minecraft, or the other 99% of the time, the indies fall out of business.

We've been fortunate enough that we could survive a long time & since we planned this board game engine, we can make games fast enough that we're still here almost 4 years after creating BlueLine Games!

If you have any questions about our engine, including how or why we did something, please ask in this thread & I'll follow up :)

Thanks for reading!
< >
Showing 1-2 of 2 comments
namianwu Feb 7, 2017 @ 7:23am 
Thanks for being good developers; you guys are awesome! :steamhappy:
Aww, thanks @namianwu! :D
< >
Showing 1-2 of 2 comments
Per page: 1530 50