mmorpg서버에 관하여 질문있습니다.
107
작성한 질문수 0
삭제된 글입니다
답변 1
2
기초적인 질문이 아니라 매우 어려운 질문입니다 ㅎㅎ!
게임의 기획에 따라 많은 것이 바뀌는데
MMO와 다르게 방 단위의 게임 (디아블로라거나, 메이플이라거나)은
DB 저장 정책도 많이 달라지게 됩니다.
당연히 그 정도 규모의 게임을 단일 DB로 처리하는 것은 불가능하고
테이블을 쪼개서 ('샤딩'이라고 합니다) 관리를 한다거나,
Redis와 같은 캐시 DB를 따로 두고 지연해서 RDB에 넣는 등 다양한 방법이 존재합니다.
구체적으로 Item 테이블을 16개로 쪼갠 다음,
(itemId % 16) 결과값 (0~15)에 따라 (Item_0~ Item_15) 테이블 중 하나에
데이터를 저장하는 방식을 샤딩이라고 하는데
단순하면서도 많은 성능 향상을 기대할 수 있습니다.
DB를 사용하는 빈도가 엄청 높지 않고,
엄격한 Transaction을 요구하지 않고,
또 유저끼리 데이터를 교환 (트레이드 등)하는 경우가 없다면
통합 서버로 가는 것도 물론 가능합니다.
카드 게임류라면 카드 Gacha를 까거나, 처음에 게임에 입장할 때를 제외하면
DB에 Read/Write하는 횟수가 아주 많진 않을테고
또 MMO처럼 실시간으로 유저끼리 아이템을 교환하고 떨구고 트레이드 하지도 않을테니
유저ID에 따라 적절히 카드 Table도 샤딩하는 것을 고려할 수 있겠죠.
의외로 이런 사소한 사양들이 중요한데
유저끼리 실시간 트레이드를 한다면 다수의 테이블끼리 Lock을 걸어야 할 수도 있겠지만,
그게 아니라 경매장을 통한 트레이드만 된다면
설계적인 측면에서 훨씬 예측하기가 쉬워집니다.
사실 정해진 답은 없고 [게임 로직(CPU 부하)] + [DB 부하] + [네트워크 부하]
이렇게 3종 세트를 하나로 생각해서
요구사항에 맞춰서 구현이 가능한지를 고민해보면 됩니다.
마우스 이벤트 처리방법(오브젝트간 인터렉션)
0
623
1
RecvArgs_Completed에서 lock을 안하는 이유
0
517
1
Entity framework 질문드립니다.
0
576
2
json 직렬화
1
290
1
mmo 와 pvp
0
536
2
github로 프로젝트를 push, pull할 때 질문
1
530
1
Iocp 서버 관련 질문드립니다.
0
329
1
서버 관련 질문
0
398
1
DB 처리관련 질문이 있습니다
0
303
1
안녕하세요. 질문드립니다.
1
1510
2
이해한 것이 맞나 궁금합니다.
0
288
1
마이그레이션 파일이 이상합니다.
0
284
1
강의 마지막으로 질문 드립니다.
0
680
2
ItemDbId,구조 설계
0
265
1
MMO 서버 관리 질문 드립니다!
0
324
1
디비 정보 나누기
0
241
1
AccountDb 업데이트
0
308
1
콘솔창이 아니라 브라우저에서 실행
0
283
2
메모리 누수문제.
0
498
1
유니티에서 클라이언트 빌드후 실행하면 맵 로드가 안됩니다.
0
364
1
외부 네트워크에서도 접속해서 게임하기
1
339
1
유니티클라에서 패킷을 계속 보내지 않고 lockstep이나 추측항법으로 동기화를 할 수 있을까요?
0
597
1
서버 메모리와 DB 저장 관련 질문
0
370
1
JsonUtility.FromJson 관해서 질문있습니다.
0
279
1





