/shinhan_team2_omok

๐ŸŽฎ Servlet, JSP, Web Socket์œผ๋กœ ๊ฐœ๋ฐœํ•œ ์‹ค์‹œ๊ฐ„ ์˜ค๋ชฉ ๊ฒŒ์ž„๐ŸŽฎ

Primary LanguageJava

์›น ๊ธฐ๋ฐ˜ ์˜ค๋ชฉ ๊ฒŒ์ž„ ๊ตฌํ˜„ ํ”„๋กœ์ ํŠธ - ํ˜„์˜ค๋ชฉ

Web-based concave game development project

์˜ค๋ชฉ๋ˆˆ์ด

Team๐Ÿฅ

ํ•˜์†Œ์˜ (Soyeong Ha) ๊น€๋ฏผ์ง€(Minji Kim) ์„œํ˜„์˜ค(Heonoh Seo) ์กฐ์˜ˆ๋นˆ(Yebin Jo) ์ตœ๋ฏผ์„œ(Minseo Choi)
soyeong minji hyeono yebin minseo
@soyoungxxx @wing-beat @ohhyeonn @Jyebin @cmsxi
ํŒ€์žฅ, ๊ธฐํš, ํ”„๋ก ํŠธ์—”๋“œ, ๋ฐฑ์—”๋“œ ๊ธฐํš, ํ”„๋ก ํŠธ์—”๋“œ, ๋ฐฑ์—”๋“œ ๊ธฐํš, ํ”„๋ก ํŠธ์—”๋“œ, ๋ฐฑ์—”๋“œ, ์›น ํผ๋ธ”๋ฆฌ์‹ฑ ๊ธฐํš, ํ”„๋ก ํŠธ์—”๋“œ, ๋ฐฑ์—”๋“œ ๊ธฐํš, ํ”„๋ก ํŠธ์—”๋“œ, ๋ฐฑ์—”๋“œ, ๋””์ž์ธ
์›น ์†Œ์ผ“ ๊ตฌํ˜„ (์‹ค์‹œ๊ฐ„ ๊ฒŒ์ž„) ์›น ์†Œ์ผ“ ๊ตฌํ˜„ (์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ…) ์›น ์†Œ์ผ“ ๊ตฌํ˜„ (์‹ค์‹œ๊ฐ„ ๊ฒŒ์ž„) ์›น ์†Œ์ผ“ ๊ตฌํ˜„ (์‹ค์‹œ๊ฐ„ ๊ฒŒ์ž„) ์›น ์†Œ์ผ“ ๊ตฌํ˜„ (์‹ค์‹œ๊ฐ„ ๊ฒŒ์ž„)

