ViCE Documentation
A Portable, open source, modular software for playing various trading card games.
Introduction

Project Description

Virtual Cardgame Engine (ViCE) aims to become software that you can use to play your favorite or even help develop your own Trading Card Game. It is designed with the following principles in mind:

Portability

ViCE is written using a variety of cross-platform technologies with the goal of making sure it runs in as many places as possible. If it doesn't at least work on Linux, Windows, and Mac OS X, it isn't part of ViCE. Specifically, ViCE doesn't rely on compatibility layers, virtual machines, or magic to run on multiple platforms.

Openness

ViCE is open source software, which means that you can use it, redistribute it, and even modify it without any legal consequences, so long as you abide by the terms of the Affero GNU Public License. This also guarantees that as improvements are made, whether by ViCE's core developers or contributors, that those improvements are made available to the public, free of charge.

Modularity

ViCE is modular in two ways:

  • Portable: ViCE's core provides everything you need to get started playing and creating your favorite trading cards games. However, since some features may only be suitable for certain platforms (eg. mobile vs desktop), ViCE encapsulates those features inside of plugins to keep itself as lightweight as possible.
  • Extensibile: At the same time, there are certain features that make an online trading card game experience more enjoyable (eg. automation, chat, Artificial Intelligence). These are also implemented as plugins so that users can take advantage of them, but aren't forced to do so.

Rationale

This section will attempt to explain the rationale for not contributing to other, seemingly similar projects. While no other projects are mentioned by name during the course of this explaination, links to those programs are given at the end of this document so that you as a user/developer may decide for yourself which project suits your needs.

Second-Class Citizenship

A few programs already out there claim to be cross-platform, but what they don't tell you is that such support relies on the installation of some compatibility layer in order to be used on certain Operating Systems Furthermore, those programs' support doesn't extend past documentation that the community had to write.

While ViCE is developed primarily on a Linux machine, every choice that is made throughout the deveopment process is done with Linux, Windows, and Mac OS X in mind. If at any point a feature of ViCE does not work properly on one of these platforms, it is considered a bug. Furthermore, patches that introduce features that alienate a platform will not be accepted.

Documentation: Or Lack Thereof

While a few of the options out there are fairly mature, their documentation is either scattered, incomplete, of varying quality, or non-existent. Such documentation increases the barrier to entry not only for new users, but developers as well.

No feature in ViCE is left undocumented. Not only is the user's guide (which you are reading) comprehensive, but we have included a developer's guide as well as API reference.. What this means is that if you are asking questions, in most cases it should be because you are working on something that doesn't (yet) exist in ViCE, or that you have failed to read the documentation. In the rare instance that a feature, source file, or procedure is left undocumented, a documentation ticket should be filed.

Complicated Interface

Some of these programs that exist today seem to overcomplicate the user interface in an effort to showcase some of their stand-out features, when in fact, they should be doing the opposite. That is, their complexities should be tucked away out of the users sight unless they explicity requests it. Other programs tend to have simple user iterfaces, but have high start up times which often leave the user wondering what took so long to load.

ViCE plans to solve all of these issues by adhering to the age-old adage of "Keeping It Simple... ". The idea is that no part of ViCE should be too complicated to understand or implement. Those that are, should be encapsulated in a simple, uhnified API which masks away the complexities. By doing so, as new technologies emerge, the complicated portions should be easily updated transparently (of course, since ViCE is open source, you are more than welcome to peek at what has changed).

Diversity of Deployment

Some of these programs are only available as desktop or web applications. For desktop-only applications, what this means is that you must first have permission to download the application on the machine from which you are accessing it. It also means, assuming you have modest platform requirements, that you must check that your system can handle such a program.

For the web-only applications, you must similarly make sure that your web browser is set up properly (javascript/flash/etc enabled), and that you have access to the application (firewalls, proxies, etc). Furthermore, if the site that is hosting the application goes down, your only option is to wait until the maintainer of the program has a chance to update their server.

Written in Qt, ViCE will eventuallly run on mobile platforms such as Android and iOS. Since the core is separate, the only changes that will need to be made in order to port to these platforms is interface changes.

Not unlike standard first-person shooters, ViCE will also give you the option of running on an ViCE server, playing on a local LAN, or connecting directly to an opponent as well.

Similar Software

Below is a list of similar software. It is provided for two reasons:

  1. To help mitigate the number of "X does Y, so why don't you join them?" questions.
  2. To give you a means of comparison so that you can decide for yourself which software is right for you.