Underground 2 Revived
Play Need for Speed: Underground 2 (2004) in Chrome and Firefox with WebGPU graphics, Web Audio, up to 120 fps widescreen, controller support, free roam and Online races with friends. Fan project, not
이상민 서바이벌 — PLAF 2기 중간발표 픽셀 뱀서라이크 웹게임
Translation pending
GamesJavaScript · HTMLGitHub @PLAF-2OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗PLAF 2기 중간발표 — 이상민의 24년을 5개 시대로 나눈 픽셀 뱀서라이크 웹게임.
플레이: https://plaf-2.github.io/midterm-sangmin/
설치 없이 브라우저에서 돌아간다. 게임 엔진 없이 Canvas와 순수 JavaScript로 만들었고, 그림과 소리도 전부 코드로 만든다 (이미지·소리 파일 없음).
python3 serve.py . 5180
serve.py는 캐시를 끈 정적 서버야. 그냥 python3 -m http.server로 띄우면 브라우저가 예전 JS 파일을 캐시해서, 코드를 고쳐도 화면에 반영이 안 될 때가 있어.
브라우저에서 http://localhost:5180 을 연다. (파일을 더블클릭해서 열면 모듈 로딩이 막혀서 안 된다.)
| 파일 | 내용 |
|---|---|
src/data.js | 시대, 적, 무기 이름·문구·수치. 밸런스는 여기만 고치면 된다 |
src/pixel.js | 공통 팔레트(Endesga 32)와 픽셀 그리기 도구 |
src/sprites.js | 주인공 도트: 옷 5벌 × 4방향 × 걷기 4프레임 |
src/enemy-sprites.js | 적 15종 도트 (4방향 × 4프레임) |
src/maps.js | 시대별 맵 5개 (바닥, 장애물, 소품) |
src/items.js | 무기 아이콘, 투사체·보석·연기 도트 |
src/boss.js | 보스전: 보스 움직임·공격·마지막 한 방 연출 |
src/boss-sprites.js | 보스 5종과 보스 탄 도트 |
src/fx.js | 충격파·음파·번개 같은 이펙트, 파티클, 픽셀 글자 |
src/weapons.js | 무기 15종 동작과 투사체 |
src/main.js | 게임 루프, 충돌, 적 스폰, 시대 전환, 레벨업, 환생, 렌더링 |
src/ui.js | 타이틀·카드·환생·클리어·일시정지 화면, HUD |
src/audio.js | 효과음·배경음 (소리 파일 없이 Web Audio로 합성). 곡 악보와 효과음 목록이 여기 있다 |
src/input.js | 키보드와 화면 드래그 |
preview/*.html | 도트만 따로 모아 보는 미리보기 페이지 |
화면은 작은 버퍼(짧은 변 약 300픽셀)에 그린 다음 정수배로 키운다. 그래서 이펙트까지 전부 같은 크기의 픽셀로 보인다.
| 주소 | 하는 일 |
|---|---|
?era=3 | 4번째 시대(21사단)부터 시작. 지난 시대 무기는 Lv3으로 준다 |
?god | 무적 |
?bot | 적을 피해 다니는 봇이 자동 플레이 |
?bot=wander | 대충 돌아다니는 초보 봇 |
?speed=4 | 4배속 |
?bot&demo | 봇이 시연하기 모드(라운드 15초)로 플레이. 수치는 src/data.js의 DEMO |
?era=2&god | 3번째 시대부터 무적으로 시작. 보스전 끝까지 보기 좋다 (보스 마지막 한 방은 무적이어도 온다) |
?pause | 실시간 진행을 멈춘다. 콘솔에서 __sim(초)로 진행시키고 __render()로 그 순간을 그려서 연출을 한 프레임씩 볼 수 있다 |
봇 주소로 연 다음 개발자 콘솔에서 __sim(330)을 실행하면 화면 없이 5분을 바로 돌리고, 시대마다 레벨·처치·사망 수를 콘솔에 찍는다.
src/data.js의 ENEMY_TYPES에서 고친다.