네코동 AI 챌린지: Duragonball

AI 대회 소개

NDC 둘째날 점심시간, 딱 심심할 때, 네코동에서 AI 챌린지가 진행됩니다. 여러분이 직접 만든 자식같은 AI가 다른 AI들과 한판 붙는 것이죠. 룰도 친숙할 겁니다! 어릴 때 쎄쎄쎄 좀 해보셨던 분이라면요.

게임 룰은 O래곤볼 게임을 기반으로 만들어졌습니다. 기억 나시나요? '아' '파' '막기'(지역차이 有)만으로 승부를 내던 그것입니다.

네코동 AI 챌린지에서는, 여러분의 AI가 공룡이 되어 '듀'래곤볼 게임을 합니다.

참가하지 않으시더라도, AI 공룡들이 기를 모으며 결투하는 모습은 꽤 재밌을 거에요. 상품을 듣고 나면 출전하고 싶으시겠지만요.

1등 상은 플레이스테이션 4 pro입니다.


(출처: https://youtu.be/y9Zi-Ghk97Y?t=21)

이번에는 지난 대회보다는 약간 난이도가 높은 게임을 준비해보았습니다. 더 잘하기 위해 고민하고, 구현하고, 다시 더 나아지기 위해 고민하면서 AI를 만드는 것 자체가 엄청 재미있는 일이에요. 많은 참여 부탁드립니다.

미리 한 번 겨뤄보려면 http://necodong.com/duragonball를 참고해 주세요.

겨뤄보기 전에 자세한 룰이 궁금하시다면 아래의 룰을 확인해주세요.

게임 한 판을 이기기 위한 게임 룰과 대회에서 어떻게 AI를 평가하게 될지에 대한 대회 룰을 설명합니다.

게임 룰

대회 룰 (8강 결정까지)

대회 룰의 예

A, B, C가 AI를 제출했다고 해봅시다.
A:B, B:C, C:A 상대로 11판 6선승제로 풀 리그 대전을 합니다.
A:B = 6승 2패로 A가 대전을 승리(A는 3점, B는 0점 획득) - 6선승 시점에서 종료
B:C = 5승 4패 2무로 B가 대전을 승리(B는 3점, C는 0점 획득)
C:A = 5승 5패 1무로 대전 무승부(C, A 모두 1점씩 획득)
위와 같이 경기 결과가 나온 경우, 대전 결과를 종합하면
A: 1승 1무로 4점
B: 1승 1패로 3점
C: 1무 1패로 1점
A, B, C 순서대로 1, 2, 3등이 됩니다. 만약 점수가 같았다면 제출 순서를 따져 먼저 제출한 AI가 상위 등수를 차지합니다.

대회 룰 (8강)

직접 게임 경험해보기

PC나 폰으로 아래 주소로 접속하여 사람들과 붙어볼 수 있습니다.

necodong.com/duragonball

참가하는 방법

AI 함수를 작성한 후 압축해서 첨부파일로 메일로 necodong@gmail.com으로 전송하시면 됩니다! (자세한 제출방법을 참고 해주세요)

심사의 편의를 위해 참가 가능한 언어는 Javascript로 제한합니다. 불필요한 동작을 하는 코드의 경우 실격처리할 수 있습니다(파일 오픈, 외부와 통신, 해킹 시도, 특수한 기법으로 룰을 우회하는 등).
코드로 특정 파일을 읽어들이는 등의 일반적이지 않은 사용은 허용하지 않습니다.

다음 형태의 함수를 작성하시면 됩니다. 인자 설명은 아래에 있습니다.
만약 구현상 다른 함수를 추가해야할 경우 자유롭게 추가해서 구현해 주세요. 프로그래밍 초보이신 경우 아래의 return 부분을 수정하여 특정 순서로 내는 AI를 쉽게 만드실 수 있습니다.

// Javascript
// charge, attack, block(집중, 공격, 방어) 순서대로 내는 AI 예제입니다.
function think(hp, mp, you_hp, you_mp, history, old_games) {
	if (history.length % 3 == 0)
		return 'charge';
	if (history.length % 3 == 1)
		return 'attack';
	if (history.length % 3 == 2)
		return 'block';
}

think가 호출될 때 인자의 예

내가 block을 내고 상대가 attack을 내서 내가 상대의 공격을 막고 기를 1 흡수했고, 내가 charge를 내고 상대는 block을 내어 아무 체력 감소 없이 내 기가 두 번 모인 상태입니다. 한 번 더 charge를 해서 기를 모으거나(모험지향), attack을 해서 내가 모은기로 공격하거나(공격지향), 내가 기를 연속으로 모은 것을 파악한 상태가 공격할 것을 예상하고 block을 할 수 있습니다.(안전지향). old_games를 살펴서 어떤 수가 더 유리할지 더 고민해 볼 수 있습니다.

AI 테스트하기

아래 사이트에서 제작한 AI를 미리 만들어진 AI와 대전 해볼 수 있습니다. 제출 전에 동작하는지 테스트 용으로 사용하실 수 있습니다.

예제 AI나 제출시 공개 하기로 결정한 AI 와 대전해 볼 수 있습니다. 콤보 박스에서 선택 후 공개 AI 와 겨뤄보기를 눌러보세요.(공개 AI 제출 시 부터 제공)


http://necodong.com/test

휴대폰 보단 PC로 접속해주세요. 크롬 최신버전을 사용하시는 것을 추천드립니다. 코드가 동작하지 않는 경우 개발자 도구를 열어 콘솔을 확인하면 관련 메시지가 출력되어 있는 경우가 있습니다. 버그가 있으면 문의주세요.

제출 방법

제출은 necodong@gmail.com 으로 “[AI대회] AI이름” 제목으로 메일을 보내주세요. 작성한 AI 코드를 zip으로 압축하여 첨부파일로 제출하시면 됩니다.

제출은 4월 13일(토)부터 4월 21일(일)까지 받습니다.

압축파일에 포함되어야할 내용은 아래와 같습니다. 확장자를 기준으로 판단하므로 파일이름은 아래와 달라도 괜찮습니다.

필수

옵션: 8강에 진출한 경우 중계할 때 사용합니다. 8강에 진출했는데 설명이나 이미지가 없는 경우 다시 요청드릴 수도 있습니다.

만약 제출한 AI를 공개하여 웹에서 테스트로 겨루게하고 싶은 경우, 제목에 “- 공개” 라고 붙여주세요. 코드가 공개되지는 않습니다.
제출하는 코드는 16384 바이트 이하여야합니다.

예)
[AI대회] BigHead
[AI대회] LazyThinker - 공개

