Challenge 1

Write a piloting program to get the Lunar Lander to the goal. This contest will take place in two rounds so that entries for the first round may inspire entries for the second.

* NOTE * The contest is over! Thanks to all who particiapted and congratulations to Roby, who somehow cheated.

Scoring

  1. Landers will be awarded points for how close they get to the goal. Landing directly on the goal will be awarded 100 points. Not moving anywhere will be awarded 0 points. Flying further from the goal then where you started will be given negative points, and a good mocking.
  2. There is a 50 point bonus for landing within 3 meters of the goal, with an additional 40 point bonus for how much fuel you have left (0%-100%).
  3. There is a half-point deduction for each second you take.
  4. Bumping into walls will deduct 1 point for every m/s of velocity you have during the collision, to a maximum of -50 points. Crashing will automatically award the full -50. This is also how the softness of your landing is judged.
  5. If any of your Tick() updates take too long to process, you will be given a 50 point penalty (but just one penalty no matter how many times you take too long). "Too Long" is defined as taking more than a 0.25 seconds on the judging hardware, which is using an Intel i7 3.4GHz. If you wish to submit your program before the deadline to see if your lander hits this limit, the judges will gladly test it and give you the timing data. Generally though this 0.25 second update is considered 'generous' and entries shouldn't really get near it.

Lunar_Test.exe Controls

  1. Escape - quit
  2. Spacebar - cycle through which lander to track
  3. C - View whole level
  4. Tilde(~) - skip level
  5. Mousewheel - zoom

Rules

  1. The programs will be judged by a simulation program, lunar_test.exe, which is provided below.
  2. The competition will consist of 2 rounds of 10 randomly chosen maps. Every competitor will be run on all ten maps. Highest accumulated score wins.
  3. To compete, download lunar_test.exe and the sample submission project. It will demonstrate how to compile a DLL that lunar_test.exe can load.
    1. ai_interface.h declares the functions you must define. Init(), Cleanup(), Tick(), and Get_AI_Name().
    2. sample_ai.cpp shows a very simple possible implementation.
    3. Be sure to set the module definition file on your project (Properties->Linker->Input->Module Definition File) to prevent name mangling on DLL export.
    4. Debug functions of Draw_Text() and Draw_Line() have been provided to assist authorship. Draw calls are cleared every update, so be sure to call them every Tick() if you want them to stay on screen.
    5. Stick the compiled DLL in the same folder as lunar_test.exe. It will load all the pilot DLL's in that folder and run the simulation.
  4. Source code must be provided with your submission (This is an educational/sharing thing).
  5. External libraries may be used within reason.
  6. You may submit as many programs as you like, as long as the submissions are interestingly different.
  7. Do not obfuscate your code. In fact, please comment it to disseminate knowledge and ideas.
  8. Your program must free all memory it allocates. Static allocations are acceptable. Do not attempt to read from or write to unusual memory locations.
  9. Trying to reverse the lander_test.exe program is acceptible. Dangerously malicious code is not.
  10. All submitted source code will be published here after the contest is completed, along with the results. Submissions may be kept anonymous by request.
  11. Submissions for round 1 are due on or before Feb 21, 2012. Results, including all submitted source code, will be published Feb 23, 2012.
  12. Submissions for round 2 are due on or before March 7, 2012. Results, including all submitted source code, will be published March 9, 2012. Challengers who did not participate in round 1 may still participate in round 2.
  13. All submissions should be e-mailed directly to my e-mail address, provided at the bottom of this page.
  14. These rules may be incomplete, or incorrect. As long as we mutually understand the spirit of the challenge, this should not be a problem. However, because of this, rules are subject to change. I will notify all who have expressed interest if they do.
  15. I will review all submitted code for compliance with the rules. If there are any violations I will attempt to correct them myself, leaving a comment in the code, but I will also notify you. I will review code when it is submitted, so if you submit early and have violated the rules, you may have time to submit your own corrections.
  16. All submitted materials (except your name, if requested) will be made publically available here and are presumed to be entirely free of copyright. You will be free to take anything you learn here with you.

