ce767c6730f09d8e7ec2cb9a4ef77e51e4d97b26
[progcomp10.git] / doc / WELCOME.txt
1 Welcome to UCC::ProgComp 2010!
2
3 This document will acquaint you with the competition: the rules, how to 
4 write an agent, and what you need to do to enter.
5
6 === What is UCC::ProgComp? === Good question! The facetious answer is 
7 that it's the package whose documentation you are currently reading. The 
8 long answer is that it's a project of the University Computer Club 
9 (UCC), a student club affiliated with the Guild of Undergraduates at the 
10 University of Western Australia. UCC::ProgComp is designed to raise 
11 interest in programming and raise awareness of what UCC offers.
12
13 === Why should I enter? === For a number of reasons:
14  - there are prizes.
15  - it's a low-risk opportunity to learn how to program or to practise 
16 your programming. You don't need to be an expert to enter, and it's a 
17 great way to do things that you might not otherwise get the opportunity 
18 to do.
19  - To meet other computer-oriented people around UCC.
20
21 === What's the basic premise? ===
22 Entry to the UCC::ProgComp 2010 is by writing an "agent".
23
24 Your agent spends its life in a dystopian RPS underworld, where at any 
25 moment another agent could pick a fight with it, after which your agent 
26 is obliged to pick a fight with yet another.
27
28 On RPS Island, battles are based on Rock-Paper-Scissors, but 
29 considerably more involved: the attacking agent must bluff to the 
30 defending agent before making its real attack.
31
32 If an agent gets picked on for a fight and told rock, paper or scissors, 
33 it can either get modest but mutually beneficial points by trying to 
34 cause a tie, but risk being slaughtered by the other if it's lying (with 
35 a small amount of points awarded if it wins "by accident"), or it can 
36 try to win based on that information and get big points for exploiting 
37 the other agent with a relatively small punishment for being "tricked" 
38 and losing (and no point change in case of an "accidental" tie).
39
40 Thus, in any single round there are bigger rewards and smaller 
41 consequences in "attacking" the rock, paper or scissors that the enemy 
42 agent claims it will use, but cooperation leads to mutual benefit and 
43 good agents should turn against agents that try to exploit them. (The 
44 full points table can be found in POINTS.txt)
45
46 Agents start off with 50 points. If the agent loses all its points, it 
47 dies. If it reaches 100 points, it forms a new agent and both return to 
48 50 points. (However, the arena in which the agents battle is only so big 
49 - if it's too crowded the agent will keep its points and not spawn a 
50 child.)
51
52 The agent can remember who it has battled in the past and what the other 
53 agent has done, but it has no way of communicating this to any other 
54 agent, and any "children" of the agent don't inherit this memory.
55
56 To provide for both smart learning agents and agents that aren't so 
57 complex, both 'long' (1000 round) and 'short' (100 round) variations 
58 will be run. You are not allowed to submit different versions of your 
59 agent for the different durations - you will have to make a tactical 
60 decision about which to target.
61
62
63 === How do I win? ===
64 The object of the game is for the descendants of your agent to be the 
65 dominant species.
66
67 Victory occurs when:
68  * You are the only species left.
69  * You are the most populous species at the 'end of time'.
70  * You are the most populous species when the judges determine that the 
71 environment is stable.
72  * The judges say so.
73
74 The agent that wins the most will be declared the overall victor.
75
76 === But won't I get thrashed by UCC's leet coders? ===
77
78 There are a number of 'arenas' where your agent can battle, so that you 
79 -hopefully - get the opportunity to compete with people of roughly your 
80 own level of experience.
81
82 There will be at least the following arenas:
83  - an arena for the units CITS1200, CITS1210, and GENG2140.
84  - an arena for first-years
85  - an arena for UCC members
86  - an open arena.
87  - any other arenas I think of before the submission deadline comes 
88 around.
89
90 You may enter your agent in as many arenas as you are eligible to enter. 
91 However, you must enter the same agent for each arena.
92
93 === OK: how do I code that? ===
94
95 An agent consists of a Python, C, C++, Java or MATLAB file with 3 
96 functions:
97
98  * A function to attack another bot.
99  * A function to defend itself against another bot.
100  * An optional function to receive the results of its battle, so that it 
101 can learn how other agents play.
102
103 Read HOWTO.txt for more info, then go to README.txt to see what other 
104 documents are available.
105
106 === I've read everything and I'm still confused! ===
107
108 Firstly, check the FAQs at <http://progcomp.ucc.asn.au>. If you're still 
109 stumped, contact us via the link at <http://progcomp.ucc.asn.au>.

UCC git Repository :: git.ucc.asn.au