Skip to Content
 

Making board game as video games

9 replies [Last post]
larienna
larienna's picture
Offline
Joined: 07/28/2008

I have a sleeping project in my mind that consist in developing a c++ framework that would allow programmer to easily implement board games as video games with less effort. I made some research and there does not seem to be such tool available right now.

Considering that tablet device becomes more and more popular for board games as video games and considering the upcoming OUYA open video game console that runs on Android, I was investigating the possibility to port my game fallen kingdoms, and other ideas of mine, as a video game. But considering that video games takes time to develop, I wanted to make something that was going to make video game development easy enough to make sure it's worth it.

The framework will not be a tool for common people and it will not be a application like vassal where the user control the rules. It will be an engine to create a real video game which could be similar to the games found on Xbox (catan and carcassone) or android/ipad device. The library would be licensed as open source software that could be used for open or commercial development. I think it's the best way to do it if I want to get supporters later.

The way it will work is that the programmer will define the components of the game, will program the rules and a part of the AI. The framework will manage all the graphic display, animations, user input, Data Management, etc. The particularity of a board game framework is that the number of objects in the game are fixed since no new components are created or deleted during the game. So I intend to use an object oriented database where objects contains other objects and moves around them. It would also be possible to generate components inside the game, for example cards, allowing to generate cards like with a Nandeck script. That could be a way to save graphic design time.

My objective would be to be able to develop a video game in less than 6 month, with if possible including the graphic design. I first thought that it could double the length of development since I need to make the print outs and the code, but if some objects can be generated with some code, it might take much less time to use script to generate components rather than doing the components by hand in inkscape.

I also though that the framework could also be used for prototyping. When you have a working game that does not change much during the late development but that requires a lot of play test, implementing the rules to create a video game prototype could actually make play testing easier since the components can easily be changed and there is no setup required to play the game. That will allow the designer to playtest his game intensively in a shorter amount of time.

So not only it will improve the final product, but since some of the game's code will already be done during the prototyping phase, it would require less time to develop the final product. If the framework really makes the development of board game as video games easier, it could be a good replacement for PnP products since it offer players electronic distribution without any assembly required.

I just want to know what you were thinking about this project and if you had any other ideas. It's still a sleeping project running in my head and I night be waiting for the OUYA to get out before doing anything.

Dralius
Dralius's picture
Offline
Joined: 07/26/2008
larienna wrote:The framework

larienna wrote:
The framework will not be a tool for common people and it will not be a application like vassal where the user control the rules. It will be an engine to create a real video game which could be similar to the games found on Xbox (catan and carcassone) or android/ipad device. The library would be licensed as open source software that could be used for open or commercial development.

Sounds like a serious piece of software. What level of programming skill would be needed to implement a game? Is it simply meant to be a tool for programmers so they have shortcuts?

I’m just wondering if I would be able to use it. I have some experience programming. I learnt zillions script so I could implement my game Cannon

http://www.zillionsofgames.com/cgi-bin/zilligames/submissions.cgi?do=sho...

I have been told zillions script is similar to lisp. I don’t have much experience with C++ but I have a copy if MS Visual Studio which includes Visual C++.

larienna
larienna's picture
Offline
Joined: 07/28/2008
Quote: Sounds like a serious

Quote:

Sounds like a serious piece of software. What level of programming skill would be needed to implement a game? Is it simply meant to be a tool for programmers so they have shortcuts?

A part of me is scared that the project could be too big for me. So I won't talk too much about it until I have something to show to people.

Quote:
I’m just wondering if I would be able to use it. I have some experience programming. I learnt zillions script so I could implement my game Cannon

Well the concept of a framework is to wrap and simplify the life of the programmer. The idea is that it's the framework that call the programmer's code instead of the programmer that call the library. So in theory, it should be easier to use.

The pro is that probably programmers will not even have to touch a single graphic display function since everything will be managed by the framework. I intend to use Allegro as a game library.

On the other hand, framework are done in object oriented programming because it basically consist in inheriting the class of the framework to implement your code. For example, you could have a class "card" that handle cards, then if you want to design "item cards" for your game, your item_card class will inherit from the card class.

I am currently studying Object Oriented Database structure to see how the framework could work. It seems that OODB are hierarchical and create a structure like XML files where objects contains objects that contains object.

Quote:
I don’t have much experience with C++ but I have a copy if MS Visual Studio which includes Visual C++.

I use code::blocks (MinGW32 compiler), it's free and multi-platform friendly. Considering I have no product in hand, I cannot show an example of the code. I have written a small draft today that I could transcribe here. I wanted to make a test with a real game to see what problems could occur. I'll make a summary of the transcription.

--------------------------------------------------------------------------
Game: That's Life (it's a real game by ravensburger)

First these classes will need to be defined:
Number tile
Clover tile
Die
Colored Pawns
Guard pawns

The framework will supply 3 root object available in all game:
Box: unused components
Player ( repeated as many time as there is players)
Table: Components placed on the table and displayed

Then you start by creating object by using the custom class defined above. That includes allocating them in memory, but also creating the objects with a script. For example it will create a generated picture of the tile in memory. So you do not need a picture of every tile.

Objects are allocated dynamically and added either to the box, or to the right destination according to the setup.

Pawns are added on the first tile
Unused pawns are added to the box
Tiles are placed in a track/vector (sorted) which is placed on the table.
Guards are placed on the clover tile.

So in the end, you get a structure like:

box
-- contains extra pawns
players
table
-- contains die
-- contains vector
---- contains tile
------ contains pawn

