Files
LGram16 dd97ddec92 Restructure repository to include all source folders
Move git root from Client/ to src/ to track all source code:
- Client: Game client source (moved to Client/Client/)
- Server: Game server source
- GameTools: Development tools
- CryptoSource: Encryption utilities
- database: Database scripts
- Script: Game scripts
- rylCoder_16.02.2008_src: Legacy coder tools
- GMFont, Game: Additional resources

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-29 20:17:20 +09:00

82 lines
2.5 KiB
C++

#ifndef _GAMA_GAME_DUMMY_CHARACTERS_H_
#define _GAMA_GAME_DUMMY_CHARACTERS_H_
#include <list>
#include <map>
#include <vector>
#include <Item/ItemConstants.h>
/*
캐릭터 브로드캐스팅 기능 작성 -
게임 서버를 똑같이 복사한 다음 별도의 프로젝트로 이름을 바꾸어서 작업을 진행한다.
설정 파일을 읽어 재현하는 기능을 갖는다. default는 off이다.
가능한 행동 - 옷갈아입기. 손바꾸기. 이동. 공격모션.
설정 파일은 다음과 같은 항목을 갖는다.
- 브로드캐스팅에 필요한 기본 캐릭터 정보 (이름, 레벨, 클래스 등)
- 종족 및 클래스에 맞는 랜덤 복장 셋. (각 복장 부위에 따른 itemUID. 휴먼, 아칸 따로.)
- 캐릭터별 이동 경로, 옷갈아입기 빈도, 손바꾸기 빈도, 이동 및 공격모션 빈도.
- 캐릭터를 한 셀에 100명씩 800명을 띄우고 들어갔을 경우의 트래픽 및 서버 상태를 본다.
1. 먼저 할 일은 프로젝트 생성, 설정 파일 포맷 결정과 그에 맞는 데이터 구조를 생성하고 읽어온다.
2. 가짜 캐릭터를 생성해서 데이터를 세팅하고 셀에 집어 넣는다.
3. 가짜 캐릭터가 1초에 4번씩 가짜 이동 패킷을 보내도록 한다.
4. 가짜 캐릭터가 경로를 따라서 이동을 할 수 있게 한다. 이동처리 및 가짜 이동 패킷 보내기..
5. 가짜 캐릭터가 주기적으로 옷을 갈아입을 수 있게 한다.
6. 가짜 캐릭터가 주기적으로 손을 바꿀 수 있게 한다.
7. 가짜 캐릭터가 주기적으로 공격 모션을 표현할 수 있게 한다.
8. 가짜 캐릭터가 주기적으로 주변에 있는 캐릭터를 붙잡고 스킬(!) 을 쓸 수 있게 한다.
더미 캐릭터 파일 포맷
// 캐릭터 정보
CID/이름/레벨/클래스/머리칼/얼굴/성별/옷갈아입기 빈도/공격모션 빈도/스킬사용 빈도
// 복장 정보
인간 : 무기 방패 투구 갑옷 장갑 신발
아칸 : 무기 스킬암 투구 갑옷 프로텍트암 거들
// 이동 경로
*/
// forward decl.
class CModifyDummyCharacter;
class CDummyCharacterList
{
public:
struct EquipmentData
{
unsigned short m_usEquipments[Item::EquipmentPos::MAX_EQUPMENT_POS];
};
static CDummyCharacterList& GetInstance();
bool Initialize(unsigned long dwLoadCharNum);
bool Destroy();
private:
CDummyCharacterList();
~CDummyCharacterList();
typedef std::vector<EquipmentData> EquipmentVector;
typedef std::map<unsigned long, EquipmentVector> EquipmentClassSet;
typedef std::list<CModifyDummyCharacter*> DummyCharList;
static bool LoadEquipments(const char* szFileName, EquipmentVector& equipmentVector);
static bool LoadDummyChars(const char* szFileName,
EquipmentClassSet& equipmentSet, DummyCharList& dummyCharList, unsigned long dwLoadCharNum);
DummyCharList m_DummyCharacterList;
EquipmentClassSet m_EquipmentClassSet;
};
#endif