머드클럽
머드게임이란?
게임은 어떤 환경에서?
본격적으로 게임해 볼까?
배너교환
머드강좌
일반 머드강좌
성천사님의 머드강좌
혼님의 머드강좌
방울꽃님의 머드강좌
리트님의 머드강좌
2Soo님의 머드강좌
내머드소개하기
접속가능머드
내머드소개하기
자료실
접속 프로그램
머드소스
머드 유틸리티
기타
커뮤니티
공지사항
등업신청
머드클럽에바란다
자유 게시판
질문 AND 답변
머드클럽 갤러리
구인구직
머드게임소개
사신전(死神戰)
사신전 소개
사신전 맵
사신전 명령어 모음집
천명(天命)
천명 소개
천명 맵
천명 명령어 모음집
마이페이지
로그인
회원가입
계정찾기
로그인
회원가입
계정찾기
텍스트머드클럽
검색
[circle]전투시스템 기초와 실전테크
사비
0
3,651
0
0
2004-11-24 12:20:07
전투시스템 기초와 실전테크 <br /> <br />본인은 단땅 써클화 프로젝트를 미르님 머드짱님과 같이 진행중에 있고, <br />코드구현 중 발생하는 주요이슈와 프로그램 팁에 대해 다큐형식으로 기록할 예정이다. <br />본문내용은 테스트모드인 vtmode.co.kr 8935에서 직접 확인하실 수 있습니다. <br /> <br />-------- <br />전투시스템의 백그라운드 작업 중 아주 요상한 버그때문에 한동안의 시간을 보냈다. <br /> <br />문제는 배움터에서 허수아비와의 전투신에서 출발한다. <br />우선 전투 당사자의 스텟을 살펴보도록 하자 <br /> <br />공격자 : 플레이어 <br />띠: 자 (기본능력: 2 3 10 8 8 5 ; 힘 민 식 혜 맷 위) <br />레벨 : 1 <br />체력 : 130 (4*str+16*con+str-con) <br />공격성공지수(THAC0): 20 (레벨 1/무직, Thac0 table 참조) <br />맨손공격시데미지(BHD): 2 (0D4+2:0=level/10,4=default,2=str bonus) <br />방어력(Armor Class): 10 (Naked....AC=10) <br />방어장비:없음 <br /> <br />대상자 : 허수아비 <br />띠 : 없음 (기본능력:1 1 1 1 1 1로 일단 가정) <br />레벨 : 2 <br />체력: 23~40 (1D18+22:18=level*4+10,22=level*6+10) ㅐ <br />공격성공지수(THAC0): 19 (레벨 2/무사, Thac0 table 참조) <br />맨손공격시데미지(BHD): 1 (0D4+1:0=level/10,4=default,1=str bonus) <br />방어력(Armor Class): 10 (Naked....AC=10) <br />방어장비: 없음 <br /> <br />자! 이 싸움의 결과를 예상해보자 <br />아무래도 체력이 우월하고, 공격 데미지가 1높은 플레이어가 우세한 것같지만, <br />THAC0의 1차이가 아무래도 수상하다. <br /> <br />우리 플레이어의 공격은 허수아비 쳐로 시작될 것이고.... <br />공격자THAC0와 대상자AC(-인경우) 합으로 타격포인트 20을 얻고, <br />공격롤(20면체 주사위)이 굴려진다. <br />공격이 적중하느냐의 여부는 공격롤의 결과가 20보다 크거나 같으면 성공이다. <br />확률적으로 20번에 1번은 성공한다는 건데... <br />첫번째 공격은 1/20의 확률에 접근하지못해 실패할것 같다. <br /> <br />이번엔 허수아비의 공격차례 (원전 TRPG는 initiative를 구하지만....일단 무시) <br />허수아비THAC0와 플레이어의AC의 합으로 타격포인트 19을 얻고, <br />공격롤이 굴려진다. 공격롤이 19보다 크거나 같으면 성공이다. <br />확률적으로 20번에 2번은 성공한다. <br />첫번째 공격은 2/20의 확률에 접근하지 못해 실패할것 같다. <br /> <br />... <br />숫한 헛손질의 턴들이 지나가고 <br /> <br />10번정도 가까우니 허수아비 한테 한대 맞았다. 아프다.. <br />아~~. 얼마나 아플까? <br />허수아비는 무기가 없는상태이고, 맨손공격데미지가 적용된다. <br />데미지롤이 굴려진다. 0D4+1의 결과는 1 <br />플레이어의 체력이 1 줄었다. (HP:135->134) <br />이번턴이 끝났다. <br /> <br />... <br />또 숫한 헛손질의 나날들.. <br /> <br />한대 맞아서 오기가 생긴걸까, 신이 도운걸까 <br />이번엔 허수아비를 가까스로 쳤다. <br />얼마나 세게 친 걸까? <br />역시 플레이어의 무기가 없는상태이고, 맨손공격데미지가 적용된다. <br />데미지롤이 굴려진다. 0D4+2의 결과는 2 <br />허수아비의 체력이 2 줄었다. (HP: 40[MAX]->38) <br />이번턴이 끝났다. <br /> <br />... <br />확률적으로 계산해보면 20번에 한번씩 2의 데미지를 주기 때문에, <br />400턴 정도를 플레이어가 견뎌내면, 플레이어는 이전투에서 승리한다. <br />이때의 체력은 400턴에 19이상 나올확률은 40(400*2/20)이므로 95(135-40) <br />정도로 상당한 부상을 입고 승리할것을 예상 할 수 있다. <br /> <br />하지만 400턴 안에, 허수아비의 공격롤 성공이 135번 있으면 <br />즉, 400턴에 135번만 19이상이 나온다면 (정말 재수없다면..) <br />플레이어는 무릎을 꿇고 만다. <br /> <br />이것이 끝까지 그 결과를 예측할 수 없는 RPG 전투시스템의 묘미이다. <br /> <br />어쨌든 플레이어에게 유리한 전투임에 틀림없으나, <br />연속해서 전투를 하기에는 체력에 부담이되는 결과를 예상할 수 있다. <br /> <br />여기까지 기초 전투시스템에 대해서 점검해 보았다. <br />... <br /> <br />지금부터는 실전이다. <br />실제 전투에서 발생한 요상한 버그에 대해 픽스하는 과정이다. <br /> <br />자! "허수아비 쳐"로 모니터링이 시작됬다. <br /> <br />전투상황은 예상데로 무수한 헛손질을 관람해야했다. <br />허수아비의 체력적 열세를 극복한 눈부신 활약이 눈에 띈다. <br />정말 맞추는 횟수면에서는 허수아비가 훨씬 성공적이다. <br /> <br />체력이 줄어간다. 이러다가 잘못하면, 죽을것 같다. <br />허수아비의 헛손질이 비껴나갈때 마다 <br />우리 플레이어의 타격이 성공하기를 열호한다!! 플레이어 홧팅!! <br /> <br />드디어 플레이어의 한방이 터졌다!!야호!! <br />몹의 체력이 2줄었지, 그래! 이제 최소한 11번만 더 때리면된다. <br /> <br />이제 게임은 중반전으로 접어들었다. <br />플레이어의 공격이 살아난다. <br />"허수아비 보"로 본 몹의 체력이 곧 숨이 끊어질 것같다. <br />또 수많은 턴이 지나간다. <br /> <br />그런데 곧 끝날것 같은 전투가 10분이 지나도 하루가 지나도 <br />끝나지 않을 것 같다. <br /> <br />재빨리 몹의 체력을 체크했다. HP:-20, HP:-22, HP:-24. ...... <br />앗 체력이 마이너스인데 죽지 않는다. 뭔가 엄청난 일이 벌어졌다. <br /> <br />POS_DEATH로 포지션 전환이 안되는군.... <br />전투시 마다 포지션을 업데이트하는 루틴을 체크했다. <br /> <br />루틴 자체는 완벽했다. (update_pos()를 간략화함) <br /> <br />line 1: if ( (vict.HP > 0) && (vict.position >= POS_STAND)) return; <br />line 2: else if ( vict.HP < 0 ) vict.position = POS_DEATH; <br />line 3: else if ... <br />line 4: else if ... <br /> <br />디버깅 결과 첫번째 라인에서 자꾸 리턴이 되버리는 것이다. <br />어! 분명히 체력이 마이너스고 포지션은 Fighting(7)이라 Stand(3)이상인데... <br />이런 황당한 일이 벌어지다니.... <br />이 말은 HP > 0 이고 position >= 3 이게 맞다는 것인데, <br /> <br />순간, 써클의 변수처리방식이 떠올랐다. <br />써클 변수 타입처리에는 signed 방식과 unsigned방식이 있는데, <br />unsigned 방식이 출현하게된 배경은 좀더 많은 존과 몹을 표현하려는데 있다. <br />즉, 기존 signed 방식에서는 -2^16 ~ 2^16의 range이기 때문에 방번호가 32767로 제한되었으나, <br />unsigned방식은 65536개로 두배를 더 방번호를 사용할 수 있는 개념에서 출발한다. <br />써클에서는 기본적으로 unsigned방식을 사용한다. <br /> <br />조사해보니, hit point는 역시 unsigned double long형으로 되있었다. <br />이제 원인을 밝혀냈으니, 처방은 간단하다. signed type으로 바꾸는 일 <br />line 1: if ((signed long long int)vict.HP ..... type casting 처리 후 <br />재컴파일 완료! <br /> <br />실제로 체력 회복 틱으로 인해, 오랜 시간이 걸렸지만, <br />결국 허수아비를 쓰러뜨리고 말았다. <br /> <br />버그는 일종의 심리적인 선입견이다. <br />분명히 맞을것 같지만, 냉철한 논리로 보면 헛점을 발견 할 수 있다. <br /> <br />오늘은 기초적인 전투시스템과 실전테크 한가지를 알아보았다. <br />부디 냉철한 가슴으로 버그와의 전투에서 승리하기를... <br /> <br />2004/11/24 사비. <br />
0
0
새글
답변
수정
삭제
최신목록
전체목록
Ctrl + Enter 패치 소스 입니다.
HanLP 지도명령 mudos 버젼으로 바꾸기.
0
Comments
-표시할 내용이 없습니다.-
코멘트를 삭제할 비밀번호를 입력하세요.
비밀번호:
댓글에 답하기
입력
닫기
정회원 이상만 코멘트 쓰기가 가능합니다.
총 게시물 107개 / 검색된 게시물: 107개
누구든지 머드 강의를 올리수 있는 곳입니다...^^
[circle]
전투시스템 기초와 실전테크
0
3652
0
0
사비
2004-11-24
[기타]
HanLP 지도명령 mudos 버젼으로 바꾸기.
0
3051
0
0
천유
2004-11-21
[circle]
단땅 프로젝트 ^^*
4
3724
0
0
사비
2004-11-19
[circle]
단땅 공지 3 .(사비님 미르님...~~)
2
3271
0
0
머드짱
2004-11-17
[circle]
단땅 21
6
3285
0
0
머드짱
2004-11-15
[hanlp]
input_to 사용에 대한 제 생각.
0
2966
0
0
추리소설
2004-11-13
[circle]
단땅 공지 2
7
2846
0
0
머드짱
2004-11-05
[circle]
단땅 21
1
3243
0
0
머드짱
2004-11-05
[circle]
단땅 20(존 제작)
0
3344
0
0
머드짱
2004-11-04
[circle]
단땅 19
0
2931
0
0
머드짱
2004-10-30
[circle]
단땅 18 / 몹 변환된 모습
0
3323
0
0
머드짱
2004-10-30
[circle]
단땅 17 / 아이템 변환모습
0
2905
0
0
머드짱
2004-10-27
[circle]
단땅 아래소스 설명 16-1
0
3118
0
0
머드짱
2004-10-27
[circle]
단땅 16
0
2952
0
0
머드짱
2004-10-27
[circle]
단땅 15
1
3226
0
0
머드짱
2004-10-26
[circle]
단땅 강좌 공지
1
3111
0
0
머드짱
2004-10-25
[circle]
suntzu 9월 30일버젼 한글아이디 저장시키기
0
2965
0
0
미르
2004-10-24
[기타]
패치파일 제작하기
1
2867
0
0
미르
2004-09-27
[기타]
윈도우에서 리눅스버전 머드 돌려보기.
1
3544
0
0
손문
2004-09-25
[mordor]
사전딜레이.
1
2821
0
0
GrayRese
2004-09-06
이전
1
2
3
4
5
6
다음
검색
글쓰기
최신목록
전체목록
시작일
종료일
분류별 검색
전체보기
기타
circle
hanlp
mordor
소스분석
흑염
천무혼
검색어
이름
제목
내용
검색
닫기
로그인
회원가입
계정찾기
개인정보처리방침
이용약관
PC화면
Copyright (c) 텍스트머드클럽. All rights reserved.
쪽지를 전송하고 있습니다. 잠시 기다려주세요.
쪽지보내기
받는이(ID/닉네임)
닉네임으로 입력
내용
쪽지가 도착하였습니다.
쪽지함
쪽지 내용을 읽어오고 있습니다. 잠시 기다려주세요.
--