One of the problem I need to identify is component ownership. For example, what are the pawns owned by a player. Either player hold a copy of the reference on the paws he owns. So when it is his turn, I can pass through his list of pawns and allow only these pawns to be moved.

OR I search all the pawns on the board that has the color of the player. But that will depend of the capabilities of object oriented database system which I am not familiar with. They say it support querying, but I don't know the details.

So I guess the main loop will then be:

- roll the die
- find the pawns that can be moved
- ask the framework to ask the player which pawn he wants to move.
- Change the destination of the selected pawn
- check for victory condition
- pass to the next player.

Once the destination of a pawn is set, the framework would have a separate thread that will cycle and make all necessary animation to move the pawn into destination. So you do not need to call any procedure to update the graphics on the screen.

So this is roughly how it could work
---------------------------------------------------------------------------

I want the framework to manage a large amount of stuff. For example, it could be possible that game menus, and common interfaces like selecting a number of players, saving the game, checking the pieces in the box are all supplied by the framework. So unless a programmer wants to redefine them, he does not need to bother about it.

I will probably use the same interface for game menu as for component management. For example, a game menu could be a series of cards, where there the menu text is on each card. So I will simply reuse the same interface for menu.

I also exploring the possibility to have for example a game running on OUYA and a tablet at the same time where the information on the TV is not the same than on the tablet. For example, I could only draw the board on the TV and draw the player's hand of cards on the tablet allowing to play around a TV with hidden information. But that mostly depends on the technological capacity of the OUYA. It's not that hard to do, in theory it's just displaying and hiding layers.

But at that point it's more a dream than anything else. So for now I'll focus on exploring OODB, and when I start coding, I make some example with common public domain game so that people could see some code sample and so that it get easier for me to see what is required by game maker.

I hope that the framework could attract more than hard core programmer. I am a very organized person that can teach things very well. If I can make it more accessible, I would be very happy.

Many people have hopes that they do more board games on the WII-U with the coming of the tablet controller, but since it's not a royalty free console, I would not consider developing for it. Still if I could do something similar for OUYA and tablets, I would be very happy.

I hope that it clarified a few things. The project seems bigger than I am, but unless I start somewhere, I'll never know. Who knows if I could get support from others or if somebody else could take over the project.

Runedrake
Offline
Joined: 08/13/2012
I had a similar idea

A while ago I had an idea similar to this except I was planning to make it in javascript and have an easy to use interface so that people could easily make board games on the web. This was mainly something to help me prototype and playtest the games I make. Sadly I never finished this project.

How it would work was there would be components for the game (which you can drag and drop onto the "workspace") and there are mechanics which you can connect to different things such as components.
For example you could place some dice into the "workspace" and give the dice a dice rolling mechanic then you can connect that dice value to various other components to trigger events and such.

This post has made me want to create/finish my project that I never completed but possibly I will wait a few more years in hope to find more time to work on it.
Good luck with your project.

lewpuls
lewpuls's picture
Offline
Joined: 04/04/2009
Globalgamespace

Globalgamespace (http://www.globalgamespace.org/) planned such a project, but got little support on Kickstarter. Lots of details and videos about it at the Web site.

I've seen another attempt of this sort, unfortunately the URL and name escape me.

Globalgamespace has a list of "prior art" such as zillions and many others.

larienna
larienna's picture
Offline
Joined: 07/28/2008
Many video board games seems

Many video board games seems to focus on playing with other players online. But that is not my primary objective, still I don't mind supporting online multiplayer.

I found an interesting article that explained how to organise data in order to serialize it on a file and recover it (Saving and loading game). Considering I am in the mood to work on it, I'll start designing the data structure and that will prevent using a database system where most of them are client server oriented.

I also found that OODB can be organised either as graph or as documents (like shown above). I think I will keep the document approach, for objects containing objetcs, and I might do other relations, like which pawns is controlled by which player, with searching like in a relational database.

larienna
larienna's picture
Offline
Joined: 07/28/2008
Just to update the post. What

Just to update the post. What I have in mind so far is to switcht to java and use LibGDX for doing such library since there is a very interesting 2D framework. I talked albout it to some of my friends they seem interesting in doing somthing similar. Java would also make it more portable for all kind of devices.

zmobie
zmobie's picture
Offline
Joined: 11/19/2008
If I were doing this, I'd

If I were doing this, I'd take an existing game framework, and add libraries to it that are specific to board gaming stuff.

Itsdan
Offline
Joined: 05/19/2013
In order to learn WebSockets

In order to learn WebSockets I actually did a very simple, incomplete implementation of Love Letter. The server side uses a framework implemented in C#, and client side it's javascript, works fairly well but it served it's purpose and I'm not certain I'm going to flesh it out into anything larger until/unless I have a game I can implement on it.

larienna
larienna's picture
Offline
Joined: 07/28/2008
Quote:If I were doing this,

Quote:
If I were doing this, I'd take an existing game framework, and add libraries to it that are specific to board gaming stuff.

LibGDX is actually a java framework. It's 2D engine could make the management of board game easy because the way it seems to work is that you create "actor" objects which could be game components and apply them "action" object which could instruct an actor to move to a certain destination. Then the engine take take of executing all the actions and refreshing the screen accordingly.

You also have a view port that you could scroll which could be used to scroll the content of the table. In theory, it seems pretty neat and it should take care of all the technical aspect of drawing an moving objects on the table.

The thing we need to add is the board game layer generic to all games (Mamage cards, dices, tiles, tokens, turns, players, variants, etc), and the game specific layer that implement the rules of the game. Of course, I'll have to put my hands in the code to know if it is as easy as they say.

Syndicate content


forum | by Dr. Radut