이를 코드 레벨로 표현하면 다음과 같을 것입니다.
Player_Attack(player, monster) { player. --; otherServer.DamageCharacter(player. , monster. , 10); // ➊ } DamageCharacter(callerServer, attacker, character, damage) // ➊ { character. -= damage; if (character. < 0) { callerServer.GiveItem(attacker. , gold, 30); // ➋ DeleteEntity(character, 10sec); } } GiveItem(character, item, amount) // ➋ { character. .Add(item, amount); }
이 방식이 가진 가장 큰 장점은 동기 분산 처리와 달리 잠금으로 인한 병목이 없다는 것입니다. 따라서 각 서버가 가진 성능을 최대한으로 활용할 수 있습니다.
그러나 단점도 있습니다. 모든 로직을 이 방식으로 구현하기 어렵거나 불가능하기 때문입니다. 쉽게 생각하면 반환 값 없는 함수만으로 로직을 구현하는 것과 유사합니다.