GN⁺: Decker: 1비트 그래픽을 활용한 하이퍼카드의 재현
(beyondloom.com)Decker 멀티미디어 플랫폼 소개
- Decker는 사운드, 이미지, 하이퍼텍스트, 스크립트 동작 등을 포함하는 대화형 문서를 만들고 공유하기 위한 멀티미디어 플랫폼임
- 웹 브라우저에서 바로 사용해 볼 수 있음
- HyperCard의 유산과 클래식 MacOS의 시각적 미학을 기반으로 함
- HyperCard가 제공했던 단순성과 학습 용이성을 유지하면서, 깊은 실행 취소 기록, 스크롤 휠 및 터치스크린 지원, 더 현대적인 키보드 탐색, 대량 편집 작업 등 많은 미묘하고 명백한 사용성 개선 사항을 추가함
Decker로 할 수 있는 것들
- 누구나 Decker를 사용하여 E-Zine 제작, 메모 정리, 프레젠테이션, 어드벤처 게임 제작, 1비트 픽셀 아트 낙서 등을 할 수 있음
- 전체적인 "ditherpunk" 미학은 아늑하고, 약간 향수를 자극하며, 재미있고 독특한 창의적 제약을 제공함
- 프로토타이핑 도구로서 Decker는 스케치하고 불완전한 접근 방식을 포용하도록 장려함
- 완성된 데크는 독립 실행형 .html 문서로 저장되어 웹 브라우저에서 자체 실행되며 웹 페이지를 호스팅하거나 포함할 수 있는 모든 곳에서 공유할 수 있음
- Decker는 MacOS, Windows, Linux에서도 네이티브로 실행됨
스크립팅 언어 Lil 소개
- 보다 복잡한 프로젝트를 위해 Decker는 Lil이라는 새로운 스크립팅 언어를 제공함
- Lil은 도구 및 게임 엔진에 내장하기 위해 널리 사용되는 명령형 언어인 Lua와 시계열 데이터베이스와 함께 사용되는 APL 계열의 함수형 언어인 Q의 강력한 영향을 받음
- Lil은 배우기 쉽고 기존 프로그래밍 경험이 있는 사용자에게 거슬리지 않을 만큼 기존의 방식을 따르지만, 암시적 스칼라-벡터 산술 및 통합된 SQL과 유사한 쿼리 언어와 같은 즐거운 놀라움도 포함함
- 몇 줄의 Lil로도 많은 작업을 처리할 수 있음
Decker의 다양한 기능들
- Decker는 인터페이스 구축을 위한 내장 대화형 위젯 및 새로운 위젯을 정의하는 기능을 제공함
- 사용자 정의 위젯과 정의는 시스템 클립보드를 사용하여 복사하고 붙여넣을 수 있으며, 텍스트를 공유하거나 저장할 수 있는 모든 곳에서 공유할 수 있음
- 모든 데크는 다른 프로젝트에 재사용할 수 있는 재사용 가능한 부품들의 도구 모음임
- Decker는 명령줄 친화적임. 소스에서 빌드할 때 Lil 독립 실행형 인터프리터인 Lilt와 함께 제공되어 Decker 문서를 "헤드리스"로 읽고, 쓰고, 조작하고, 심지어 실행할 수 있음
- Lilt는 Decker 자체보다 의존성이 훨씬 적기 때문에 실행 가능한 크로스 플랫폼 APE로 컴파일할 수 있어 어디서나 실행 가능한 셸 스크립트를 작성할 수 있음
- POSIX AWK에서 실행되는 Lil 인터프리터도 있음
- 데크는 Git 및 SVN과 같은 기존 소스 제어 도구와 잘 상호 운용되는 줄 지향 텍스트 형식으로 저장됨
Decker 사용 예제 및 모듈
- "Examples" 섹션에는 Decker를 활용한 다양한 예제 프로젝트들이 소개되어 있음
- Decker 가이드 투어, 5GUIs, CHIP-8 인터프리터, Draggable에 대한 모든 것, 사운드에 대한 모든 것, 블록 푸시 퍼즐 게임 Sokoban 등
- "Modules" 섹션에는 Decker를 위한 다양한 플러그인 모듈들이 소개되어 있음
- Plot: Decker를 위한 간단한 그래프
- Zazz: Decker를 위한 애니메이션 도우미
- Ease: Decker를 위한 Easing 함수
- Dialogizer: Decker를 위한 비주얼 노벨 모달
- Puppeteer: Decker를 위한 비주얼 노벨 스프라이트 애니메이션
문서 및 추가 리소스
- Decker 레퍼런스 매뉴얼, Decker 문서 형식, Lil 프로그래밍 언어 등 각종 문서가 제공됨
- Lil 언어를 10분만에 배우기, Lil 놀이터, Lil 퀵 레퍼런스 카드 등 Lil 학습을 위한 자료도 제공됨
- GitHub에서 소스 코드와 버그 트래커를 사용할 수 있음
- Decker는 MIT 라이선스에 따라 자유롭고 오픈 소스임
- MacOS 및 Windows용 주기적 바이너리 릴리스는 Itch.io에서 사용 가능함
- Itch 페이지에는 Decker에 대해 토론하고 Decker로 만든 프로젝트를 공유하는 커뮤니티 포럼이 포함되어 있음
GN⁺의 의견
-
Decker를 POSIX AWK로 구현한 것은 매우 흥미로운 시도임. AWK는 텍스트 처리에 특화된 스크립팅 언어로, Lil과 같은 스크립팅 언어를 구현하기에 적합한 기반 언어로 보임. AWK로 구현함으로써 여러 플랫폼에서 쉽게 이식 가능하고 실행할 수 있게 되었을 것임.
-
Decker의 저장 포맷을 줄 단위 텍스트로 한 것은 매우 현명한 선택으로 보임. 텍스트 기반 포맷은 Git과 같은 VCS와 호환성이 좋아서 버전 관리가 용이하고, Diff로 변경사항 추적도 가능함. 바이너리 포맷은 깨지기 쉽고 버전 관리가 어려운 단점이 있음.
-
Lil의 설계 철학이 흥미로움. Lua와 Q의 영향을 받았다고 하는데, Lua는 게임 스크립팅에 널리 쓰이고 Q는 DB 질의에 특화된 APL 계통 언어임. 두 언어의 장점을 조합해서 Lil만의 독특한 특징을 갖추게 한 것으로 보임. 특히 스칼라-벡터 연산이나 내장 쿼리 문법 등은 기존 언어에서 보기 힘든 기능임.
-
E-Zine, 메모, 프레젠테이션, 어드벤처 게임, 픽셀 아트 등 활용 범위가 매우 넓어 보임. 복잡한 앱부터 간단한 문서까지 다양한 분야에서 쓰일 수 있을 것 같음. 다만 이렇게 범용적인만큼 각 분야에 특화된 도구에 비해서는 기능이 부족할 수도 있을 듯함.
-
Classic Mac OS 스타일의 UI는 개인적으로는 좋아하지만, 현대 사용자들에게는 너무 복고적으로 느껴질 수도 있을 것 같음. 스킨 기능을 통해 모던한 테마도 제공하면 좋을 듯함. Windows나 Linux 사용자에게는 생소할 수 있는 인터페이스일 것 같기도 함.
Hacker News 의견
-
1-bit 그래픽에서 2-bit 그래픽으로 조금만 변경하면 사진 가독성이 크게 향상될 수 있음. 예시로 solar.lowtechmagazine.com은 최대 6가지 색상을 사용해 멋진 미학을 구현함.
-
Decker의 패키징에 대한 고민. Redbean처럼 Lua, SQLite 등을 하나의 파일로 묶어 zip으로 압축 해제하고 HTML, Lua 코드를 넣은 뒤 이름만 바꿔 배포하는 방식을 고려 중인지 궁금함.
-
Decker가 이전에 HN에서 몇 차례 소개된 바 있음. 3개월 전 191 포인트, 36개 코멘트. 2년 전 215 포인트, 88개 코멘트.
-
직접 Decker를 사용해 보라는 권유. 데모 사이트 링크 제공됨.
-
Decker가 어린 시절 달콤한 추억을 떠올리게 함. 모바일 핀치 줌 기능만 있으면 좋겠다는 의견.
-
HyperCard의 가장 큰 단점은 Mac이 컬러를 도입했을 때 컬러를 지원하지 않은 것. 고등학교 때 학교의 Mac은 모두 컬러였으나 HyperCard는 그렇지 않았음.
-
NASA laserdisc가 HyperCard로 만든 셔틀 정보 네비게이션 시스템을 학교에서 사용했던 기억. 당시에는 크게 감동받지 못했지만 멋진 경험이었음.
-
Decker는 1-bit 그래픽이라는 점에서 HyperCard와 유사해 보이지만 사용법이 꽤 다름. 독특한 "Lil" 언어를 배워야 하고 HyperCard/MacPaint의 편의 기능이 많이 빠져있어 기대와 다를 수 있음. HyperCard 아티스트는 Infinite Mac 덕에 브라우저에서 계속 HyperCard를 사용할 수 있음.
-
Decker가 재미있다는 의견. HyperTalk 스크립팅을 지원하는 Wyldcard도 추천함.
-
Apple이나 MS가 이런 캐주얼 개발 도구 만드는데 더 노력하지 않는 이유가 궁금함. VB, 파이썬도 좋지만 작은 앱 만들기에 최적화된 도구가 있으면 좋겠음.
-
HyperCard에 대한 많은 사랑이 있음. 그 시대를 경험 못했지만 작고 유용한 도구를 만들 수 있게 해준 것 같음. 스프레드시트와 다른 방식으로 다재다능했던 듯.
-
그 시대를 경험한 사람들에게 어떤 현대 도구가 그 감성을 잡아내는지 궁금함. 약간 어린 세대는 Delphi/VB, Flash에 대한 노스탤지어가 있음. 불완전했지만 창의성을 자극했던 도구들.
-
도구는 훨씬 나아졌지만 그 과정에서 무언가를 잃어버린 느낌.