게임을 기존에 C++빌더에서 만들던것을 비주얼C++용으로 변경하는것을 완료하였습니다.

 

 

똑같은 C언어라 문법자체에는 크게 고칠것이 없었지만 컴파일과정에서의 차이점이나 비교적 더 까다롭게 에러체크를 하는 비주얼C++ 덕분에 게임코드의 여러 부분을 고쳐야 했습니다.

 

인제 비주얼C++에서도 무난하게 게임이 돌아가고 게임에 빠졌던 부분들이나 잘못된 부분들을 고치면 계속적인 테스트와 개선은 필요하겠지만 게임이 완성단계에 들어갈 것 같았습니다.

고쳐야 할 부분들을 그때그때 찾기는 어렵기때문에 생각날때마다 목록으로 만들어뒀던 요소들을 하나씩하나씩 해결해나가야 했습니다.

Posted by idd7
,

제작중이던 게임을 C++빌더에서 비주얼C++로 이전하여 계속 만들기로 하였습니다.

 

C++빌더는 툴을 만들기 좋기에 그곳에서 테스트겸 동작되는 게임 또한 만들었지만 아무래도 완성된 게임의 속도는 비주얼C++에서 만드는것이 좋을것 같아서 비주얼C++로 제작중이던 게임의 파일을 옮기게 되었습니다.

 

실제 게임에서는 게임제작툴에 관한 부분은 필요없기에 그런 부분은 제거해야 하고, C++빌더와 비주얼C++간에 약간씩 다른 사용법이 있는 부분들이 있기에 그런 부분들 또한 비주얼C++쪽에 맞게 변경해줘야 했습니다.

 

이 변경할 양이 상당히 많은것 같아서 한참을 변경해야 할 것 같았습니다. 변경이 끝난뒤에는 비주얼C++쪽에서 게임을 마저 완성시키면 될 것 같았습니다.

Posted by idd7
,

게임상에 쓰이는 각종 이벤트나 알림용 문장을 조금씩 더 고쳤습니다.

스토리가 중요한 게임은 아니기에 가능한 단순하고 정보를 전달하는데에만 맞춰서 적어놓았었는데 그보다도 더 건조하고 단순한 느낌으로 바꾸는게 좋을것 같았습니다.

각종 문장들을 좀 더 그런식으로 바꿔야 할 것 같았습니다.

 

 

 

도움말을 만들 필요도 있었습니다.

처음에는 메뉴칸이나 메뉴창에 몇초간 커서를 올리고 있으면 팝업도움말이 뜨는 방식을 만들려고 했으나 게임저장이나 캐릭터 능력치보기같은 특별한 설명이 필요없는 것에는 굳이 설명문을 넣을 필요가 없기에 그런것에는 설명문을 만들지 않을려고 해도, 어느것에는 설명이 붙어있고 어느것에는 설명이 없는 등으로 일관성을 해치면 안 됐기에 다른 방식을 생각해 보았습니다.

F1키를 누르면 도움말이 뜨는 방식도 생각해 보았으나 저 자체적으로 뭔 일이 있어도 F1키를 잘 누르는 일은 없었기에 이것도 별로 좋지 않다고 생각했고, 마지막으로 설명이 필요한 상황에마다 화면상단에 "도움"버튼을 표시시키고 이것을 누르면 꼭 필요한 설명이나 단축키설명 등을 표시시키게끔 하기로 하였습니다.

Posted by idd7
,

 

물효과와 그림자효과에 대해서 개선을 시도하였습니다.

 

물효과는 화면 위쪽이 부자연스러운 것을 빼고는 최대한 개선을 하였습니다.

 

 

그림자효과도 최대한 개선을 하기 위해 아예 다른 방식의 그림자기법을 도입해보거나 DX11의 구조를 이용해서 개인적으로 가능할까 싶었던 방식으로 그림자를 나타내기 위한 시도를 해보았으나, 생각처럼 작동이 되지 않아서 그냥 기존방식에 그림자를 만드는 전역광원의 폭을 줄이는것으로 해결하였습니다.

 

전역광원의 폭을 넓히면 시야로부터 먼 곳에 있는 물체들 또한 그림자를 만들수 있게 되지만 그만큼 그림자가 부정확해지고 큼지막하게 표시되어 그림자의 퀄리티가 나빠지기에, 애초에 화면 위에서 아래로 내려다보는 탑뷰시점에 시야범위가 고정되어있는 게임인만큼 필요한 거리만큼에만 그림자가 생기게 하였습니다.

 

 

 

