원버튼 비행 실험실: 동현콥TM
고전 플래시 동굴 비행 게임을 원본 파일 그대로 띄우고 포동이의 꼬리콥터를 날린다. 속력만 동현랭으로 정한다.
처음이라면? 예제를 고르고 이륙을 눌러 보자. 포동이의 꼬리콥터 속력은 모두 동현랭 명령으로만 정한다.
동현랭 배우기 · 실행기 ↗A 비행
원본을 불러오는 중B 동현랭 속력 코드
speed.dh예제를 고른 뒤 이륙을 눌러 보자. 속력은 코드로만 정한다.
동현콥 속력 규약
정하는 것은 속력 하나다
- 동현랭 코드가 출력한 정수 하나가 포동이의 꼬리콥터 속력(%)이다.
100은 원본 그대로다. 원본의 초당 30프레임으로 돈다.- 쓸 수 있는 값은
50부터200까지다. 50이면 절반 속력(초당 15프레임), 200이면 두 배(초당 60프레임)다. - 아무것도 출력하지 않으면 100으로 난다. 정수를 둘 이상 출력하거나 범위를 벗어나면 이륙하지 않고 오류를 알려 준다.
예제
예제는 빠르기 순으로 다섯이다. 01 · 느리게 2단계(75, 권장), 02 · 느리게 1단계(90), 03 · 원본 그대로(100), 04 · 빠르게 1단계(150), 05 · 빠르게 2단계(200). 뿡뿡 도오오오오오오오오오옹 도오오오오오오오오오옹~뿡뿡뿡은 10×10=100을 출력하고, 75는 5×5×3, 90은 10×9, 150은 10×5×3, 200은 10×10×2로 쓴다. 숫자를 바꿔 보자. 예를 들어 도오오오오오오오오오옹 도오오오오오옹 도오옹은 120이다. 50부터 200까지 된다.
속력을 바꾸는 방법
원본 SWF는 고치지 않는다. 동현콥은 400×300 크기의 작은 바깥 SWF를 그때그때 만들고, 원본을 그 안의 _level1로 불러온다. 바깥 SWF의 초당 프레임 수가 30 × 속력 ÷ 100이다. 플래시는 맨 아래 무비의 프레임 수로 전체를 돌리므로, 포동이의 꼬리콥터와 벽이 함께 빨라지거나 느려진다.
바깥 SWF는 한 가지 일을 더 한다. 원본은 첫머리에서 Flash 5 명령으로 'start' 프레임에 넘어가고, 그 명령을 못 알아듣는 옛 플레이어에서만 '플러그인을 설치하라'는 4번 프레임에 멈춘다. Ruffle에서는 이 넘김이 4번 프레임을 그린 뒤에 일어나거나 아예 일어나지 않아, 안내 화면이 남거나 4번 프레임에 멈춘다. 그래서 원본이 4번 프레임을 거치면 바깥 SWF가 3번으로 한 번 되감았다가 원래 가야 할 5번 'start' 프레임으로 넘겨 준다. 원본의 명령도 그림도 바꾸지 않는다.
포동이의 꼬리콥터
원본의 헬리콥터는 지우지 않고 투명하게만 만든다. 그래서 크기·위치·충돌 판정은 원본 그대로다. 그 바로 위 층에 따로 만든 작은 SWF가 매 프레임 헬리콥터의 위치와 기울기를 따라가며 포동이를 그린다. 원래 돌던 큰 날개 자리에서는 포동이의 크림색 꼬리가 돈다. 부딪히면 꼬리가 멈추고 포동이가 데굴데굴 떨어진다.
조작과 소리
조작은 하나뿐이다
- 머리글 오른쪽에 붙은 네 아이콘(키보드·마우스·게임패드·전체 화면 FULL)은 입력 표식이다. 켜진 것만 이 실험실에서 쓸 수 있다: 마우스. 아이콘에 마우스를 올리거나 손을 대면 풍선 도움말이 뜬다.
- 데스크톱: 게임 화면에서 마우스 왼쪽 버튼을 누르고 있으면 포동이의 꼬리콥터가 오른다. 떼면 내려간다.
- 태블릿·모바일: 게임 화면을 손가락으로 누르고 있으면 오르고, 떼면 내려간다.
- 천장·바닥·장애물에 부딪히면 끝난다. 다시 누르면 새 비행이 시작된다.
- 게임 화면 위에서는 페이지가 움직이지 않도록 스크롤과 확대를 막아 두었다.
소리
- 원본에 들어 있는 효과음 3개(오를 때, 내려갈 때, 부딪힐 때)가 그대로 난다.
- 브라우저는 사용자가 한 번 누르기 전에는 소리를 막는다. 그래서 첫 누르기와 함께 소리가 켜진다.
- iPhone·iPad에서 무음 스위치가 켜져 있으면 소리가 나지 않을 수 있다.
원작과 출처
원본 파일
게임은 Helicopter Game(SeeThru.co.uk) 플래시 파일이다. 한 바이트도 고치지 않고 그대로 실었다. 다만 화면 위 띠의 원본 저작권 문구와 링크는 동현콥이 덧씌운 띠가 덮고, 그 자리에 TAKE FLIGHT WITH PODONG-COPTER을 띄운다. 원본의 헬리콥터는 투명하게 감추고 그 자리에 포동이의 꼬리콥터를 띄운다. 헬리콥터 그림은 원본 파일 안에 그대로 남아 있다. 설계는 David McCandless, 플래시 프로그래밍은 Leandro Barreto로 알려져 있다(MobyGames).
파일 swf/helicopter-game.swf · 44,807바이트
SHA-256 ed5fbfd0ca488edc6d94c275c609d894d43d87e72922f76332333034cca7e071
이 페이지는 열 때마다 받은 파일의 SHA-256을 다시 계산하고, 값이 같을 때만 게임을 띄운다. 속력을 바꿔도 원본은 그대로이고, 바깥 SWF의 초당 프레임 수만 바뀐다.
권리
게임 파일의 권리는 원저작자에게 있다. 동현콥은 SeeThru.co.uk와 관계가 없고 승인도 받지 않았다. 동현콥 코드에 붙는 MIT 라이선스는 이 게임 파일에 적용되지 않는다. 포동이 그림도 MIT 코드와 따로 보며, 그림의 권리는 제공자에게 있다.
플래시 실행
요즘 브라우저는 플래시를 돌리지 않는다. 그래서 오픈소스 플래시 에뮬레이터 Ruffle 0.7.1을 저장소 안에 함께 실었다. Ruffle은 MIT 또는 Apache-2.0 라이선스다.
동현콥이 만든 것
페이지 구성, 동현랭 속력 규약, 바깥 SWF 생성기, 상단 띠, 포동이의 꼬리콥터 SWF, 세그먼트 글꼴, 원본 확인 장치, 터치 조작 정리, 문서. 이 부분은 MIT 라이선스다. 동현랭 실행기(donghyun.js)는 동현랭 v1.55를 고치지 않고 썼다.
글꼴
Black Han Sans, Nanum Gothic Coding, Pretendard — SIL Open Font License 1.1. 게임 화면 위 띠 글자와 아래 DISTANCE·BEST 숫자는 동현콥이 직접 그린 세그먼트 글꼴이다(MIT). 원본의 LCD 글자에 맞춰 7획에 K·N의 대각선을 더했다.