Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feat] 인게임 점수 획득시 효과음, 라운드시작 카운트다운 효과음 #321

Open
wants to merge 9 commits into
base: main
Choose a base branch
from

Conversation

yejinleee
Copy link
Member

📋 Issue Number

close #320

💻 구현 내용

  • 효과음 추가 및 실행
    • 인게임 점수 획득시 효과음 soundEffect.mp3
    • 라운드시작 카운트다운 효과음 countDown.mp3

📷 Screenshots

default.mov

🤔 고민사항

현재 단어 게임에선 정답이든 오답이든 submit이 일어났을 때 효과음이 재생됩니다. 방금 제출한 입력으로 점수를 얻었는지 못얻었는지 모르기 때문입니다..
-> 점수초리하는 로직 (서버 단)을 변경한다. 그렇지 않을거라면 어느 상황에 효과음을 내는게 좋을까요


효과음 제안 받습니다 ... plz,,,

Copy link
Contributor

@loevray loevray left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

고생하셨습니다!

단어게임에서 효과음 처리 할수있는 방법은 단순히 이전 점수를 기록해두었다가 현재 점수와 비교하는 방법이 있을 것 같네요. 다만 서버측에서 처리해주시는게 베스트일 것 같습니다!!

추가로 yarn cache에 대해서 이야기 나눠봐야할 것 같아요
맥에서는 darwin, 윈도우에서는 win32, github actions같은경우 리눅스 사용중이라 esbuild, rollup같은 파일들 설치할때 모든 운영체제 버전 설치해야할 것 같아서요!

Comment on lines 6 to 11
const src = type === 'SCORE' ? soundEffect : countDown;
const sound = new Howl({
src: [src],
});
return sound;
};
Copy link
Contributor

@loevray loevray Apr 22, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

동적 import를 활용하면 조금이나마 최적화를 할 수 있을 것 같습니다

type SoundEffectType = 'SCORE' | 'COUNTDOWN' | 'SOMETHING...';

const soundFileMap: Record<SoundEffectType, () => Promise<string>> = {
  SCORE: () => import('@/assets/audio/soundEffect.mp3').then(module => module.default),
  COUNTDOWN: () => import('@/assets/audio/countDown.mp3').then(module => module.default),
  SOMETHING...: () => import('@/assets/audio/something.mp3').then(module => module.default),
};

const playSoundEffect = async (soundType: SoundEffectType) => {
  const soundFilePath = await soundFileMap[soundType]();
  return new Howl({
    src: [soundFilePath],
  });
};

혹시 위 코드에 문제점이 있거나 다른의견 있으시면 얼마든지 알려주세요!!

yarn.lock Outdated
Comment on lines 7020 to 7026
"howler@npm:^2.2.4":
version: 2.2.4
resolution: "howler@npm:2.2.4"
checksum: 10c0/74a295f56fd9b2abce122b27ed12c33fa195fb8a76832803e92d8e462a1eca803b55f44c14db052211d0cfab85c7c5249664c68d95bbbc16c775fac73866c6ef
languageName: node
linkType: hard

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

howler라는 라이브러리를 찾아보니 사운드 관련 라이브러리네요!
그냥 auido객체에 비해 어떤 장점이 있었나요?ㅎㅎ

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

오디오 사용을 찾아보았을때 audio를 모르고 해당 라이브러리를 보아서 적용해본건데,
audio로도 구현가능한 것이었네요 ㅎㅎㅎ 불필요한 라이브러리 사용일 것 같아서 바꿨어요!

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yarn cache는 음,,
커밋에 올라간 파일들은 main rebase하고 install 하니까 와르르 생겼던 것으로 기억해요
ㅇㅅㅇ..

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yarnrc.yaml파일 내부 아래 옵션때문일거에요

supportedArchitectures:
  {
    os: ['current', 'linux'],
    cpu: ['current', 'x64'],
    libc: ['current', 'glibc', 'musl'],
  }
``

왜 파일이 지워진지는 모르겠네요 ㅋㅋㅋ
다음에 제가 확인해볼게요

Copy link
Contributor

@dlsxjzld dlsxjzld left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

고생하셨습니다!! 👍
영현님이 리뷰를 잘 남겨주셔서 할 말이 별로 없었네요 ㅎㅎ

@@ -91,6 +92,8 @@ const GameCode = ({ publishIngame, userId }: GameCodeProps) => {
const handleUpdateScore = useCallback(() => {
const newScore = currentScore + scorePerSubmit;
publishIngame('/info', { currentScore: newScore });
const sound = playSoundEffect('SCORE');
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

playSoundEffect에 'SCORE' 와 'COUNTDOWN'를 인자로 전달하고 있는데 이 값들을 하나의 상수 파일안에 선언하고 import해서 쓰면 어떨까요?! 🤔

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

[Feat] 효과음 추가 (인게임 점수 획득시, 카운트다운)
3 participants