domingo, 15 de mayo de 2011

Science Module - Part 1

The corner stone of the science module is the technology. A technology is what enables someone who owns it to produce certain units, constructions, enable political, commercial, diplomatic or economical features. In order to obtain certain technology a user must spend a defined amount of science points and have discovered all the prerequisite previous technologies.

A single technology can bring changes on different areas, for example Industrialism can provide with a new construction called fabric, a new political regime such as socialism, a new unit such as engineer.

At the end of each turn, a player will obtain a number of science points based on the following considerations:

- Number of citizens that the user has dedicated as scientists.
- Constructions dedicated to science (Schools, Universities, Laboratories, etc.)
- Taxes dedicated to science budget.
- Collaboration programs with other players.

The number of science points will be available for the user to assign them to the available technologies, so that if the user reaches the required number of science points for a technology, this becomes available.

Another way to obtain a technology is by sharing technologies with other players. Once a certain level of diplomatic relation among players as well as certain diplomatic technologies are available, players are allowed to exchange technologies in between them or even sell them for money.

Certain technologies can be patented, so that the first player that discovers them is the only owner of the technology and can ask for a license payment to other civilizations. This can happen among those players that reach certain level of understanding in commerce terms and belong to the same commerce and trade agreement.

Players can also steal technologies from other players by using the espionage module (milestone 2?).

lunes, 9 de mayo de 2011

The Board - Part I

A board is probably the corner stone of any strategy game and as such must be considered in the initial phase of the project. Let's try to enumerate the considerations we must comprise in order to sucessfully implement a board for the game:
  1. A board is a two dimensional matrix composed by rows and columns.
  2. The board must not have boundaries.
  3. Each unique combination of row and column is called a cell.
  4. A cell can hold different items: units, cities, resources, etc...
  5. A cell is surrounded by other cells with which it communicates.
  6. The board must be updated after every turn.
Let's try to ellaborate further on these topics so that we can get a clearer picture of what needs to be implemented.

  • A board as a two dimensions matrix
Basically what we are saying here is that the board of the game will have a set of cells arranged in rows and columns. Depending on the number of players the size of these two might differ. We will need to find the right proportions for the different number of players as well as for the resources we can count on for the development of the game. Taking into account that the total number of cells is the product of rows times columns, making either number too big will definitely have an impact on ammount of resources needed to calculate each turn.

  • The board must not have boundaries
The last cell of a row is followed by the first cell of the same row. The last cell of a specific column is followed by the first cell of the same specific column. The reason for this is to avoid having incommunicated spots that are apart from the rest of the board, making them unplayable for players that land on them.
  • Unique combination row and column = cell
This is basically a step forward from the previous definition. So we have a board that is divided into rows and columns, so that a cell can be expressed as an specific row and an expecific column. This also means that there are no two cells that are equal in the board (they can share the same attributes but they will still be account as different elements).

  • A cell can hold different items
As in every board game, cells are there so that we can put items on them. At this very moment I can think of units, resources and cities (this last one probably holds more than one cell). This means that a cell is a container for other objects of the game. At the moment this definition is good enough, but it will need more development in order to make the game interesting.

  • Cell communication.
A cell is communicated to the neighbor cells. This is important for things such as unit movement, resource harnessing or other related issues. It is also important to note that a cell is not isolated from other cells and events happening on neighbor cells might have a reaction on the cell.The board must be updated after every turn.
  • The board must be updated after every turn.
After each turn (or after the last player's turn), each cell of the board must be updated with the movements and changes that the game is producing. This leads us to the next element to be discussed and that will be the next article of this blog: the turn engine.

domingo, 8 de mayo de 2011


First of all, let us express a warm welcome to this project and encourage you to read along these lines so you get an idea of what to expect from mPango.

Secondly, we must advice you that this project is still being planned and all work needs to be done. Few code has been submitted by our first committer. This means that there is still plenty of space to cover, and if you were considering joining an Open Source project of the same nature as mPango, you should consider that this is the best moment as you could become a key player in the project.

There are some ideas of what is to be done but, as we are in the initial phase, there is still lots of things to discuss and decisions to be made.

What we know: this project is an open source web based strategy game that will most like be turn based. We have all played games like Civilization, Sim City, Age of Empires, Star Craft and so on. All those games are initially thought to be a 1 player experience type of games, but the richness of the functionality in them makes them candidates for the type of game we want to develop in this project.

Web technologies enable thousands of humans to interact in various forms. This project will leverage those same technologies that are available nowadays to create the best multiplayer (or should we say massive player) interactive game possible. We have to be realistic about the scope of the project and the limitations that the very nature of an open source project have. This probably means that it will be a lost cause to have a state-of-the-art front end with 3D graphics and astonishing sound effects. It also means that multimedia goodies as well as other features only private funded projects might have will not be present for some time.

Nevertheless, we all know how fun it can be to play a Risk board game, Monopoly, Hotel or any other game on which strategy, luck, persistence and intelligence come into play with the clear objective to beat the rest of the players. And this means that as long as we can provide a functional simple to use game on which players can develop their strategies in a fun way, we can provide some value with the project.

Time is a limitation that everybody has to live with and in the beginning the time we use for the project will be a gift for the sake of it. If things go well and we are capable of having an stable version of the game, we are determined to launch a server so that end users can use it.