[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Visionaries] A hint of Sourcery in the air

From: Peter Minten
Subject: Re: [Visionaries] A hint of Sourcery in the air
Date: Wed, 23 Jul 2003 16:31:08 +0200
User-agent: Mozilla/5.0 (Windows; U; Win 9x 4.90; en-US; rv:1.4) Gecko/20030529

Derek Lewis wrote:

Hi Peter,

Glad to see your still working on this.

Since my last posting I have been learning about C# and getting up to speed on object-oriented development. I am interested in game theory and strategy games.

As an exercise I am trying to implement some of the simple games described in *Laws of The Game* :


I hope this will iron out sufficient wrinkles in my understanding of C# and object-orientation that I will be able to contribute to this project. Currently I am compiling and running code fragments in order to test my understanding.

Well, a few things have changed since I first started on Sourcery. Since I'm
making Sourcery an example project for DG-Scheme it will be programmed
completely in DG-Scheme. It makes sense to do parts of it in C# for efficiency,
but if I do that I'll effectively make DG-Scheme a scripting language for C#,
while it's a full blown programming language (besides, due to the internal stack
model I don't even know if calling DG-Scheme from C# will be possible without
serious problems).

Due to the nature of Sourcery a language with less flexibility or less security than DG-Scheme wouldn't be good for the game engine. The DG-Scheme interpreter doesn't exist yet, I'm currently programming it.

If there are areas I can help with (e.g. testing) please let me know.

Well, it would be nice if you could take a look at the rules file (attached, and long) and tell me what you think of it :-).



DGS.Sourcery ("Sourcery") is a mix between chess, trading card games
and role playing games. The goal of the game is to reduce the life
points of the opponent to 0.

== The board: ==

The game is played on a 10x10 board: 

 9 |   |   |   |   | S O P |   |   |   |   |
 8 |   |   |   |   |   |   |   |   |   |   |
 7 |   |   |   |   |   |   |   |   |   |   |
 6 |   |   |   |   |   |   |   |   |   |   |
 5 |   |   |   |   |   |   |   |   |   |   |
 4 |   |   |   |   |   |   |   |   |   |   |
 3 |   |   |   |   |   |   |   |   |   |   |
 2 |   |   |   |   |   |   |   |   |   |   |
 1 |   |   |   |   |   |   |   |   |   |   |
 0 |   |   |   |   | S O P |   |   |   |   |
     A   B   C   D   E   F   G   H   I   J

The player with the 0 row closest to him (I'm asuming male players
here for simplicity) is called the white or the red player. The other
player is called the black or the blue player. In this document I will
use the white/black chess convention instead of the red/blue TCG
convention. Note that wherever I use the term white the term red can
also be used, the same goes for black and blue.

The squares e0 & f0 and the squares e9 & f9 are special, since they
are effectively one square. The e0 & f0 squares are called the White
Seat of Power. The e9 & f9 squares are called the Black Seat of
Power. I'll explain the use of these squares later.

The rows 4 and 5 are called the Buffer. The use of the buffer is to
separate the white territory (rows 0,1,2,3) from the black territory
(rows 6,7,8,9). I'll explain the use of territory later.

== Life points ==

At the start of a game every player gets 100 life points. When a
player loses all of his life points he loses the game, unless the
other player lost all of his lifepoints too at the same time in which
case the game is a draw.

== Cards and pieces ==

A piece is an entity that occupies exactly one square, not being a
Seat of Power, on the game board.

A card is a piece that's not on the game board. When a card is played
the piece is placed on the game board.

The deck of a player is a context dependant term. When used in the
context of a game in progress it means all cards the player has in his
hands. When used outside that context it means all cards the player
has at the beginning of a game.

== Basic piece types ==

There are roughly 3 types of pieces: generators, artifacts and

Generators generate energy, mana (magic energy) or both.

Artifacts generate and/or support spells.

Creatures are movable and able to attack physically.

Note though that these are the general rules which don't need to
apply to every piece. For example many creatures can cast spells.

== Physical attack ==

