Career
- 2020.08. - 2020.12. ์ผ์ฑ์ ์ ์ธํด (Android)
- 2023.01. - 2024.10. ํฌ๋ํํค ํด๋ผ์ด์ธํธ ๊ฐ๋ฐ (Unity, C#, UE5)
- 2024.10 - ์์ด๋ฒํผ ํด๋ผ์ด์ธํธ ๊ฐ๋ฐ (UE5, C++)
Education
- ํฌํญ๊ณต๊ณผ๋ํ๊ต ์ฐ์
๊ฒฝ์๊ณตํ๊ณผ ํ์ฌ ์กธ์
- ๋ฉ์์ด์ฌ์์ฒ๋ผ ํ๋ก ํธ์๋ ์ค์ฟจ 1๊ธฐ ์๋ฃ
Contacts
- ๋ฉ์ผ : ahracho816@gmail.com
- ๊นํ๋ธ : https://github.com/choar816
- ๋ธ๋ก๊ทธ : https://choar816.tistory.com/
Courses
Reviews
- [JS] Phaser Game Creation - Vampire Survival Clone
- [JS] Phaser Game Creation - Vampire Survival Clone
- [JS] Phaser Game Creation - Vampire Survival Clone
- [JS] Phaser Game Creation - Vampire Survival Clone
- [JS] Phaser Game Creation - Vampire Survival Clone
Posts
Q&A
player, mob, background ์ด๋ฏธ์ง
์๋ ํ์ธ์~ ์ด ๊ฒ์ ์ ์์ ํ์ฉํ player, mob๊ณผ ๋น์ทํ ์ด๋ฏธ์ง๋ "free spritesheets" ๋ผ๋ ํค์๋๋ก ๊ฒ์ํด๋ณด์๋ฉด ์ฌ์ดํธ๋ฅผ ์ข ์ฐพ์ ์ ์์ต๋๋ค.https://opengameart.org/โ ์ฌ๊ธฐ์ spritesheet๋ก ๊ฒ์ํ์๋ฉด ์ํ์๋ ๋๋์ ์ด๋ฏธ์ง๊ฐ ๋ง์ด ๋์ต๋๋ค~https://kenney.nl/assets/toon-characters-1โ ์ด ์ด๋ฏธ์ง๋ ๋ํธ ๋๋์ ์๋์ง๋ง spritesheet ํ์์ผ๋ก ๋์ด์๋ ๋ฏ ํฉ๋๋ค.์ด๋ฏธ์ง๊ฐ ์ํ๋ ํฌ๊ธฐ์ ์ข ๋ค๋ฅด๋ค๋ฉด scale๋ก ์กฐ๊ธ ์กฐ์ ํด ๋ณผ ์ ์์ ๋ฏ ํฉ๋๋ค. ์ด๋ฏธ์ง ์์ฒด์ ํฌ๊ธฐ๋ฅผ ๊น๋ํ๊ฒ ์กฐ์ ํ๋ ค๋ฉด ๊ทธ๋ํฝ ํด์ ์ฌ์ฉํด์ผ ํ ๋ฏ ํ๋ฐ.. ์ด ๋ถ๋ถ์ ์ ๋ชจ๋ฅด๊ฒ ๋ค์ ใ ใ
- 0
- 2
- 18
Q&A
node ๋ฒ์ ๋ฌธ์๋๋ฆฝ๋๋ค.
์๋ ํ์ธ์. Phaser๊ฐ Node 18๋ฒ์ ๊ณผ ํธํ์ด ๋๋ฉด 18๋ฒ์ ์ผ๋ก ์๊ฐํ์ ๋ ๋ฌด๋ฐฉํ์๊ฒ ์ต๋๋ค. ๋ค๋ง 18๋ฒ์ ์ผ๋ก ์งํํ์๋ฉด ๊ฐ์์ ๋๊ฐ์ด ๋ฐ๋ผํ์ ๋ ๋ฒ์ ์ ์ผ๋ก ๋ฌ๋ผ์ง ๋ถ๋ถ ๋๋ฌธ์ ์๋ฌ๊ฐ ๋ ์ ์์ต๋๋ค. ์ด๋ฐ ๋ถ๋ถ์ ๊ตฌ๊ธ๋งํ์๋ฉฐ ๋๋ฒ๊น ํ์๋ฉด ์ข์ ํ์ต์ด ๋ ๊ฒ ๊ฐ์ต๋๋ค~
- 1
- 2
- 130
Q&A
npm start ๊ด๋ จ ์๋ฌ ์ง๋ฌธ
์๋ ํ์ธ์.ํด๋น ์ค๋ฅ๋ node ๋ฒ์ ์ด ๊ฐ์ ๋ฒ์ ๊ณผ ๋ง์ง ์์ ๋ฐ์ํ๋ ์ค๋ฅ ๊ฐ์ต๋๋ค.์ด ๊ฐ์๋ node 16.16.0 ๋ฒ์ ์ผ๋ก ์งํ๋์์ต๋๋ค.node๋ฅผ ๋ค์ด๊ทธ๋ ์ด๋ํด์ฃผ์๊ฑฐ๋, mise ๊ฐ์ ํด์ ์ฌ์ฉํ์ค ๊ฒ์ ๊ถํด๋๋ฆฝ๋๋ค.mise๋ node, python, terraform ๋ฑ์ ๊ฐ๋ฐ ๋๊ตฌ/๋ฐํ์์ ์ค์น ๋ฐ ๊ด๋ฆฌํ๊ณ ํ๋ก์ ํธ๋ง๋ค ์ฌ์ฉํ ๋๊ตฌ ๋ฒ์ ์ ์ง์ ํ ์ ์๋๋ก ํ๋ ํด์ ๋๋ค. ํ๊ฒฝ ๋ณ์๋ฅผ ๊ด๋ฆฌํด ํ๋ก์ ํธ๋ง๋ค ๋ค๋ฅธ AWS key ๋ฑ์ ์ง์ ํ ์๋ ์์ต๋๋ค.mise๋ฅผ ์ค์นํ์ ๋ค, node ๋ฒ์ ์ phaser ๊ฒ์ ํ๋ก์ ํธ ๋ฃจํธ ํด๋๋ก ์ด๋ํ์ ์ mise use node@16 ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ์๋ฉด ๋ฉ๋๋ค. mise ์ค์น ๋ฐ ์ฌ์ฉ์ ๋ค์ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ์๋ฉด ๋ฉ๋๋ค: https://www.itsmo.dev/introduce-mise/
- 0
- 2
- 289
Q&A
๋ ธ๋.js ๋ฒ์ ์ง๋ฌธ
์๋ ํ์ธ์.์ง๋ฌธ์๋๊ณผ ๊ฐ์ ๊ฒฝ์ฐ, node ๋ฒ์ ์ ํ๋ก์ ํธ ๋ฒ์ ๋ง๋ค ๋ค๋ฅด๊ฒ ์ค์ ํ ์ ์๋ mise๋ฅผ ์ค์นํด์ ์ฌ์ฉํ ๊ฒ์ ์ถ์ฒ๋๋ฆฝ๋๋ค.mise๋ node, python, terraform ๋ฑ์ ๊ฐ๋ฐ ๋๊ตฌ/๋ฐํ์์ ์ค์น ๋ฐ ๊ด๋ฆฌํ๊ณ ํ๋ก์ ํธ๋ง๋ค ์ฌ์ฉํ ๋๊ตฌ ๋ฒ์ ์ ์ง์ ํ ์ ์๋๋ก ํ๋ ํด์ ๋๋ค. ํ๊ฒฝ ๋ณ์๋ฅผ ๊ด๋ฆฌํด ํ๋ก์ ํธ๋ง๋ค ๋ค๋ฅธ AWS key ๋ฑ์ ์ง์ ํ ์๋ ์์ต๋๋ค.mise๋ฅผ ์ค์นํ์ ๋ค, node ๋ฒ์ ์ phaser ๊ฒ์ ํ๋ก์ ํธ ๋ฃจํธ ํด๋๋ก ์ด๋ํ์ ์ mise use node@16 ๋ช ๋ น์ด๋ฅผ ์ ๋ ฅํ์๋ฉด ๋ฉ๋๋ค. mise ์ค์น ๋ฐ ์ฌ์ฉ์ ๋ค์ ๋งํฌ๋ฅผ ์ฐธ๊ณ ํ์๋ฉด ๋ฉ๋๋ค: https://www.itsmo.dev/introduce-mise/
- 0
- 2
- 366
Q&A
catnip ์ดํํธ ๋ฒ์๊ฐ ์ด์ํ๋ค์
์๋ ํ์ธ์.ํ์ฌ ์ด๋๊ณผ ๊ด๋ จ๋ ์ฝ๋๋ PlayingScene.js์ movePlayerManager ๋ฉ์๋์์ ๊ด๋ฆฌํ๊ณ ์๋๋ฐ, player๋ฅผ ์ด๋ํ๋ ์ฝ๋์ weapon์ ์ด๋ํ๋ ์ฝ๋์ ์์๊ฐ ๋ณด์ฅ๋์ง ์์ ๋ฐ์ํ๋ ๋ฌธ์ ๋ก ์๊ฐ๋ฉ๋๋ค.movePlayerManager() { this.m_player.move(vector); this.m_weaponStatic.children.each(weapon => { weapon.move(vector); }, this); }๋ค์๊ณผ ๊ฐ์ ๋ ๋ฐฉ๋ฒ์ ์๋ํด๋ณด์ค ์ ์๊ฒ ์ต๋๋ค.player์ move ๋ฉ์๋ ๋ด๋ก weapon์ move์ํค๋ ์ฝ๋๋ฅผ ์ด๋์ํต๋๋ค.AI ๋ต๋ณ์ผ๋ก ์ ํ์ ธ ์๋ ๋ฐฉ๋ฒ๋๋ก, catnip์ move ๋ฉ์๋๋ฅผ player์ ์ขํ๋ฅผ ๊ฐ์ ธ์ ์ง์ ๋์ ํ๋ ๋ฐฉ์์ผ๋ก ๋ณ๊ฒฝํฉ๋๋ค.
- 0
- 2
- 217
Q&A
addAttackEvent ์๋๊ฐ ๋๋ฌด ๋น ๋ฅด๋ฉด ์ด๋ฐ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค์
์๋ ํ์ธ์.์ผ๋ฐ์ ์ผ๋ก Maximum call stack size exceeded๋ผ๋ ์๋ฌ๋ ๋ฌดํ๋ฃจํ ๋๋ ๋ฐ๋ณต ํธ์ถ๋ก ์ธํด ์ฝ์คํ ํฌ๊ธฐ๊ฐ ์ด๊ณผ๋์์ ๋ ๋ฐ์ํฉ๋๋ค. ์ฝ๋์์ Beam.setVelocity๊ฐ ์ฌ๋ฌ ๋ฒ ๋ฐ๋ณต ํธ์ถ๋๋ฉด์ ์๋ฌ๊ฐ ๋ ๊ฒ ๊ฐ์ต๋๋ค.์์ ์๋ฃ๋๋ก๋ผ๋ฉด setVelocity ๋ฉ์๋์์ ๋ฌดํ ๋ฃจํ๊ฐ ๋ฐ์ํ์ง ์์ ๊ฒ ๊ฐ์๋ฐ, ์ด๋ฒคํธ๊ฐ ๋๋ฌด ์งง์ ์๊ฐ ์์ ๊ณ์ํด์ ๋ฐ์ํด์ ์ฝ์คํ ํฌ๊ธฐ๋ฅผ ์ด๊ณผํ ๊ฒ์ผ๋ก ๋ณด์ ๋๋ค. ์ฝ์คํ์ ํฌ๊ธฐ๋ฅผ ์ง์ ๋ณ๊ฒฝํ ์๋ ์์ผ๋ repeatGap์ ์กฐ๊ธ์ฉ ๋๋ ค์ ์ฝ์คํ์ด ํฐ์ง์ง ์๋ ๋ฒ์๋ฅผ ์ฐพ๋ ๊ฒ์ด ์ต์ ์ผ ๊ฒ ๊ฐ์ต๋๋ค.
- 0
- 2
- 249
Q&A
hello world ๊ฐ์ ์ง๋ฌธ์ด์~
์๋ ํ์ธ์, Phaser labs ํ์ด์ง์์ ํด๋น ํ์ด์ง๊ฐ ์ญ์ ๋ ๊ฒ์ผ๋ก ๋ณด์ ๋๋ค.Phaser labs์ ์๋ ๋ค๋ฅธ ์์๋ค์ ํตํด ์ค์ตํด๋ณด์ค ์ ์์ต๋๋ค. (https://labs.phaser.io/index.html)https://labs.phaser.io/view.html?src=src\game%20objects\sprites\create%20from%20config.js์ฌ๊ธฐ์๋ this.make.sprite(config8); ๋ถ๋ถ์์ config8์ config1, 2, 3, 4, 5 ๋ฑ์ผ๋ก ๋ฐ๊พธ๊ณ config์ ๋ด์ฉ์ ๋ฐ๊ฟ๋ณด๋ฉด์ ์ค์ตํ์ค ์ ์์ต๋๋ค.https://labs.phaser.io/view.html?src=src\physics\arcade\bounce%20test.js&v=3.80.1์ฌ๊ธฐ์๋this.logo.setOrigin(0.5, 0); this.logo.setVelocity(0, 60); this.logo.setBounce(1, 1); this.logo.setCollideWorldBounds(true);์ด ๋ถ๋ถ์ ์์น๋ฅผ ๋ฐ๊พธ๊ณ Run Code ํด๋ณด๋ฉฐ ๋ฌผ๋ฆฌ ์ ์ฉ์ ๊ด๋ จํด ์ค์ตํด๋ณด์ค ์ ์์ต๋๋ค.์ด์ธ์๋ ๋ค์ํ ์ํ์ด ํํ์ด์ง์ ์์ผ๋ฏ๋ก ๊ฐ ํ์ด์ง์์ Edit๋ฅผ ๋๋ฌ ์ฝ๋๋ฅผ ์์ ํ ๋ค Run Code๋ฅผ ํด๋ณด๋ฉฐ ๊ฐ๋จํ ์ค์ตํด๋ณด์๋ฉด ๋๊ฒ ์ต๋๋ค.
- 1
- 2
- 371
Q&A
[์ฐธ๊ณ ] Uncaught Error: createEmitter removed. See ParticleEmitter docs for info : ์๋ฌ์ ๋ํ ํด๊ฒฐ ๋ฐฉ๋ฒ ๊ณต์
์๋ ํ์ธ์ JJanmo๋!์๋ฌ ์ ๋ณด์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ๋ ธ์ ๋ด์ฉ ์ ๋ฐ์ดํธ ์๋ฃํ์์ต๋๋ค. ๐
- 2
- 2
- 374
Q&A
npm start ์๋ฌ๋์ ๋ฌธ์๋๋ฆฝ๋๋ค.
์๋ ํ์ธ์, WS Kim๋.๊ฐ์์ ์ํํ ์๊ฐ์ ์ํด ์ํ ์ฝ๋๋ฅผ ๊ฐ์ ์ ์์ ๋ฒ์ ์ผ๋ก ๋ค์ด๊ทธ๋ ์ด๋ํ์ฌ ์๊ฐํ์๋ ๊ฒ์ ๊ถํด๋๋ฆฝ๋๋ค.๋ค์๊ณผ ๊ฐ์ git ๋ช ๋ น์ด๋ก ๊ฐ์ ์ ์ ์์ ์ ์ฝ๋๋ฅผ cloneํ ์ ์์ต๋๋ค.ํน์ ๋ค์ ๋ช ๋ น์ด๋ฅผ ์ฌ์ฉํด๋ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ์ถ๊ฐ ๋๊ธ ๋ถํ๋๋ฆฝ๋๋ค!git clone https://github.com/phaserjs/template-webpack.git git reset --hard 737428d
- 2
- 2
- 335
Q&A
Phaser3 ์ง๋ฌธ๋๋ฆฝ๋๋ค!!
์๋ ํ์ธ์ ๋ํ๋!๋ง์ํด์ฃผ์ ๋๋ก ๋ฐฐ๊ฒฝ์ ๋์ ๋ค๋ค๋ฅด๋ฉด ์นด๋ฉ๋ผ ๊ณ ์ ์ ํด์ ํ๋ ๋ฐฉ์์ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์๊ฒ ์ง๋ง, ๊ทธ์ค ์ ๊ฐ ์๊ฐํ ๋ฐฉ๋ฒ ํ๋๋ฅผ ์๋์ฝ๋๋ก ์ค๋ช ๋๋ฆฌ๊ฒ ์ต๋๋ค. let isCameraFollowingPlayer = true; if (ํ๋ ์ด์ด๊ฐ ๋ชจ์๋ฆฌ์ ๋๋ฌํ๋ฉด && isCameraFollowingPlayer) { ์นด๋ฉ๋ผ.๋ฐ๋ผ๊ฐ๊ธฐ๋ฉ์ถค(); isCameraFollowingPlayer = false; } else if (ํ๋ ์ด์ด๊ฐ ๋ชจ์๋ฆฌ๊ฐ ์๋๋ฉด && !isCameraFollowingPlayer) { ์นด๋ฉ๋ผ.๋ฐ๋ผ๊ฐ๊ธฐ(ํ๋ ์ด์ด) isCameraFollowingPlayer = true; }์นด๋ฉ๋ผ๊ฐ ๋ชจ์๋ฆฌ์ ๋๋ฌํ๋์ง ์ฌ๋ถ๋ฅผ ๊ตฌํด์ ๋ชจ์๋ฆฌ์ ๋๋ฌํ๋ฉด ์นด๋ฉ๋ผ๊ฐ follow๋ฅผ ๋ฉ์ถ๊ณ , ๋ค์ ๋ชจ์๋ฆฌ์์ ๋ฒ์ด๋ฌ๋ค๋ฉด ์นด๋ฉ๋ผ๊ฐ ํ๋ ์ด์ด๋ฅผ followํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.์ด๋ 'ํ๋ ์ด์ด๊ฐ ๋ชจ์๋ฆฌ์ ๋๋ฌํ๋์ง ์ฌ๋ถ'๋ ๋ฐฐ๊ฒฝ ์ด๋ฏธ์ง ํฌ๊ธฐ, ๊ฒ์ ํ๋ฉด ํฌ๊ธฐ, ํ๋ ์ด์ด ์์น๋ฅผ ์ด์ฉํด ๊ตฌํ ์ ์๊ฒ ์ต๋๋ค. ํ๋จ ๊ทธ๋ฆผ์ ์ฐธ๊ณ ํด์ฃผ์๊ธฐ ๋ฐ๋๋๋ค. (์ฌ์ง)์ด๋ฐ ๋ฐฉ์์ผ๋ก ํ๋ฒ ์ค์ค๋ก ๊ตฌํํด ๋ณด์๊ณ , ์ดํด๊ฐ ์๋๊ฑฐ๋ ์ด๋ ค์ด ๋ถ๋ถ์ ๋ค์ ์ง๋ฌธํด ์ฃผ์๊ธฐ ๋ฐ๋๋๋ค :)
- 2
- 2
- 705