본문 바로가기

프로젝트/게임 개발

(9)
[09] 230130 게임 개발 일지 - 탐지/채광 스킬 구현 (2) 탐지/채광 스킬에 추가 사항을 구현해 보았다. 기존 스킬 구현 사항에 대해 기획자 엉님과 얘기해보고 오류사항을 물어보고 추가 요구사항을 의논하는데, 약간의 소통 이슈가 있었다. 현재 채집 스킬에서 사용하는 용어가 혼동된 것이었는데, 채집 스킬 레벨, 채집 숙련도 레벨 이 두가지가 혼용되어 사용하여 요구사항을 이해하는데 소통 이슈가 있었다. 내가 개발한 내용을 상대방이 모두 파악하고 있지 않기 때문에, 개발 과정을 설명하거나 맞는지 검토할 때 항상 상대방이 이해하기 쉬운 용어를 사용하고, 기록하여 전달 할 때 헷갈리지 않도록 한 단어로 일관성 있게 사용해야 겠다고 느꼈다. 1. 숙련도 레벨/스킬레벨 에 따른 쿨타임 감소 설정 쿨타임 세팅은 서버스크립트가 아닌 클라이언트스크립트에서 설정이된다. 따라서 서버스..
[08] 230127 게임 개발 일지 - 탐지/채광 스킬 구현 두 번째 채집 스킬인 탐지 및 채광 스킬을 구현했다. 광물을 채집하기 위해서는, 먼저 탐지를 통해 광물을 발견해야 하고, 그 후 채광을 통해 광물을 캐야 한다. 탐지 전의 광물은 보이지 않으며, 채광스킬로 데미지를 입힐 수 없다. 이를 구현하기 위해 생각한 방법은 아래와 같다. 탐지 전 광물은 더미 광물로 구현한다. (투명, 데미지 입힐 수 x, 보상 x) 탐지 스킬을 쓰면 범위 내 더미 광물은 사라지고, 그자리에 채광 스킬로 데미지를 입힐 수 있는 진짜 광물이 스폰된다. 더미 광물의 종류에 따라 그 분류에 해당되는 진짜 광물들이 할당한 확률로 랜덤으로 스폰된다. 더미 광물로 구현한 후 진짜 광물을 스폰하게 한 이유는, 광물을 몬스터로 구현했기 때문에, 다른 스킬들 사용 시 데미지는 안들어가지만, 타격 ..
[07] 230126 게임 개발 일지 - 악세서리 착용 제한 + 벌목 스킬 구현 요즘 일지를 안쓴지 꽤 됐다... 부지런히 써야되는데... 매일 10분 늦게자더라도 게임 개발 한 후에 짧게라도 쓰는 습관을 들여야 겠다. 1. 악세서리 착용 제한 현재 게임에서 악세서리 장비 칸은 두칸이다. 장비 칸 index는 두 가지 구분이 가능하지만, 아이템의 type은 악세서리 하나로 동일하다. 우리 게임에서 악세서리에 할당한 장비는 채집도구, 목걸이 이다. 같은 종류의 악세서리 (채집도구 + 채집도구 , 목걸이 + 목걸이) 의 착용을 제한해야 된다. 어떻게 구분할지 좀 고민을 했던 것 같다. db번호 범위로 구분하고 싶진 않았지만... 결국 이것이 가장 편하고 변수를 적게 쓰는 방법인 듯 하여 이 방법으로 진행하였다. 조금 복잡하지만 더 좋은 방법이 생각이 나지 않아 장비 착용 시 실행되는 함..
[06] 230108 게임 개발 일지 - 활 스킬 구현 제일 미뤄놨던 활 스킬을 구현할 차례가 왔다... 역시역시나 생각한 대로 좀 복잡했다. 활 스킬을 어떻게 구현할지 기획자 엉님과 의논 결과, 아래와 같이 구현하기로 했다. 바라본 방향에서 위 아래로 45도 이내에 가장 가까운 타겟을 잡아 자동으로 발사한다. 타겟이 없으면 그냥 바라본 방향으로 직선으로 화살을 날린다. 타겟을 잡을 때 오랜만에 수학공식을 쓰려하니... 기억이 나지 않는다... 좌표계 이동... 극좌표계... 삼각함수... 음... 이걸 다시 꺼내다니... 저번 통계쪽 계산할때도 그렇고 은근 쓸일이 있구나 하고 느꼈다. 타겟을 잡는 간단 로직은 아래와 같다. 원하는 픽셀 내의 몬스터를 갖고온다. 몬스터의 x,y좌표를 캐릭터의 x,y 좌표를 기준으로 좌표계 이동을 해준다. 캐릭터가 바라보고 있..
[05] 230108 게임 개발 일지 - 직업 특수 스킬 구현 직업별 특수 스킬을 구현해 보았다 1. 도발 사용 시 5초간 어그로 1순위가 된다. 몬스터 AI 함수에서 몬스터가 피격 될 시 실행되는 함수에, 타겟 순위를 도발 버프가 있을 때 1순위로 지정한다. 도발건 유저가 없으면, 때린 유저가 어그로가 지정된다. 이렇게 지정하면, 도발이 없을 때 여러 유저가 몬스터를 때릴때마다 어그로가 계속 갱신될 것 같다. 내부 타이머를 설정해서 일정 시간동안 어그로가 고정되도록 해야 하나 고민중이다... 일단 어그로가 풀릴 때의 함수 지정은, 몬스터 AI함수에서 2초마다 자동 실행되는 함수에, 타겟으로 잡은 유저가 도발 버프가 없다면 어그로를 해제한다. 로 설정했지만, 도발한 유저가 없을 때, 그냥 때린 유저도 어그로가 풀리는데, 이게 2초마다 실행되는 함수가 피격 기준으로 ..
[04] 230104 게임 개발 일지 - 직업 스탯 보너스 수정 내가 구현했던 직업에 따른 스탯 보너스와, 기획자 엉님이 원했던 스탯 보너스 방식이 달랐다. 기획서를 좀 더 꼼꼼히 읽어보고 헷갈리는 것이 있음 그때그때 물어봐야 되겠다... 1. 총 스킬 레벨 -> 해당 직업 스킬 레벨 스탯 보너스 표 옆의 예시를 안보고 짐작해서 총 스킬 레벨로 구현했던 것이 아니었다. 간단히 직업별 table에 해당 스킬 dataID 항목을 추가하여 반복문을 돌려 해당 직업 스킬레벨의 총 합을 구하도록 수정하였다. 2. 스킬 레벨에 따른 스탯 보너스 수치 제한 요구사항에 스탯 보너스의 증감 수치의 제한이 있는 것을 깜빡하고 구현하지 않았다... 해당 조건은 간단한 조건문 추가로 해결하였다. 3. 마이너스 스탯 보정 현재 네코랜드는 스탯이 마이너스까지 내려가도록 구현이 되어있다. 우리..
[03] 230103 게임 개발 일지 - 스탯 함수 + 장비 장착시 스킬 배우기 멋사에서 진행하는 개인 프로젝트와 연말 행사와 약속에 정신이 없어 게임 개발에 소홀해졌다... 연말에 휴강하며 쉬면서 충전된 에너지를 토대로 앞으로 열심히 해야겠다... 1. 스탯 함수 전투 스킬 레벨에 따른 스탯 보너스를 구현하기 위해 스탯 함수를 튜닝 했다. 그러던 도중, 함수 내에서 스탯을 불러 올 때 원래 계산되었던 스탯이 아니라, 캐릭터 레벨에 따른 초기 셋팅값을 불러와 혼동이 많이 왔다. 또한, 아이템 착용 시 실행되는 Server.onRefreshStat 함수와, 그 함수에 추가시킨 커스텀 함수 간의 작동 차이가 있는 것을 발견했다. 이로 인해 데미지 함수에서 전투 스킬 레벨이 오를 때, 커스텀 함수가 아니라, 스탯을 다시 계산하는 unit.RefreshStats()을 불러와야 함을 깨닳았다..
[02] 221223 게임 개발 일지 - 데미지 함수 버그 해결하기 (1) 데미지 함수를 만들고 있는 도중 버그가 참 많이 나고 있다. 하나하나씩 다시 살펴가면서 고치고 있다.... 1. 명중률 문제 1) 몬스터의 명중률이 0 이상인데 계속 miss가 떴다. 이는 명중률 처리 함수에서 몬스터 데미지 함수 밖의 hit 변수를 참조해야 되는데 local로 새로 선언해 버려 나는 문제였다... 항상 변수 선언할 때 조심하자.... 2) 명중률을 통해 miss 처리해도 데미지가 들어가는 버그가 있었다. 이는 명중률 적용 함수가 된 후 return을 통해 빠져나오지 못하고 그 뒤의 데미지 처리 함수가 실행되었던 것으로 밝혀졌다. 뒤의 데미지 처리 함수가 실행되지 않도록 명중률 외에도 전투 외 스킬사용, 무적 버프 등의 함수 처리에서 miss index를 추가하여, index에 대한 if..