현재 해당 게임의 자유게시판에 올라온 글인데 내용은 다음과 같습니다.

-----------------------------------------------------------------
퍼온글입니다.

1.무장수 늘리는 버그

2. 시장 상인수 늘리는 버그

3. 건물 2레벨 한번올릴수있는 버그

4. 기술연구 중복 버그

5. 기술연구 시간 1초 만드는 버그

6. 병력 생성 버그

7. 금화 복사 버그

8. 공격오는 병력 유령부대 만드는 버그

9. 각병과의 유닛별 능력치 올리는 버그

10. 무장 환혼주 복사 버그

11. 장비 아이템 복사 버그



위는 다른글에서 밝힌 11개의 버그인데 아는것(경험해본것) 위주로 공략해보자!

현재 생각하기로는 XX제국에는 일정한 시간대의 서버갱신타임이 존재하고 그 시간에는 서버랙이 발생한다.

이때 다들 병력배치를 하다가 병력을 날리곤 하는데..

이것도 일종의 '중복'실행되는 현상으로 인해 발생하는 버그라고 할수 있다.



이걸 좀 더 생산적으로 이용하면 저 병력이 날아가는 특정시간대에 병력을 생산하면!?

6번에 해당하는 병력생산버그가 되는것이다. 실제로 모집한 병력의 2-3배가 만들어진다.

(ex: 100마리 생산 누르면 완료후 200마리가 생겨남)



마찬가지로 그시간대에 기술연구를 하면 기술연구가 이중으로 누적되어서 실제수치보다 더 높게 더 높은단계로 오르는거다.

첩보술이 13렙인 유저도 보았고, 병과별 공격력/생명력수치가 다른것? 다른글의 스샷에 나온 상인수 버그라던지

대부분 이런 '중복'실행때문에 발생한다고 생각한다. 이건 1,2,4,9번에 해당되겠지.



그리고 한참 이슈인 환혼주 복사버그.



이것도 실제로 경험해봤다. 앞서 얘기한 '중복'실행이 자주 일어나는 시간대에 우연히 환혼주봉인을 클릭했고,

봉인이 되지 않더라. 그래서 2번정도 더 눌렀는데 그래도 안되길래

그냥 다른탭으로 이동했다가 다시 무장탭으로  돌아와서 봉인에 성공했다

그리고 보물창고를 열어보니 같은무장이 4개..... 이역시 서버갱신타임/랙발생과 연관된거다.



결국 XX제국의 고질적인 문제다. 특정갱신타임의 과부화 혹은 중복실행현상을 제대로 잡지 못한다면

이 어설픈 -실시간- 갱신 웹게임은 수많은 복사와 누적버그가 발생될것이라고 본다.
---------------------------------------------------------------------------------------------

이런 증상에 의해서 발생하는 복사 버그라고 합니다.

복사버그의 원인을 저는 다음과 같은 조건하에서 발생하는 버그로 추정합니다.

추정 조건
1. 해당 게임의 db테이블 엔진은 myisam일 것 이다.
2. npc의 병력과 기타 퀘스트 일일제한 횟수 초기화를 작업하는 크론이 있을 것 이다.
3. 종류별 아이템을 처리하는 대기열 쿼리가 하나의 테이블로 만들어져 있을 것 이다.
4. 서버 사양이 낮을 것 같다.
5. 게임서버가 한국내에 있지 않고 개발사 국가에 있어 서버와 유저들의 피시간에 펫킷 지연율과 손실율이 클 것 이다.

추정 복사경로
1. 특정 시간대에 랙이 발생하고 이때 복사 현상을 경험한 유저들이 있다.
2. 특정 시간은 크론이 npc병력 초기화와 기타 퀘스트관련 제한값 초기화를 하는 시간대이다.
3. 특정 시간대에서 복사 경험 유저들이 복사를 원하는 아이템의 봉인 작업 혹은 시설물 업그래이드 명령을 수행한다.
4. 특정 시간에 크론이 작업을 수행한다, 서버 사양이 낮아 프로세스 작업율이 100%인 상황이 발생한다,  스토리지 엔진이 myisam이기 떼문에 크론이 작업중인 해당 테이블은 락이 걸려있으며 해당 테이블과 연동된 대기열 쿼리도 영향을 받는다, 타이밍을 잘 맞춘 복사유저들의 쿼리문 대기열은 누적이 되며 펫킷손실이 많아 쿼리업데이트 확인 작업에 문제가 발생 한다,
5. 서버가 아이들 상태로 돌아오고 이 시점에 복사유저들은 아이템 확인 작업을 수행 대기열 쿼리들의 누적된 아이템 레코드값이 업데이트 된다.
6. 이렇게 매일 같은 시간대에 복사를 한다.

대충 이럴것 같아요...

해법을 거론하자면...

1. 서버를 국내에 들여온다.
2. 서버 사양을 존나 좋은걸로 한다.
3. db스토리지 엔진을 트랜잭션 지원 엔진으로 바꿔준다.
4. 소스코드를 수정하여 트랜잭션을 지원하도록 한다.
5. 아이템 속성별 대기열 쿼리 테이블로 테이블을 나눠준다.