Project

  • ํ”„๋กœ์ ํŠธ ๋ชฉํ‘œ
    • ์˜ค๋ชฉ ๊ฒŒ์ž„์„ ์›น ๋ฒ„์ „์œผ๋กœ ๊ฐœ๋ฐœํ•ฉ๋‹ˆ๋‹ค.
    • JSP, Servlet, AJAX, ์›น์†Œ์ผ“์„ ์ ์šฉ์‹œ์ผœ ๊ฐœ๋ฐœํ•ฉ๋‹ˆ๋‹ค.
    • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์™€ ์—ฐ๋™ํ•˜์—ฌ ์‚ฌ์šฉ์ž ์ •๋ณด์™€ ๊ฒŒ์ž„ ๊ธฐ๋ก์„ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.
    • ํŒ€ ๋‚ด ํ˜‘์˜๋ฅผ ํ†ตํ•ด ์ถ”๊ฐ€ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค.
    • ํŒ€๋ณ„๋กœ ๋ฐœํ‘œ๋ฅผ ์ง„ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์ฃผ์š” ๊ธฐ๋Šฅ ๐Ÿ“ฆ

  1. ์‚ฌ์šฉ์ž ์ธ์ฆ: ๋กœ๊ทธ์ธ ๋ฐ ํšŒ์›๊ฐ€์ž… ๊ธฐ๋Šฅ์„ ํ†ตํ•œ ์‚ฌ์šฉ์ž ์ธ์ฆ ๋ฐ ํƒˆํ‡ด, ๋กœ๊ทธ์•„์›ƒ ๊ธฐ๋Šฅ ๊ตฌํ˜„
  2. ์‹ค์‹œ๊ฐ„ ๋Œ€์ „: ์›น์†Œ์ผ“์„ ํ™œ์šฉํ•œ ์‹ค์‹œ๊ฐ„ ์˜ค๋ชฉ ๋Œ€์ „ ๊ธฐ๋Šฅ ๊ตฌํ˜„
  3. ๋žœ๋ค ์ž…์žฅ ๊ธฐ๋Šฅ: ์ƒ์„ฑ๋œ ๊ณต๊ฐœ๋ฐฉ์— ๋น ๋ฅธ ์ž…์žฅ์œผ๋กœ ๊ฒŒ์ž„ ์ƒ๋Œ€๋ฅผ ๋งค์นญํ•ด์ฃผ๋Š” ๊ธฐ๋Šฅ ๊ตฌํ˜„
  4. ์‚ฌ์šฉ์ž ์ปค์Šคํ…€ ์ž…์žฅ ๊ธฐ๋Šฅ: ์ƒ์„ฑ๋œ ๋น„๊ณต๊ฐœ๋ฐฉ์— ๋žœ๋ค์œผ๋กœ ๋ฐœ๊ธ‰๋˜๋Š” ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ์›ํ•˜๋Š” ์ƒ๋Œ€์™€ ๊ฒŒ์ž„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ ๊ตฌํ˜„
  5. ์‹ค์‹œ๊ฐ„ ์ฑ„ํŒ…: ์›น์†Œ์ผ“์„ ํ™œ์šฉํ•œ ์‹ค์‹œ๊ฐ„ ์˜ค๋ชฉ ๋Œ€์ „ ์ค‘ ์ฑ„ํŒ… ๊ธฐ๋Šฅ ๊ตฌํ˜„
  6. ๋žญํ‚น ์‹œ์Šคํ…œ: ๊ฒŒ์ž„ ๊ธฐ๋ก์„ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ €์žฅํ•˜์—ฌ ๊ฒŒ์ž„ ๊ฒฐ๊ณผ์— ๋”ฐ๋ฅธ ์‚ฌ์šฉ์ž ๋žญํ‚น ์‹œ์Šคํ…œ ๊ตฌํ˜„
  7. ์‚ฌ์šฉ์ž ์„œ์น˜ ๊ธฐ๋Šฅ : ์ด์šฉ์ž์˜ ๋‹‰๋„ค์ž„์„ ์„œ์น˜ํ•˜์—ฌ ๋“ฑ์ˆ˜๋ฅผ ๋ณผ ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ ๊ตฌํ˜„

ํ™”๋ฉด ๊ตฌ์„ฑ ๐Ÿ“บ

LandingPage - ๋žœ๋”ฉ ํŽ˜์ด์ง€
LandingPage
RegisterPage - ํšŒ์›๊ฐ€์ž… ํŽ˜์ด์ง€
RegisterPage
MainPage - ๋ฉ”์ธ ํŽ˜์ด์ง€
MainPage
MainPage - ๋กœ๊ทธ์•„์›ƒ, ์‚ฌ์šฉ์ž ํƒˆํ‡ด MainPage - ๊ณต๊ฐœ๋ฐฉ/๋น„๊ณต๊ฐœ๋ฐฉ ์ƒ์„ฑ ์„ ํƒ
MainPage-Popup MainPage-EnterRoom
RandomGamePage - ๊ณต๊ฐœ๋ฐฉ
image
CustomGamePage - ๋น„๊ณต๊ฐœ๋ฐฉ
RandomGameToCustomGame
GamePage - ์‹ค์‹œ๊ฐ„ ๊ฒŒ์ž„ ์ค‘์ธ ํ™”๋ฉด
Game
GamePage - Win/Lose ํŒ๋ณ„
WinGame

