Season 01 - 19 HUD! UI! 메뉴! 게임을 감싸는 화면들

Season 01 - 19 HUD! UI! 메뉴! 게임을 감싸는 화면들

🖥 Season 01 - 19 HUD! UI! 메뉴! 게임을 감싸는 화면들

“게임은 캐릭터만이 아니라, 캐릭터를 둘러싼 화면까지 함께 설계해야 완성이다.”

오늘은 세이가 먼저 말했다.
“리온, 우리 게임… 하고 있으면 재밌는데, 처음 들어가면 뭐가 뭔지 조금 헷갈려.”

딕: “맞아. 시작 버튼도 없고, 그냥 켜지면 바로 시작돼. 점수도 구석에 조그맣게 있고…”

리온은 고개를 끄덕이며 말했다.
“좋은 피드백이야. 오늘은 HUD·UI·메뉴, 즉 게임을 감싸는 화면들을 정리해보자.”

칠판에는 세 단어가 적혔다.
HUD / UI / MENU


🧭 1. HUD란 무엇인가? — 게임 위에 겹쳐진 정보

리온: “HUD는 Head-Up Display. 쉽게 말하면, 게임 화면 위에 겹쳐서 보여주는 정보야.”

  • 점수(SCORE)
  • 콤보(COMBO)
  • 목숨/체력(♥)
  • 일시정지 아이콘
  • 스테이지 이름, 남은 시간

세이: “운전할 때 앞유리에 비치는 속도계 같은 느낌이네.”

딕: “그럼 우리 게임도 점수랑 콤보를 더 크게, 보기 좋게 올려야겠다!”


📊 2. HUD 기본 구조 만들기


<div id="hud">
  <div id="hud-score">SCORE: 0</div>
  <div id="hud-combo">COMBO: 0</div>
  <div id="hud-life">♥♥♥</div>
  <button id="btn-pause">II</button>
</div>

#hud {
  position: fixed;
  top: 10px;
  left: 10px;
  right: 10px;
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-family: "Noto Sans KR", sans-serif;
  font-size: 14px;
  color: #ffffff;
}

#hud-score, #hud-combo, #hud-life {
  padding: 6px 10px;
  background: rgba(0,0,0,0.35);
  border-radius: 8px;
}

#btn-pause {
  padding: 6px 10px;
  border-radius: 8px;
  border: none;
  background: rgba(0,0,0,0.5);
  color: #ffffff;
  cursor: pointer;
}

세이: “이제 ‘어디를 봐야 하는지’가 한눈에 들어온다.”

딕: “점수 보면서 ‘이번엔 얼마까지 가나’ 보는 맛이 있지!”



🕹 3. 메인 메뉴 화면 — “게임이 시작되기 전의 첫인상”

리온: “게임을 켜면 바로 전투가 아니라, 대부분은 타이틀 화면이 먼저 나오지.”

  • 게임 제목
  • START 버튼
  • OPTION/설정 버튼
  • HOW TO PLAY

<div id="screen-title">
  <h1>코딩스타랩 러너</h1>
  <button id="btn-start">START</button>
  <button id="btn-how">HOW TO PLAY</button>
</div>

#screen-title {
  position: fixed;
  inset: 0;
  background: linear-gradient(#071b33, #0f355f);
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  color: #ffffff;
}

세이: “이 화면만 잘 만들어도, ‘아 이 게임, 공 들였네’라는 느낌이 나.”

딕: “제목 화면에서 이미 설레기 시작하면 성공이지!”


⏸ 4. 일시정지(PAUSE)와 재개(RESUME)

딕: “근데… 엄마가 방 부르면 어떡해? 중간에 멈추고 싶을 때도 있잖아.”

리온: “그래서 필수 UI가 바로 일시정지야.”


let isPaused = false;

document.getElementById("btn-pause").addEventListener("click", () => {
  isPaused = !isPaused;
  togglePauseScreen(isPaused);
});

function gameLoop() {
  if (!isPaused) {
    update();
    render();
  }
  requestAnimationFrame(gameLoop);
}

<div id="screen-pause">
  <div class="panel">
    <p>PAUSED</p>
    <button id="btn-resume">RESUME</button>
  </div>
</div>

세이: “게임 안에서 쉬는 법도 알려주는 느낌이네.”

딕: “나를 위한 UI다… 고맙다 일시정지…”



🎚 5. 옵션(Options) — 플레이어를 존중하는 메뉴

리온: “OPTION 메뉴는 ‘이 게임을 자기 스타일로 맞추는 곳’이야.”

  • BGM 볼륨 / SFX 볼륨
  • 난이도 선택 (EASY / NORMAL / HARD)
  • 색약 모드, 진동 on/off (심화)

<label>
  BGM
  <input type="range" id="slider-bgm" min="0" max="100" value="50">
</label>
<label>
  SFX
  <input type="range" id="slider-sfx" min="0" max="100" value="70">
</label>

세이: “사람마다 듣기 좋은 소리 크기가 다르니까, 볼륨 조절은 진짜 기본 매너네.”

딕: “난 하드코어니까 난이도는 무조건 하드!”

세이: “우리는 NORMAL로 시작하자.”



🎯 오늘의 정리 — “게임을 싸고 있는 화면까지가 진짜 게임이다”

  • HUD는 게임 중 정보를 보여주는 투명한 계기판
  • 타이틀 화면은 게임의 첫인상
  • 일시정지와 옵션은 플레이어를 배려하는 기능
  • UI는 ‘쉽게 이해하고, 편하게 머물 수 있게’ 도와준다

세이: “이제 우리 게임, ‘겉모습’도 많이 갖춰졌네.”

딕: “맞아! 그냥 실험용 느낌이 아니라, 진짜 누가 해도 될 것 같은 완성도가 됐어!”

리온: “좋아. 이제 남은 건 Season 01 마지막 정리야. 다음 회차에서, 우리가 걸어온 길을 한 번에 정리해보자.”


🌍 English Summary (≈500 words)

Season 01 - 19: “HUD, UI, and Menus — The Screens That Wrap the Game”
In this episode, the trio steps outside the core action and focuses on the “frame” around the game: HUD, UI, and menus. Leon explains how HUD elements like score, combo, and life indicators help players understand what’s happening without breaking immersion. They design a title screen, pause menu, and options panel, realizing that good UI respects the player’s time, preferences, and comfort. By the end, their mini game no longer feels like a prototype; it has the structure and polish of a real, playable game. MAKE · PLAY · DREAM.


© 2025 CodingStar Lab | MAKE · PLAY · DREAM | by endic

#코딩스타랩 #게임UI #HUD #메뉴디자인 #일시정지 #초등코딩 #중등코딩 #리온세이딕 #게임구조

댓글 없음

Powered by Blogger.