상품

1등 - 소니 플레이스테이션 4 Pro
2등 - 애플 에어팟
3~4등 - AI 스피커 (구글 홈 미니, KT 기가지니 버디) (3등이 먼저 선택합니다.)
5~8등 - Sandisk Z73 128G USB

현장 추첨 - SYMA X8 PRO 드론

8등까지 제출하신 코드가 공개됩니다. 추가적인 소감이나 알고리즘 설명을 요청드릴 수 있습니다.

16등까지 NDC 참관권이 지급 됩니다.(거래, 양도 불가) 경품 지급은 NDC 참관객만 가능하므로 꼭 사용 후 대회장에 참석해주세요.

중간 집계

제출 기간 동안 전날까지 제출 완료 된 AI들끼리 대전을 하여 제출 마감 전날까지 공개합니다.

ex) 4/13일 23시59분59초까지 제출된 AI들로 결정된 순위를 4/14일중에 공개

제출 마감 당일에 제출된 AI 순위는 공개하지 않습니다.

중간 집계

2019. 04. 13.

이름 승점
BIGEYEFROG_01 12
(예제) 닥공보다 쪼끔더 똑똑한 기본AI 9
bronto 6
Super Attack BoB 3
(예제) 닥공 기본AI 0

총 3분이 제출해 주셨습니다. AI를 비교해 볼 수 있게 간단한 전략을 구현한 예제 AI를 몇 개 넣어보았습니다. 예제 AI들은 최종 등수를 평가할 때 제외됩니다.

2019. 04. 14.

이름승점
Champagne 24
BIGEYEFROG_01 21
(예제) 닥공보다 쪼끔더 똑똑한 기본AI 16
Duravis 13
bronto 12
DoomGuy 12
Super Attack BoB 4
참가에의의 2
(예제) 닥공 기본AI 1

