turrettest-Default-1.0.0.0.exe


지난번에 말한 대로 이번엔 터렛을 만들어 보았습니다.

터렛은 총 3종류의 조준을 넣었습니다.


1.기본(무광택)-적을 향해 쏩니다.

2.탄막(발광)-적을 향해 쏘긴 하는데, 좀 막 쏩니다. 일종의 탄막.

3.예측(외곽선)-적의 직선 이동 경로를 예측해 쏩니다.


만약 모든 적이 터렛에 닥돌한다면 3=1>2 의 효율을 보여주겠죠.

하지만 평균적인 직선이동에서는 3>2>1의 효율을 보여줬습니다.

왜 이런 차이가 생기는 걸까요?


탄환이 적에게 도달할 시간에 적은 이미 다른 곳에 가있기 때문입니다.

일반적으로 한 자리에 고정돼있을 터렛이 노리게될 목표는 터렛 근처를 움직이는 물체입니다.

그러므로 그냥 목표를 향해 쏘는 것이 아니라 탄환이 날아갈 시간동안 목표가 이동하는 것까지 계산하여 목표가 도달할 예상 위치를 향해 쏴야 합니다.


동영상을 보시면 그것만으로도 효율이 크게 차이나는걸 알 수 있습니다.

그럼 타겟의 도달 위치를 예측하려면  뭘 알아야 할까요?

1.타겟의 현재 위치

2.타겟의 속도

3.타겟의 이동 방향

4.탄환의 속도

5.타겟와 터렛의 거리 


타겟의 위치+(타겟과의 거리/탄환의 속도*타겟의 속도*타겟의 이동 방향)에 쏘게 하시면

됩니다.


게임메이커 함수로 표현하자면 방향을 다음과 같이 잡으면 됩니다(whe1은 타겟의 id)

point_direction(x,y,whe1.x+distance_to_object(whe1)/20*whe1.speed*sin(degtorad(whe1.direction+90)),whe1.y+distance_to_object(whe1)/20*whe1.speed*cos(degtorad(whe1.direction+90)))


+90이 들어가는 이유는 게임메이커에서의 0도와 삼각함수의 0도가 다르기 때문입니다.

20은 탄환의 속도입니다.


Q:그래서 어쩌라고?

A:음.... 다음에는 물 구현하기를 해볼까요?

Posted by MPMaker



CH님이 여러모로 보여주셨던 그런 것들을 제가 한번 흉내내어 봤습니다.

다만 느낌이 좀 다르군요. 떨어지는 경우는 없고 대신 밀려나가는 경우가 많습니다.

특정 장애물에 부딛혀도 패배합니다만.. 이거 너무 자주 부딛히네요.. 스턴으로 바꿔야 할지?


일단 블럭 생성 메커니즘은 다음과 같습니다.


 시작 높이는 1

-최저 높이1 최고 높이9

-매번 1/2 확률로 높이가 변함(넉넉한 가로 간격을 위해)

-높이가 변할때는 -2~2사이에서 변함(점프 높이(4)에 적절한 수준)

-높이 4 미만일경우 1/2 확률로 기본 블록보다 1~3 높은 높이에 추가 블록 생성

-아이템은 기본 블록 높이보다 1~5칸 높은 위치에 생성. 추가 블록과 충돌할시 소멸.

-장애물도 아이템과 비슷한 원리로 생성


이것도 인공지능과 비슷한 범주에서 생각해야 하는것 같습니다... 논리가 중요하죠.

조금 더 복잡한 구성을 위해서는 많이 복잡한 과정을 거쳐야 하는것도 있고 말이죠.


예를들어 제가 만든 이 게임은 최악의 경우(블록이 2단계 높아짐+그보다 3단계 높은

추가블록+그 사이에 진을 친 장애물) 무적 아이템을 먹은 상태가 아니고서야

게임 오버 확정입니다. 승리 목표가 있는 게임이였다면 이랬다간 처형감이죠...

이건 제가 바라는것(조금 복잡한 구성) 에 비해 제 실력(많이 복잡한 과정)이 부족하기

때문입니다.  그렇다고 쉽게 쉽게 하려 했다간 게임이 재미가 없어지죠.

논리력도 게임을 만들기 위한 중요한 요소인 겁니다.

음... 어쩐지 교훈으로 글이 마쳐져 버렸군요?


DIO-Default-1.0.0.1.exe

이미지가 저모양인 미완성판이지만, 재밌어 보인다면 해보심이...