다음에는 게임중 화면에 표시들 문장들이나 안내문 등을 다듬고 빠졌던 것을 만들 차례가 되었습니다. 아직 세세한 것들을 못 만든곳이 있지만 거의 완성에 가까워진것 같았습니다.

Posted by idd7
,

 

모든 3D 그래픽모델을 다시 새로 만들었습니다. 하지만 좀 엉성해보이는건 계속 새로 만들어 할 것 같았습니다.

 

이후에는 요전에 잘 작동되지 않았던 물효과를 고치기로 하였습니다.

 

 

물효과가 작동되는 특성상 화면가장자리나 어떤 물체가 물 표면보다 카메라에 더 가까이에 위치해 있을 경우 가까이 있는 물체의 모습이 물 표면에 번지는것처럼 보이거나 화면가장자리가 물결치는듯이 보이는 어색한 문제가 있었습니다.

 

어떻게 보면 단순한 문제이기도 하고 그냥 적당히 덮어두고 넘어가도 크게 화면 전체적으로는 어색함이 안 느껴질 정도에다, 예전에는 몇몇 상용게임들에서도 이런 어색한 부분이 보이기도 했던 문제인데... 일단은 이 부분을 고치기 위해 다시 한번 그래픽셰이더 부분을 살펴보고 고치기를 시도중입니다.

 

기본적인 내용이나 설명은 책도 많고 검색하기도 쉽지만 이렇게 실질적으로 제작중에 생기는 문제는, 만드는 사람들마다 모두 게임의 제작방법이 다르기에 당연한 것이겠지만 다른 사람들의 해결법이나 관련된 내용이 적힌 책을 찾기가 어렵기에 직접 해결을 해야 했습니다. 

Posted by idd7
,

그래픽 재작업

게임개발 2017. 11. 22. 20:55

게임플레이 쪽의 대부분을 만든 후, 그래픽을 새로 만들어보기로 하였습니다.

 

최근에 다른 인디3D게임들을 보면 단순하면서도 깔끔하고 귀여운 주로 나타내는걸로 보였습니다. 이런 스타일로 만드는 이유가 빠른 그래픽의 제작을 위해서든 비용의 문제이든 그래픽디자인 실력의 문제이든 사실 인디개발자들은 아무리 애를 써도 최신대작게임들만큼의 그래픽을 나타낼 수 없고, 인디게임을 접하는 대부분의 게이머들 또한 인디개발자들이 그런 고퀄리티의 그래픽을 만들수 없는것을 알고 어느정도 그래픽 면에서는 양보를 해주어서인지 깔끔하고 보기 좋다는 느낌만 줄 수 있다면 심플한 스타일의 그래픽디자인도 문제없는것 같았습니다.

 

그래서 사람이나 괴물 등의 생명체들은 그런 심플한 스타일로 만들어보기로 하였습니다.

 

 

팔이나 다리같은 관절부를 없애고(동작 애니메이션을 만들기 위해서 뼈는 다 연결되어 있습니다) 머리를 크게 해서 최대한 단순하고 제작이 쉬운것을 최대목적으로 만들어 보았습니다. 단순한 스타일이라고는 해도 뭔가 어설픈것 같은데다, 사람이 아닌 괴물 모델들의 경우는 다른 사람들에게 보여도 괜찮은가 싶을 정도로 이상한것 같아서 한번씩 더 새로 만들어봐야되나 라는 생각이 들었습니다.

 

 

지형의 텍스쳐를 단순한 스타일의 그래픽에 맞게 직접 만든 것을 썼었는데 너무 단순한 것 같은 느낌이 들어서

 

 

지형의 텍스쳐는 실제 풍경을 사진으로 찍어 편집한듯한 텍스쳐로 다시 바꾸어 보았습니다.

 

 

아무래도 실제 사진을 기본으로 한 텍스쳐가 좋지 않을까 싶은 느낌이 들었습니다. 계속 그래픽을 갱신시켜가며 메뉴나 인터페이스, 아이콘 같은것들 또한 좀 더 보기 좋게 바꾸어야 할 필요가 있었습니다.

Posted by idd7
,

 

대체적인 전투진행의 제작과 테스트를 완료하였습니다.

 

적이나 아군은 최대 6명으로 이루어진 팀단위로 짜여져 있고, 아군의 경우는 직접 한명한명 조작할수도 있고 팀에게 대기나 공격 등의 명령을 정해놓으면 거기에 맞춰서 팀에 속한 전투원들은 팀에 정해진 명령에 맞춰서 자동으로 행동하는 식으로 진행하게 되며, 빠른 게임진행을 위해서 적이나 아군 모두 팀단위로 순서대로 움직이게 되어야 하는데 인제 의도에 맞게 잘 진행되는것 같았습니다.

 