2019. 04. 15.

이름승점
BIGEYEFROG_01 40
Champagne 39
듀방이 38
콤피의앞발 36
(예제) 닥공보다 쪼끔더 똑똑한 기본AI 32
DoomGuy 28
bronto 27
V0 27
화성시 21
Duravis 19
prototype 19
Super Attack BoB 10
옆동네AI 8
(예제) 닥공 기본AI 7
네코네코네 3
IReum 0

2019. 04. 16.

이름승점
BIGEYEFROG_01 46
Champagne 45
듀방이 44
콤피의앞발 42
(예제) 닥공보다 쪼끔더 똑똑한 기본AI 38
DoomGuy 34
bronto 33
V1 33
화성시 27
prototype 25
Duravis 25
Super Attack BoB 18
팡요봇 13
(예제) 닥공 기본AI 13
Dogfight 9
듀라곤볼 AI 대회 참여 희망합니다! 6
네코네코네 3
IReum 0

대전이 정상적으로 진행되지 않고 있는 일부 AI가 발견되었습니다. 제출 방법을 참고하여 참가 부탁 드립니다. 메일을 전송하시면 자동으로 코드가 갱신됩니다.

2019. 04. 17.

이름승점
Champagne 60
BIGEYEFROG_01 53
듀방이 48
Dogfight 48
AIIA 47
페나코의앞발 39
IReum 36
V2 36
(예제) 닥공보다 쪼끔더 똑똑한 기본AI 33
DoomGuy 32
bronto 31
테스트 2개만 이기자 27
Duravis 25
prototype 22
네코네코네 22
화성시 19
후훗야레아레 19
Super Attack BoB 10
(예제) 닥공 기본AI 7
눈큰왕눈이-공개.zip 3
듀라곤볼 AI 대회 참여 희망합니다! 0

2019. 04. 18.

이름승점
AI이름: 이어팟주세요 108
Champagne 100
V2 94
disabled bot 93
BIGEYEFROG_01 87
스밀의앞발 84
AIIA 80
듀방이 79
Dogfight 75
(예제) 닥공보다 쪼끔더 똑똑한 기본AI 69
bronto 68
테스트 2개만 이기자 63
네코네코네 63
IReum 61
DoomGuy 58
덜덜 52
슈랜코 52
Duravis 50
김로봇(29세,무직) 49
네코동에미인이많다고들었습니다 49
업무시간에 만든 AI 49
후훗야레아레 48
박박구 48
디바 48
화성시 47
풍뎅1호 46
핫산AI 45
prototype 43
SF 34
Super Attack BoB 32
치밥이는 떡상할꺼야 29
(예제) 닥공 기본AI 24
모르쇠 21
Hajiman Onichan Geuleohgelado hajianUmyeon 9
미적공부시렁~ 6
눈큰왕눈이-공개.zip 3
듀라곤볼 AI 대회 참여 희망합니다! 0

대회 참여 인원이 늘어 전체 대전 시간이 다소 증가했습니다.

2019. 04. 19.

이름승점
AI이름: 이어팟주세요 125
V2 120
disabled bot 112
스밀의앞발 111
BIGEYEFROG_01 110
치밥이는 떡상할꺼야 103
Dogfight 99
박박 99
듀방이 97
초사이어사우루스 갓 90
테스트 2개만 이기자 87
패턴브레이커 87
에부부 83
IReum 82
(예제) 닥공보다 쪼끔더 똑똑한 기본AI 82
DoomGuy 78
bronto 76
슈랜코 73
업무시간에 만든 AI 72
4IF 72
네코동에미인이많다고들었습니다 69
AI, THE PLAYLIST 69
덜덜 66
Duravis 61
네코네코네 61
Javascript는 처음입니다 58
박박구 56
prototype 55
화성시 53
핫산AI 51
디바 51
후훗야레아레 46
Super Attack BoB 41
SF 40
풍뎅2호 36
(예제) 닥공 기본AI 36
김로봇(29세,무직) 33
모르쇠 21
Champagne 15
허이짜짜 12
Hajiman Onichan Geuleohgelado hajianUmyeon 9
미적공부시렁~ 6
눈큰왕눈이-공개.zip 3
듀라곤볼 AI 대회 참여 희망합니다! 0

