[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Visionaries] Sourcery redesign
From: |
Peter Minten |
Subject: |
[Visionaries] Sourcery redesign |
Date: |
Thu, 31 Jul 2003 14:37:46 +0200 |
User-agent: |
Mozilla/5.0 (Windows; U; Win 9x 4.90; en-US; rv:1.4) Gecko/20030529 |
Hi folks,
doing some thinking about Sourcery I decided that it's best to program the game
in Ruby instead of in DG-Scheme. Knowing myself it could take a long while until
the DG-Scheme interpreter is ready. I thought DG-Scheme was the only language
however that the scripts (cards) could be written in with enough security, but
it turns out some trickery would allow the scripts to be written in Ruby too.
Furthermore it turns out that the Sourcery game would be an ideal example of an
end user webservice. But really, the main reason for using Ruby is that I'm
eager to play the game and hate waiting for myself :-).
Some things need to be setup though, Ruby has to become a real alternative to C#
in DotGNU. I don't see any significant problems with this however. It just
requires hooking Ruby up to the DGEE and that's not the most complex task
(though it requires some moderate C skills).
Now to how it works. There are two major components: client and server. The
client communicates with the server using webservice calls. The advantage of
this approach is that it's easy to create multiple clients, for example for
mobile phones and for text mode.
Inside the game engine (part of the server) the scripts run in separate threads
with paranoid security level ($SAFE=4). The only way the scripts can communicate
with the rest of the system is through pipes. The scripts send arrays of the
form [function-name, {arguments}*] through the pipe to the game engine and get
data back in a not so defined way. The scripts can't manipulate anything
directly and are thus secure.
I've identified the following major pieces in the Sourcery design:
* Game engine
This is the thing that actually takes care of the battles.
* Server
The dedicated server program for tournaments. This program can also facilitate
one-on-one battles.
* Client
The user interface, there will be a couple of these.
* Deck manager
The deck manager allows offline modification of the deck (adding new cards,
etc). It's integrated into the game client.
* The Standard Card Template Library
The basic template lib.
* Documentation
The rules, the strategies, the SCTL cards.
I also did some work on the less technical aspects of the game. I've created a
new game board of 16x16 (old is 10x10) that will hopefully increase the
strategic component of the game. The problem with the old board is lack of space
and a too small buffer zone. The buffer of the new board occupies 4/16=1/4 of
the rows where the old buffer occupied 2/10=1/5 of the rows. With four central
rows the new buffer presents an excellent battle field.
This is the new board, I recommend copy&paste into a console editor to see it
clearly:
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
F | | | | | | | | S O P | | | | | | | |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
E | | | | | | | | | | | | | | | | |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
D | | | | | | | | | | | | | | | | |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
C | | | | | | | | | | | | | | | | |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
B | | | | | | | | | | | | | | | | |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
A | | | | | | | | | | | | | | | | |
+===+===+===+===+===+===+===+===+===+===+===+===+===+===+===+===+
9 | | | | | | | | | | | | | | | | |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
8 | | | | | | | | | | | | | | | | |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
7 | | | | | | | | | | | | | | | | |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
6 | | | | | | | | | | | | | | | | |
+===+===+===+===+===+===+===+===+===+===+===+===+===+===+===+===+
5 | | | | | | | | | | | | | | | | |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
4 | | | | | | | | | | | | | | | | |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
3 | | | | | | | | | | | | | | | | |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
2 | | | | | | | | | | | | | | | | |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
1 | | | | | | | | | | | | | | | | |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
0 | | | | | | | | S O P | | | | | | | |
+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+---+
0 1 2 3 4 5 6 7 8 9 A B C D E F
As you can see the notation changed from chess to hex. The rule is column before
row (aka column = coordinate div 16).
Greetings,
Peter
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Visionaries] Sourcery redesign,
Peter Minten <=