Stacks ๐Ÿ› ๏ธ

  • ํ”„๋ก ํŠธ์—”๋“œ: HTML, CSS, JavaScript
  • ๋ฐฑ์—”๋“œ: Java, JSP, Servlet
  • ์‹ค์‹œ๊ฐ„ ํ†ต์‹ : WebSocket
  • AJAX: ๋น„๋™๊ธฐ ๋ฐ์ดํ„ฐ ํŽ˜์นญ
  • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค: MySQL, ์„œ๋ฒ„ ์‚ฌ์ด๋“œ ์Šคํฌ๋ฆฝํŒ…์„ ์œ„ํ•œ Expression Language์™€ JSTL ์‚ฌ์šฉ
  • ์„œ๋ฒ„: Apache Tomcat
  • ๊ฐœ๋ฐœ ํ™˜๊ฒฝ: IntelliJ IDEA
  • ๋ฒ„์ „ ๊ด€๋ฆฌ: GitHub
  • ํ†ต์‹  ๋„๊ตฌ: Discord
  • ๋””์ž์ธ : Figma

๊ตฌ์กฐ Architecture ๐ŸŒณ

architecture

1. ํšŒ์› ๊ด€๋ฆฌ ์‹œ์Šคํ…œ (๋กœ๊ทธ์ธ, ๋กœ๊ทธ์•„์›ƒ, ํšŒ์›๊ฐ€์ž…, ํšŒ์› ํƒˆํ‡ด)
flowchart1
2-1. ๊ฒŒ์ž„๋ฐฉ(๊ณต๊ฐœ) ์ƒ์„ฑ ๋ฐ ์ฐธ์—ฌ 2-2. ๊ฒŒ์ž„๋ฐฉ(๋น„๊ณต๊ฐœ) ์ƒ์„ฑ ๋ฐ ์ฐธ์—ฌ
flowchart2 flowchart3
3. ๊ฒŒ์ž„ ์‹คํ–‰ ๋ฐ ์ข…๋ฃŒ
flowchart4
4. ์›น ์†Œ์ผ“ ์‹œ์Šคํ…œ ๊ตฌ์กฐ (๋ฐฉ ์ƒ์„ฑ / ์ž…์žฅ)
flowchart5

Database: ERD

erd1


ํ•„์š” ์กฐ๊ฑด

  • Java JDK ์„ค์น˜
  • MySQL ์„ค์น˜ ๋ฐ ๊ตฌ์„ฑ
  • Apache Tomcat ์„œ๋ฒ„ ์„ค์น˜
  • Intellij ํ™˜๊ฒฝ ์„ธํŒ…

Intellij ํ™˜๊ฒฝ ์„ธํŒ… ๋ฐฉ๋ฒ•

  1. Project Clone
