작은 도시 실험실: 동현심TM
강이 흐르는 40×40 평지에 길과 전선을 깔고 주거·상업·공업 구역을 놓으면 사람이 모여 집이 서고 가게와 공장이 올라간다. 발전소·경찰서·소방서·공원으로 도시를 돌보며 촌락에서 수도까지 키운다. 자금 옵션, 이벤트, 재해를 켜고 끄는 것은 동현랭 코드가 정한다. 마우스와 손가락만으로 논다.
처음이라면? 예제를 고르고 시작을 눌러 보자. 발전소를 하나 세우고, 길을 깔고, 길가에 주거 구역을 놓은 뒤 전선으로 발전소와 이어 주면 집이 선다. 시작 자금과 이벤트·재해는 모두 동현랭 명령으로만 정한다.
동현랭 배우기 · 실행기 ↗A 도시 판
판을 준비하는 중동현심
보통 20,000냥 · 이벤트 켬 · 재해 켬
시작하면 달이 흐른다 · 저장한 도시는 동현랭 코드 아래 저장한 판 불러오기에서 고른다
B 동현랭 설정 코드
sim.dh예제를 고른 뒤 시작을 눌러 보자. 자금 옵션과 이벤트·재해는 코드로만 정한다.
브라우저 칸 3개는 이 기기의 이 브라우저에만 남는다. 다른 기기나 브라우저로는 옮겨지지 않고, 사이트 데이터를 지우거나 사생활 보호 창을 닫으면 사라진다. Safari는 이 사이트를 7일 동안 열지 않으면 칸을 지울 수 있다. 오래 둘 도시는 .dhsave 파일로 내려받아 두자. 필요 없는 칸은 지우기를 두 번 눌러 비운다.
동현심 규약
정하는 것은 세 숫자다
- 동현랭 코드가 출력한 첫 정수가 자금 옵션, 둘째 정수가 이벤트, 셋째 정수가 재해다.
- 자금 옵션은
0넉넉하게 50,000냥,1보통 20,000냥,2빠듯하게 10,000냥,3아주 넉넉하게 100,000냥이다. 이벤트와 재해는0이 끔,1이 켬이다. - 기본값은
1 1 1(보통 · 이벤트 켬 · 재해 켬)이다. 아무것도 출력하지 않으면 이 값으로 시작한다. - 정수를 셋이 아닌 개수로 출력하거나 범위를 벗어나면 시작하지 않고 오류를 알려 준다.
- 코드는 새 도시를 시작할 때만 읽는다. 이어 하는 도시는 저장될 때의 설정을 그대로 쓴다.
예제
01 · 기본 모드는 뿡뿡 도옹~뿡뿡뿡을 세 번 써서 1 1 1을 출력한다. 02 · 자금 옵션은 첫 정수를 도옹ㅠ(0)으로 바꿔 50,000냥으로 시작하고, 03 · 이벤트 끄기는 둘째를, 04 · 재해 끄기는 셋째를 0으로 둔다. 05 · 자금 옵션 100,000냥은 첫 정수를 도오오옹(3)으로 두고, 06은 3 0 0으로 100,000냥에 이벤트도 재해도 끈 모래 놀이판이다.
코드가 하지 않는 것
동현랭 코드는 길을 깔거나 구역을 놓지 않는다. 지도는 하나로 정해져 있고(강이 흐르는 평지), 어디에 무엇을 놓을지는 사람이 손으로 한다.
값
- 길 한 칸 10냥(강 위 다리 50냥), 전선 한 칸 5냥(강 위 25냥), 구역 3×3 100냥, 공원 한 칸 30냥, 발전소 3,000냥, 경찰서·소방서 500냥, 철거 한 칸 1냥(구역·건물은 9냥).
- 달마다 유지비가 나간다: 발전소 40냥, 경찰서·소방서 30냥, 그 밖에 길·전선·공원도 조금씩. 세금은 사람 수와 가게·공장 크기에 따라 달마다 들어오고, 해마다 1월에 결산을 알려 준다.
- 발전소 하나가 구역·건물 40개에 전기를 준다. 전기는 전선·구역·건물을 따라 이어지고, 전선은 길과 강 위에도 놓을 수 있다.
- 구역은 둘레에 길이 닿고 전기가 들어와야 자란다. 주거는 일자리가 있으면, 상업은 사람이 있으면, 공업은 사람이 많으면 수요가 생긴다. 지가가 높으면 더 높은 건물로 자란다(1~5단계).
- 칭호는 인구로 바뀐다: 촌락 → 마을 500 → 읍 2,000 → 도시 10,000 → 대도시 30,000 → 수도 60,000.
놀이 방법
마우스와 손가락만으로
- 머리글 오른쪽의 네 아이콘(키보드·마우스·게임패드·전체 화면 FULL)은 입력 표식이다. 켜진 것만 이 실험실에서 쓸 수 있다: 마우스(터치) · 전체 화면. 키보드와 게임패드는 판을 움직이지 않는다.
- 처음 열면 판 위에 새 도시 시작 단추가 떠 있고 달은 멎어 있다. 저장한 도시가 있으면 동현랭 코드 아래 저장한 판 불러오기에 칸이 보인다. 오른쪽 동현랭 코드의 시작을 누르면 그 설정으로 새 도시가 바로 시작된다.
- 판 아래 도구를 고른 뒤 판을 누른다. 길·전선·공원·철거는 누른 채 끌면 지나간 칸에 이어진다(손가락은 떼거나 움직이기 시작할 때 놓이므로, 두 번째 손가락이 바로 따라오면 아무것도 놓이지 않는다). 구역(주거·상업·공업)과 건물(발전소·경찰서·소방서)은 3×3이라 누르면 초록 테두리가 따라오고, 손을 떼는 자리에 놓인다. 빨간 테두리면 놓을 수 없다.
- 이동 도구로 판을 끌면 보는 자리가 옮겨진다. 어떤 도구를 쥐고 있어도 두 손가락으로 끌면 옮겨지고, 벌리면 커진다. 마우스는 바퀴로 늘리고 줄이며, 가운데 단추나 오른 단추로 끌면 옮겨진다. 판 오른쪽 아래의 +·−·⤢ 단추도 같다.
- 정보 도구로 칸을 누르면 그 칸이 무엇인지, 전기·길·지가·오염·치안이 어떤지 말해 준다.
- 판 왼쪽 위의 보기 단추로 전력·오염·범죄·지가를 색으로 겹쳐 볼 수 있다.
처음 도시
발전소(3,000냥)를 하나 세운다. 발전소에서 조금 떨어진 곳에 길을 한 줄 깔고, 길가에 주거 구역 두어 개와 상업·공업 구역을 놓는다. 전선을 발전소에서 구역까지 끌어 이으면(구역끼리 붙어 있으면 전기가 서로 전해진다) 몇 달 안에 집이 선다. 번개 표시는 전기가 없다는 뜻, 회색 길 표시는 길이 닿지 않는다는 뜻이다.
도시를 돌보기
- 공장은 오염을 내고, 오염이 높은 곳은 지가가 내려 집이 잘 자라지 않는다. 공업 구역은 주거에서 조금 떨어뜨리고 사이에 공원을 두면 좋다. 강과 나무도 지가를 올린다.
- 사람이 늘면 범죄가 는다. 경찰서는 둘레의 범죄를 누르고, 소방서는 불이 번지는 것을 막고 빨리 끈다.
- 돈이 모자라면 짓지 못한다. 달마다 세금이 들어오니 조금 기다리거나, 쓸모없는 길과 전선을 철거해 유지비를 줄인다.
- 위의 멈춤·보통·빠름·아주 빠름 단추로 달이 흐르는 빠르기를 바꾼다. 다른 탭을 보거나 창을 벗어나면 저절로 멎는다. 저장은 저절로 되지 않으니 판 아래 저장을 누른다.
저장과 불러오기
- 판 아래 저장을 누르면 메뉴가 뜬다. 브라우저 칸 1·2·3 가운데 하나를 고르면 지금 도시가 그 칸에 남고, 찬 칸은 덮어쓸지 한 번 더 묻는다. 파일로 내려받기는 도시를 .dhsave 파일 하나로 내려받는다. 동현전·동현워·동현몬과 같은 방식이다. 저절로 저장되지는 않는다.
- 불러오기 메뉴에서 칸을 고르면 그 도시가 지금 판에 되살아난다(저장하지 않은 달은 사라지니 한 번 더 묻는다). 파일에서 불러오기로 .dhsave 파일을 고를 수도 있다. 파일 속 설정(자금·이벤트·재해)도 함께 따라온다. 메뉴가 열린 동안 달은 멎는다.
- 처음 화면에서는 동현랭 코드 아래 저장한 판 불러오기에 칸 세 개가 보인다. 찬 칸을 누르면 바로 이어지고, 지우기는 두 번 눌러야 비워진다. 칸은 이 기기의 이 브라우저에만 남으니 오래 둘 도시는 .dhsave 파일로 내려받아 두자.
이벤트와 재해
- 이벤트(켜 두었다면): 포동이 시장의 축제로 가게가 붐비고, 슈슈가 기부금을 보내고, 관광객이 몰려 세금이 늘고, 초파리 떼가 나무를 심어 준다.
- 재해(켜 두었다면): 불이 나 번지고, 강이 넘쳐 강가를 적시고, 거대 라이언이 도시를 가로질러 밟고 지나간다. 소방서가 가까우면 불은 빨리 꺼지고, 부서진 자리는 철거하면 다시 쓸 수 있다.
끝
정해진 끝은 없다. 인구 60,000의 수도가 되면 최고 칭호다. 돈이 바닥나도 도시는 멈추지 않지만 아무것도 지을 수 없으니, 그 전에 살림을 맞추자.
원작과 출처
원작
이 놀이는 Nintendo DS판 「SimCity DS」(2007, 개발 AKI Corporation·EA Japan, 발매 Electronic Arts)에서 따온 도시 만들기의 뼈대를 따른다. SimCity DS는 「SimCity 3000」을 바탕으로 터치 펜으로 길·전선·구역을 놓도록 고친 작품이며, 주거·상업·공업 구역, 전력과 길의 연결, 수요에 따라 자라는 건물, 재해, 자문관의 알림이 원작의 뼈대다(Wikipedia: SimCity DS, SimCity 3000, SimCity).
동현심은 그 뼈대만 아주 작게 만들었다. 지도는 강이 흐르는 평지 하나, 구역은 3×3 셋, 건물은 발전소·경찰서·소방서·공원 넷이다. 상하수도·교통·세율·조례·자문관·시나리오·랜드마크는 없다. 구체적인 수치(값, 유지비, 수요식, 칭호 인구)는 모두 동현심이 정한 것이다.
권리
동현심은 원작 게임의 코드·그림·소리·글·지도를 쓰지 않았다. 타일과 건물 그림 서른아홉은 모두 tools/tiles.py가 글자 격자로 새로 그린 것이고, 소식에 나오는 얼굴은 동현주의 것이다. 동현심은 원작 제작사·발매사(Electronic Arts, Maxis, AKI Corporation 등)와 관계가 없고 승인도 받지 않았다. SimCity는 Electronic Arts의 상표다.
동현심이 만든 것
도시 엔진(전력·길·수요·지가·오염·범죄·세금·이벤트·재해), 판 화면과 마우스·터치 조작, 전체 화면, 동현랭 자금·이벤트·재해 규약, 예제, 타일 그림, 효과음, 문서. 이 부분은 MIT 라이선스다. 동현랭 실행기(donghyun.js)는 동현랭 v1.55를, 얼굴 그림(sprites.js)은 동현주의 것을 고치지 않고 썼다. 전체 화면은 동현몬의 방식을, 휴대폰 경험(두 번 두드려도 확대되지 않기, 누른 자리 번짐 없애기)은 동현텐의 방식을 따랐다.
얼굴의 출처
포동이 시장은 동현랭의 강아지, 슈슈와 라이언은 동현파, 초파리는 동현초, 둠가이는 동현둠에서 왔다. 얼굴 그림은 동현주의 16×16 글자 격자 그대로다.
글꼴
Black Han Sans, Nanum Gothic Coding, Pretendard — SIL Open Font License 1.1.
시험
node qa/core-tests.cjs가 지도, 놓기와 값, 다리와 강 위 전선, 전력 전달, 길 닿기, 성장과 단계, 세금과 유지비, 철거, 재해와 이벤트, 저장과 복원, 규약 예제를 확인한다. node qa/fuzz-play.cjs는 무작위로 수천 번 놓고 부수며 수백 년을 돌려 멈추거나 값이 깨지지 않는지 본다. node qa/ui.cjs는 실제 화면에서 마우스·끌기·터치·두 손가락·전체 화면·규약 오류·저장·휴대폰 폭, 그리고 키보드가 판을 움직이지 않는지를 확인한다.