Simulation Specifics

  1. All units are in meters, seconds, or meters per second. Your Lander itself is 2 meters across.
  2. Gravity constant is 1.63 m/s*s, same as the moon.
  3. Thrusters give an acceleration equal to 5 times gravity in the direction your lander is pointing.
  4. Each tick your rocket is on you lose 0.00025 fuel.
  5. Turn speed is 3.14156 radians/second, or 180 degrees/second.
  6. Each update is a 1/100th of a second fixed time step.
  7. Any collision faster than 10m/s is a crash.
  8. Your sensor data is an array of distance checks in this order: up left, up, up right, left, right, down left, down, down right.
  9. Your sensor data return how far you are from a wall, or MAX_SENSOR_DISTANCE if the nearest wall is beyond your sensor range.
  10. For collision purposes, the Lander is considered a point.

Downloads

lunar_ai.zip Contest simulator, and sample project. 2/06/2012 ZIP File 1.72MB
keyboard.zip Keyboard-control test module. 2/07/2012 ZIP File 4.88KB
round_1_results.txt Results file for round 1. 2/23/2012 TXT File 11.0KB
round_1_cheater_results.txt Results file for round 1 reverse engineering entries. 2/23/2012 TXT File 4.75KB
round_1_map_list.txt Map list for round 1. 2/23/2012 TXT File 67B
round_2_results.txt Results file for round 2. 3/14/2012 TXT File 20.6KB
round_2_map_list.txt Map list for round 2. 3/14/2012 TXT File 66B

Submission

Round 1 Entries!

Lord Darcimus - RAA
Roby
source
dll
Total Score: 1435.98
Dr. Ludger Brink
Dan
source
dll
Total Score: 1274.54
twodler
Brad
source
dll
Total Score: 286.64
cheater (Awesome-o v1.0)*
Adam
*reverse engineering entry
source
dll
Total Score: 1667.18

Round 1 Breakdown!

MAP

4933

10713

2325

25193

4479

12924

26238

24696

24500

19700

Lord Darcimus - RAA
124.26
160.19
156.52
160.38
155.51
138.13
148.30
130.58
121.15
140.95

Dr. Ludger Brink
27.56
159.33
148.38
161.84
167.28
157.69
128.67
44.33
145.00
134.45

twodler
-3.85
29.96
29.76
154.56
144.85
123.31
12.56
72.27
120.39
-397.19

cheater (Awesome-o v1.0)
184.52
184.52
184.52
184.52
184.52
6.50
184.52
184.52
184.52
184.52

Round 1 Vid Caps

Round 2 Entries!

Darcimus the Daring
Roby
source
dll
Total Score: 1502.04
Darcimus the Reliant
Roby
source
dll
Total Score: 1504.25
Dr. Ludger Brink
Dan
source
dll
Total Score: 1494.71
threedler
Brad
source
dll
Total Score: 416.27
threeplerb
Brad
source
dll
Total Score: 404.36
threepwoorb
Brad
source
dll
Total Score: 1114.32

Round 2 Breakdown!

MAP

14831

1694

12195

10957

11345

3502

15121

29925

7707

2134

Darcimus the Daring
150.69
149.87
156.96
142.09
154.44
152.91
130.26
150.00
150.11
164.71

Darcimus the Reliant
142.34
158.81
151.68
158.31
140.90
155.77
147.63
147.12
143.90
157.80

Dr. Ludger Brink
152.82
134.07
157.08
153.57
156.38
164.54
141.89
143.78
140.89
149.69

threedler
43.60
138.03
137.16
54.10
-82.32
129.35
-27.48
138.26
-16.82
-97.63

threeplerb
42.45
41.22
42.46
71.72
158.58
-95.06
151.28
46.88
47.59
-102.77

threepwoorb
154.02
126.91
141.52
52.64
138.24
161.54
118.59
-5.34
100.36
125.84

Round 2 Vid Caps


Return to host website.
dan @ danrubalcaba.com
2/23/2012