다음번엔 또 한번 흉내내기, 똑똑한 터렛을 만드는 법을 해보도록 하죠.

Posted by MPMaker

Dynamite throw : 전방으로 다이나마이트를 던진다. (피해 20 . 재사용 시간 5초 . 폭발 범위 3.2)



An extra stick! : 다이나마이트를 추가로 한개 더 던진다. (일회용 . 다이나마이트 갯수 + 1)

Mister TNT : 다이나마이트의 폭발 범위를 증가시켜 준다. (1/2 . 폭발 범위 + 1.2)

Rubber sleeve : 다이나마이트가 지형에 튕기게 해 준다. (일회용 . 지형에 튕김)

Dark matter flashbang : 다이나마이트 폭발시 눈멈 효과를 추가 해 준다. (일회용 . 눈멈 시간 + 2.5초)

Transfusion grenades : 다이나마이트에 흡혈 효과를 추가 해 준다. (일회용 . 흡혈 효과 + 25%)

Incendiary bomb : 다이나마이트의 지속 피해와 지속 시간을 늘려준다. (1/2 . 지속 피해 +10 , 지속 시간 5초)




Summon hyper bull : 전방에 거대한 황소를 소환한다. 황소는 앞으로 돌진하며 맞닥들이는 적을 뒤로 밀쳐낸다. (재사용 시간 8초 . 돌진 속도 8 . 체력 40 . 공격 속도 428.6 . 밀침 1.2)




Super breed 2.0 : 거대한 황소를 더 크게 만들고, 적을 더 멀리 밀쳐내게 만든다. (일회용 . 황소 체력 + 40 , 밀쳐내는 거리 + 1)

Cattle rebooter : Summon hyper bull 재사용 대기 시간을 줄여준다. (일회용 . 재사용 대기 시간 -2초)

Ribbit snail slime : 황소에 들이받힌 적이 느려지게 만든다. (1/3 . 느려짐 + 10% , 느려짐 시간 3초)

Bull charger : 황소가 죽을때 폭발하여 피해를 주게 한다. (일회용 . 폭발 피해 +30)

Techno viking helmet : 황소가 적을 들이받을 때 추가피해를 주게 한다. (1/2 . 추가피해 + 4)

Mature Ribbit snail slime : 황소에 들이받힌 적이 느려지게 만든다. (일회용 . 느려짐 + 30% , 느려짐 시간 3초)




Blaster : 뿜어져 나온 화염이 모든 적들을 찢어버릴 것 이다. (피해 5 . 공격 속도 166.7 . 사거리 7.2)



Eagle bullets : 사격 피해를 증가 시켜준다. (1/2 . 피해 + 2)

Cheetah bullets : 사격 속도를 증가 시켜준다. (1/2 . 사격 속도 + 20%)

Missile : 사격 시 느리게 장전 되는 폭발형 유도 미사일을 발사 한다. (일회용 . 유도 미사일 + 1 , 미사일 폭발 피해 15 , 재장전 속도 25)

Crystal eagle bullets : 사격 피해를 증가 시켜준다. (일회용 . 피해 + 4)

Booming bullets : 총알이 폭발하게 만들어 준다. (일회용 . 폭발 범위 + 3.4)

Another missile : 사격 시 느리게 장전 되는 폭발형 유도 미사일을 발사 한다. (일회용 . 유도 미사일 + 1 , 미사일 폭발 피해 15 , 재장전 속도 25)

번역:아로간(DC인사이드 게임갤러리)


Sheriff Lonestar utility : 보통 속도. 보통 사거리. 압박형 영웅. (체력 120 . 기본 Solar 200 . 분당 Solar 획득 30 . 이동 속도 6.6 . 신장 1.8)



Power pills Turbo : 최대 생명력을 증가시켜 준다. (1/3 . 최대 생명력 + 30)

Med-i'-can : 생명력 회복 효과를 증가시켜 준다. (1/2 . 분당 생명력 회복 + 120)

Rocket boots : 이동속도를 증가시켜 준다. (일회용. 이동속도 + 1.4)

Solar tree : 시간이 지날수록 Solar 를 얻게 해준다. (일회용. 분당 Solar 획득 + 30)

Piggy bank : Solar 150 을 준다. (일회용. Solar + 150)

Power pills : 최대 생명력을 40 증가시켜 준다. (일회용. 최대 생명력 + 40)

Posted by MPMaker