Protocol - BaekGeunYoung/agario_clone_backend GitHub Wiki

agario_clone

messages

object

  1. User
{
    "username": String
    "id": UUID
    "position": {"x": Double, "y": Double}
    "radius": Double
}
  1. Prey
{
    "id": UUID
    "position": {"x": Double, "y": Double}
    "radius": Double
}

connection url

/?id=${id}&username={username}

username์€ ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ์ž…๋ ฅ๋ฐ›์€ ๊ฐ’, id๋Š” ํด๋ผ์ด์–ธํŠธ๊ฐ€ UUID๋กœ ์ƒ์„ฑํ•˜์—ฌ ์„œ๋ฒ„๋กœ ๋˜์ ธ์ค€๋‹ค.

message type

incoming message (์„œ๋ฒ„๊ฐ€ ๋ฐ›๋Š” ๋ฉ”์„ธ์ง€)

  • POSITION_CHANGED
    • what : user id + current position
{
  "type": "POSITION_CHANGED",
  "body": {
    "position": {"x": ?, "y": ?}
  }
}
  • MERGE (user๊ฐ€ user๋ฅผ ๋จน๋Š” ํ–‰์œ„)
    • what : ๋จน๋Š” ์‚ฌ๋žŒ id / ๋จนํžˆ๋Š” ์‚ฌ๋žŒ id
{
  "type": "MERGE",
  "body": {
    "colony_id": ? 
  }
}
  • EAT (user๊ฐ€ ๋ฐ”๋‹ฅ์— ๊น”๋ ค ์žˆ๋Š” ๋จน์ด๋ฅผ ๋จน๋Š” ํ–‰์œ„)
    • what : ๋จน๋Š” ์‚ฌ๋žŒ id / ๋จนํžˆ๋Š” ๋จน์ด id
{
  "type": "EAT",
  "body": {
    "prey_id": ? 
  }
}

outgoing message (์„œ๋ฒ„๊ฐ€ ๋ณด๋‚ด๋Š” ๋ฉ”์„ธ์ง€)

  • JOIN
    • who : roo ์•ˆ์˜ ๋ชจ๋“  ์œ ์ €
    • when : ๋งจ ์ฒ˜์Œ room์— ์ ‘์†ํ–ˆ์„ ๋•Œ
    • what : ์ƒˆ๋กœ ์ƒ์„ฑ๋œ User ๊ฐ์ฒด
{
  "type": "JOIN",
  "body": {
    "new_user": User
  }
}
  • OBJECTS
    • who : room ์•ˆ์˜ ๋ชจ๋“  ์œ ์ €
    • when : POSITION_CHANGED ๋ฉ”์„ธ์ง€๊ฐ€ ๋“ค์–ด์™“์„ ๋•Œ
    • what : ๋ชจ๋“  ์œ ์ € list + ๋ชจ๋“  ๋จน์ด list
{
  "type": "OBJECTS",
  "body": {
    "users": [user1, user2, user3, ...],
    "preys": [prey1, prey2, prey3, ...] 
  }
}
  • MERGED
    • who : ๋ชจ๋“  ์œ ์ €
    • when : ๋จน์—ˆ์„ ๋•Œ
    • what : ๋จน๊ณ  ๋‚˜์„œ์˜ ์œ„์น˜ + ์›์˜ ํฌ๊ธฐ
{
  "type": "MERGED",
  "body": {
    "user_after_merge": User,
    "colony_id": UUID
  }
}
  • WAS_MERGED
    • who : ๋จนํžŒ ์œ ์ €
    • when : ๋จนํ˜”์„ ๋•Œ
    • what : empty
{
  "type": "WAS_MERGED",
  "body": {}
}
  • EATED
    • who : ๋ชจ๋“  ์œ ์ €
    • when : ๋จน์—ˆ์„ ๋•Œ
    • what : ๋จน๊ณ  ๋‚˜์„œ์˜ ์œ„์น˜ + ์›์˜ ํฌ๊ธฐ
{
  "type": "EATED",
  "body": {
    "user_after_eat": User,
    "prey_id": UUID
  }
}
  • SEED
    • who : room ์•ˆ์˜ ๋ชจ๋“  ์œ ์ €
    • when : room ์•ˆ์˜ ๋จน์ด๊ฐ€ x๊ฐœ ์ดํ•˜๋กœ ๋–จ์–ด์กŒ์„ ๋•Œ
    • what : ์ƒˆ๋กญ๊ฒŒ ์ถ”๊ฐ€๋œ ๋จน์ด List
{
  "type": "SEED",
  "body": {
    "new_preys": [prey1, prey2, prey3, ...]
  }
}