[I originally posted this as a Perl-specific project, but I now believe a more OO language [perhaps Ruby] would be more appropriate]
The specs are there
code is not. Help rewrite the classic M.U.L.E. game with improvements:
YAMC: Yet Another M.U.L.E. Clone
Another attempt at cloning M.U.L.E. with the following differences:
no randomness (pure strategy game)
no "arcade" action (ie, more like a board game)
free and open source
text-based at heart
You and your fellow evil robots have started a colony in space (who
needs planets!), and compete to see who can produce the most
Before destroying Earth, you were able to save a number of Young
Australian Material Collectors (YAMC), who do the grunt work of
The resources in this game [all game parameters are subject to change]:
(S)ilver: the game's basic currency
(F)uel: determines how many things you can do per turn (~ food in
(G)old: the bank will buy this for n silver on the nth turn (it's
value keeps increasing) (~ crystite in the original)
(W)arp: lets you travel through a tile at lower fuel cost
(Y)AMC: Young Australian Material Collectors: harvest resources on
your land (~ M.U.L.E. in the original)
(E)nergy: all working YAMCs need 1 Energy per turn to keep working
(~ energy in the original)
(P)illager: can rob adjacent enemy land of 1 resource per move;
can also move one tile per move
(T)eleport: transportation between teleports (and/or the bank)
takes 1 move.
(N)aCl: when combined with a resource, prevents spoilage
(C)at: a Schroedingers cat: when combined with one energy, can
become any other resource in the game
p(L)ants: a (resource) plant [eg, a silver plant] produces 1
resource per turn per YAMC working the land.
Currently on a square (Cartesian) grid, but perhaps a hex grid or
even true 3-D grid
Each land tile can hold 16 items, some combination of the following:
YAMC: they use 1 energy per turn, and harvest 1 resource from
each plant on the tile. If you have 3 YAMCs, they will use 3
energy and harvest 3 resources from each plant.
Plants (of any resource): each plant will produce n units of
resource, where n = the number of YAMCs in the tile. You have an
unlimited supply of plants of each type.
Warps: for every warp on the tile, it costs only 1/2 as much
fuel to move to the tile (5 warps = 1/32 fuel)
Pillager: can remove resources from adjacent enemy tiles, 1
resource per move
Teleport: movement from this tile to any other tile with a
teleport (or to the home base) costs only 1 fuel. Multiple
teleports reduce this to 1/2 fuel, 1/4 fuel, etc.
EXAMPLE: if you have 3 gold plants, 4 silver plants, 5 mules, and 4
empty slots, this tile will produce 35 = 15 gold per turn and 45 =
20 silver per turn. The tile will also cost you 5*1 = 5 energy per
Land phase: each player chooses one land tile that is adjacent to
one of their existing tiles or to the home base. If two or more
players want the same land tile, they can bid for it. The winner
receives the tile, but the loser may choose another tile.
Sow phase: Use your fuel to move items (eg, plants and YAMCs) to
your land. Placing an item on a tile requires moving to the tile and
then returning to home base. You can only place one item per
trip. If you have 16 items on a tile, you must remove items (one per
trip) before putting in new items.
Spoilage phase: items in your inventory (but not those on land
tiles) diminish as follows (always rounded in the player's favor):
(S)ilver: increases by 10% per turn (bank interest)
(F)uel: decreases by 10% per turn
(W)arp: decreases by 25% per turn
(E)nergy: decreases by 25% per turn
(T)eleports: decreases by 50% per turn
(N)aCl: decreases by 50% per turn
(C)at: decreases by 50% per turn
(G)old, (Y)AMCs, (P)illagers do not increase or decrease.
However, if you combine an item with NaCl (including NaCl itself) it
becomes a non-spoiling version of itself (eg, non-spoiling fuel) which
will no longer spoil.
Trading with other players:
The game will support basic trades of resources, but also more
sophisticated trades. A simple example:
Player 1: I will "GIVE 200 SILVER TO PLAYER3" if Player3 will "GIVE
20 GOLD TO PLAYER1"
In other words, player 1 promises to run a command if player 3 agrees
to run a command. In this case, it's a simple trade, but here's a more
Player 1: I will "GIVE 1000 SILVER TO PLAYER3" if Player 3 does all of
This allows from some fairly complex bargains. Once Player 1 and
Player 3 agree, the commands will be executed automatically.
If it's impossible for either player to run the promised command on
the current turn, the trade is canceled.
If it becomes impossible for player X to run a promised command on a
future turn, they can bargain with the other player. If this fails,
player X is eliminated from the game, and his lands revert to unowned.
Players start with 1000 gold, 1000 fuel, 50 YAMCs, 500 energy
There is no way to forcibly take land from another player. This is
If you trade another player for land, the acquired land must be
adjacent to your own land (or to home base).
Possible feature: cede land back to the bank
Possible feature/resource: mana to cast "spells"
There is currently no "win" condition and this is more of a
I am curious about this project...
I'm a ruby/perl programmer. Do you envision this becoming a web-app? Rail would obviously be the preference over perl cgi.