전투도중 게임이 튕기거나 멈출 정도의 크게 위험한 오작동은 잡아내었지만 아직 미묘한 잘못된 처리가 있을수도 있기에 좀 더 테스트를 할 필요가 있을 것 같았습니다.

 

메뉴 구성이나 위치, 편의를 위한 각종 표시 또한 그래픽을 새로 만들며 좀 더 변경을 해야 할 것 같았습니다.

 

다음에는 그래픽을 다시금 새롭게 만들 차례가 되었습니다.

Posted by idd7
,

이전에 만들어두었던 전투맵에 부대를 배치하는 처리를 적용하였습니다.

 

 

땅에 검게 표시되는 부분은 장애물이나 이동이 불가능한 지역이기 때문에 이런 부분을 피해서 최대한 팀단위로 정렬한 상태로 배치되어야 했는데, 의도대로 적당히 잘 배치되는것 같았습니다.

 

 

하지만 전투원들이 배치가 불가능할 정도로 빈 땅이 너무 부족하거나 복잡하거나 너무 넓은 이동불가지역이 구성되지 않게 맵을 만들때 고려해야 했습니다.

Posted by idd7
,

전투상황에서의 길찾기 방식을 새롭게 재변경 했습니다.

 

 

처음에는 크게 복잡한 상황이 안 생기겠지 싶어서 직접 고안한 방법으로 길찾기를 시켰으나 생각보다 맵의 이동가능한 곳과 불가능한 곳의 상태가 복잡해질것 같았기에 안정적이고 어떤 상황에서든 잘 작동되는 방식으로 변경해야 했습니다.

 

그래서 길찾기 알고리즘의 대표적인 기법인 A* 알고리즘을 이용하였습니다. A*는 생각보다 상당히 간단하게 작동되지만 대단히 효율적이고 안정적인 기법이었습니다.

 

기본적으로는 A*가 안정적으로 길을 찾아준다고는 해도 게임의 종류에 맞게 여러가지 추가적인 처리를 해줄 필요가 있고 그에 따른 많은 테스트를 하였습니다.

예를들어 적군이 딛고 있는 위치의 경우에는 장애물이나 이동이 불가능한 곳과 같이 취급되어 적군을 우회하여 이동하게 되어있지만 아군들이 딛고 있는 곳의 경우에는 지나가며 이동이 가능하다거나, 아군들이 위치중인 곳을 이동중이더라도 이미 다른 아군들이 위치한 곳 위에는 멈춰설 수 없게 하는 예외적인 상황에서 어떻게 되야 될지에 대한 부분을 만들어줘야 했습니다.

 

 

그리고 모든 길찾기 알고리즘들과 제작되는 게임들이 해결해야될 문제겠지만 목적지의 주변이 장애물들로 막혀져서 도저히 도달할 수 없는 곳으로 길을 찾아야 하는 경우라거나, 꽈배기나 미로처럼 길이 빌빌 꼬여져서 길찾기가 상당히 복잡해지는 상황에 또한 대응을 해야 했습니다.

 

이런 경우 아주 정확하고 효율적인 목적지와 이동루트는 아니겠지만 어느정도 문제가 없는 안정적인 결과는 얻을 수 있게 해놓았습니다. 아마 스타크래프트나 수많은 다른 게임들도 이런 종류의 문제들을 해결하기위해 많은 고심을 하지 않았을까 싶었습니다.

Posted by idd7
,

전투에 사용되는 전투스킬을 몇가지 설정하였습니다. 원래는 상처내기나 기절시키기 같은 상태이상을 일으키는 특수공격 2가지만 추가시킬 예정이었지만, AP를 더 소모하여 명중률을 높이거나 회피율을 높이는 등의 효과를 내는 스킬을 몇가지 더 추가하였습니다.

 

이전에 전반적인 전투진행의 흐름을 만들어두긴 했지만 충분한 테스트를 하지 않아서, 이번에 정상적으로 작동되게끔 할려고 하니... 아무리 자기손으로 직접 쳐놓은 코드라도 역시 몇달 정도만 지나도 알기가 어려웠습니다. 다행히 코드에 설명을 여기저기 많이 달아놓았지만 그래도 이전에 쳐놨던 코드를 다시 파악해야 진행을 할 수 있을것 같았습니다.

Posted by idd7
,