2019. 04. 20.

이름승점
AI이름: 이어팟주세요 150
V2 137
맘모스의앞발 135
disabled bot 130
Champagne 128
눈큰왕눈이-공개.zip 126
코비 126
박박구v2 121
BIGEYEFROG_01 120
chicken 120
듀방이 117
치밥이는 떡상할꺼야 117
로봉 111
초사이어사우루스 갓 111
박박 108
Dogfight 105
바보미니언.zip 105
에부부 94
HOMURA 92
미쳤습니까 휴먼? 86
IReum 85
DoomGuy 84
테스트 2개만 이기자 84
그냥코드 83
패턴브레이커 81
bronto 80
네코동에미인이많다고들었습니다 79
(예제) 닥공보다 쪼끔더 똑똑한 기본AI 76
4IF 75
덜덜 72
디바 69
후훗야레아레 64
네코네코네 63
Duravis 60
prototype 56
화성시 55
핫산AI 54
Javascript는 처음입니다 54
오이오이 인생은 도박이라구 51
어공격을그렇게많이하면 48
풍뎅2호 43
SF 40
Super Attack BoB 35
김로봇(29세,무직) 34
으아악 32
(예제) 닥공 기본AI 28
모르쇠 24
gpman 12
허이짜짜 9
Hajiman Onichan Geuleohgelado hajianUmyeon 6
미적공부시렁~ 3
듀라곤볼 AI 대회 참여 희망합니다! 0

마지막 중간 집계 공개 입니다. 오늘(4/21) 자정까지 제출한 코드로 최종 순위가 결정됩니다.

ipkn의 특별상

예선전 결과 ipkn님이 선정해주신 특별상 목록을 공개합니다.











NDC 네코동 AI 대회에 참여해주신 모든 분들께 감사 드립니다! 4/25(목) 오프라인 중계도 많은 참여 부탁 드립니다.

성능 측정

클라우드 서비스를 제공하는 서버에서 테스트를 진행하고 있어, 정확한 CPU 속도를 제공하기 어렵습니다. 아래 코드를 참고해서 성능 비교에 사용해주세요.

javascript:

let f = () => {
const t = Date.now();
i = 0;
while(1) {
i ++;
if (Date.now()-t > 1000)
break;
}
return i
};

let s = 0;
for(let i = 0; i < 10; i ++) {
s += f();
}
console.log(s/10);

let g = (n) => {
const t = Date.now();
i = 0;
while(i < n)
i++;
return Date.now() - t;
}

console.log(g(f())/1000);

실행결과:

12043876.3
0.044

개인정보 수집 이용과 관련된 안내

AI 챌린지 코드 제출을 위해 보내주신 이메일은 대회 운영 목적으로만 이용하며, 대회 종료 후 30일 이내에 모두 삭제합니다.

문의

대회와 관련된 문의는 necodong@gmail.com 으로 보내주십시오. 이 페이지는 문의에 따라 내용 수정이 일어날 수 있습니다. 변경 사항은 아래 버전을 확인하세요.

버전 14

2019-03-31: 페이지 준비
2019-04-05: 룰 설명, 소개글 수정 완료. 이미지 추가
2019-04-07: AI 테스트 페이지, 데모 게임 페이지 추가
2019-04-08: 대회 페이지 외부 공개
2019-04-10: 공격 설명에 모호한 부분 수정
2019-04-14: 승리 대사 글자수 제한 명시
2019-04-14: 04.13 중간 집계 결과 업데이트
2019-04-15: 04.14 중간 집계 결과 업데이트
2019-04-16: 04.15 중간 집계 결과 업데이트
2019-04-16: 인자 설명의 오타 수정, 라이브러리 관련 설명 수정
2019-04-17: 04.16 중간 집계 결과 업데이트
2019-04-18: 04.17 중간 집계 결과 업데이트
2019-04-19: 04.18 중간 집계 결과 업데이트
2019-04-20: 04.19 중간 집계 결과 업데이트
2019-04-21: 04.20 중간 집계 결과 업데이트
2019-04-24: 예선전 특별상 공개