온라인 게임 제작시, 적들의 조작 개념에 대해 질문드립니다.
에가득
온라인 게임을 테스트용으로 제작단계에 있습니다.
앞서 질문드렸었는데,캐릭터가 (4~6명)매우 동적으로 이동하며,횡스크롤 아케이드 방식입니다.(메이플스토리 비슷하게 하려합니다.)
적들이 여러명 서로 다른 위치에 있는데, 이 적들을 조작하는 스크립트는 어디에 존재해야하는지 의문입니다.
개별 플래시에서 적들을 맵 배열대로생성한뒤, 개별의 엔터프레임으로 적들을 이동시키고 캐릭터와의 충돌여부를 체크하였더니, 이쪽에선 적들이 죽었으나 저쪽에선 그대로 남아있는등 싱크가 맞지 않았습니다.
캐릭터들간의 싱크는 캐릭터의 정보를 보내어 업데이트 하는 방식으로 거의 비슷하게 맞추었으나, 적들 모두의 정보를 보내려 하니, 조금 무식한듯 싶어 다시 한번 생각해 보았습니다.
개별에서 조작되는 적들의 정보를 모두 업데이트 하는것보다, 서버측(아니면 어느하나의 플래시?)에서 적들을 관리하고, 나머지 접속된 플래시에서 업데이트 하면 좋을듯 한데, 개별 플래시에서 적을 죽이면 서버측의 배열을 변경하고 나머지 플래시에 배열을 업데이트 하는식으로요.
요점은적들의 조작이 어느한곳에서 이루어지는것인지(서버?) 아니면, 적들역시 개별 싱크를 어느정도 절충하여 맞추는지궁금합니다. 실제 온라인게임(리니지2)같은 게임에서는 적이나 캐릭터들을 모두 관리하는 서버에 게임엔진? 코드?가 있어야 될것 같습니다. 기초적인 구상, 방식의 정리가 잘 안되어서 막상 해놓고 나니 문제점들만 드러나네요. 가르침 부탁드립니다.
코드 짜는 손가락이 시려운 날씨가 되었습니다. 몸관리 잘하십시요.
-
한말글 2025-09-24
서적도 많이 나와 있으니까 먼저 서적을 살펴보시는게 빠를겁니다.
-
보늬 2025-09-24
그냥 단순한 메아리서버 하나만 툭 있어도 컨셉적으로 의도하는 바를 대충 표현할 수는 있겠지만,
마우스나 키 입력, 각 케릭터, 몹들 위치 등의 싱크에 심하게 문제가 생기기 때문에
최소한의 패킷구성과 각각의 문제에 대한 해답을 먼저 구하셔야 할거예요. -
환히찬 2025-09-24
저도 한때 관심이 있어서 이것저것 알아볼때가 있었는데, 현재 출시되어 있는 게임마다 알고리즘이 많이 다르구요. 소켓통신으로 인한 시간차 때문에 생기는 케릭터들이 싱크가 안맞는 문제에 대한 해답들도
여러가지가 있고, 효율적으로 섞어쓰더라구요. 뭐가 정답인지는 모르겠지만, 어떤 정형화된 방법을 찾는것보다 효율적인걸 생각하셔서 만드시면 될 것 같아요. -
초롱꽃 2025-09-24
답변 감사드립니다. 서버와 클라이언트 역할부터 재정의 해야겠네요. 개념정리 및 효율적인 방법을 생각해볼수 있게 많은 도움이 되었습니다.
-
미영 2025-09-24
서버는 통신의 중계자가 아닙니다. 서비스의 제공자를 서버라는 용어로 사용합니다. 물론 이건 용어적인 측면이구요. 흔히 네트워크 설계를 할때 문제가 발생되는 문제가 싱크인데요 이는 서버의 역활을 정확하게 정의하지 않아서 발생하는 문제입니다. 가장 쉽게 구현할 수 있는 방법은 서버에서 모든걸 처리 시키는 겁니다. 클라이언트는 말그대로 서버에 접속해 정보를 얻어가는 프로그램, 또는 컴퓨터를 말하는데 이 역활만 충실하게 구성하는게 가장 구현이 쉽습니다. 캐릭터
-
회사원 2025-09-24
미생물님께서 효율적인 방법을 말씀해주신걸 다시 말씀드리자면
몹 생성은 당근 서버에서 해야하는거구요. 그 패킷 받아서 플래시에 그리고,
몹은 혼자 움직이면서 일정 시간 간격으로 서버에 자신의 위치를 전송하고,
좋은놈칼에 베었다던가 하는 이벤트가 발생했을때도 맞는처리까지는 플래시에서 하다가
죽으면 그제서야 서버에 나 죽었소 하고 날려주면 될 것 같은데염. -
빛솔 2025-09-24
죄송합니다만, 이해가 잘 안되어서 그러는데, 제가 이해한바를 적어 보겠습니다.
서버에서 몹을 생성하면, 클라이언트 플래시에서 몹을 생성하고, 서버에서 random(5)값을 이동하면,
클라이언트 플래시의 몹도 같은 값으로 이동시키는 방식입니까? 저는 서버는 그저 통신통로 역할만 생각했는데, 서버에도 데이터를 저장하고 코드를 둔다면, 즉 싱크를 조정하는 조정자가 서버에 있어야 한다는
건가요? 클라이언트 플래시의 입력자가 키를 누르듯 몹들의 입력자는 서버가 -
빛길 2025-09-24
서버에서 처리를 해줘야할껍니다. 가장 쉬운방법이 서버에서 각데이터를 처리하고 클라이언트를 보내는겁니다. 하지만 그럴경우 서버의 부하가 심하죠 그래서 최근엔 중요하지 않은 데이터 처리는 클라이언트를 통해 처리하게 시킵니다. 클라이언트에서 처리한경우 서버에 전송시키고 서버가 다시 데이터를 싱크를 확인한후 나머지 클라리언트에게 재전송하기도 하죠 또는 클라이언트를 보조 서버로서 사용하는 경우도 있습니다.
-
소라 2025-09-24
몹도 하나의 npc 이기에...플레이어와 동급으로 관리를 해줘야하지 않을까 하는데요~~ㅎㅎ(혼자 G랄 하는건 따로 할테고, 위치가 어딨나~~정도는 동급으로~~)
-
세실 2025-09-24
리니지2 같은건 몹서버가 따로 있어요. 그 드넓은 맵에 방대하게 찌끄려진 몹들이 관리되어야해서요.
만약 제가 만든다면 var mob:Mob = new GroundMod(x, y);
이렇게 만들어서 배치가 되면 혼자 지랄하면서 주기적으로 서버쪽에 현재 위치를 날리겠습니다.