Physical attack is the act of having a creature move for a turn to an
already occupied square of the opponent (or it's SOP). Since no square
can contain more than 1 piece combat follows.

To be able to attack a square the attacking piece should be able to
move to the attacked square if the move range of the attacking piece
was equal to it's attack range (aka the target must be in attack

In physical combat there are 2 important statistics: attack power and
defense power. Creature A defeats (destroys) creature B if the attack
power of creature A is bigger or equal to the defense power of
creature B. This works both ways so the following outcomes are

A wins -- attack A >= defense B and attack B < defense A
B wins -- attack A < defense B and attack B >= defense A
kill draw -- attack A >= defense B and attack B >= defense A
live draw -- attack A < defense B and attack B < defense A

In case of a live draw the attacking creature is moved back to it's
position before the combat.

Note that it's very well possible to attack the opponent directly,
simply by attacking it's SOP.

== Physical blocking ==

Some pieces can't defend themselves (ie have no attack power) and are
thus likely to suffer repeated attacks, if there wasn't a thing like
blocking. Blocking, or more exactly physical blocking, is the act of
delaying combat with one piece until the combat with another piece has
been succesfully completed for the attacker. In order words if piece A
attacks piece B and piece C defends piece B then piece C blocks piece
A and piece A has to defeat piece C in order to get to piece B.

In the example piece B has to be in the defense range of piece C if
piece C wants to block for piece B.

Not all pieces can block all other pieces, attacking pieces might
evade the blocking piece. Every piece has a set of evaders, an evader
is a way that a piece might evade a blocking piece. The blocking piece
must have a superset of the evaders of the attacking piece in order to
block it.

So in order for piece C to block attacking piece A that attacks piece
B the following must be true:

Piece B is in the defense range of piece C.
Piece A has no evader that piece B doesn't have.

== Spells ==

Spells are the really fun part of Sourcery. A spell is defined as
something that does something in the game. The definition is vague
because spells are really versatile. For example a spell could
directly attack the opponent's SOP without any chance of blocking, but
spells that reflect attacks back to the attacker (mirror spells) are
also quite common.

There are two ways in which a spell can come into play. The first is a
spell card that can be played just like a piece card, except that the
spell does not need to be placed on the board (it can be targeted to
something, but that's not placing it). The second way is as the side
effect of a piece or spell (yes, spells can generate spells).

Artifacts are the pieces that most often generate spells, but
generators and creatures can generate spells too. An example of an
artifact that generates a spell is the Evil Lawyers Office, which
generates the Patent spell. 

== Alignments ==

Alignments are used to group cards. Every card is part of at least one
alignment (known as neutral) and can be part of other alignments
too. Alignments can (multiple) inherit from eachother, so alignment C
can inherit from A and B. If a card would be of alignment C it would
automatically be of alignment A and B too. This is similar to multiple
inheritance in programming languages, and it's implemented in that way
too. Note that cards can have multiple alignments, but energy and mana
do not have alignments.

The alignments of a card affect the behaviour of the piece and the
behaviour of other pieces with regard to the piece. For example some
spells may not work against pieces of some alignment.

== Powerups and equipment ==

Powerups are spells that modify the behaviour and/or powers of a
piece. Powerups are always have positive effects when cast upon an own
piece, though combining certain powerups can cause unwanted side
effects. Powerups can be temporary, in which case their effect
dissappears after a certain while or permanent. Powerups can always be
removed by some spells.

Equipment are powerups that can be turned on or off, at the players
command. Equipment can be temporary too, but is usually permanent.
Equipment is given to a piece, but can be given to another piece, when
that's next to the piece that has the equipment.

== Boxing ==

It's possible to place pieces on the board without them being visible
by putting them in a box. In that case the opponent sees a box, but
not it's contents.

Boxes aren't defensive, if they are attacked their contents are
effectively attacked.

Boxes are also leaky. By default every box leaks a little bit of
information about it's contents (for example a range in which the
attack power of the content lies). Spells and artifacts can modify
the global leak factor, they can also modify the leak factor of just
one box.

Pieces in boxes are never active (can never do anything useful), but
they can be setup to do something active later.

It's possible to open a box and use it's contents in one round (using
triggers), however some restrictions apply. The most important
restriction is that opening a box has the effect of constructing for a
creature. Thus a creature with an attack delay (which is mainly used
to prevent a creature from attacking the turn it's constructed) can't
attack out-of-the-box. Note that artifacts usually don't have attack
delays, which allows nice hidden trap tricks :-).

== Triggers ==

Sourcery cards are object in DG-Scheme that can be connected to
eachother during the game play. This is done with triggers. A trigger
is a piece of code that is evaluated (executed) when a certain event
occurs. The event can be game generated or user generated.

== The fases of a turn ==

The turn in Sourcery is divided into roughly 7 fases:
* Resource harvesting
* Piece placement and attack setup
* Defense setup
* Battle
* Movement
* Trigger setup
* User-trigger activation

I'll explain the fases in detail now:

-- Resource harvesting --

This is simply the on-turn-start trigger that's activated for each
piece. The main use of this fase is to aquire new resources from the
resource generator.

-- Piece placement and attack setup --

In this fase new pieces may be placed and the triggers of newly placed
pieces may be modified. All pieces may be assigned targets for the
coming battle in this fase. 

Spells may be brought into play and assigned targets, the triggers of
newly played spells may be modified.

Finally since battle is sequential the attack order may be set in
this fase.

-- Defense setup --

The opponent gets a chance to assign block targets in this fase. No
spells may be assigned targets though.

-- Battle --

Now the battle occurs.

-- Movement --

In this fase movable pieces may be moved to a new location.

-- Trigger setup --

Almost at the end of the turn all triggers may be modified for the
next turn.

-- User-trigger activation --

User triggers may be activated in this fase (for example to switch a
piece into another mode).

== Gods and temples ==

The game is played in a world with gods. The chief god is called
Root. Below Root there are the high gods. There is one major god for
each alignment directly under vanilla. Under the major gods there are
the minor gods. Under the minor gods there are the half gods. Under
the half gods there are the mortals themselves. Note that the half
gods do not necessarily have an own subsubalignment, though it's

To have any use of the gods you need temples. There are three kinds of
temples: minor temples, major temples and the Root temple. Minor gods
can be reached in the minor temples, major gods in the major temples
and of course Root in the root temple. Note that half gods don't have
their own temple, they're in the temple of the minor god they belong

There are three ways to build a temple. The first is simply having
the temple card and playing it. The second is a special spell that
gives you the temple. The third is temple merging.

It's possible to sacrifice all the temples of a certain level and
alignment for the next higher temple, this is known as temple
merging. For example given alignment B and C are subalignments of
alignment A and you have the B and C temples then you can sacrifice
the B and C temples for the A temple.

== Avatars and divine interference ==

When you've finally constructed a temple it would be nice to do
something with it. There are two major things you can do with a
temple: call an avatar or call in divine interference.

Avatars are very powerful creatures that are actually owned by a god
but given to you in exchange for a certain cost. Half gods don't have
avatars, they just appear themselves. Usually one has to pay a
summoning cost to get the avatar to the battlefield and a pay to keep
them there for another turn.

Divine interferences are spells with high to extreme power. Every
full god (not half god) has one or more divine interferences.

To give you an idea of the power of avatars and divine interferences
I'll explain what Root has to offer. The avatar of Root is
indestructible and can physically attack and destroy any piece (thus
not the SOP) on the battle field without being blocked. The first
divine interference of Root is the Command of Destruction, which
destroys every piece of your opponent on the battlefield. The second
divine interference of Root is the Command of Shutdown, which simply
reduces the life points of your opponent to 0, giving you instant
victory. Of course the Root avatar and divine interferences are
extremely expensive.

== Tournaments ==

While it's possible to play games directly against your friends it's
also possible to play tournaments. In tournaments you fight battles
against players with the same skill level as you to get up in the
ranks and win the tournament.

Most Sourcery tournaments are ladder formed, you can enter at any time
and work yourself up the ladder to the top. Some tournaments could be
pyramid formed, in such a tournament the knock out principle is used
and usually the game times are set. I don't expect to see pyramid
tournaments however unless the game becomes really popular and
national and/or international competitions are organized. Given this
fact (and that the knock out principle is well known) I'll only
explain the ladder form and asume every tournament is of that form.

When you first enter a tournament you have level 0:0. When you win a
battle you get level 0:1, when you're at level 0:9 and you win a
battle you get level 0:10, when you're at level 0:16 and you win a
battle you get promoted to level 1:0.

When you win a level you also gain a card template of the major level
(major:minor) you're in or of a lower level. If you have a certain
card template then you have the right to place any number of cards of
that template in your deck.

== Leagues ==

Sourcery tournament servers have a range of major levels, when you've
promoted over the top of the range of your tournament server you've
finished that tournament. You can then enter another tournament. The
official tournament servers are all coupled so that you merely need to
register yourself with another tournament server and your deck
migrates with you (you can also download your deck from your old
server if you like for manual import).

To control the load of tournament servers leagues are set up. All
league servers operate over a range of 5 major levels. All official
tournament servers that operate over a certain range are in the same

The leagues are named with elements. The easiest is called the
Hydrogen league. The toughest is called the Gold league. Here's a
rough order, note that there can be changes to this list:

* Hydrogen (newbie) 0-5
* Helium            5-10
* Carbon           10-15
* Nitrogen         15-20
* Oxygen           20-25
* Silicium         25-30
* Iron             30-35
* Copper           35-40
* Silver           40-45
* Gold (wizard)    45-50

The names in parenthesises are the trivial names I came up with.

== Promotion tournaments and quest tournaments ==

In the normal league tournaments a player plays to be promoted to a
higher level and league. That's why these tournaments are called
promotion tournaments.

In promotion tournaments the choice of card templates is limited to
the official standard set. The tournaments support the official
extension sets too however. To gain access to the extension sets a
player needs to complete a quest tournament.

There are three kinds of quest tournaments: extension tournaments,
deck tournaments and card tournaments. In none of these tournaments
levels can be gained, however they same things to offer that the
promotion tournaments don't have.

Extension tournaments allow a player that wins a number of battles
against equally skilled players to get card templates from an
extension set in all other tournaments. No card templates can be won
in this kind of tournament.

Deck tournaments are more or less practice tournaments, no levels can
be won, but every battle won gives the player two new card templates.

Card tournaments are all about one or more card templates with very
high power that are unreachable in the promotion tournaments (or at
least at a much higher level). No card templates can be won by
winning one battle here, but the final price is usually worth that.

The extension and card tournaments are usually quite short, about 20
rounds or so (that's barely a major level in a promotion
tournament). Card tournaments don't have any goal and thus can be
quite long, but players will usually go back to the promotion
tournaments when they've got enough card templates.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]