git clone https://github.com/Jyebin/shinhan_team3_omok.git
  1. ์ธํ…”๋ฆฌ์ œ์ด์—์„œ ํ”„๋กœ์ ํŠธ ์—ด๊ธฐ
  • ์ธํ…”๋ฆฌ์ œ์ด์—์„œ ํ”„๋กœ์ ํŠธ๋ฅผ ์—ด ๋•Œ, shinhan_team3_omok ํด๋” ๋‚ด์˜ omok ํ•˜์œ„ ํด๋”๋ฅผ ์„ ํƒํ•œ๋‹ค. omok ํด๋”๋ฅผ ์„ ํƒํ•˜๋ฉด ํ”„๋กœ์ ํŠธ๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋กœ๋“œ๋œ๋‹ค.
  1. ๋ฉ”์ด๋ธ, ๋ชจ๋“ˆ, ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ, ์•„ํ‹ฐํŒฉํŠธ ํ™•์ธ
  • ๋ฉ”์ด๋ธ(Maven): pom.xml ํŒŒ์ผ์ด ์ •์ƒ์ ์œผ๋กœ ๋‚˜ํƒ€๋‚˜๊ฑฐ๋‚˜, ์˜ค๋ฅธ์ชฝ ์‚ฌ์ด๋“œ๋ฐ”์— 'm' ์•„์ด์ฝ˜์ด ๋ณด์ด๋ฉด ๋ฉ”์ด๋ธ์ด ์ž˜ ์„ค์ •๋œ ๊ฒƒ์ด๋‹ค.

  • ๋ชจ๋“ˆ(Module): ๋ฉ”์ด๋ธ ์—…๋ฐ์ดํŠธ ํ›„ Project Structure์—์„œ ๋ชจ๋“ˆ์„ ํ™•์ธํ•ด๋ณด์ž. ์—…๋ฐ์ดํŠธ ์ „์—๋Š” ๋ชจ๋“ˆ์ด ๋ณด์ด์ง€ ์•Š์„ ์ˆ˜ ์žˆ๋‹ค.

  • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ(Library): ํ”„๋กœ์ ํŠธ์— ํ•„์š”ํ•œ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๊ฐ€ ์—†๋‹ค๋ฉด, + ๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜์—ฌ java๋ฅผ ์„ ํƒํ•˜๊ณ , lib ํด๋” ๋‚ด์˜ ๋ชจ๋“  ํŒŒ์ผ์„ ์„ ํƒํ•œ ํ›„ OK๋ฅผ ํด๋ฆญํ•˜์—ฌ ์ถ”๊ฐ€ํ•œ๋‹ค.

  • ์•„ํ‹ฐํŒฉํŠธ(Artifact): Project Structure์—์„œ ์•„ํ‹ฐํŒฉํŠธ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋‹ค.


ํ”„๋กœ์ ํŠธ ๋ณด์™„ ์‚ฌํ•ญ Future Improvements

  1. ์ธํ„ฐํŽ˜์ด์Šค ๊ฐœ์„  (๊ฒŒ์ž„ ๊ทœ์น™ ์„ค๋ช…, ์‚ฌ์šฉ์ž ํ”ผ๋“œ๋ฐฑ ๋ฉ”์‹œ์ง€, ์• ๋‹ˆ๋ฉ”์ด์…˜ ํšจ๊ณผ ์ถ”๊ฐ€)
  2. ๋ฐ˜์‘ํ˜• ์›น๋””์ž์ธ (๋ชจ๋“  ๊ธฐ๊ธฐ์—์„œ ์ผ๊ด€๋œ ์‚ฌ์šฉ์ž ๊ฒฝํ—˜์„ ์ œ๊ณต)
  3. HTTPS ์‚ฌ์šฉ : ์‚ฌ์šฉ์ž ๋ฐ์ดํ„ฐ ๋ณด์•ˆ ๊ฐ•ํ™”
  4. ์™ธ๋ถ€ ์„œ๋ฒ„ ์—ฐ๊ฒฐ (์™ธ๋ถ€ ํด๋ผ์ด์–ธํŠธ๊ฐ„ ํ†ต์‹ )
  5. ๋žญํ‚น ์‹œ์Šคํ…œ ํ™•์žฅ : ์Šน๋ฅ , ์—ฐ์Šน ๊ธฐ๋ก ๋“ฑ์„ ๋„์ž…ํ•ด ์‚ฌ์šฉ์ž๊ฐ„ ๊ฒฝ์Ÿ ์ด‰์ง„
  6. ์ฝ”๋“œ ๋ฆฌํŒฉํ† ๋ง
  7. TDD ์ค‘์‹ฌ ํ…Œ์ŠคํŠธ ์ฃผ๋„ ๊ฐœ๋ฐœ ๋„์ž… (Test Driven Development)